3个版本 (破坏性更新)
0.3.0 | 2024年8月4日 |
---|---|
0.2.0 | 2024年3月15日 |
0.1.0 | 2023年11月14日 |
#1743 in 游戏开发
每月145次下载
19KB
157 行
bevy_roll_safe
为Bevy引擎提供的回滚安全实现和实用工具。
动机
Bevy的一些功能不能在回滚环境中使用(例如与bevy_ggrs
等crate)。这是因为它们的行为是非确定性的,依赖于不可访问的本地系统状态,或者与Main
调度紧密耦合。
路线图
- 状态
- 基本可自由修改的状态
-
OnEnter
/OnLeave
/OnTransition
- 子状态
- 计算状态
- 回滚安全事件
- 帧计数
- 事件
状态
通过app.add_state::<FooState>()
添加到Bevy的状态有两个大问题
- 它们在
StateTransition
调度中发生,在MainSchedule
内 - 如果回滚到第一帧,则不会重新运行
OnEnter(InitialState)
。
此crate提供了一个扩展方法,add_roll_state::<S>(schedule)
,允许您将状态添加到您想要的调度中,以及一个资源,InitialStateEntered<S>
,该资源可以回滚并跟踪是否应该运行(或重新运行回滚到初始帧的OnEnter
)。
Cargo功能
bevy_ggrs
: 启用与bevy_ggrs
的集成math_determinism
:启用对 Bevy(glam
)数学类型的跨平台确定性操作。
Bevy 版本支持
bevy | bevy_roll_safe |
---|---|
0.14 | 0.3,主分支 |
0.13 | 0.2 |
0.12 | 0.1 |
许可证
bevy_roll_safe
可以在以下任一许可证下使用
- MIT 许可证(./LICENSE-MIT 或 http://opensource.org/licenses/MIT)
- Apache 许可证 2.0 版(./LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
任选其一。
贡献
欢迎 Pull Requests!
依赖项
~19–28MB
~442K SLoC