3个版本 (破坏性更新)

0.3.0 2024年8月4日
0.2.0 2024年3月15日
0.1.0 2023年11月14日

#1743 in 游戏开发

Download history 8/week @ 2024-06-01 5/week @ 2024-06-08 1/week @ 2024-06-15 5/week @ 2024-06-22 2/week @ 2024-06-29 10/week @ 2024-07-06 7/week @ 2024-07-27 125/week @ 2024-08-03 13/week @ 2024-08-10

每月145次下载

MIT/Apache

19KB
157

bevy_roll_safe

crates.io MIT/Apache 2.0 docs.rs

为Bevy引擎提供的回滚安全实现和实用工具。

动机

Bevy的一些功能不能在回滚环境中使用(例如与bevy_ggrs等crate)。这是因为它们的行为是非确定性的,依赖于不可访问的本地系统状态,或者与Main调度紧密耦合。

路线图

  • 状态
    • 基本可自由修改的状态
    • OnEnter/OnLeave/OnTransition
    • 子状态
    • 计算状态
    • 回滚安全事件
  • 帧计数
  • 事件

状态

通过app.add_state::<FooState>()添加到Bevy的状态有两个大问题

  1. 它们在StateTransition调度中发生,在MainSchedule
  2. 如果回滚到第一帧,则不会重新运行OnEnter(InitialState)

此crate提供了一个扩展方法,add_roll_state::<S>(schedule),允许您将状态添加到您想要的调度中,以及一个资源,InitialStateEntered<S>,该资源可以回滚并跟踪是否应该运行(或重新运行回滚到初始帧的OnEnter)。

请参阅states示例,了解与bevy_ggrs的用法。

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可以在以下任一许可证下使用

任选其一。

贡献

欢迎 Pull Requests!

依赖项

~19–28MB
~442K SLoC