復盤王者榮耀手游開發(fā)全過程,Unity引擎使用幀同步放棄狀態(tài)同步

如今已經(jīng)大獲市場成功的《王者榮耀》一直是業(yè)內(nèi)各方關注的對象,而我們也知道這款產(chǎn)品在成為國民級游戲之前,也遇到過一段鮮有人知的調(diào)優(yōu)期。也就是在2015年8月18號正式不刪檔測試版本推出之后,被騰訊評級為不達六星之后的時間。

據(jù)閃電站小豬了解,在8月之后的兩個月間,《王者榮耀》技術(shù)團隊對這個產(chǎn)品進行了非常深度的優(yōu)化,并攻克了局內(nèi)同步、網(wǎng)絡要求,以及性能表現(xiàn)的三大難關,成功達到了騰訊六星產(chǎn)品的標準。比如延遲、卡頓等不同步問題的出現(xiàn)概率從過去的1%,降低到了0.01%,大幅度地改善了游戲體驗。

近日在Unity舉辦的Unite 2017 開發(fā)者大會上,《王者榮耀》項目組技術(shù)總監(jiān)鄧君針對這款游戲的調(diào)優(yōu)歷程進行了復盤,回顧了這款產(chǎn)品在技術(shù)層面遇到的三大問題,以及他們的解決方案。

值得一提的是,參會的開發(fā)者也非常關注這次的演講內(nèi)容,不僅會長當中人員爆滿,圍住了整個演講場地,在演講結(jié)束之后,我們也聽到一路上諸多開發(fā)者對《王者榮耀》技術(shù)經(jīng)驗的探討。

閃電站小豬認為開發(fā)手游的朋友可以看看這篇技術(shù)演講。

以下為鄧君的演講內(nèi)容:

大家好,我是《王者榮耀》的鄧君,很高興今天能夠有這樣一個機會跟在座的同行一起聊聊技術(shù),互相交流,也感謝Unity提供這樣的機會,可以由一個互動。

這次的主題主要是講一下《王者榮耀》從立項之初經(jīng)歷的慘淡時期到華麗的翻盤,包括碰到技術(shù)方面的問題,以及游戲方向上的改變。

我是技術(shù)出身的,整個課題也是技術(shù)面的,會重點介紹王者榮耀和現(xiàn)在見到大部分不同的技術(shù)方案,它實際原理、問題和優(yōu)化的思路。

先簡單自我介紹一下,我是2004年加入騰訊,在騰訊做了4年多的應用層面開發(fā),還包括web各種各樣后臺都做過,經(jīng)歷比較豐富。在2009年我回到成都,剛好成都的崗位也就只有游戲部門是比較合適的,就轉(zhuǎn)行做游戲了。

在成都這邊,參與過《QQ封神記》的開發(fā),之后又開發(fā)了《霸三國OL》這款游戲,這款游戲開發(fā)了三年多,我經(jīng)歷了它從1.0、2.0,再到3.0的版本迭代,這之后才轉(zhuǎn)型做手游,直接做的《王者榮耀》。

現(xiàn)在了解《王者榮耀》或者在玩的人確實比較多,但是我們曾經(jīng)也沒有想過它有這樣的結(jié)果。當時端游很久都沒有做出來成績,業(yè)績和收入都面臨比較大的問題。

2012、2011年前后,《霸三國OL》做到1.0版本,游戲中玩家需要控制多個單位,操作起來很難,一開始可以操作5個單位然后變成3個,但即便只有3個單位,操作也讓人覺得也很痛苦,于是我們慢慢5個單位的技能合在一個英雄身上,不斷地優(yōu)化。能看到,在MOBA領域,你要做創(chuàng)新,還要脫穎而出,是很難的事情。

在2014年底,2015年初的時候,我們準備組建一個手游團隊。因為當時國內(nèi)市場基本上都在開發(fā)手游,能夠繼續(xù)開發(fā)端游或者要準備立項端游的非常少,包括騰訊也只有2、3款端游在開發(fā)。手游是一個機會,我們當時就希望在2015年把我們的《霸三國OL》端游在手機上呈現(xiàn)。

