#ecs #entity #tiny #component #system

tiny_ecs

一个尝试避免不必要的复制/克隆的轻量级ECS

32个版本

0.19.6 2020年7月12日
0.19.4 2019年10月5日
0.18.1 2019年7月21日

#1686 in 游戏开发

MPL-2.0许可证

29KB
316

Build Status

小型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