Valve 游戏网络库四年更新,优化 P2P 与新增 Rust 支持
Valve 在当地时间 4 月 28 日发布了其开源网络库 GameNetworkingSockets 的 v1.5 版本,这是自 2022 年 6 月 v1.4.1 版本以来该库的首次重大更新。
v1.5 版本在 API 层面进行了多项重要改进。其中,更新了 ISteamNetworkingSockets::SendMessages 在发送失败时的语义,并增加了重试机制;新增了 ECN、抖动统计、IPLocalHost_AllowWithoutAuth 等配置选项和访问器。同时,提供了 ISteamNetworkingMessages 的扁平 C API,并新增了 SteamNetworkingSockets_SetServiceThreadInitCallback 函数。值得一提的是,此版本还包含了由社区贡献的初始 Rust 语言绑定。
在 P2P(点对点)网络方面,新版本着重修复了 WebRTC ICE 客户端中存在的竞态条件错误,该错误曾导致卡死,并对原生 ICE 客户端进行了大量 Bug 修复。示例中的简易信令服务器已用 Python 重写并解决了已知问题。此外,P2P 测试已纳入持续集成(CI)流程,覆盖了 macOS、多种 Linux 发行版及更多 Windows 版本,显著提升了 P2P 测试的覆盖率和可靠性。
此次更新还涵盖了大量累积性改进,包括纠正在报文和消息队列层的乱序问题,修复了众多平台/编译器兼容性挑战,优化了 CMake 与 vcpkg 的集成,并解决了与新版 protobuf 和 abseil 的兼容性问题。同时,新增了 Windows 事件跟踪(ETW)诊断支持,并对加密、连接管理和线路协议进行了大量细微错误修复,包括一些安全漏洞的修复。
作为面向游戏开发者的底层网络传输层库,GameNetworkingSockets 已被《反恐精英》和《刀塔 2》等 Valve 自家游戏采用,支持 IPv6、P2P 网络和加密等关键特性。此次更新在稳定性、兼容性和 P2P 功能方面均有显著提升,对依赖此库的游戏开发者而言,升级至 v1.5 版本将带来更可靠的网络传输体验。