疫情牵动着每个中国人的心,本着不走亲不窜巷的原则不得不在家过了个比较长的假期。这段时间我也没闲着,于是写了这篇《DOTS深度研究之从原理到实践》的文章。
全文一共142页,并且拆成两篇文章
《DOTS深度研究之应用实践篇》https://edu.uwa4d.com/course-intro/0/161
《DOTS深度研究之原理分析篇我们详细介绍了DOTS的工作原理,让大家可以深入理解任务系统(Job System)、实体组件系统(ECS)、Burst Compiler编译器的工作方式。虽然DOTS可以大量提升游戏性能,但是如何才能快速且有效地应用在具体项目中呢?有的项目刚立项,也有的项目已经开发了一半,美术是否抵制DOTS的开发流程?诸如此类的问题接踵而至。
Unity引擎为了让传统游戏对象方式转成DOTS的流程已经做了很多努力,但是仍有提升空间。比如,目前摆在实际项目中的两大头号难题,烘焙贴图的应用和DOTS动画系统的应用,这两个问题官方都没有提供直接解决方案,但是可以在本文中找到间接实现的方法。
《DOTS深度研究之原理分析篇》https://edu.uwa4d.com/course-intro/0/158
DOTS全称是Data-Oriented Tech Stack,翻译过来就是多线程式数据导向型技术堆栈(DOTS),它由任务系统(Job System)、实体组件系统(ECS)、Burst Compiler编译器三部分组成。DOTS保证相同类型组件在内存中都是顺序排列,极大程度增加缓存的命中率,此外配合任务系统(Job System)让开发者无需头疼多线程同时访问数据需要手动加解锁的麻烦,最终加持Burst Compiler让性能飞起来。文本以最新的Unity 2019.3版本,学习DOTS的原理、ECS系统原理、Burst Compiler原理和JobSystem原理,带你掌握DOTS让游戏性能提升2000倍的秘密。
文章是收费的,不过去年UUG北京活动中我也分享了一篇DOTS的视频,对DOTS有兴趣的朋友可以免费观看
https://www.bilibili.com/video/av79798154
- 本文固定链接: https://www.xuanyusong.com/archives/4708
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
雨凇大佬,演讲的ppt有没有下载方式,方便做笔记,谢谢
我的项目不是DOTS的,现在想转DOTS。有个问题,我想不明白,特来请教。我的项目中有个处理消息的模块“MessageManager”,用于注册消息和分发消息, 单件和观察者的模式。单件是用到了静态数据(instance)。存储注册的消息和回调函数用的是一个c#的字典。那问题来了:DOTS的system中的job能用这个单件(静态数据,静态方法)吗? job是多线程的,这儿又存在一个字典。我不确定在DOTS下,类似这种“MessageManager”是否适合?如果不适合我该用什么来替代它,毕竟用消息来解耦还是毕竟常见的?项目中还挺多单件的Manager的,怎么处理?