這個時候我們進行了一個初期Demo的驗證,做Demo的只有三個人,引擎、框架、后臺,一系列制作下來大概花了兩周到三周的時間。這個Demo里有基本的進游戲、選人,然后可以釋放技能,正常的戰(zhàn)斗,到結(jié)算。

Demo的引擎我們采用了Unity,做完之后也覺得Unity很好用,開發(fā)效率確實比較高。

2014年年底的時候,我們制作人去公司開會,當時做一個非常明智的決策:我們需要馬上暫停端游的開發(fā),直接做手游。就是這樣的一次決策,真正地扭轉(zhuǎn)了我們整個團隊的命運。如果晚一年,可能今天爆紅的MOBA游戲就是另外一個,而不是王者了。

于是接下來在2015年,我們才有了想法開始獨立招聘20、30人來做這個手游項目。

從端游轉(zhuǎn)型做手游,肯定要面臨選擇,到底要用什么樣的引擎,采用什么樣的方案進行手游的開發(fā)。當時,騰訊以及成都周邊的創(chuàng)業(yè)團隊,基本上都用Unity,我們做Demo的時候,也選擇大家用過的,已經(jīng)有產(chǎn)品進行驗證的引擎,同時我們也考察它適不適合我們的團隊。

Unity在我們當時做Demo時的理解來看,它確實對中小團隊,甚至對一些大型項目來說,都有幾個比較明顯的優(yōu)勢。

1.易上手,我們花三周就可以做出Demo,可以看到易上手是它的一個非常大的優(yōu)勢。

2.它的工具都是很完善的,能夠做到一站式解決,你不需要在這里面下載工具,那里面額外補充一些插件。

3.它插件資源很豐富,我們從最開始做Demo的時候,基本上都可以從Asset Store中找到一些可以用來驗證我們想法的資源,可以加快我們開發(fā)的效率。

4.上面這三點加起來,就能體現(xiàn)出它非常明顯的優(yōu)勢,即開發(fā)效率特別高。

5.它還有跨平臺的優(yōu)勢,它本就是跨平臺的引擎。

6.最后它還能讓你更方便地補充技術(shù)人員,社招也很容易招聘到熟悉Unity的開發(fā)人員。

對比以前我們自己做引擎,或者用過其他的引擎,從效率上來講,最終我們選擇了一個開發(fā)效率最高的引擎Unity。

我們從端游轉(zhuǎn)手游是在2014年底,但真正開始研發(fā)《王者榮耀》是在2015年3月份的時候,這個時候項目的要求是讓開發(fā)的周期盡量短,盡快把手游做上線。我們原本在《霸三國OL》的開發(fā)團隊大概有40、50個人,再加上后來加入的人員,形成了100多人的團隊,進行了游戲的開發(fā)。

在2013、2014年的時候,手游在PvP的方面都比較弱,大部分是卡牌游戲、單機游戲。我們原本是做的端游,它的生命力包括趣味性也是很足的,所以我們做手游的目標,就是即使游戲里會存在PvE的闖關內(nèi)容,但我們的核心還是要把PvP做好,讓玩家有真正的對抗,讓玩家與玩家有交流,能體會到這樣的游戲樂趣。

既然選擇PvP,那么這款產(chǎn)品就是一個網(wǎng)絡游戲,而選擇網(wǎng)絡游戲的同步機制,就是我們首要考慮的問題。同步機制中最常見的應該是CS狀態(tài)同步,我們的端游也是這樣做的,當然,狀態(tài)同步也有他的優(yōu)缺點。

先看一下狀態(tài)同步的優(yōu)點。

第一,它的安全性非常高,外掛基本上沒有什么能力從中收益。

第二,狀態(tài)同步對于網(wǎng)絡的帶寬和抖動包有更強的適應能力,即便出現(xiàn)了200、300的輸入延遲再恢復正常,玩家其實也感受不到不太舒服的地方。

第三,在開發(fā)游戲過程中,它的斷線重連比較快,如果我的游戲崩潰了,客戶端重啟之后只需要服務器把所有重要對象的狀態(tài)再同步一次過來,重新再創(chuàng)建出來就可以了。

