簡體   English   中英

設計模式建議,用於實時同步在線游戲中的多用戶數據

[英]Design pattern suggestions for syncing multiple-user data in an online game in real-time

我正在研究一個學習node.js的項目,並且正在尋找有關如何實時處理用戶數據同步的建議。

假設您有一個2D矩形地圖(大約600x400),許多玩家在該地圖上占據x,y位置。 每個用戶都可以使用箭頭鍵瀏覽並以某種基本方式與其他用戶交互。 假設可以通過HTTP進行播放,那么在處理和同步用戶數據以提供最流暢,最生動的體驗方面,最佳的設計模式是什么?

我可以考慮幾種選擇,但希望您能提供更多的想法/說明:

  1. 客戶端將位置數據發送到服務器,服務器將所有位置分配給所有客戶端,並顯示結果屏幕。 重復。 不利的一面是客戶端被數據往返所花費的時間所滯后,但不利的是它們與所有用戶同步。

  2. 客戶端渲染它認為恆定的位置,將位置數據發送到服務器,服務器將所有位置分配給所有客戶端,然后使用服務器數據校正來自客戶端數據的屏幕渲染。 上行是一個較快的響應,下行是輕微的同步丟失。

  3. 兩者的混合,但不是使用(x,y)坐標,而是使用[先前的x / y和時間,當前的x / y和時間,在時間間隔建議的x / y]的向量用於繪制不斷變化的彈道。 似乎很難實施。

有指針嗎?

大多數游戲使用某種形式的航位推算http://en.wikipedia.org/wiki/Dead_reckoning ,它允許從服務器分發延遲的更新,但保留了客戶端上實時更新的一些幻覺。

最好的選擇是3。並不是特別復雜-只是根據游戲的機制跟蹤每個演員的位置,並在收到服務器的更新后,隨着時間的推移使這兩個狀態保持一致。

如果發現服務器向您發送的狀態與客戶端所假設的狀態相差太遠(需要定義的距離太遠),則您可能會跳到服務器狀態並接受客戶端的不連續性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM