這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Unity DOD該如何理解,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)公司專注于孟州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供孟州營(yíng)銷型網(wǎng)站建設(shè),孟州網(wǎng)站制作、孟州網(wǎng)頁(yè)設(shè)計(jì)、孟州網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造孟州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供孟州網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
什么是DOD
Unity實(shí)際上在做的大計(jì)劃,是一個(gè)在程序?qū)昧餍辛艘魂囎?最近越來越火的概念DOD (Data Oriented Design) 即 面向數(shù)據(jù)設(shè)計(jì). 他是與我們所熟知的OOD (Object Oriented Design) 即面向?qū)ο笤O(shè)計(jì)相對(duì)的概念. 目前的流行程度甚至于你用youtube一搜就會(huì)發(fā)現(xiàn):
在截圖里第一條搜索結(jié)果的Mike Acton大佬,目前正供職于Unity并且正是Unity的DOD改革主導(dǎo)者之一.然后第三條則是大名鼎鼎的吹哥在自己正在設(shè)計(jì)的新游戲語言開發(fā)直播里講解DOD.雖然我認(rèn)為還不至于說"OOP已死,DOD永生"這么極端,不過其紅火程度可見一斑.
說回Unity, 如圖,這是摘自Unity at GDC 2018上的一幀Slide, 表達(dá)了Unity DOD計(jì)劃的全貌.其全新的組成部分是從上到下是以下幾個(gè):ECS, Job System, HPC#, Burst Compiler.
實(shí)例組件系統(tǒng),是編程思想的改變,從基于對(duì)象的運(yùn)作,改變?yōu)?流水線式運(yùn)作"(我自己的比喻).雖然顯然破壞了"程序?qū)ΜF(xiàn)實(shí)的模擬"這樣美好的愿望,但是卻大大的增強(qiáng)了解耦性,可測(cè)性,擴(kuò)展性.并且天然是以下要描述的幾個(gè)組件的好伙伴~
Job System是Unity對(duì)CPU多核編程的應(yīng)用.通過把工作分散到CPU的各個(gè)核心上來大大提升運(yùn)行效率.而ECS跟他之間的搭配則是由于ECS的System部分天然是以批量處理為核心的,因此只要稍加改動(dòng),就可以轉(zhuǎn)變?yōu)榕康姆諮ob交到多核去處理.實(shí)現(xiàn)性能的提升.
HPC#(High Perform C#)是Unity開發(fā)的一個(gè)C#子集,通過拋棄對(duì)象,指針,等高級(jí)特性,從語言層面加速性能. 截圖里沒有直接列出這個(gè),但是NativeContainer是HPC#的一環(huán). 而由于ECS本身的去對(duì)象化,可見又是天然的好伙伴.
這又是Unity自己開發(fā)的,一個(gè)全新的快速編譯器,最重要的是由于不用考慮通用性,僅僅針對(duì)Unity,針對(duì)游戲,再配合HPC#, 使得性能有了更大的提升.由于牽扯到編譯器層面,這個(gè)部分我的理解是最薄弱的,如有錯(cuò)誤敬請(qǐng)指正.
在官方Unity DOD教程里則給出了經(jīng)典方式同屏18000單位,DOD方式104000單位的近乎6倍的性能提升.當(dāng)然我們的實(shí)際游戲會(huì)基于游戲內(nèi)容的不同,以及組件的復(fù)雜性未必能有這樣的極端結(jié)果,但我想2-3倍的性能提升還是可以預(yù)期的.
然后就是最主要的目前階段如何學(xué)習(xí)了. 通過這兩周的學(xué)習(xí),我的認(rèn)識(shí)是:目前的學(xué)習(xí)材料雜亂無章并且容易過期.原因很簡(jiǎn)單就是現(xiàn)在都只是在preview階段,很多東西都在快速變更中,尤其API里,對(duì)一個(gè)需求還會(huì)存在多種實(shí)現(xiàn)方式,官方希望在試用者們的反饋下最終再確定到其中一種,因此你現(xiàn)在寫的代碼和看的教程很可能會(huì)很快無效.甚至18年下半年的大會(huì)上出現(xiàn)的一些代碼標(biāo)簽,都已經(jīng)和上半年的不一樣了. 官方也顯然沒有精力維護(hù)一個(gè)系統(tǒng)性的教學(xué).因此我認(rèn)為我把我現(xiàn)在所學(xué)到的材料按照我自己認(rèn)為合適的學(xué)習(xí)曲線去歸納一下并且排序列出是非常有必要的.
最后說一下單元測(cè)試,這個(gè)東西在游戲界爭(zhēng)議很大,我個(gè)人是站在一定要有單元測(cè)試這一派的,而Unity官方也是提供全面的單元測(cè)試的.因此新的UnityDOD如何進(jìn)行單元測(cè)試,主要的學(xué)習(xí)來源就是Unity的源碼了. 在Package Manager里提供的預(yù)覽版Entities里有官方自己的單元測(cè)試,這就是首要的很好的測(cè)試學(xué)習(xí)來源.再有就是剛才說的Unity Tiny模式項(xiàng)目也有比較全的單元測(cè)試.
上述就是小編為大家分享的Unity DOD該如何理解了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。