netcode.io is a connection-oriented protocol built on top of UDP.
It's designed for client/server games with dedicated servers, like modern first person shooters.
It has the following features:
- Only authenticated clients can connect to your server.
- Packet encryption and signature checks.
- Protection against man-in-the-middle attacks.
- Protection against DDoS amplification attacks.
- Protection against packet replay attacks.
- Protection against zombie clients.
netcode.io is stable and well tested having been used in AAA game projects for over 2 years now.
How does it work?
Please refer to the second half of this whitepaper: Why can't I send UDP packets from a browser?
For a complete technical specification, read the netcode 1.02 standard.
This repository holds the implementation of netcode.io in C.
Other netcode.io repositories include:
- netcode.io C# implementation
- netcode.io Golang implementation
- netcode.io Rust implementation (updated fork of vvanders/netcode.io)
- netcode.io for Unity
- netcode.io for UE4
- netcode.io browser plugin
These people are awesome:
- Val Vanders - Rust Implementation
- Walter Pearce - Rust Implementation
- Isaac Dawson - Golang Implementation
- June Rhodes - C# bindings, browser support, UE4 integration
- Alan Stagner - Unity integration, C# implementation
- Jérôme Leclercq - Support for random connect token nonce
- Randy Gaul - Discovered vulnerability in replay protection
Thanks for your contributions to netcode.io!
The author of this library is Glenn Fiedler.
Glenn wrote an article series about the development of this library called Building a Game Network Protocol.
netcode.io was generously sponsored by:
And by individual supporters on Patreon. Thank you. You made this possible!