日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

巨人网络李东旭:关于提高游戏流畅性的那些事

發(fā)布時間:2024/8/26 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 巨人网络李东旭:关于提高游戏流畅性的那些事 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

程序員的噩夢,一定是某個角落突然有人大呼“怎么又這么卡呀???”玩家、運營、產(chǎn)品老是噴你的客戶端為什么卡怎么辦?總有些技巧,學(xué)會了,卡頓的鍋,咱技術(shù)不背!

李東旭??巨人網(wǎng)絡(luò)客戶端軟件專家。擅長含有物理、數(shù)學(xué)等游戲玩法研發(fā),熟悉游戲性能優(yōu)化,目前負(fù)責(zé)《球球大作戰(zhàn)》客戶端相關(guān)研發(fā)。

本期Live,GAD邀請到了巨人網(wǎng)絡(luò)客戶端資深軟件工程師李東旭老師,以《球球大作戰(zhàn)》為例,分享了手游客戶端的優(yōu)化技巧、客戶端與服務(wù)器的同步怎么優(yōu)化等問題,干貨滿滿,小編本著有福同享的原則整理了Live的精彩內(nèi)容推送給大家。

1.我們一個游戲在unity3d 里面用DragonBones 做的2d動畫 普攻的特效沒有分離,加載和運行的時候很卡 cup 占用很高 這個怎么優(yōu)化呢?

李東旭:動畫加載和運行卡,檢查一下骨骼結(jié)點是不是很多。

2.像是在《球球大作戰(zhàn)》中網(wǎng)絡(luò)延遲到網(wǎng)絡(luò)恢復(fù)的這期間,客戶端要怎樣處理才能更平滑,客戶端會加速跑嗎?
?


李東旭:出現(xiàn)延遲的話,客戶端會根據(jù)當(dāng)前收到的數(shù)據(jù)進(jìn)行計算和模擬,使得客戶端的球也能繼續(xù)移動,等網(wǎng)絡(luò)恢復(fù)的時候通過加速平滑的拉過去。

3.手游客戶端ios和安卓有什么針對性的優(yōu)化呢?

李東旭:其實IOS的同體性能比安卓要好很多,所以我們主要集中在安卓這一塊,安卓優(yōu)化好了Ios也就自然而然優(yōu)化好了。

安卓的優(yōu)化也主要是通用的那些優(yōu)化,主要就是代碼效率、資源加載、美術(shù)模型的優(yōu)化等。

4.服務(wù)器同步的時候不是很平滑,這個怎么優(yōu)化呢?

李東旭:服務(wù)器同步的話,還是需要客戶端做一個平滑的處理,使得玩家在游戲中不易感覺出來。
?


5.單物理服務(wù)器承載量級大概是多少?

李東旭:一個房間大概能承載數(shù)百人,一個服務(wù)器有上千個房間。


6.想請教一下做狀態(tài)同步這種框架需要注意哪些問題?和幀同步比起來差異又是如何的?

李東旭:幀同步與狀態(tài)同步最大的差異就是一個在客戶端、QQ號購買平臺一個在服務(wù)端,狀態(tài)同步要比幀同步要好處理些,幀同步比較麻煩一點的就是要保證每個現(xiàn)象都要一樣,比較難一點。


7.網(wǎng)絡(luò)波動的情況下,客戶端會不會卡頓嚴(yán)重,有沒有什么好的優(yōu)化辦法?

李東旭:小的波動其實影響不大,主要是怕那種發(fā)一個消息,很久才收到,會讓玩家明顯感到卡的情況出現(xiàn)。


8.單物理服務(wù)器也可以每個房間100人,1000個房間嗎?

李東旭:1000個房間是極限情況,我們其實不是每個服務(wù)器都這么多的,一般情況大概只有一半左右。

9.Cocos引擎手機游戲耗電的主要因素有哪些呢?

李東旭:耗電主要是CPU、GPU的工作量很高,CPU主要是我們自己些的代碼,GPU主要就是那些美術(shù)資源。cocos這個我們用的不是很多,但對于Unity來說,我們有個優(yōu)化就是降低分辨率,減少引擎渲染的開銷。

10.《球球大作戰(zhàn)》中用的是Udp還是Tcp?Udp真的效率比tcp高很多嗎?因為udp感覺成本比較高,還要保證順序重發(fā)包。

李東旭:剛開始用的Tcp,現(xiàn)在是兩種混著用。一般情況會檢測玩家的網(wǎng)絡(luò)情況,網(wǎng)絡(luò)較好的情況用的是Tcp,波動比較大的話會切換成Udp,這個是動態(tài)切換的。Udp的成本的確是比較高,所以前期為了快速上線用的Tcp,現(xiàn)在是玩家反應(yīng)卡頓過多,所以花大力氣做了Udp,Udp的效率確實比Tcp高很多。

11.像unity里的2d動畫的骨骼和紋理,一般是多少合適呢?服務(wù)器發(fā)包頻率多少?

李東旭:我們一般采用的是5個骨骼,紋理256KB。服務(wù)器發(fā)包頻率最高每秒10次,在這個頻率內(nèi)的話,服務(wù)器還是很流暢的,如果超了的話就會有延遲了。

12.我們第一個包中場景初始的動畫很多。unity的的動畫和龍骨或者說用dotween那個效率高一點?球球的模型動畫或場景ui動畫是如何優(yōu)化的呢?

李東旭:場景的初始動畫建議動態(tài)加載進(jìn)來,看不見的先不要加載在產(chǎn)品上面。效率最高的動畫其實是Unity的animaton,最簡單效率也最好。動畫以簡單為主,時間越短越好。球球里面也沒有使用過多復(fù)雜的動畫。

13.動畫是最好歸納到一個動畫狀態(tài)機 然后統(tǒng)一管理子節(jié)點的動畫好 還是,每個都是animaton用程序處理好,也就是說是否能相信animator的效率?

李東旭:優(yōu)先程序來實現(xiàn)動畫的狀態(tài),如果復(fù)雜的話用animaton,因為animaton在使用的時候,加載消耗還是很高的。

14.客戶端發(fā)送數(shù)據(jù)到服務(wù)端的話,服務(wù)端組裝幀數(shù)據(jù)包的時候有加鎖嗎?

李東旭:客戶端發(fā)的服務(wù)器可以理解為每個玩家都有一個“槽位”,客戶端給服務(wù)器發(fā)送數(shù)據(jù)的時候就放在這個“槽位”,然后服務(wù)器就從這些槽位中取數(shù)據(jù)。

15.游戲邏輯出BUG了,你們是怎樣定位

李東旭:如果是偶然出現(xiàn)的話,就是讓它復(fù)現(xiàn),就是按照一定規(guī)則復(fù)現(xiàn)出現(xiàn)就會容易發(fā)現(xiàn)問題了。如果復(fù)現(xiàn)還是找不到那么會借助一些比如說斷點,看下具體那部分出現(xiàn)了異常。

16.為什么有的客戶端包體很大卻完全不影響啟動速度?

李東旭:客戶端的啟動速度和包體的大小沒有什么直接的關(guān)系,取決于運行場景的大小,還有resources里面資源量的大小。

總結(jié)

以上是生活随笔為你收集整理的巨人网络李东旭:关于提高游戏流畅性的那些事的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。