Releases: ValveSoftware/GameNetworkingSockets
v1.4.1 Native ICE client (beta), misc bugfixes
Added a native ICE client, so P2P can be done without WebRTC. This client is beta and is not enabled by default, unless WebRTC support is disabled. The client does not currently support TURN.
Improvements and bugfixes:
- Fix protocol bug in malicious sender protection, that could cause asserts and possibly dropped reliable messages if packet loss and latency were both extremely high.
- Polling will now use epoll on supported platforms (e.g. linux).
- IPv6 parsing now supports dotted-decimal-style IPv4-mapped IPv6 addresses, e.g. ::ffff:123.45.67.89
- Fix deadlock if API calls were made from custom P2P callbacks that needed to lookup a connection by handle
- Public headers no longer #define POSIX, which conflicts with other libraries
- Improvements to platform detection and compatibility on various console platforms
No public interfaces were changed
v1.4.0 Multi-lane support
Version 1.4.0 adds support for multiple lanes, improves compliance with vcpkg best practices, and has numerous smaller bugfixes and improvements.
This brings the library in sync with the Steamworks SDK version 153a.
Multi-lane support
"Lanes" can be used to control head-of-line blocking behaviour. You can control the priority level of each lane and how bandwidth should be shared between different lanes.
Lanes are similar to what QUIC calls "streams", and what other networking APIs call "channels".
See ISteamNetworkingSockets::ConfigureConnectionLanes
for details.
Misc bugfixes / improvements
- Fixed bug setting the connection userdata via the config var
k_ESteamNetworkingConfig_ConnectionUserData
, which is necessary when setting it at connection creation. - Simplified iteration of configuration values and controlling when to list "dev" values.
- Added configuration values to configure TURN servers for use by WebRTC
- Improved handling of closing connections in the linger state that did not need to linger.
- Attempt to clean up connections on library shutdown that were left open or in the linger state.
- Added several more tests
- You can now build the cert tool by passing
-DBUILD_TOOLS=ON
to cmake - Improved cmake files, manifests, and build instructions to improve compliance with vcpkg best practices. (Some work still remains in this area. If you are a cmake/vcpkg expert, please help!)
- Added a test/example project that shows how to pull in this library using vcpkg, without fetching or compiling the code directly.
- Removed a bunch of declarations for Steam internal things from the headers
- Added a CI build for windows on github
Other changes
- The "FakeIP" framework was added to the Steamworks SDK. That feature requires Steam backend support and is not supported in this opensource code, but the declarations are present in the header.
GetQuickConnectionStatus
renamed toGetConnectionRealTimeStatus
and now can return information about the status of each outbound lane.SteamNetworkingQuickConnectionStatus
was also renamed toSteamNetConnectionRealTimeStatus_t
.
v1.3.0 Performance improvements, ISteamNetworkingMessages, and more
Major changes
Performance improvements
Implemented a fine-grained locking strategy to greatly reduce lock contention, especially if API calls are made from multiple threads. (See issue #50.)
Added ISteamNetworkingMessages
This interface is primarily useful for porting existing code that expects to be able to make ad-hoc sendto/recvfrom calls to arbitrary addresses, and does not consistently use the abstraction of a "connection".
Other improvements
- Header files are now compatible with Steamworks SDK headers. You can easily switch between using the Steamworks SDK and a standalone library for the networking interfaces in this library, even making the determination at runtime.
- Added a mechanism to customize (most) memory allocations.
- Numerous bugfixes related to P2P and ICE
Compatibility
Some interfaces were renamed related to custom P2P signaling. Otherwise there were no major API-breaking changes. This update is compatible with the Steamworks SDK 1.51 release.
v1.2.0 Peer-to-peer support
- Added support for peer-to-peer connections.
- NAT-punched connections, using google webrtc's ICE implementation.
- Plugin architecture for signaling service.
- Symmetric connect mode
- For full details, see README_P2P.md
- Reworked callback mechanism, improving compatibility with Steamworks version.
- Easier Windows configuration using vcpkg
- Numerous bugfixes, etc.
This update corresponds to the Steamworks SDK 1.50 release.
v1.1.0 Poll groups, no-copy message send, sync with Steamworks SDK 1.48
Changes from v1.0:
- Added poll groups
- Added method to send multiple messages in a single API call without copying the message payload
- Added methods to set options at socket creation time, or set multiple options atomically
- Reworked flat interface
- Libsodium support
- Numerous bugfixes, etc.
This update corresponds to the Steamworks SDK 1.48 release.
1.0.0
This is the first release of the GameNetworkingSockets library, coinciding with the first available version in the Steamworks SDK.
Version 1.0.x will maintain compatiblity with SteamworksSDK 1.44.