網路程式場景101 VOL2

2021-09-19 08:25:44 字數 978 閱讀 6707

以經典的星際爭霸為例,玩過的都知道,戰鬥中如果乙個玩家掉線,其他所有玩家都要等待一定時長,直到60秒結束,時間到了掉線的就連不上來了。

rts遊戲的需求是,由於玩家此時控制的是大量單位,對於大兵團的框選,鍵盤發出的技能快捷鍵,按快捷鍵攻擊選取地圖上的點或者具體的兵等一系列操作都需要在每個玩家的遊戲客戶端上同步。

這裡需要考慮的乙個問題是,相對於fps遊戲,rts遊戲的操作量可能會大很多。fps常用的鍵基本上就是asdf+滑鼠左鍵,次常用的可能就是1234+空格。而rts遊戲對於滑鼠框選,1-9,ctrl,滑鼠右鍵,+各個兵種的快捷鍵一般常規都會有4-5個按鍵。這樣的操作頻率如果都需要傳送到伺服器端處理,並處理後返回給客戶端,由客戶端呈現計算的結果,會對伺服器計算能力和網路延遲有較高的要求,好在一般rts最多也就8個人一起玩,而且不是純3d遊戲,計算資源不會大量耗在gpu上。

星際1由於是區域網遊戲,採用的是p2p方式廣播,每個遊戲客戶端都廣播玩家的操作給其他(最多7個)ip位址,當然這個封包肯定也是udp的。遊戲客戶端收到其他位址傳來的玩家操作動作後,由客戶端計算這些動作對本機產生的影響(看到對方移動,被攻擊)等,這種分布式模式能將計算量分擔到每個玩家客戶端上。而且客戶端可以儲存整盤遊戲上所有玩家的操作行為到replay檔案,在重播時在明確知道地圖資料時,完全重播所有玩家的動作,這就是為什麼replay檔案很小的原因,乙個replay檔案基本可以等同於玩一盤遊戲時網路交換的數量,一般只有幾百k。包越小,包越少,都對提高程式延時有很大的好處。

此種封包方式的另外乙個好處就是由於星際對戰時螢幕上角色數量很多,極端情況會有全螢幕的角色,如果跟fps一樣去同步每個角色的動作是低效的;而像框選,右鍵移動這種動作作為封包作為同步的單位,可以較少需要同步的資料量,其他客戶端拿到這樣的資料後就能還原這個操作,讓每個玩家螢幕上的動作是一致的。

未完待續

網路程式設計 程序 2 如何在程式中檢視程序號?

知識點 程序號,簡稱pid,每啟動乙個程式都會有乙個唯一的pid標記這個程式,當程式關閉時,程序就消失,也就沒有程序號了 1 如何在 程式中檢視程序號?看 import os,time import multiprocessing 檢視程序號,啟動乙個程式就有乙個程序號,簡稱pid,匯入os模組 檢...

網際網路金融P2P主業務場景自動化測試

網際網路金融p2p行業,近三年來發展迅速,如火如荼。據不完全統計,全國有3000 的企業。p2p主要的業務場景概括地說有6個,請看下圖 我的想法是做成生產者 消費者模式,類似乙個生態系統,將不會對測試環境造成不良影響。假設發標僅受這些輸入引數的影響 parameters 專案型別 xx寶,xx貸,p...

構建富網際網路應用程式監控工作流和流程 2

下面的圖 1 顯示了新帳戶業務流程的 ria 前端。圖 1 新帳戶流程的 ria 前端 下面,我們將了解它的四個主要元件及其重要功能 這些面板提供了卓越的可用性體驗並與 bpel api 互動。下面,我們將了解利用哪些後端 api 函式執行 ria 前端。bpel 流程管理器 api 後端。bpel...