About this project
GameNetworkingSockets is a cross-platform transport layer designed for games. It provides a connection-oriented API that is message-oriented rather than stream-oriented. The library supports reliable and unreliable message types, with automatic fragmentation, reassembly, and retransmission for messages larger than the underlying MTU. A reliability layer uses an ack-vector model inspired by DCCP (RFC 4340) and QUIC, enabling efficient receiver-reported packet status and sender-side retransmission decisions. Per-packet encryption uses AES-256-GCM, with Curve25519 key exchange and certificate signatures following Google QUIC design principles. Additional features include tools for simulating packet latency and loss, detailed statistics measurement, and head-of-line blocking control with bandwidth sharing across multiple message streams (lanes) via priority or weighted fair queueing. Peer-to-peer connectivity is facilitated through NAT traversal using Google WebRTC ICE, with plug-in signaling support and a symmetric connect mode. An interface called SteamNetworkingMessages helps port UDP-based code to P2P scenarios specifying recipient addresses per send. IPv6 is supported. The library has shipped on consoles, mobile platforms, and non-Steam stores for cross-platform use. It does not include higher-level entity serialization, delta encoding, or compression. Public headers reside in include/steam, centered on the ISteamNetworkingSockets interface. A plain C interface enables language bindings, with third-party bindings available for C#, Go, and Rust. The 'Steam' naming reflects a subset of the Steamworks SDK API and is not required for use; the code can be employed independently. Security issues can be reported responsibly via the published security policy. Build instructions are in BUILDING.md.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.