位置:首页 > 综合教程 > Valve 时隔四年再次更新 GameNetworkingSockets 库:新增 Rust 绑定与 P2P 改进,从 CS 到 Dota 2 都在用

Valve 时隔四年再次更新 GameNetworkingSockets 库:新增 Rust 绑定与 P2P 改进,从 CS 到 Dota 2 都在用

4 月 29 日消息,Valve 于当地时间 4 月 28 日发布了 GameNetworkingSockets v1.5 版本。这也是该开源网络库自 2024 年 6 月 v1.4.1 版本以来的首次更新。

Valve 时隔四年再次更新 GameNetworkingSockets 库:新增 Rust 绑定与 P2P 改进,从 CS 到 Dota 2 都在用

说起 GameNetworkingSockets,这可是 Valve 在 2018 年就开源的一个核心网络库。它本质上扮演着 Steam 网络套接字层的角色,专门为游戏提供底层网络传输支持。像《反恐精英》《刀塔 2》这些大家耳熟能详的游戏,背后都有它的身影。这个库的特性相当全面:支持 IPv6、P2P 网络、加密,同时兼容可靠与不可靠的消息类型。它提供的是面向连接的 API,但底层设计思路更接近 UDP 那种面向消息的风格。

API 层面的重要演进

这次 v1.5 版本在 API 上做了不少调整。具体来看,ISteamNetworkingSockets::SendMessages 函数在发送失败场景下的语义被更新了,现在支持重试机制。配置选项也丰富了,新增了 ECN(显式拥塞通知)、抖动统计、IPLocalHost_AllowWithoutAuth 等选项及其访问器。为了方便 C 语言开发者,库还为 ISteamNetworkingMessages 新增了一套扁平的 C API。此外,还引入了 SteamNetworkingSockets_SetServiceThreadInitCallback 这个新函数。当然,最让社区兴奋的可能是,这个版本首次提供了由社区贡献的 Rust 语言绑定。

P2P 功能的加固与测试完善

在 P2P 网络这个关键领域,新版本解决了一个可能导致 WebRTC ICE 客户端卡死的竞态条件错误。对于仍处于测试状态的原生 ICE 客户端,也进行了大量的 Bug 修复。示例代码中的简易信令服务器现在用 Python 重写了,并修复了已知问题。更值得关注的是,P2P 测试现在已经被正式纳入持续集成(CI)流程。这意味着什么?意味着相关的网络功能在未来的稳定性会更有保障。目前,CI 测试覆盖的范围已经相当广泛,包括 macOS、多种 Linux 发行版以及更多版本的 Windows 系统。测试套件本身也增加了多项新测试,特别是 P2P 测试的覆盖率得到了显著提升。

累积性改进与安全增强

除了上述亮点,此次更新更像是一次大规模的“查漏补缺”和性能打磨。库现在能够自动纠正报文和消息队列层在某些乱序条件下的问题。针对不同平台和编译器的兼容性问题,也修复了一大堆。对于开发者而言,构建体验有所改善,CMake 与 vcpkg 的集成得到了改进,同时也解决了与新版本 protobuf 和 abseil 的兼容性问题。在诊断方面,新增了 Windows 事件跟踪(ETW)支持,这对于在 Windows 平台下进行深度调试和性能分析会很有帮助。最后,版本还包含了加密、连接管理和线路协议方面的大量细微错误修复,以及一些重要的安全漏洞修复,进一步夯实了网络层的可靠性与安全性。

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多