6 个版本 (破坏性更新)
0.6.0 | 2022年11月13日 |
---|---|
0.5.0 | 2022年9月10日 |
0.4.0 | 2022年5月4日 |
0.3.0 | 2022年1月18日 |
0.1.0 | 2021年5月29日 |
#2 在 #ggpo
被 2 个 crate 使用 (通过 bevy_backroll)
140KB
3K SLoC
backroll-rs
Backroll 是GGPO风格回滚网络的一个纯 Rust 实现。
开发状态
目前仍处于早期测试阶段。截至撰写本文时,公共API已稳定,并经过有限测试。可能还存在尚未发现的重大缺陷。
与 C++ 实现的差异
- (几乎) 100% 纯 安全 Rust。没有不安全指针操作。
- 类型安全。backroll-rs 大量使用泛型和关联类型,以避免序列化开销和在保存和加载游戏状态时可能的不安全类型转换。
- 抽象的传输层协议 - 集成并使用任何需要的传输层库。附带基于原始UDP套接字的实现。
- 运行时配置 - GGPO中的许多硬编码常量在会话初始化期间作为配置参数公开。
- 减少内存使用 - Backroll 使用泛型可能缩小了许多数据类型的大小。
- 矢量化的输入压缩方案 - Backroll 使用相同的XOR + RLE编码,但编写时最大化CPU利用率。
- 多线程 I/O - 所有网络通信都在异步任务池中运行。I/O轮询不再是手动的,也不再阻塞游戏执行。
依赖项
~3–12MB
~114K SLoC