Show HN: Evolved.lua – An Evolved Entity Component System for Lua
a year ago
- #Game Development
- #Lua
- #ECS
- evolved.lua 是一个快速灵活的 Lua ECS(实体-组件-系统)库
- 采用基于原型的存储方式,将实体和组件连续存储在数组(SoA)中以提升性能
- 该库最大限度减少GC压力并避免不必要的内存分配
- 提供简单直观的API,函数功能一目了然
- 支持复杂系统功能,包括查询、延迟操作、批量操作和系统处理
- 实体和片段都是标识符,片段表示组件类型
- 组件是通过片段附加到实体的任意数据
- 使用块(chunk)来分组具有相同组件集的实体以提高处理效率
- 结构性变更(添加/删除片段)会使实体在块间迁移,应尽量减少此类操作以保证性能
- 支持延迟操作来排队处理结构性变更
- 批量操作可高效修改多个实体
- 系统可分组并按特定顺序处理
- 提供组件生命周期事件的钩子(设置、分配、插入、移除)
- 包含标签(无组件的片段)、唯一片段和显式片段等特性
- 支持组件复制和默认值设置
- 允许为片段设置销毁策略(销毁实体或移除片段)
- 调试模式有助于捕获不正确的API使用
- 可通过Luarocks安装或克隆代码库获取