第四,它的客戶端性能優(yōu)化優(yōu)勢也比較明顯,比如優(yōu)化時可以做裁剪,玩家看不到的角色可以不用創(chuàng)建,不用對它進行運算,節(jié)省消耗。

再說一下我認為的缺點。

第一,它的開發(fā)效率相對幀同步而言要差一些,很多時候你需要保證服務器與客戶端的每一個角色對象的狀態(tài)之間保持一致,但事實上你很難做到一致。

比如客戶端和服務器端更新的頻率,對優(yōu)化的一些裁剪,網(wǎng)絡的抖動等等,你要讓每一個狀態(tài)在客戶端同步是比較難的,而你要想調(diào)試這些東西,來優(yōu)化它帶來的漏洞、不一致的現(xiàn)象,花費的周期也會比較長,想要達到優(yōu)化好的水平也比較難。

第二,它比較難做出動作類游戲打擊感和精確性。比如說你要做一個射擊類角色,他的子彈每秒鐘要產(chǎn)生幾十顆,基于狀態(tài)同步來做是比較難的,因為系統(tǒng)在很短時間內(nèi),會產(chǎn)生很多數(shù)據(jù),要通過創(chuàng)建、銷毀、位置運算來同步。

第三,它的流量會隨著游戲的復雜度,而逐漸增長,比如角色的多少。我們做《王者榮耀》時,希望在3G、4G的網(wǎng)絡條件下也能夠玩PvP,所以我們希望它對付費流量的消耗能控制在比較合理的水平,不希望打一局游戲就消耗幾十兆的數(shù)據(jù)流量。

而另一種同步策略是幀同步。

這種技術(shù)應用的很廣泛,最早的《星際爭霸》《魔獸爭霸3》都采用了幀同步,他們都基于局域網(wǎng)運行,網(wǎng)絡的條件非常好,也不需要服務器就能搞定。幀同步的優(yōu)點有幾個:

第一,它的開發(fā)效率比較高。如果你開發(fā)思路的整體框架是驗證可行的,如果你把它的缺點解決了,那么你的開發(fā)思路完全就跟寫單機一樣,你只需要遵從這樣的思路,盡量保證性能,程序該怎么寫就怎么寫。

比如我們以前要在狀態(tài)同步下面做一個復雜的技能,有很多段位的技能,可能要開發(fā)好幾天,才能有一個稍微過得去的結(jié)果,而在幀同步下面,英雄做多段位技能很可能半天就搞定了。

第二,它能實現(xiàn)更強的打擊感,打擊感強除了我們說的各種反饋、特效、音效外,還有它的準確性。利用幀同步,游戲里面看到這些揮舞的動作,就能做到在比較準確的時刻產(chǎn)生反饋,以及動作本身的密度也可以做到很高的頻率,這在狀態(tài)同步下是比較難做的。

第三,它的流量消耗是穩(wěn)定的。大家應該看過《星級爭霸》的錄像,它只有幾百K的大小,這里面只有驅(qū)動游戲的輸入序列。幀同步只會隨著玩家數(shù)量的增多,流量才會增長,如果玩家數(shù)量固定的話,不管你的游戲有多復雜,你的角色有多少,流量消耗基本上都是穩(wěn)定的。這點延伸開來還有一個好處,就是可以更方便地實現(xiàn)觀戰(zhàn),錄像的存儲、回放,以及基于錄像文件的后續(xù)處理。

幀同步也有它的缺點。

第一,最致命的缺點是網(wǎng)絡要求比較高,幀同步是鎖幀的,如果有網(wǎng)絡的抖動,一段時間調(diào)用次數(shù)不穩(wěn)定,網(wǎng)絡命令的延遲就會擠壓,引起卡頓。

第二,它的反外掛能力很弱,幀同步的邏輯都在客戶端里面,你可以比較容易的修改它。但為什么《王者榮耀》敢用幀同步,一方面是因為當時立項的時候開發(fā)周期很短,半年時間要做上線,要有幾十個英雄,存在時間的壓力,另一方面,MOBA類游戲不像數(shù)值成長類的游戲,它的玩法是基于單局的,單局的作弊修改,頂多影響這一局的勝負,不會存檔,不會出現(xiàn)刷多少錢刷多少好的裝備的問題,而且作弊之后我們也很容易監(jiān)測到,并給予應有的懲罰,所以我們認為這不是致命的缺點。

