About this project

yojimbo is a production-ready C++ network library tailored for client/server games with up to 100 players, focusing on the demands of competitive multiplayer titles such as first-person shooters. It offers cryptographically secure authentication via connect tokens, client/server connection management with timeouts, encrypted and signed UDP packets, packet fragmentation and reassembly, a bitpacker and serialization system, unreliable-unordered messages for time-sensitive data, reliable-ordered messages with aggressive resend until acknowledgment, support for data blocks larger than the maximum packet size attached to reliable-ordered messages, and per-connection estimates of latency, jitter, packet loss, and bandwidth sent/received/acked. The library is single-threaded, requiring all client and server functions to be called from the same thread, and both sides must use identical configurations (ClientServerConfig, channels, and message factory). It is built on top of netcode, reliable, and serialize libraries by the same author, Glenn Fiedler, and bundles libsodium and tlsf. The project is open source under the BSD 3-Clause license, with contributions welcome via CONTRIBUTING.md and security issues reported via SECURITY.md.