DOTS的组成部分

本系列文章使用Unity最新版本Unity 2019.3.0f6,大家可以感觉到Unity 2019.3发布得非常慢,其实有个重要原因就是他们引擎内部也在全面转DOTS,DOTS可以给Unity引擎带来巨大的性能提升。2020年我相信DOTS会在世界范围内全面开花结果,各大游戏公司也会转向DOTS开发。

DOTS的全称是Data-Oriented Tech Stack (DOTS),翻译过来就是多线程式数据导向型技术堆栈(DOTS)。原理就是充分利用CPU多核处理器,让游戏处理的速度更快,更高效。

Unity官方分享了一个来自瑞典的游戏工作室的教程,他们工作室的一个项目需要海量的僵尸角色在屏幕中,主角可以发射大量的弹道和僵尸交互,项目有了性能优化所以不得不采用了DOTS方案。

如下图所示,是对他们的采访,可见他们使用DOTS的方案带来了巨大的效率优化。

这里再插播一句,2019年12月,在北京UUG上我也分享过一期DOTS的视频

可能大家对效率高没有什么概念,我们从他们提供的一组数据中来看看DOTS到底能提升多大的效率,如下图所示,场景中一共放置2000个游戏对象进行同步坐标操作。

传统游戏对象方式需要9毫秒。

使用ECS只需要1毫秒,性能提升了9倍。

ECS+Job System只需要0.2毫秒,性能提升了45倍。

ECS+Job System + Burst Compiler 场中放置2W个游戏对象,仅需要0.04毫秒,性能提升了2250倍。

在正式进入学习之前,首先我们看一张图,如下图所示看看神秘的ECS写法和传统MonoBehaviour有什么区别。其实就是把原本MonoBehaviour中数据部分和逻辑部分分拆在IComponentData和ComponentSystem中完成。

通过这个简单例子我相信大家已经对学习ECS充满了信心,那我们就正式开始啦!



文章简介

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倍的秘密。

适合读者

对DOTS感兴趣的开发人员

想要快速入门及掌握DOTS的技术人员

希望将现有游戏转成DOTS的开发人员

你将获得

DOTS设计的核心思想

Unity 2019.3新版本DOTS的重大更新

ECS系统原理、Burst Compiler原理、JobSystem原理介绍


详细课程可前往《DOTS深度研究之原理分析篇》查看。

 1.1 DOTS的组成部分

通过前面的数据我们可以发现ECS + Job System + Burst Compiler的性能简直逆天,这三个东西加在一起就是DOTS的终极性能表现,DOTS主要由这三部分组成:

1. 任务系统(Job System),可用于高效运行多线程代码。

2. 实体组件系统(ECS),用于默认编写高性能代码。

3. Burst Compiler编译器,用于生成高度优化本地代码,提供单指令多数据(SIMD)。

另外,Unity的H5技术方案Tiny也是完全基于DOTS的。DOTS的使用非常灵活,完全可以只用ECS或者ECS + Job System 或者ECS + Job System + Burst Compiler,灵活的好处就是移植性,现在有很多产品都已经开发了一半,如果一上来就全部切到DOTS意味着全都要推倒重来,这是不现实的。

这些开发了一半的产品就可以考虑选择性使用DOTS,比如游戏中有一些大量计算带来的耗时操作,我们可以使用Job System把它放入多线程中。如果场景需要有些大量的模型元素,比如飞行射击类游戏的子弹,为了不影响原有框架的结构,可以让子弹使用ECS + Job System + Burst Compiler,别的还是采用原始游戏对象的方式,这样将大大减少移植的时间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容