問題タブ [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.
c# - Firebase Realtime Database - トランザクションを使用したマッチメイキング = ダウンロードの使用率が高い
問題
Firebase Realtime Database (Unity 用) を使用してターン ベースのゲームのサーバー側を管理していますが、マッチメイキングに問題があります... ダウンロードの使用率が高いです。
すべてのオンライン ゲームには、2 人以上のプレイヤーがゲームに参加することを避けるための 2 つの基本状態があります:作成済みと参加済み
- Created : プレイヤーがゲームに参加しようとしましたが、見つからない場合は新しいゲームが作成されます
- Joined : プレーヤーがゲームに参加しようとして、状態が Created から Joined に変わった場合
RunTransaction
2 人以上のプレイヤーがゲームに参加できないようにするために使用していますが、ローカル キャッシュが原因でデータベースから最新のデータがフェッチされていないことを確認しました。子ノードを追加keepSynced
するmatches-{lang}
と常に最新のデータが保持されますが、当然、ダウンロードの使用率が高い。
質問
- プレイヤーを削除
keepSynced
すると、ローカルにキャッシュされた の情報が保持されますmatches-{lang}
。これを行うことで、ゲームごとに 2 人以下のプレイヤーが存在することを信頼できますか? *トランザクションは、このような問題を回避するためのものです。 - リクエストのローカル キャッシュを回避して、常に更新されたデータを取得する方法はありますか?
- ゲームを別のノードに移動してノードのサイズを縮小することが最善の解決策
matches-{lang}
でしょうか?
ありがとう!
java - 最も可能な組み合わせに一致するアルゴリズム
私は現在、マッチメイキング システムのアルゴリズムを書くのに苦労しています。数学について何か知っている人にとってはおそらくチャイルドプレイですが、私は知りません。
次の例を見てみましょう。
ロビーはちょうど8 人のプレイヤーで構成されます。
キューには 9 人のパーティがいます。パーティーのサイズは、1、6、3、8、2、1、5、3、2です。アルゴリズムは、これらのパーティーからできるだけ
多くの完全なロビーを作成する必要があります。
満員のロビーしかない場合があります。そのため、マッチングできないパーティーもあるかもしれません。それらは、新しいパーティがキューに入るのを待ちます。
私の現在のコードは、パーティーとロビーを一致させますが、満員のロビーを可能な限り多く見つけるための最適な組み合わせを見つける機能が欠けています。
例: ちょうど 7 のロビー サイズ、パーティー: 2,2,4,3,1,5 -> 2,5 と 4,3 は一致する可能性がありますが、2,2,3 は実行され、4,1,5 は一致しません一致する。
どんな助けにも感謝します。
私の現在のコード: