After a long wait, Valve has announced the release of GameNetworkingSockets v1.5, the latest update to its open-source networking library used by major titles such as Counter-Strike and Dota 2. Originally open-sourced in 2018, GameNetworkingSockets provides a robust, message-oriented transport layer for games, supporting both reliable and unreliable message types, IPv6, peer-to-peer (P2P) networking, encryption, and more.
The previous stable release, v1.4.1, was made available in June 2022. Today’s v1.5 release marks the first major update in almost four years, bringing a host of improvements, new features, and community-driven enhancements.
What’s New in v1.5
GameNetworkingSockets v1.5 introduces several API changes and improvements:
- API Additions:
- Updated semantics for
ISteamNetworkingSockets::SendMessages, improving handling of failed sends and retries. - New configuration options and accessors, including support for ECN, jitter statistics, and more.
- A new flat C API for
ISteamNetworkingMessages. - A new callback for initializing the service thread.
- Rust Bindings:
The community has contributed initial Rust bindings, expanding the library’s reach beyond C/C++. - P2P Improvements:
- Fixes for race conditions in the WebRTC ICE client.
- Numerous bug fixes for the native ICE client (still in beta).
- A rewritten example signaling server in Python.
- P2P support is now integrated into continuous integration (CI) testing.
- Other Enhancements:
- Better handling of out-of-order packets and message queuing.
- Improved compatibility with various compilers and platforms.
- Enhanced CMake and vcpkg integration.
- Security fixes and compatibility updates for newer versions of protobuf and abseil.
- Event Tracing for Windows (ETW) diagnostics added for better debugging.
Testing and Stability
The new release also features a major overhaul of the CI pipeline, with expanded testing across macOS, multiple Linux distributions, and various Windows versions. This ensures greater stability and compatibility for developers using the library in different environments.
Notably, the Rust bindings and several bug fixes were contributed by the open-source community, highlighting the collaborative nature of the project since Valve open-sourced it.
Source: Valve’s Github
