netcode is a simple connection based client/server protocol built on top of UDP.
It has the following features:
- Encrypted and signed packets
- Secure client connection with connect tokens
- Connection based protocol built on top of UDP
and protects your game server from the following attacks:
- Zombie clients
- Man in the middle
- DDoS amplification
- Packet replay attacks
netcode is stable and production ready.
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 reference implementation of netcode in C.
This is the primary implementation of netcode, and is always up to date with the latest features.
Other netcode.io repositories include:
- netcode C# implementation
- netcode Golang implementation
- netcode Rust implementation (updated fork of vvanders/netcode.io)
- netcode for Unity
- netcode for UE4
- netcode for Typescript
These people are awesome:
- Val Vanders - Rust Implementation
- Walter Pearce - Rust Implementation
- Isaac Dawson - Golang Implementation
- Alan Stagner - Unity integration, C# implementation
- Jérôme Leclercq - Support for random connect token nonce
- Randy Gaul - Discovered vulnerability in replay protection
- Benny Chen - Typescript Implementation
Thanks for your contributions to netcode!
The author of this library is Glenn Fiedler.
Glenn is now the founder and CEO of Network Next. Network Next is a radically new way to link networks together. A new internet where networks compete on performance and price to carry your traffic. Check it out at https://networknext.com
netcode was generously sponsored by:
And by individual supporters on Patreon. Thank you. You made this possible!