網遊中,玩家的位置同步經常會用到deadreckoning演算法,中文翻譯叫導航推測,下文簡稱dr。
dr提供了隱藏延時和減少頻寬的方法。dr在本地模擬其他聯網玩家狀態(主要是位置資訊),減少網路頻寬消耗的同時盡可能的還原實際情況。
在飛機遊戲中dr的乙個例子:
1. 飛機的運動速度都是固定的,兩台遊戲機聯機玩,分別是a和b;
2. 對於a和b來說,是否需要傳送pdu(protocoldataunit,協議資料)是通過閾值控制的。實際運動位置是p1,而dr演算法模擬得到的運動位置是p1′,如果p1-p1′大於預先設定的閾值就傳送pdu通知對方。
3. 每次收到對方的pdu,則更新對方的位置。
4. 在沒有收到pdu的時候,需要模擬對方的運動,dr提供了幾種經典演算法:
(1)位置1 = 位置0,就是保持不變
(2)位置1 = 位置0 + 速度 × (t1 – t0),相當於根據pdu中的資料,做勻速運動
(3)位置1 = 位置0 + 速度 × (t1 – t0)+ 1/2 × 加速度 × (t1 –t0)平方,比2)中多了加速度的方向
在遊戲中應用的比較多的是2)和3)。
具體的示意圖如下:
總結:1. dr的閾值是乙個需要測試衡量的關鍵引數。閾值設定的越低,遊戲畫面會越平滑,但是網路頻寬也會消耗的越快。
2. dr可以忍受一定程度上的丟包,所以可以用udp來提高時效性,避免tcp重傳。
3. 網路遊戲的位置同步,是比較複雜的情況,在應用dr演算法的基礎上,還需要在很多細節上進一步完善,才能減少網路延時帶來的影響。
遊戲網路同步 MMO位置同步
前提 1.client和server之間或多或少存在網路延遲,需要提前做好對時,並在網路環境發生變化時校正時差。國內的公網通訊,非跨網的情況下,一般在120ms左右。本地的網路會好一些。2.要努力防止外掛程式,如果是以client的通知為主,也要做抽查,或者全部都校驗。3.應用dr技術,在沒有收到位...
遊戲網路通訊方式基於TCP
server include stdafx.h include stdio.h include stdlib.h include windows.h include winsock.h include string.h pragma comment lib,ws2 32.lib define por...
遊戲閘道器的作用
遊戲gate起到的作用是 客戶端資料 一般就是玩家登陸和關閉會話 接收資料的執行緒 void stdcall crundataprocesser recvdataprocessroutine crundataprocesser prundata 收到使用者的資料報 void crundataproc...