嘿嘿.所以我正在用自己的特定模拟引擎为基于太空的4x大战略游戏工作(像stellaris 但更好 haha).我刚完成了模拟线程的转移到自己的线程,所以它不像混乱在unity的渲染线程中.And i 想我会做一个简单的压力测试,看看优化后我能达到什么样的性能,而且我不用使用c#的jobsysyem 或 ecs dots等(太夸张), Wel 操作让我有了一个信心, 我实际上可以完成。50个舰队,每个舰队1000个实体单位,每个模拟循环,12毫秒在模拟线程上运行,从我的33毫秒预算中占去了经济系统,正确的指令系统,建筑生成器3000个星系和11,834个行星在系统中,以及200,000个人口,同时全都是有序的和多人支持。由paradox的clausewitz作参考,已经开始困顿在1000个单位和100,000个人口,而我正在管理1.5倍更多的单位,2倍更多的人口,拥有更大的星系,更多的行星,我的处理器消耗了25%的帧预算。令人惊叹的是,我利用思考设计和性能。
得到的教训:
用你的大脑 haha
没有使用ecs/dots/Job系统,就能实现大量单位是实现的,只要你小心处理。使用SoA和DoD/DoP足以实现大规模游戏的引擎。显然,ecs/dots很强大,但并不是必须为大规模模拟的。其他引擎也无法使用我正在做的引擎,如果我用了ecs dots栈,实际上我打算至少在godot中使用。
就是想与大家分享这一点。祝各位好日子!
评论 (0)