Zephus 发表于 2021-5-26 07:47

语言带来的这点收益 远远不如ECS带来的收益。并且il2cpp就已经是C++了,所以你这是纯属瞎折腾。
不要过早优化
当然你要说,什么物理引擎什么的,可以用C++/rust做成单独的模块。

ChuanXin 发表于 2021-5-26 07:56

不要面向幻觉编程,你的核心逻辑部分说不定根本就不是性能瓶颈,先把逻辑用最简单的方式写出来,如果慢就profile看是哪里慢,然后再考虑优化。

stonstad 发表于 2021-5-26 08:04

确实有一些性能敏感的游戏会用C++/Rust编写核心库,然后以dll的方式导进Unity用,不过说实话这种方案操作起来过于麻烦,实际可操作性不强。
而且如其他回答所说,C#已经很快了,C++对于C#的性能提升远不足以解决架构和算法带来的性能瓶颈。
题主主要担心的应该还是工厂游戏里大量单位的行为和状态更新吧,DOTS确实是很好的选择,不过它还没有定型,写起来可能还是挺麻烦。在传统的架构下,通过减少骨骼动画、优化Update以及做好各方面的剔除工作(LOD和不可见物体不执行逻辑这样),就可以获得很大的性能提升了。

unityloverz 发表于 2021-5-26 08:06

换个语言基本没什么卵用,这种性能差距是体现在数量级上的。
要从架构上解决问题
一种选择是并行化,对于大规模相似简单GameObject的更新改成放在GPU上做,充分利用ComputeShader的并行计算能力,戴森球计划选择的就是这个方向。
如果更新逻辑比较复杂,非要在CPU上做,可以考虑ECS,它可以充分利用局部性原理,做成批处理,然后批处理就有向量化的可能,CPU都有向量指令集,应该可以帮不少忙。

RedZero9 发表于 2021-5-26 08:06

你需要先dop,多用pod,再考虑用simd 或 像 戴森球计划 做gpu加速。

stonstad 发表于 2021-5-26 08:11

可以考虑参考戴森球作者文章里提到的优化方案。

量子计算9 发表于 2021-5-26 08:13

unity的所有关于对象的操作都是在一个主线程操作的,你要怎么实现多线程的管理GameObject呢?除非你去修改Unity引擎底层。

JoshWindsor 发表于 2021-5-26 08:21

这类游戏性能瓶颈根本不在游戏逻辑。。。。而是在渲染上。。。游戏逻辑你计算效率再快也没啥用,从图形学入手吧

RhinoFreak 发表于 2021-5-26 08:23

就做好一点就行,数据驱动
页: 1 [2]
查看完整版本: 如果用unity制作一个高性能的类工厂游戏, 我应该选择用C++/rust替换底层的运算来加速吗?