2011-12-12 43 views
2

我想用權威服務器構建一個2人回合制遊戲來管理遊戲狀態/邏輯。我心目中的流程是一樣的東西:在權威遊戲服務器上使用Pusher/Pubnub

  • 玩家訂閱了一個獨特的遊戲頻道(通過類似pubnub /推杆/某事)
  • 玩家提交他們輪流通過HTTP直接到遊戲服務器
  • 服務器運行遊戲邏輯和結果發佈到遊戲頻道(這兩個球員訂閱)
  • 客戶端處理響應,並呈現結果
  • 牽線搭橋種混淆了我,雖然。有什麼建議麼?

這是在這個場景中使用pub/sub服務的「正確」方式嗎?有沒有更好的方法(除了不斷地對服務器進行輪詢)?

回答

1

您的建議聽起來很棒,而且是「正確」的方式。您所面臨的挑戰是從計算機時代開始共享的,在這個時代,數據同步是移動智能手機等多種設備之間的需求。投票速度慢,成本高(對大量玩家來說沒有意義)。多人遊戲是配對玩家和提供遊戲室的一個很好的例子。您的解決方案是:

  1. 創建一個遊戲大廳,玩家可以創建遊戲室並加入遊戲室。
  2. 創建的玩家的自動配對(快速加入)[推薦]

您可以解決產品如Socket.IO和一些其他的開源選擇這一技術難題。但是,您只想構建遊戲而不是專注於部署Node.JS服務器並將其連接到Express。

改爲使用雲服務,如PubNub,PusherApp或Beacon Push。利用Pub/Sub API輕鬆同步多人遊戲環境中的用戶。

2

這是我們辦公室裏激烈的話題!我一直在使用PubNub作爲權威遊戲服務器,使用創意的頻道名稱選擇。它的工作原理是這樣的:

  1. 運行的node.js服務器(不一定是節點,可以是任何東西),用作您的內容,並且也作爲一個權威的實體。
  2. 當客戶端連接時,生成一個UUID(可以在服務器端或客戶端完成),並讓客戶端和服務器在該通道上監聽(類似於「my_game_ [UUID]」)。
  3. 由於沒有其他客戶端知道此通道名稱,客戶端和服務器可以在此通道上自由通信。
  4. 服務器可以與所有人交談,客戶端可以通過服務器執行安全操作並使用「不安全」的vanilla pubnub通道相互通信。
+0

這幾乎是我想到的。但是,從客戶端向服務器發送數據在技術上不需要超過pubnub。它可以是一個簡單的http請求。 – ehud