第三,它的斷線重回時間很長,相信臺下也有很多王者玩家,也曾碰到過閃退以后重回加載非常長的情況,甚至加載完以后游戲也快結(jié)束了,這是幀同步比較致命的問題。

第四,它的邏輯性能優(yōu)化有很大的壓力。大家應該沒有見到哪一款大型游戲是用幀同步來做的,因為這些游戲的每一個邏輯對象都是需要在客戶端進行運算的。如果你做一個主城,主城里面有上千人,上千人雖然玩家看不到它,但游戲仍然需要對他們進行有效的邏輯運算,所以幀同步無法做非常多的對象都需要更新的游戲場景。

那么我們?yōu)槭裁催x擇了幀同步而放棄了狀態(tài)同步呢?

我們前面提到它兩個優(yōu)點缺點是相對的,這邊的優(yōu)點對于那邊來說就是缺點。對于我們手游立項的時候,最重要就是時間。當時市面上正在開發(fā)的MOBA手游不止王者一款,大家都在爭上線的時間,所以我們要選擇一個開發(fā)周期最短的方案。

然后我們做端游的時候也有一個深刻的體會,如果要做有趣的英雄,有趣的技能,它在狀態(tài)同步上面很難調(diào)出一個比較滿意的效果。所以最后我們依然選擇幀同步的方案。

現(xiàn)在來看,選擇幀同步方案之后,我們再把它的缺點進行優(yōu)化或是規(guī)避,之后它帶來的好處是非常明顯的。《王者榮耀》重除了英雄的設計以及技能的感覺,還有很重要的一點,就是它確實在做一些非常有特色的英雄,它的技能、反饋、體驗上面都做得不錯,這些都是基于幀同步技術(shù)方案帶來的優(yōu)勢。

我們選擇了方案之后,當時覺得很high,覺得這樣一個技術(shù)方案開發(fā)起來得心應手,效率如此之高,做出來的效果也很好。

但事實上,它也有好的一面,也有壞的一面,技術(shù)測試版本上線后質(zhì)量不好,其中技術(shù)層面遇到的問題就是下面這三座大山。

第一是同步性,同步性這塊容易解決,其實也解決了;

第二也是最大一塊網(wǎng)絡問題,幀同步它的網(wǎng)絡問題導致我們對它技術(shù)方案的原理沒有吃透,碰到了一些問題,那時候游戲的延遲很重,畫面卡頓,能明顯感覺走路抖動的現(xiàn)象;

第三是性能問題,這個問題始終存在,我們也一直在優(yōu)化。

第一座大山,最容易解決的同步問題。

幀同步的技術(shù)原理相當簡單,10、20年前在應用這種技術(shù)了,從一個相同初始的狀態(tài)開始,獲得一個相同的輸入,往下一幀一幀執(zhí)行,執(zhí)行時所有代碼的流程走得都是一樣的,這個結(jié)果調(diào)用完了以后,又有一個新狀態(tài),完成循環(huán)。相同的狀態(tài),相同的流程,不停的這樣循環(huán)下去。

這個原理雖然簡單,但是你要去實現(xiàn)它的時候,還是會有很多坑。

右邊寫的是實現(xiàn)要點,這是我們在解決第一座大山經(jīng)驗的總結(jié),也是我們實際開發(fā)過程當中做的事情。

首先,我們所有的運算都是基于整數(shù),沒有浮點數(shù)。浮點數(shù)是用分子分母表達的。

其次,我們還會用到第三方的組件,幀組件也要需要進行一個比較嚴格的甄別。我們本身用的公司里面關于時間軸的編輯器里面,最初也是是浮點數(shù),我們都是進行重寫改造的。

再次,很多人初次接觸幀同步里面的問題,就是在寫邏輯的時候和本地進行了關聯(lián)、和“我”相關,這樣就導致不同客戶端走到了不同的分支。實際上,真正客戶端跟邏輯的話,要跟我這樣一個概念無關。

接下來還有隨機數(shù),這個要嚴格一致。這是實現(xiàn)的要點,嚴格按照這上面的規(guī)則寫代碼還是有可能不同步,本身就很難杜絕這樣的問題。

