問題タブ [matchmaking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
238 参照

join - Mysql マッチメイキング / ペアリング

私は現在 1 対 1 のオンライン ゲームに取り組んでおり、プレイヤーをマッチングしようとしたときに問題が発生しました。

プレイしたいプレイヤーがマッチメイキング テーブルに入れられる

ID、ユーザー、金額

ここで、可能な限り最高のユーザー ペア (つまり、同じ金額でプレイしたいユーザー) のテーブル マッチメイキングを照会したいと考えています。

これまでのところ、次のクエリがあります。

これにより、考えられるすべての組み合わせが返されるため、次の内容のテーブルで:

私はペアを取得します:

その場合、私は 1,2 だけを返したいと思っています。

各ユーザーを最大 1 回だけ表示するにはどうすればよいですか?

編集: 条件 ' and a.id < b.id ' をクエリに追加すると、ペアリングが 2 分の 1 に減少しますが、それでも多すぎます。

0 投票する
1 に答える
1301 参照

node.js - socket.io を使用したマッチメイキング - setInterval またはソケット呼び出しに依存していますか?

バックエンドが NodeJS で記述され、リアルタイム通信に socket.io を使用するゲームを開発しています。

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

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

  • NodeJS で setInterval を作成します。インターバルでは、playersInMatchmaking 配列を確認します。アレイに 2 人以上のプレーヤーがいる場合は、ゲーム ルームを作成します。サーバーがオンラインである限りループします。

  • setInterval に依存する代わりに、socket.on("matchmaking start")またはsocket.on("matchmaking stop")

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

どう思いますか?他にもっとうまくいくアイデアはありますか?

0 投票する
1 に答える
1055 参照

unity3d - Photon Engine を使用して、ランダム マッチメイキングで特定のユーザーをブロックするにはどうすればよいですか?

Photonエンジンを使ってランダムマッチメイキングゲームを作っています。一定の時間内に、プレーヤーをさまざまなユーザーと一致させたいと考えています。PlayerA が PlayerB とプレイした場合、30 分間は再度プレイできません。この種のシステムを実行する最善の方法は何ですか?

いくつかのアルゴリズムを試しますが、うまく適合しません。

動作しますが、時間がかかるなどの欠点があります。より良い解決策のアイデアはありますか?

0 投票する
1 に答える
384 参照

matchmaking - 強安定マッチング、弱安定マッチング、超安定マッ​​チングの違いは何ですか?

Stable Marriage Problem(SMP, https://en.wikipedia.org/wiki/Stable_marriage_problem ) を無関心で読んでいたときに、強い安定性、弱い安定性、超安定性のマッチングという用語に出くわしました。それらの違いは何ですか?

0 投票する
0 に答える
2912 参照

android - Firebase とのマッチメイキング

マルチプレイヤーで Android アプリを作成しており、何らかのマッチメイキングが必要です。私は Firebase を使用していますが、外部のマッチメイキング サーバーを作成する必要はありません。

これまでの私の最善のアイデアは、トランザクションでfirebaseリアルタイムデータベースを使用することです:

プレーヤーが「プレイ」を押すと、開いている試合のリストを確認します。リストにゲームが存在しない場合、またはクライアントがオープン マッチを検索している間にリスト内のすべてのゲームが埋まっている場合は、新しいオープン マッチを作成します。誰かがマッチの空きスペースを埋めると、マッチメイキングからマッチを削除します。

この方法で私が見ることができる唯一の穴は、リストが空であると考えて、同時にゲームを作成しているプレーヤーがほとんどいない場合です。

Firebase やマッチメイキングの経験のある人がこの戦略の穴を指摘したり、マッチメイキングのためのより良い戦略を提案したりできる場合は、まだ大規模な戦略をテストできないため、非常に満足しています.

事前に、ご協力いただきありがとうございます。よろしくお願いいたします。

0 投票する
1 に答える
1405 参照

c# - Unity マッチメーカー (5.4) の基本的な説明とスクリプトでの使用方法を探しています

価格が理由で Photon 経由で Unity を介してネットワーキングを行うことに決めました (ネットワーキングのより良い方法があれば教えてください)。ユーザーがゲームに入ると最初に他のマッチ ( AKA ルーム / ゲーム) がある場合は参加し、ない場合は作成します。しかし、ユニティマッチメーカーの使用方法の明確な説明を見つけるのに苦労しているので、最近の更新でユニティがネットワークシステムを大幅に変更しているように見えるので、コードを開発して目的の動作を取得することができます。 5.4 は現在古くなっています。私が見つけた唯一の有用なものはこのサンプルコードですが、システムをもっと理解したいので、重要な概念を見逃すことはありません。

今日私があなたに尋ねているのは、現在の統一に関連するマッチメイキング システム (スクリプトを含む) の明確な説明に私を導くことができるか、それとも、明らかにはるかに難しく、より時間がかかることですが、自分でやってみることができますか?私のような他の人の今後の参考になります。

読んでいただきありがとうございます。もちろん、どんな回答でも大歓迎です。

[私はC#で働いています]

編集:

私の質問に答えるのが非常に難しいことは理解しています。そのため、目的の動作が得られるまでサンプル コードをテストし、解決できないエラーを投稿します。

問題1

  1. 正確なコード (簡単に参照できるように以下に含まれています) を、ネットワーク マネージャーに添付したスクリプトにコピーしました。しかし、保護レベルが原因でエラーが発生しています -

ここに画像の説明を入力

これを解決する方法について2つの理論があります-

  1. メソッド アクセサーの変更
  2. モノビヘイビアからスクリプトを派生させない

私は現在それらをテストしていますが、これを解決する方法についてのアドバイスは非常に役に立ちます。5.4 用に更新されていると言う Unity ドキュメントの間違った例のように思われるので、これを unity に報告する必要があるかどうか疑問に思います。ありがとう。

問題 2

このスクリプトを作成し、単一のネットワーク マネージャーを使用して空のゲーム オブジェクトに接続されたエディターで実行しました。コンパイラ エラーは発生しませんが、実行すると「エラー: 一致検索の失敗」がデバッグされます。これは、listmatches 関数が失敗したことを意味します。以下です -

ありがとうございます。

@プログラマー

0 投票する
1 に答える
232 参照

php - RoundRobin を使用しないリーグ スケジューリング

現在、私は実際に私の問題に固有の用語を探しています:

4 チームを超えるリーグを作成しました リーグは 3 ラウンド続きます (数字は簡単にするためです) マッチアップは、チームがまだ対戦していないチームからランダムに割り当てられます。

現在のコードをフリンジ ケースごとに実行するのに苦労しているので、そのようなケース用に開発された「標準」アルゴリズムを調べたいのですが、探している用語が見つかりません。

1 つのスケジュールの例は次のとおりです。

リーグ/トーナメントで使用される可能性は非常に低いように思われるため、その点については何も見つかりませんでしたが、それが私の要件です.

これは、ONE Round を作成する現在のコードです。このコードでは、ラウンド 3 で各チームに対戦相手が割り当てられない可能性があります (6 チームでテスト済み、ラウンド 3 で発生する可能性があります)。

私がグーグルするものについての助けをいただければ幸いです