Flecs 是用于 C 和 C++ 的实体组件系统,有助于构建游戏等模拟场景。
Flecs 现已发布 3.2 版本,此版本具有多项新的功能,下面介绍其中部分功能:
发布亮点
关系性平铺 Relationship flattening
Flecs 3.2 扩展了实体关系可以与关系扁平化一起使用的用例!此功能将具有不同父级的实体存储在同一个表中,可以显着减少内存碎片。现有系统无需更新即可支持关系扁平化,广度优先排序和关系遍历等功能仍然有效!展平表中的实体仍然可以以完全支持(自动)矢量化的 CPU 缓存友好方式进行迭代。
这是一个实验性功能,将来会有很多改进。
flattening 后,这个场景的桌子数从46000张减少到960张。
新的图形查询引擎
Flecs 3.2 包含一个完全从头开始编写的新规则引擎,比以前的引擎快 4 个数量级!新引擎获得许多改进,例如改进的运行时、用于图形遍历的记忆缓存、更好地利用新数据结构以及改进查询计划的生成。
Assemblies - 程序集
程序集是一项新功能,可以创建程序资产。程序集是 Flecs 脚本的一个片段,在执行时会根据多个输入参数生成实体和组件。程序集可以轻松组合成更大、更复杂的资产。
在新的交互式 Flecs Script 教程中学习如何编写程序集。
Opaque types - 不透明类型
Flecs 反射框架得到了扩展,能够序列化和反序列化不透明类型!不透明类型是一种布局不为反射框架所知的类型。这带来的一大好处是现在可以使用反射框架完全序列化和反序列化具有 STL 类型(例如 std::string
和 std::vector
)的组件!
World serialization
反射框架的另一项改进:现在可以从 JSON 序列化和反序列化整个 ECS 世界!这是一个非常受欢迎的功能,可以更轻松地保存和加载游戏状态。
Fuzzy Name Matching - 模糊名称匹配
新的规则引擎引入了对(模糊)实体名称匹配的支持!
核心性能改进
3.1.4 版本是 Flecs 自 v2.0 以来最大的性能改进之一。几乎所有 ECS 操作的速度都提高了两位数。
资源管理器中的 3D 画布
资源管理器有许多改进,其中包括一个新的 3D 画布小部件!这个小部件显示了 emscripten 画布的内容,而 REST API 的改进使资源管理器可以直接与 Web 应用程序通信!
这意味着现在可以编辑组件、更改 Flecs 脚本并实时查看结果,而无需编写任何 C/C++ 代码。
Flecs-hub 更新
flecs-hub 中的模块进行了一系列更新,从在 flecs-game 中添加时间系统和网格布局,到在 flecs-systems-sokol 中支持阴影、大气渲染、改进的光晕和着色器文件。 flecs-hub 的目标是提供常见游戏系统的示例实现,并探索如何在现实生活中使用新的 ECS 功能。
更新公告:https://ajmmertens.medium.com/flecs-3-2-is-out-8feb44d37e3
还没有评论,来说两句吧...