我想分享一下关于实体组件系统(ECS)-基于的群体项目的实现结果。
在我的RTX 2060 AMD Ryzen 7上,我正在单独模拟2000+NPC在单个关卡中。每个NPC都有合适的碰撞体,适用于FPS游戏,没有 billboard,没有模拟活动的远程AI。这些是实际的模拟代理,有自己的视觉和“大脑”。
该项目还包括:
- 基于弹道的弹道学(实弹道时间,非 hitscan)
- 基于碰撞的稳定音频系统,即使有数千个音频源同时激活
当我开始这个项目时,我目标是创建一个真正的无尽群体体验。经过不同方法的研究后,我得出结论,ECS是最合适的选择,因为大部分工作负载都可以处理为大数组的数据。
一个最大的瓶颈是NPC动画。传统的动画控制器消耗太多CPU时间,所以我切换到了烘焙动画。为了使工作流程更容易,我创建了一个编辑器工具,将动画控制器和动画片段转换为ECS系统和烘焙动画数据。除了改善性能外,这也给了我一个快速迭代NPC动画的可视工作流。
ECS还允许我利用CPU并行化。性能与额外的CPU核心和线程一起很好地缩放。根据Profile(我将在评论中附上它),还有几个瓶颈需要优化,但即使在这种阶段,我对结果也很满意。
欢迎提问任何关于ECS和/或我的项目的内容。
评论 (0)