不要过早优化
当然你要说,什么物理引擎什么的,可以用C++/rust做成单独的模块。 不要面向幻觉编程,你的核心逻辑部分说不定根本就不是性能瓶颈,先把逻辑用最简单的方式写出来,如果慢就profile看是哪里慢,然后再考虑优化。 确实有一些性能敏感的游戏会用C++/Rust编写核心库,然后以dll的方式导进Unity用,不过说实话这种方案操作起来过于麻烦,实际可操作性不强。
而且如其他回答所说,C#已经很快了,C++对于C#的性能提升远不足以解决架构和算法带来的性能瓶颈。
题主主要担心的应该还是工厂游戏里大量单位的行为和状态更新吧,DOTS确实是很好的选择,不过它还没有定型,写起来可能还是挺麻烦。在传统的架构下,通过减少骨骼动画、优化Update以及做好各方面的剔除工作(LOD和不可见物体不执行逻辑这样),就可以获得很大的性能提升了。 换个语言基本没什么卵用,这种性能差距是体现在数量级上的。
要从架构上解决问题
一种选择是并行化,对于大规模相似简单GameObject的更新改成放在GPU上做,充分利用ComputeShader的并行计算能力,戴森球计划选择的就是这个方向。
如果更新逻辑比较复杂,非要在CPU上做,可以考虑ECS,它可以充分利用局部性原理,做成批处理,然后批处理就有向量化的可能,CPU都有向量指令集,应该可以帮不少忙。 你需要先dop,多用pod,再考虑用simd 或 像 戴森球计划 做gpu加速。 可以考虑参考戴森球作者文章里提到的优化方案。 unity的所有关于对象的操作都是在一个主线程操作的,你要怎么实现多线程的管理GameObject呢?除非你去修改Unity引擎底层。 这类游戏性能瓶颈根本不在游戏逻辑。。。。而是在渲染上。。。游戏逻辑你计算效率再快也没啥用,从图形学入手吧 就做好一点就行,数据驱动
页:
1
[2]