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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络游戏同步基础

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络游戏同步基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.zhust.com/index.php/2014/02/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E7%9A%84%E7%A7%BB%E5%8A%A8%E5%90%8C%E6%AD%A5%EF%BC%88%E4%B8%80%EF%BC%89%E7%BD%91%E7%BB%9C%E5%90%8C%E6%AD%A5%E6%BC%94%E7%A4%BA/#comment-4847

關鍵詞

  • 幀同步
  • 狀態同步
  • LockStep
  • Timebucket
  • Timewarp
  • Dead Reckoning
  • Client-side Prediction
  • Server-side Latency Compensation
  • 延時、抖動、丟包率
  • UDP vs. TCP

主流的網絡游戲同步方式一覽

  • MOBA
    ? ??王者榮耀:幀同步
    ? ??WAR3:幀同步
    ? ??全民超神:狀態同步
    ? ??亂斗西游:狀態同步
    ? ??LOL:狀態同步
    ? ??Dota2:狀態同步
  • MMO
    ? ??MMO均采用狀態同步,如魔獸世界
  • FPS
    ? ??FPS類游戲大多采用狀態同步
  • 動作格斗類游戲
    ? ??街機三國:幀同步
  • 體育競技類游戲
    ? ??NBA2K OL:幀同步

網絡游戲同步“大”分類

  • Peer-to-Peer Lockstep
    ? ??早期的網絡拓撲模型
  • Client/Server
    ? ??The Server is the Man
  • Client-Side Prediction
    ? ??客戶端預測和延遲補償,“消除”網絡延遲

什么是幀同步?

War3/星際等采用,基于指令驅動各個客戶端自計算邏輯。服務端只管分發指令,每個客戶端根據完整的規則運算整個戰場。 每個客戶端播放效果就像是看視頻。 對視覺同步要求較高。

核心

保證所有客戶端每幀的輸入都一樣--同步性 相同的輸入下要有相同的輸出--確定性

優點

  • 因為只需要同步指令,所以流量消耗非常小

缺點

  • 斷線需要補幀,即一旦你的戰場狀態沒有了,必須從頭開始,從第一個指令運算到連回去的戰場狀態。

什么是LockStep?

典型的一種幀同步算法,最早用于P2P。Lockstep把游戲過程劃分成了一個個turn,只有當每個turn集齊了所有玩家的操作指令,也就是輸入確定了之后,才可以進行計算,進入下一個turn,否則就要等待最慢的玩家。 使用Lockstep的游戲是嚴格按照turn向前推進的,如果有人延遲比較高,其他玩家必須等待該玩家跟上之后再繼續計算,不存在某個玩家領先或落后其他玩家若干個turn的情況。使用Lockstep同步機制的游戲中,每個玩家的延遲都等于延遲最高的那個人。

什么是Timebucket?

設置了 bucket的概念, 執行每一幀的時間是固定的 bucket 時間節點, 而不必等到收到所有的 client step 指令, 從而網絡不再受最差的 client 限制.

什么是狀態同步?

MMORPG的主要實現方式,服務器負責計算全部的游戲邏輯,并且廣播這些計算的結果,客戶端僅僅負責發送玩家的操作,以及表現收到的游戲結果。一般來說,玩家發送一個操作到服務器上,服務器根據玩家操作去修改內存中的游戲世界模型,同時運算游戲世界對這個操作的反應,然后把這些反應都廣播給相關的多個客戶端,每個客戶端負責把這些數據表現出來給玩家看。 一句話,The Server is the Man!

什么是DR?

Dead Reckoning,導航推測算法,即客戶端模擬運動軌跡和路線,如果真實坐標和模擬坐標的差值大于某個極限誤差的時候則廣播,收到消息后進行平緩的拉扯處理。 屬于客戶端預測。

什么是Timewarp?

客戶端先行,發現邏輯不一致的時候,進行回滾。

什么是延遲補償?

服務器端考慮了客戶端的網絡延遲,將服務器狀態回滾到延遲前,再進行運算。

什么是延時、抖動、丟包率?

ping kingsoft.cn 正在 Ping kingsoft.cn [192.168.12.19] 具有 32 字節的數據: 來自 192.168.12.19 的回復: 字節=32 時間=5ms TTL=123 來自 192.168.12.19 的回復: 字節=32 時間=6ms TTL=123 來自 192.168.12.19 的回復: 字節=32 時間=5ms TTL=123 請求超時。 192.168.12.19 的 Ping 統計信息: 數據包: 已發送 = 4,已接收 = 3,丟失 = 1 (25% 丟失), 往返行程的估計時間(以毫秒為單位): 最短 = 4ms,最長 = 6ms,平均 = 5ms ______________________________________ 注:延時5ms 抖動:(4ms-5ms)~(6ms-5ms),即-1ms~+1ms,[最短延時-平均延時] ~ [最長延時-平均延時] 丟包率:25%

如何選擇協議?

TCP vs. UDP 亂斗西游采用的是UDP NBA2K OL存在用的是UDP 補充一句:使用哪種同步方式和協議方式沒有必然聯系;比如亂斗西游是UDP+狀態同步,而街機三國是TCP(TCP_NODELAY) + 幀同步注:可參考本人的上一篇文章:Networking Basics:TCP and UDP Basics

幀同步如何防外掛?

如果初始狀態一樣和隨機種子一樣,那么只要每幀的輸入高度一樣(因為是由服務器切幀分發的,可以保持每個客戶端的輸入序列是一樣的),那么每幀的運算結果也是一樣的。為此讓每個客戶端驗證每幀的結果是不是與其它幾個客戶端是一模一樣的,我們就可以拿來做為校驗原因。只要有不一樣的結果,即有人做弊。

為什么MMO不能用幀同步?

幀同步的[所有人]的輸入必須在[所有客戶端]進行計算,這樣大家運算出來的結果才能一樣,才能保證幀同步.注意是【所有人】.所以常見用于rts,moba、2k等房間游戲.因為人數固定.但是mmo中玩家不定,如果同步所有人。。這個帶寬(即傳輸問題)。。所以mmo中用狀態同步+aoi視野管理.

References

  • what-every-programmer-needs-to-know-about-game-networking/
  • lockstep
  • 1500 Archers on a 28.8
  • understanding fighting game networking
  • 亂斗西游技術演講
  • 騰訊如何打造一款實時對戰手游
  • 自研游戲幀同步方案
  • NBA2KOnline如何網絡同步優
  • 前網易林偉同步文章系列
  • 知乎關于moba類游戲同步的探討

總結

以上是生活随笔為你收集整理的网络游戏同步基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。