32个版本
0.19.6 | 2020年7月12日 |
---|---|
0.19.4 | 2019年10月5日 |
0.18.1 | 2019年7月21日 |
#1686 in 游戏开发
29KB
316 行
小型ECS
这个crate的目的是提供一个基本的ECS,你需要进行一些额外的控制。
大多数其他ECS crate提供了一种将"系统"插入ECS以运行实体机制,而此版本则省略了这一机制 - 你可以将其视为"实体/组件系统"。你需要创建外部系统;这些可以是一个函数,一个循环,或任何其他内容。
内部这个ECS使用位掩码
。每个实体ID实际上是一个数组内部索引号,该数组包含位掩码。位掩码本身记录了实体拥有的组件。
注意:在运行时检查项目的借用,但也提供了一些未检查的借用。
内存使用
ECS由Persist-O-Vec支持,这是一个旨在具有快速推入、弹出、插入和删除操作,同时保持稳定索引和内存位置的存储。由于这种方式以及并非每个存储槽都将被使用的事实,内存使用比率可能很高。
Persist-O-Vec的使用意味着每个组件将额外使用24字节,这包括每个空槽24字节。
对于每种组件类型,将分配一个与预期最大实体数相等的Persist
存储。该存储中的槽在整个存储生命周期中保留在内存中,但可能实际上不包含数据。
基准测试
基于ecs_bench项目。
替代方案
如果你在寻找功能更强大、速度相同且处于前沿的解决方案,以下之一可能更适合你
许可证
MPL v2
依赖
~1MB
~14K SLoC