这是一篇翻译自我在DOU上首先以乌克兰语发表的文章 (https://gamedev.dou.ua/blogs/200k-agents-unity-dots-burst/),简化为适合 Reddit 帖子的内容,属于乌克兰开发者社区。

200,000 aliens 在关卡上,每个都在 CPU 上使用 Burst 和 jobs 进行模拟,且为锁步确定性。在游戏中保持 60 fps(60 是上限)。这是它的起源故事:使用的技术、最初的 200,000 个胶囊以及像液体一样流动的 horde。

技术和工作原理

DOTS

DOTS(Data-Oriented Technology Stack)是 Unity 基于数据而非对象的代码技术栈。它是这一切的原因。简言之:Burst 将 C# 编译为机器代码,Collections 提供绕过垃圾回收的内存,Mathematics 提供其理解的数学,Jobs 将代码分布到所有核心,Entities 将数据存储在块中,Entities Graphics 在单次调用中绘制成千上万相同的体体。Burst 屹立中心:Collections 和 Mathematics 为其设计,Jobs 和 Entities 则是使 Burst 编译其代码的结构。没有它它们仍然工作,但作为常规 C#,速度较慢。

Burst:机器代码而非常规 C

常规 C# 在 Unity 中编译为 IL(中间字节码),然后由 Mono 运行或由 IL2CPP 翻译为 C++。Burst 将 jobs 和静态方法的 IL 通过 LLVM 编译为优化后的机器代码(Burst 概览)。

为使用 Burst,