我正在开发一款基于Vulkan v1.3和C++23的图形引擎,我的个人项目是一个包含程序化地形等元素的开放世界游戏。昨天我向游戏中添加了首批1000个NPC以测试性能,随后决定更进一步——创建两支各含40,000名士兵的军队(实际上来自GLTF 2.0示例中的“Cesium小人”)。粉色队和蓝色队。针对蒙皮节点使用了2级LOD(以及2级级联阴影贴图),而对于200米视野之外的所有物体则使用精灵/公告板。帧率——如上图所示,达到56fps(AMD 3700x、AMD 5600XT Navi 1、1920x1080分辨率)。

显然,摄像机视锥体裁切发挥了作用,但我依然惊叹于Vulkan实例化的强大性能。

总士兵数40,000(每队20,000)时,帧率为105fps。
总士兵数20,000(每队10,000)时,帧率为140fps。
总士兵数10,000(每队5,000)时,我们可以去掉精灵/公告板,仅使用3级LOD,获得相近的性能(200fps)。

这仅仅是使用了10个骨骼动画桶进行渲染。还没有加入物理或寻路(目前只是让整体从A点移动到B点再返回)。

下一个挑战——构思一个能与80,000个NPC玩得开心的游戏。那么,什么类型的游戏会因为有成千上万的NPC进攻城堡而变得有趣呢?塔防?僵尸末日?