48 个版本

0.7.7 2024 年 1 月 28 日
0.7.6 2023 年 11 月 11 日
0.7.5 2023 年 9 月 11 日
0.7.4 2023 年 4 月 10 日
0.3.3 2021 年 7 月 28 日

23模拟

Download history 13/week @ 2024-04-11 23/week @ 2024-07-04 223/week @ 2024-07-25

每月 246 次下载

MIT/Apache

110KB
2.5K SLoC

rs-ecs

crates.io docs.rs github.com

为赫尔姆霍兹环境研究中心 EcoEpi 项目组的项目模拟模型开发的一个相当简单的实体组件系统 (ECS)。设计基于 hecs,但 API 表面积显著减少。

它还有一些针对我们使用案例的具体更改和补充

  • 它的借用检查不是线程安全的。单线程模拟通常更可取,因为它们的执行是明显确定性的。此外,并行运行多个实例通常可以获得最高的吞吐量。
  • 它通过使用 QueryRef::map 方法 对实体标识符进行平均随机访问以查询结果。这可以用于有效地遍历实体之间类似图的关系。
  • 可以使用 World::transfer 方法 在世界之间传输实体而无需序列化。我们使用此方法从模拟中完全删除实体,同时保留它们的全部动态状态以供以后检查。
  • 可以将世界快照以启用例如回滚网络代码。由于稳定的 Rust 中缺少特殊化,这需要一个 Cloner 来收集所有组件类型的克隆和复制方法。
  • World::exchange 方法 结合了删除某些组件然后为给定实体添加其他组件。这可以用于优化类型级别的状态机。
  • 虽然查询必须从单个线程发送,但可以使用多个线程通过QueryRef::par_iter方法迭代其结果。此方法为可选,使用Rayon实现,并通过rayon Cargo功能启用。

许可证

许可下

任选其一。

贡献

除非你明确表示,否则根据Apache-2.0许可证定义的,你有意提交以包含在工作中的任何贡献,将按上述方式双许可,不附加任何额外条款或条件。

依赖项

~0–265KB