A connection-oriented, message-based UDP transport layer for games with reliable/unreliable messaging, encryption, and P2P NAT traversal.
GameNetworkingSockets is a transport layer library for multiplayer games that provides reliable and unreliable messaging over UDP. It solves the problem of building robust, low-latency network communication for games by offering features like message fragmentation, encryption, and peer-to-peer NAT traversal. It combines the connection-oriented approach of TCP with the message-oriented efficiency of UDP.
Game developers and engineers building real-time multiplayer games who need a performant, secure, and cross-platform networking solution. It's particularly useful for those requiring P2P connectivity or advanced reliability mechanisms.
Developers choose GameNetworkingSockets for its battle-tested reliability, encryption, and P2P capabilities, which are derived from Valve's experience in multiplayer gaming. Its compatibility with the Steamworks SDK allows seamless integration with Steam services while remaining usable on other platforms under a permissive license.
Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. P2P networking / NAT traversal. Encryption.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses ack-vector models from DCCP and QUIC for advanced retransmission, avoiding TCP's head-of-line blocking and providing efficient reliability for game traffic.
Features per-packet AES-GCM-256 encryption and Curve25519 for key exchange, based on Google QUIC's design, ensuring secure communications without external libraries.
Integrates WebRTC's ICE implementation for peer-to-peer connectivity and allows custom signaling services, simplifying direct connection establishment in games.
Works on consoles, mobile, and various stores, enabling consistent networking across different platforms for cross-platform game development.
Explicitly does not handle entity serialization, delta encoding, or compression, forcing developers to build these application layers themselves.
Has an anachronistic coding style and weird directory layout from Valve's Steam codebase extraction, increasing setup and maintenance overhead.
Language bindings for C#, Go, and Rust are third-party, which may lead to inconsistent support or updates compared to the core C++ library.