最后,真正重要的是開發(fā)者要提升自己發(fā)現(xiàn)不同步問題的能力,什么時候不同步了,不同步你還要知道不同步在什么點,這是最關鍵的。你需要通過你的經(jīng)驗和總結(jié)提升這樣的能力。這個能力還是通過輸出來看不同客戶端不同輸出,找到發(fā)生在什么點。

比如在《王者榮耀》里,我們看到不同步的現(xiàn)象應該是這樣,有人對著墻跑,你看到的和別人玩的游戲是不一樣的,就像進入平行世界。

最開始測試《王者榮耀》的,我們希望不同步率達到1%,就是100局里面有1局出現(xiàn)不同步,我們就算游戲合格,但實際上對于這么大體量游戲來說,這個比率是有問題的,經(jīng)過我們不停的努力,現(xiàn)在已經(jīng)控制在萬分之幾,一萬局游戲里面,可能有幾局是不同步的。

這個問題不一定是代碼原因或者沒有遵循這些要點才出現(xiàn)的,有可能是你去修改內(nèi)存,你去加載資源的時候,本地資源有損害或者缺失,或者是異常。說白了,你沒有辦法往下執(zhí)行,大家走了不同分支,這都可能引起最終是不同步的。

如果你不同步概率比較低,到了這種萬分之幾概率的時候,很難通過測試來去還原,去找到這樣不同步的點。

最開始我們游戲出現(xiàn)不同步的時候,就是在周末玩家開黑多的時候,隨著你的概率越來越低,基本上你就自己就還原不出這些問題了,只能依靠玩家?guī)湍氵€原這樣的場景,來分析這樣的不同步問題。

同步性遵循這樣的要點,按照這樣的思路來寫,加上你不同步定位的能力,有了監(jiān)控手段能夠去發(fā)現(xiàn),這個問題其實就解決了。解決之后,你就可以好好享受幀同步的開發(fā)優(yōu)勢。

第二座大山就是網(wǎng)絡,《王者榮耀》技術(shù)測試版本出臺的時候,延遲非常大,而且還是卡頓,現(xiàn)在看一下幀同步里面比較特別的地方。幀同步有點像在看電影,它傳統(tǒng)的幀同步需要有buffer,每個玩家輸入會轉(zhuǎn)發(fā)給所有客戶端,互相會有編號,按順序輸入幀。

比如我現(xiàn)在已經(jīng)收到第N幀,只有當我收到第N+1幀的時候,第N這一幀我才可以執(zhí)行。服務器會按照一定的頻率,不同的給大家同步幀編號,包括這一幀的輸入帶給客戶端,如果帶一幀給你的數(shù)據(jù)你拿到之后就執(zhí)行,下一幀數(shù)據(jù)沒來就不能執(zhí)行,它的結(jié)果就是卡頓。

網(wǎng)絡絕對理想的情況下還好,但現(xiàn)實的網(wǎng)絡環(huán)境不是這樣的。幀同步要解決問題就是調(diào)試buffer,以前有動態(tài)的buffer,它有1到n這樣的緩沖區(qū),根據(jù)網(wǎng)絡抖動的情況,收入然后放到隊列里面。

這個buffer的大小,會影響到延遲和卡頓。如果你的buffer越小,你的延遲就越低,你拿到以后你不需要緩沖等待,馬上就可以執(zhí)行。但是如果下一幀沒來,buffer很小,你就不能執(zhí)行,最終導致的結(jié)果你的延遲還好,但是卡頓很明顯。

如果調(diào)到幀同步的buffer,假如我們認為網(wǎng)絡延遲是1秒,你抖動調(diào)到1秒,那得到的結(jié)果雖然你畫面不抖動了,但是你的延遲極其高。如果連最壞的網(wǎng)絡情況都考慮進去,buffer足夠大,那么記過就跟看視頻是一樣的,平行的東西,看你調(diào)大條小。一些局部的措施我們都做過,都是一樣的問題。

具體我們怎么優(yōu)化卡頓的問題呢?

