15个版本 (9个破坏性更新)
| 0.10.1 | 2024年7月15日 |
|---|---|
| 0.9.0 | 2024年2月20日 |
| 0.8.0 | 2023年7月12日 |
| 0.6.0 | 2022年11月13日 |
| 0.2.3 | 2021年10月16日 |
#251 在 游戏开发
每月240次下载
61KB
1K SLoC
Bevy细胞自动机
bevy_life是一个通用的细胞自动机插件。从经典的2D 康威生命游戏 到 WireWorld 和3D规则,该插件完全通用且动态。
查看
- 生命游戏的变体
WireWorld实现 (查看此库的 实现)
Bevy版本
main分支遵循bevy的发布版本,但我也提供了一个bevy-main分支,以便遵循bevy的main分支
bevy_life |
bevy |
|---|---|
| 0.3.x | 0.6.x |
| 0.4.x | 0.7.x |
| 0.5.x | 0.8.x |
| 0.6.x | 0.9.x |
| 0.7.x | 0.10.x |
| 0.8.x | 0.11.x |
| 0.9.x | 0.13.x |
| 0.10.x | 0.14.x |
如何使用
将CellularAutomatonPlugin添加到您的bevy应用程序中
CellularAutomatonPlugin<C, S>有两个泛型类型
C-> 实现Cell的任何类型,定义坐标系S-> 实现CellState的任何类型,定义模拟规则
您可以添加任意多的泛型CellularAutomatonPlugin,该库提供了一些实现,例如
GameOfLife2dPluginGameOfLife3dPluginImmigrationGame2dPluginImmigrationGame3dPluginRainbowGame2dPluginRainbowGame3dPluginWireWorld2dPluginWireWorld3dPluginCyclicColors2dPluginCyclicColors3dPlugin
然后您可以像往常一样使用 bevy,并向实体添加 impl Cell 和 impl CellState 组件。该库提供了一些实现,例如为细胞提供 MooreCell2d 或 MooreCell3d,以及为状态提供 ConwayCellState、WireWorldCellState 等。
您可以按照自己的意愿实现自己的 细胞(坐标系)和 状态(规则),细胞自动机系统是完全动态和通用的。
有关更多信息,您可以查看一些示例
暂停
插入一个 SimulationPause 资源将暂停模拟,移除它将恢复。
并行执行和批处理
插入一个 SimulationBatch 资源将允许以自定义批大小并行计算细胞。
Cargo 功能
插件运行不需要任何功能,主要特质 Cell 和 CellState 总是可用。但您可以启用以下功能
2D(默认启用):启用二维类型,如MooreCell2d(8个邻居的正方形细胞)NeumannCell2d(4个邻居的正方形细胞)HexagonCell2d(6个邻居的六边形细胞)- 插件预设:
GameOfLife2dPlugin、ImmigrationGame2dPlugin、RainbowGame2dPlugin、WireWorld2dPlugin、CyclicAutomaton2dPlugin
3D:启用三维类型,如MooreCell3d(26个邻居的立方体细胞)NeumannCell3d(6个邻居的立方体细胞)- 插件预设:
GameOfLife3dPlugin、ImmigrationGame3dPlugin、RainbowGame3dPlugin、WireWorld3dPlugin、CyclicAutomaton3dPlugin
auto-coloring(示例或调试目的)- 现在
CellState特质需要color方法
- 现在
bevy_reflect(默认启用):启用对常见类型的反射支持
免责声明
这可能不是 Rust 中最快的细胞自动机实现。例如,使用 Gosper 的 HashLife,经典的“生命游戏”可能会更快。
该库的目标是通用和动态,以便您可以将细胞自动机集成到任何 Bevy 项目中,使用任何规则,在 2D 或 3D 中。
示例项目
电线世界
使用 bevy_life 和电线世界规则来模拟电气系统的 wireworld-rs 项目。


内部示例
对于每个示例,按空格键可以重新加载板。
注意:添加发布标志会增加示例的性能
二维生命游戏
运行 cargo run --example 2d_game_of_life --features auto-coloring

2D 移民游戏
运行 cargo run --example 2d_immigration_game --features auto-coloring

2D 彩虹游戏
运行 cargo run --example 2d_rainbow_game --features auto-coloring

2D 循环颜色
运行 cargo run --example 2d_cyclic_colors --features auto-coloring

2D 石头剪刀布
此示例展示了如何定义自定义规则
运行 cargo run --example 2d_rock_paper_scissor

3D 生命游戏(4555 规则)
运行 cargo run --example 3d_game_of_life --features "3D auto-coloring" --no-default-features

依赖项
~33–71MB
~1M SLoC