2

ゲームの状態/ロジックを管理する権限のあるサーバーを使用して、2 プレーヤーのターン ベースのゲームを構築したいと考えています。私が考えている流れは次のようなものです。

  • プレーヤーは独自のゲーム チャネルに登録されます (パブナブ/プッシャー/同様のものを介して)
  • プレーヤーは自分のターンを HTTP 経由でゲーム サーバーに直接送信します
  • サーバーはゲーム ロジックを実行し、結果をゲームのチャネル (両方のプレーヤーがサブスクライブしている) に公開します。
  • クライアントは応答を処理し、結果をレンダリングします
  • マッチメイキングは私を混乱させます。助言がありますか?

このシナリオでパブ/サブサービスを使用する「正しい」方法はありますか? より良いアプローチはありますか (サーバーを常にポーリングする以外の方法)?

4

2 に答える 2

2

当事務所でも話題沸騰中!私は、チャネル名の創造的な選択を使用して、信頼できるゲーム サーバーとして PubNub を使用してきました。それはこのように動作します:

  1. コンテンツを提供し、権限のあるエンティティとしても機能する node.js サーバー (ノードである必要はありません。何でもかまいません) を実行します。
  2. クライアントが接続したら、UUID を生成し (サーバー側またはクライアント側で実行できます)、クライアントとサーバーの両方にそのチャネル (「my_game_[UUID]」など) をリッスンさせます。
  3. 他のクライアントはこのチャネル名を認識していないため、クライアントとサーバーはこのチャネルで自由に通信できます。
  4. サーバーは誰とでも話すことができ、クライアントはサーバーを介して安全なアクションを実行し、「安全でない」バニラ pubnub チャネルを使用して相互に通信できます。
于 2011-12-14T00:15:55.427 に答える
1

あなたの提案は素晴らしく聞こえ、「正しい」方法です。あなたが直面する課題は、モバイルスマートフォンなどの複数のデバイス間でデータの同期が必要となるコンピューター時代の初めから共有されています。ポーリングは遅くて費用がかかります(そして多くのプレイヤーにとっては意味がありません)。マルチプレイヤーゲームは、プレイヤーをペアにしてゲームルームを提供する必要がある良い例です。あなたの解決策は次のとおりです。

  1. プレイヤーがゲームルームを作成してゲームルームに参加できるゲームロビーを作成します。
  2. プレイヤーの自動ペアを作成する(クイック参加)[推奨]

Socket.IOやその他のオープンソースオプションなどの製品を使用して、この技術的な課題を解決できます。ただし、Node.JSサーバーをデプロイしてExpressに接続することに集中するのではなく、ゲームをビルドするだけにします。

代わりに、PubNub、 PusherApp、BeaconPushなどのクラウドサービスを使用してください。Pub / Sub APIを利用して、マルチプレイヤー環境でユーザーを簡単に同期します。

于 2011-12-12T22:49:37.287 に答える