剛才提到該幀同步與buffer,這個buffer可以是1也可以到n,我們要解決我們的延遲問題,我們就讓buffer足夠小。事實上《王者榮耀》最后做到的buffer是零,它不需要buffer,服務器給了我n,馬上知道是n,我收到n,我知道下一次肯定是n+1,所以我收到n之后馬上就把n這一幀的輸入執(zhí)行了。

那么為什么不卡頓了,畫面不抖動了?

最后一個關鍵點,是本地插值平滑加邏輯與表現(xiàn)分離。客戶端只負責一些模型、動畫、它的位置,它會根據(jù)綁定的邏輯對象狀態(tài)、速度、方向來進行一個插值,這樣可以做到我們的邏輯幀率和渲染幀率不一樣,但是做了插值平滑和邏輯表現(xiàn)分離,畫面不抖了,延遲感也是很好的。

做了這些后,我們還把TCP換成UDP,在手機環(huán)境下,弱網(wǎng)的情況下,TCP很難恢復重連,所以最后用了UDP來做。整體來說,在網(wǎng)絡好的情況下,它延遲也是很好的,在網(wǎng)絡比較差的情況下做插值,也是傳統(tǒng)CS的表現(xiàn)。

我們經(jīng)常見到角色A和B,有些客戶端A在左B在右,有些是A在右B在左,幀同步邏輯上面AB之間的距離和坐標都是完全一樣,但是畫面上看到他們可能會不重合,那就是你把它們分離之后的表現(xiàn)。網(wǎng)絡極其好的情況下,它應該是重合的,但是在網(wǎng)絡差的情況下,可能會有些偏差。這里面是最重要的一塊優(yōu)化。

第三座大山,是我們對性能的優(yōu)化。

本身幀同步邏輯上面在優(yōu)化上面存在一些缺點,所有的角色都需要進行運算。這方面我們也是借助Unity的特性,如果你想追求性能上的極致,有些東西你需要尋求好的方式。

第一點是熱點的處理。

我們是不用反射的,它都有GC性能開銷,我們的做法里面,會把對象的顯示隱藏放在不同的渲染層里面,盡量讓整個游戲幀率是平滑的過程。還有我們本身有自己的系統(tǒng),比如AI,在《王者榮耀》這樣的多角色游戲中,你如果想要做出比較好的體驗,那么AI就要做得比較復雜。

而要去優(yōu)化熱點,我覺得就只有這三個步驟可以走。

首先,從程序的結(jié)構(gòu)上面能找到更優(yōu)的,它的優(yōu)化效果就是最明顯的;其次,如果你的結(jié)構(gòu)都是用的最好,就去挖掘局部的算法,調(diào)整你代碼的一些寫法。最后,如果局部的算法都已經(jīng)調(diào)到最優(yōu)還是沒有什么辦法,那只有一條路,就是犧牲整個質(zhì)量,就是分幀降頻。

第二點是GC,這塊剛才說不用反射,還有裝箱和拆箱的行為也是盡量少用。

Unity指導過我們的優(yōu)化,從GC上面的考慮,他們建議每一幀應該在200個字節(jié)以內(nèi)是比較好的狀態(tài),其實很難做到,王者也是每一幀在1k左右,很難做到200。

第三點是Drawcall,這些傳統(tǒng)的優(yōu)化手段大家都用的很熟了。

第四點是裁剪,幀同步里面是不能裁剪的,表現(xiàn)里面我看不到的可以降低頻率或者不更新它,這在表現(xiàn)里面可以做的。

第五點是3DUI的優(yōu)化,比如《王者榮耀》的血條、小地圖上面疊的元素等等,這些UI都比較豐富,這塊我們用了31UI的方式來優(yōu)化,沒有用UGUI里面進行血條方面的處理。

我們也犧牲了一些東西,我們把所有東西都加載了,在游戲過程當中,我們希望不要有任何IO行為,包括輸出我們都是要布局的。你處理的決策和復雜度,如果在一幀里面放出100顆子彈,在放100顆子彈的時候一定要掉幀的,一定要在力所能及的時候把這些東西做到極致。

上面提的是我們的第一代,也是在去年5月份以前做的優(yōu)化方案。5月份以后,我們還做了另外一件事情:GameCore。

