遊戲開發 關於手遊客戶端網路頻寬壓力的一點思考

2021-09-08 14:18:27 字數 981 閱讀 8962

毫無疑問,策劃都喜歡多人同屏戰鬥。什麼萬人大地圖,這肯定是策劃的最愛了。可是對於遊戲來說,這並不是什麼非常好的設計。即使解決了服務端計算的效能壓力,客戶端顯示的效能壓力。萬萬沒想到的是我們遊戲在客戶端網路頻寬上面遇到了壓力。

假設1000人同屏,那麼要同時同步1000個人的位置,移動方向,速度,釋放技能,傷害,血量,buff等資訊。這n^2的網路頻寬複雜度,對於服務端來說,其實只要申請大些的頻寬,買貴點其實就可以解決了。但是對於時常處於不穩定和低網速網路環境(電梯、地鐵、偏遠山區等環境)下的手機,特別是還處於2g,3g的網路環境下的手機,那麼小的頻寬承載能力其實根本無法應付這麼大的網路訊息同步的。造成後果,遊戲會有明顯的收包卡頓,有些會出現好幾秒,出現非常不好的遊戲體驗。

另外,即使手機可以承受,在當下手機網路流量並沒有那麼廉價的情況下,如此耗費網路流量,很難的得到玩家的承受。

以上,對於實時同步資訊的模式,在大規模多人對戰手遊中,並不是一種非常合適的方案。

問題在於客戶端的網路頻寬,如果減少客戶端接收的網路頻寬才是重點。不去同步那麼多的資訊,那麼就需要客戶端和服務端盡量約定規則。使用客戶端先行,服務端演練計算的方式來實現。貌似業界已經有這種方案了,傳聞lol、dota2就是這麼實現的(這方便並沒進行查閱,只是有個印象)。

到戰鬥開始的時候,先同步必要的資訊,譬如場景內的怪物、位置、ai、血量、技能等資訊和乙個隨機數。ai的行為通過隨機觸發。那麼需要同步的資訊就只剩下那些無法確定的因素。譬如玩家,什麼時候釋放什麼技能、如何移動,我們是無法確定的,但只要在外面服務端的演練中同步上,那麼同樣可以演練出客戶端的整個戰鬥過程出來。

對比可以發現,使用這種方法,我們只需要同步玩家的技能、移動就可以了。省去了很多其它可以直接演練出來的資訊。為了避免演練的偏差,可以定期同步一些內容。這樣既可以保證戰鬥的一致性,也大幅度減少了頻寬流量。

當然使用這種方式,對客戶端和服務端的約定要求非常高,相比也複雜了許多,對於研發人員的要求同樣要高許多。

不過業界已經有成型的方案,自然可以解決。對比玩家體驗,這方面的優化還是很有必要的。

騰訊遊戲客戶端開發面試

一些情況的簡單說明 這一次招聘是遊戲專場,所以關於其它的網路 雲計算等其它方面的卻不是很了解 我面的是遊戲客戶端開發,這一次面試是單面,遊戲策劃跟遊戲運營是群面 流程大概是 面試首先是自我介紹 一分鐘 然後是面試官根據你的簡歷來問你問題,最後你可以問面試官一些問題。前後加起來大概30分鐘左右 重點來...

(網路程式設計)乙個簡單的網遊客戶端

執行結果 5 其他優秀博主 1 本次實驗使用的是visual studio 2019 2 本次實驗寫的是文字遊戲的客戶端介面 3 本次實驗使用的是本校內網的伺服器,如有需求可網上找其他文字遊戲位址 字串儲存 路徑 string s f djl music maps.music.settings.se...

遊戲引擎開發和遊戲客戶端開發有什麼區別?

一 工作內容上的區別 客戶端開發更偏重於遊戲玩法的實現,也就是常說的gameplay,比如戰鬥系統怎麼實現 任務流程怎麼進行 ui介面如何互動等等,細分來說,其實客戶端也有很多方向,比如3c character camera controller ai 怪物 尋路 等。再具體一點,一般新人進去大概率...