2016-08-04 21 views
1

私はバックエンドがNodeJSで書かれたゲームを開発しています。リアルタイム通信にはsocket.ioを使用しています。socket.ioとのマッチメイキング - setIntervalまたはソケット呼び出しを使用しますか?

私のゲームの特徴の1つは、マッチメイキングです。基本的に、2人以上のプレイヤーがマッチメイキング中の場合、私のアプリケーションはゲームルーム(特別なsocket.ioルーム)を作成し、ゲームを開始します。

これを行うには2つの方法があります。

  • はNodeJS上のsetIntervalを作成します。その間、playersInMatchmaking配列をチェックします。配列に2人以上のプレイヤーがいる場合は、ゲームルームを作成します。私はサーバーがオンラインである限りループします。

  • 代わりのsetIntervalに頼って、playersInMatchmaking配列を確認し、私はsocket.on("matchmaking start")またはsocket.on("matchmaking stop")

に電話を受けるたびに、特定のアプローチを使用して任意のメリットはありますか?マッチメイキングアルゴリズムをソケットロジックと切り離すことができるので、setIntervalはより簡単に聞こえますが、マッチメイキングアルゴリズムはソケットイベントではなくループで実行されるため、パフォーマンスが低下します。

あなたはどう思いますか?他のアイディアがありますか?

答えて

2

イベントを使用して、socket.ioとリアルタイム通信の利用率を最大限に高めます。アルゴリズムをデカップリングする以外の理由がない場合は、イベントを使用する必要があります。現在、ユーザー/プレイヤーが参加していない場合や、マッチを検索している場合は、ループを繰り返し実行する必要はありません。

間隔があまりにも小さくなければ(たとえば5秒)、Player1がキューに入れられ、Player2もキューに入り、2つの間隔の間にPlayer1が相手の検索をキャンセルした彼は待ってうんざりしています。あなたが言及したもの(パフォーマンス)以外のイベントトリガされたシステムの主な利点は、実際の遅延(ネットワーク、コードループ、ジッタなどを除いて)がなく、即座に起こることです。

関連する問題