首先,為什么我們覺得iOS比安卓的優(yōu)化效率高一些,一方面是iOS的CPU架構(gòu)包括系統(tǒng)確實都優(yōu)化的比較好,另一方面我們用的Unity4.6,在IOS下面它本身效率高一些,在安卓端的機器各種各樣,性能也是千差萬別,我們只能用性能比較差的方式。

因為我們已經(jīng)做到邏輯和表現(xiàn)的分離,那么我們能不能把邏輯獨立出來,做成一個C++的東西,實際上我們在去年開始已經(jīng)在這樣做了。做之前也測試過C++和Mono性能的差別,大概是2.5左右,本身我們的邏輯占比游戲消耗20%多,邏輯不是一個大頭,我們做了這件事情之后,還是有效的,幀率提升了2到3幀,花的時間很長。

其次,做GameCore以后最明顯的變化是我們以前邏輯上的GC沒有了,我們有自己內(nèi)存的管理、對象的管理,包括里面所有的容器類這些東西都是我們自己實現(xiàn)的,包括反射整個一套。它有了自己的內(nèi)存管理,本身的效率就會比較高,這就已經(jīng)是一個比較明顯的優(yōu)勢了。

再次,有了GameCore之后,又多了很多應用場景,這個東西就是玩法的服務器版本,應用場景運行服務器要做很多的分析,還有第三方使用都是可以的。

最后,GameCore還有可以擴展多線程的潛力。

今后,我們也有幾個計劃。

第一,我們考慮能不能在熱更新上面有所突破。因為王者這樣一個游戲類型,包括它的體量,我們對于性能有一個比較極致的追求,不會輕易使用腳本層面在性能層面本身就不是最好的。這個我們要去研究的就是熱更新,性能最好的方式。

第二,我們也在和硬件廠商溝通,他們希望游戲能夠真正發(fā)揮多核性能上的優(yōu)勢,大部分的游戲在單核上面,把一個核吃的滿滿的,很多時候我們現(xiàn)在得出的結(jié)論,GPU性能也很強,王者并沒有對GPU占滿,可能只用了30%,CPU反而吃的比較滿,吃滿以后它還有另外一個壞處,它的發(fā)熱、降頻,你如果用多線程、多核去盡量平坦,讓它不要處于高頻的工作方式,反而會有更好的效果。

第三,我們現(xiàn)在用的是Unity 4.6版本,但Unity已經(jīng)進化到5.7版了,后面他們還會推出新的特性,我們希望結(jié)合一些Unity新特性,現(xiàn)在已經(jīng)有些游戲用5.6可以提升性能。

最后,不光是提升性能問題,Unity在多線程的渲染,也有很好的作用,使用引擎優(yōu)勢也是很必要的。隨著性能的提升,我們會對王者的畫質(zhì)進行升級。

好的,我今天的演講就到此結(jié)束了。

轉(zhuǎn)自 http://king.shandian.biz/88.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內(nèi)容

  • 參考解密:騰訊如何打造一款實時對戰(zhàn)手游從《王者榮耀》來聊聊游戲的幀同步《王者榮耀》技術(shù)總監(jiān)復盤回爐歷程:沒跨過這三...
    合肥黑閱讀 22,531評論 3 41
  • 農(nóng)藥自從上線以來,依靠著強大的產(chǎn)品力以及騰訊的運營能力,在游戲市場上表現(xiàn)可謂是風生水起,根據(jù)第三方的調(diào)研數(shù)據(jù)顯示,...
    溫冷月閱讀 2,023評論 0 3
  • (一) 我最近一直在做一個夢 夢里的我 大紅嫁衣 十里桃花 百米迎親陣仗 而我癡癡的笑 醒來 只有這冰冷的大宅子和...
    程姑娘12138閱讀 416評論 4 3
  • 堅持一件事情,好像對我來說真的很難。每次定計劃的時候都洋洋灑灑,感覺自己肯定可以完成,當然,剛開始的幾天都能按計劃...
    金融界的藝術(shù)生閱讀 225評論 0 0
  • 細簾落如幕,無聲潤萬物。 夜眠醒來時,才覺至夏初。
    郭大熊呀閱讀 225評論 0 0