Z 您現(xiàn)在的位置:首頁>產(chǎn)業(yè)專欄>手游觀點> 騰訊游戲分享匯:天天飛車六大研發(fā)經(jīng)驗

騰訊游戲分享匯:天天飛車六大研發(fā)經(jīng)驗(3)

2014-08-20 11:06:36來源:優(yōu)游網(wǎng)發(fā)布:優(yōu)游網(wǎng)

編譯為IL中間代碼,以JIT模式在mono虛擬機中運行的,所以一旦C#層出現(xiàn)異常,RQD報上來的調(diào)用棧反映的都是虛擬機自身發(fā)生了異常,無法定位異常發(fā)生的具體位置,然而Android崩潰率大大高于iOS,是需要更多關(guān)注的。

后來通過猜測和試驗,我們發(fā)現(xiàn)其實在C#層產(chǎn)生異常時,Unity可以通過回調(diào)的方式把異常類型和調(diào)用棧告知應(yīng)用,這正是我們需要的,但如何把這些信息上報又成了問題,因為一旦RQD捕捉到異常就會立即kill掉應(yīng)用,可能應(yīng)用都沒有機會處理這些信息,我們把情況反饋給了RQD的研發(fā)組,但短時間內(nèi)他們也很難有比較完善而系統(tǒng)的解決方案。后來通過和RQD開發(fā)同事不斷的探討終于找到了一種看起來簡陋但卻行之有效的方案:由他們提供一個發(fā)生異常時延遲kill掉進程的定制版本,在異常發(fā)生時我們把需要額外上報的異常信息以追加的方式寫入會上報的tomb文件。采用這種方法,我們所需的C#異常信息在Android平臺也能有效地通過RQD上報了,而且能在后臺頁面比較方便的查看。

騰訊游戲分享匯:天天飛車六大研發(fā)經(jīng)驗

安裝包容量縮減方案分享,多種方法協(xié)力顯功效

天天飛車屬于最早那一兩批上線的微信/手Q游戲,為了盡量降低玩家進入的門檻,當(dāng)時對安裝包體積的要求還是蠻嚴(yán)格的,至少要控制到40M以下,而當(dāng)時我們的安裝包體積已經(jīng)突破50M了。

第一步,我們還是檢查梳理了一遍資源,看看有沒有資源沒按照規(guī)范來制作,有沒有資源是冗余的,這應(yīng)該是最基本的,這項工作的一部份可以通過自動化的工具來完成,利用Unity提供的編輯器擴展接口來實現(xiàn)還是很方便的。

我們分析過安裝包的具體構(gòu)成,其實還是貼圖資源占比最大,所以很自然地應(yīng)用了TinyPNG之類的減色工具來減少貼圖的信息量,實際結(jié)果表明這個優(yōu)化對決大多數(shù)貼圖表現(xiàn)的影響都是可以接受的,僅有少量的UI貼圖需要區(qū)別對待一下。

渲染中文字符所使用的矢量字體文件ttf的體積對于手游安裝包來說實在是有點大,一個最基本的優(yōu)化手段就是使用精簡字庫,但精簡過渡又會導(dǎo)致很多字符無法正常渲染,所以最后依然會占用5M左右的空間,當(dāng)時的一個想法就是可否直接把移動設(shè)備操作系統(tǒng)的字體文件拿來用,感謝iOS這個封閉的系統(tǒng),字庫很統(tǒng)一,這個方案確實是可行的,游戲首次運行時通過系統(tǒng)API直接從系統(tǒng)字庫提取出字形信息組裝成了ttf文件,但Android系統(tǒng)就不行了,各種系統(tǒng)版本字庫五花八門,只能還是老實地把精簡字體文件打進安裝包。

還有一個大頭是在音頻上,在PC端上游戲音頻一般直接采用mp3/ogg等流行的壓縮格式就可以了,但終端設(shè)備尤其是安卓設(shè)備很多不具備音頻的硬件解碼能力,CPU運算能力又相對較弱,在做性能分析的時候發(fā)現(xiàn),一些中低端設(shè)備,甚至某些比較高端的設(shè)備,在音頻解壓這一塊都有相當(dāng)大的性能消耗。為了流暢的幀率我們最初不得不采用非壓縮的wav格式。但問題很明顯,非壓縮格式的音頻文件體積太大了,因為信息量特別大,打進安裝包里也縮減不了太多。后來我們采取了一個兩全其美的方案,安裝包里依然存放壓縮格式的音頻,游戲第一運行時,把音頻解壓成非壓縮格式來播放,這塊當(dāng)時節(jié)省了8M多空間。

經(jīng)過這些努力,我們的首發(fā)安裝包體積成功的控制在了30M的水平,但需要注意的是蘋果會對可執(zhí)行文件加密,這會導(dǎo)致AppStore中的版本會比提交審核的原始包大一些.手游與省電似乎天生存在矛盾,小技巧暗藏客觀效果與普通的App相比,手游耗電確實要厲害得多,大家也都比較關(guān)注這一塊,影響手機耗電的因素很多,CPU的占用率,GPU的運算量,屏幕的亮度,網(wǎng)絡(luò)模式和通訊量等等,都會影響到電量消耗的快慢,然而手機網(wǎng)游是這些硬件資源的消耗大戶,而且消耗的更多往往就能給用戶帶來更絢麗的表現(xiàn),更流暢的操作體驗。

一方面,我們要做好游戲的性能優(yōu)化,這是最基礎(chǔ)的,因為這樣就能以更少的硬件資源消耗帶來基本相同的游戲體驗,另一方面,我們也可以采取一些小策略,小技巧來達到相對省電的效果,比方說我們將游戲刷新率最高限制在了30幀,因為這對于天天飛車這種類型的3D游戲的流暢體驗來說基本足夠了,又比如在大廳里面掛機或者暫停游戲的時候, 其實不需要保持比較高的刷新率,這時候就完全可以把幀率降下來,自然而然就獲得了省電的效果。當(dāng)然這只是兩個很小的例子,具體游戲可以根據(jù)自身情況仔細(xì)挖掘,

最新禮包
熱門手游榜
1 王者榮耀
王者榮耀

手機網(wǎng)游

下載

2 陰陽師
陰陽師

角色養(yǎng)成

下載

5 一起來捉妖
一起來捉妖

角色養(yǎng)成

下載

8 奇跡暖暖
奇跡暖暖

角色養(yǎng)成

下載

9 少年歌行
少年歌行

角色養(yǎng)成

下載

優(yōu)游網(wǎng)訂閱號