巨人网络李东旭:关于提高游戏流畅性的那些事
程序員的噩夢,一定是某個角落突然有人大呼“怎么又這么卡呀???”玩家、運營、產品老是噴你的客戶端為什么卡怎么辦?總有些技巧,學會了,卡頓的鍋,咱技術不背!
李東旭??巨人網絡客戶端軟件專家。擅長含有物理、數學等游戲玩法研發,熟悉游戲性能優化,目前負責《球球大作戰》客戶端相關研發。
本期Live,GAD邀請到了巨人網絡客戶端資深軟件工程師李東旭老師,以《球球大作戰》為例,分享了手游客戶端的優化技巧、客戶端與服務器的同步怎么優化等問題,干貨滿滿,小編本著有福同享的原則整理了Live的精彩內容推送給大家。
1.我們一個游戲在unity3d 里面用DragonBones 做的2d動畫 普攻的特效沒有分離,加載和運行的時候很卡 cup 占用很高 這個怎么優化呢?
李東旭:動畫加載和運行卡,檢查一下骨骼結點是不是很多。
2.像是在《球球大作戰》中網絡延遲到網絡恢復的這期間,客戶端要怎樣處理才能更平滑,客戶端會加速跑嗎?
?
李東旭:出現延遲的話,客戶端會根據當前收到的數據進行計算和模擬,使得客戶端的球也能繼續移動,等網絡恢復的時候通過加速平滑的拉過去。
3.手游客戶端ios和安卓有什么針對性的優化呢?
李東旭:其實IOS的同體性能比安卓要好很多,所以我們主要集中在安卓這一塊,安卓優化好了Ios也就自然而然優化好了。
安卓的優化也主要是通用的那些優化,主要就是代碼效率、資源加載、美術模型的優化等。
4.服務器同步的時候不是很平滑,這個怎么優化呢?
李東旭:服務器同步的話,還是需要客戶端做一個平滑的處理,使得玩家在游戲中不易感覺出來。
?
5.單物理服務器承載量級大概是多少?
李東旭:一個房間大概能承載數百人,一個服務器有上千個房間。
6.想請教一下做狀態同步這種框架需要注意哪些問題?和幀同步比起來差異又是如何的?
李東旭:幀同步與狀態同步最大的差異就是一個在客戶端、QQ號購買平臺一個在服務端,狀態同步要比幀同步要好處理些,幀同步比較麻煩一點的就是要保證每個現象都要一樣,比較難一點。
7.網絡波動的情況下,客戶端會不會卡頓嚴重,有沒有什么好的優化辦法?
李東旭:小的波動其實影響不大,主要是怕那種發一個消息,很久才收到,會讓玩家明顯感到卡的情況出現。
8.單物理服務器也可以每個房間100人,1000個房間嗎?
李東旭:1000個房間是極限情況,我們其實不是每個服務器都這么多的,一般情況大概只有一半左右。
9.Cocos引擎手機游戲耗電的主要因素有哪些呢?
李東旭:耗電主要是CPU、GPU的工作量很高,CPU主要是我們自己些的代碼,GPU主要就是那些美術資源。cocos這個我們用的不是很多,但對于Unity來說,我們有個優化就是降低分辨率,減少引擎渲染的開銷。
10.《球球大作戰》中用的是Udp還是Tcp?Udp真的效率比tcp高很多嗎?因為udp感覺成本比較高,還要保證順序重發包。
李東旭:剛開始用的Tcp,現在是兩種混著用。一般情況會檢測玩家的網絡情況,網絡較好的情況用的是Tcp,波動比較大的話會切換成Udp,這個是動態切換的。Udp的成本的確是比較高,所以前期為了快速上線用的Tcp,現在是玩家反應卡頓過多,所以花大力氣做了Udp,Udp的效率確實比Tcp高很多。
11.像unity里的2d動畫的骨骼和紋理,一般是多少合適呢?服務器發包頻率多少?
李東旭:我們一般采用的是5個骨骼,紋理256KB。服務器發包頻率最高每秒10次,在這個頻率內的話,服務器還是很流暢的,如果超了的話就會有延遲了。
12.我們第一個包中場景初始的動畫很多。unity的的動畫和龍骨或者說用dotween那個效率高一點?球球的模型動畫或場景ui動畫是如何優化的呢?
李東旭:場景的初始動畫建議動態加載進來,看不見的先不要加載在產品上面。效率最高的動畫其實是Unity的animaton,最簡單效率也最好。動畫以簡單為主,時間越短越好。球球里面也沒有使用過多復雜的動畫。
13.動畫是最好歸納到一個動畫狀態機 然后統一管理子節點的動畫好 還是,每個都是animaton用程序處理好,也就是說是否能相信animator的效率?
李東旭:優先程序來實現動畫的狀態,如果復雜的話用animaton,因為animaton在使用的時候,加載消耗還是很高的。
14.客戶端發送數據到服務端的話,服務端組裝幀數據包的時候有加鎖嗎?
李東旭:客戶端發的服務器可以理解為每個玩家都有一個“槽位”,客戶端給服務器發送數據的時候就放在這個“槽位”,然后服務器就從這些槽位中取數據。
15.游戲邏輯出BUG了,你們是怎樣定位?
李東旭:如果是偶然出現的話,就是讓它復現,就是按照一定規則復現出現就會容易發現問題了。如果復現還是找不到那么會借助一些比如說斷點,看下具體那部分出現了異常。
16.為什么有的客戶端包體很大卻完全不影響啟動速度?
李東旭:客戶端的啟動速度和包體的大小沒有什么直接的關系,取決于運行場景的大小,還有resources里面資源量的大小。
總結
以上是生活随笔為你收集整理的巨人网络李东旭:关于提高游戏流畅性的那些事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《魂斗罗:归来》手游子弹中没中,没你想得
- 下一篇: Unity教程:如何使用枚举来帮助简化游