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.
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. He's a veteral game developer with netcode he wrote being used in many games, including Titanfall and Apex Legends!
Other open source libraries by the same author include: yojimbo and reliable
netcode was generously sponsored by:
-
Gold Sponsors
-
Silver Sponsors
-
Bronze Sponsors
And by individual supporters on Patreon. Thank you. You made this possible!