从接触DOTS到基于该技术栈开发游戏有段时间了,整理了些东西,部分来自于官网文档的要点,部分来自于项目实践,mark一下,欢迎各位看官指正。
关于传统游戏开发困境的简单思考
传统方式基于面向对象开发方式,优点是框架设计简便,封装、继承、多态、可以怼出来各种你想要的东西,入门低产出相对高且稳定,缺点相对不明显,只有在开发到特定游戏表现的时候,比如超大场景,超多战斗单位,有很大计算量的时候,才会发现oo模式下的框架,笨拙且相对低效,无法应对这些移动端游戏性能表现和特定需求之间的矛盾。
Unity DOTS的框架应运而生,面向数据的技术栈,ECS+JobSystem+Burst,ECS框架下处理数据的能力提升,外加Job多线程充分利用多线程资源提升算力,并且在编译层面对编译生成的IL中间语言进行进一步优化,生成高性能的机器码。这是一套上限很高的高性能的开发框架。
缺点么,当然更明显,首先基础概念深入,理论知识要求高,一知半解的情况下开发很危险。其次System Job组织调度写法相对复杂且关注点很多。除此之外,性能敏感、熵值不稳也是很难搞。
会把一些开发关注点罗列,如果还没简单过一遍Unity官方文档的话,最好过去先简单看一下,最起码要知道我们在讨论什么对吧。
https://docs.unity3d.com/Packages/com.unity.entities@0.1/manual/component_data.html
头脑风暴~~~
ECS + JobSystem + BurstCompile = 高性能 + 多线程 + 编译层面优化
基础特性
ECS
- ArcheType & Chunk
- ArcheType是Ent