Steamworks ドキュメンテーション
スキルベースのマッチメイキング
SteamマッチメイキングAPIには、プレイヤーのスキルに基づいたマッチングを行うための豊富なオプションが用意されています。 マッチメイキングの基本ツールセットに関する詳細はこちらを参照してください。

概要

マルチプレイヤーゲームに共通する一つの課題は、ゲームを最大限に楽しんでもらうために、スキルレベルやプレイスタイルの近い他のユーザーを見つけ出すことです。 Steamworksはその解決策として、Steamロビーシステム内に実装された豊富なゲーム検索オプションセット、および統計APIを提供します。

マッチメイキングプロセスの流れ

一緒にプレイするグループを作成する一般的なモデルは次の通りです。
  1. ユーザーがゲーム内でマルチプレイヤーでのプレイ、およびマルチプレイヤーの種類(ルール、シナリオ等)を選択します。 マッチを希望するスキルレベルも設定します。
  2. ゲームがロビー検索APIを使用して、ルールのセットに類似性のあるロビーを検索します。 パラメーターの1つは、ユーザーがマッチを希望するスキルレベルです。
  3. ロビーが見つかると、ゲームはそのロビーに参加します。ロビーが見つからない場合、新しいロビーが作成されます。
  4. ロビーのオーナーは、ロビー内のユーザーの平均スキル(あるいは他の相関関係)に基づいて、ロビーのスキル設定を更新できます。
  5. ゲームが終了すると、各ユーザーの統計データで新たなスキル値が更新されます。

プレイヤーのスキル値の作成と更新

プレイヤーのスキルを設定するには、Stats APIページの解説に従い、新しい統計データを作成します。 必要であれば、複数の統計データを設定し、複数のスキル軸を追跡できます。 この場合、統計データを「増加限定」に設定することで、Steamサーバーがスキル統計を増加のみに強制し、弱い相手と対戦しようとするユーザーが、低スキルとして記録されることを防ぎます。 数値範囲の幅は自由に設定でき、0から100が一般的ですが、決まりはありません。 ゲームの検索や設定時にこれらのスキルデータを使用し、ゲーム終了時に更新します。 可能であれば、プレイヤーによるデータ改ざんを防ぐため、公式GSのみが設定可能とマークすることを推奨しています。

手順:
  1. Steamworksゲーム管理画面のゲームの「実績とデータ」タブから、追跡を希望する各スキル軸の増加限定データを作成します
  2. ゲーム内で各データごとにISteamUserStats::GetStatを呼び出してユーザーのスキルデータを取得し、取得された値をマッチメイキングに使用します
  3. ゲームの終了時にはISteamUserStats::SetStatとそれに続くISteamUserStats::StoreStatsを各データごとに呼び出し、ユーザーのスキルデータを更新します

スキルに応じたゲームセッションを見つける

特定のスキルレベルのユーザー用にロビーを作成するには、ロビーを作成後にオーナーはISteamMatchmaking::SetLobbyDataを呼び出して、ロビーのメタデータにスキルデータを追加する必要があります。 別のユーザーがロビー検索APIを使用してゲームセッションを検索する際、検索者はISteamMatchmaking::AddRequestLobbyListNearValueFilterを使用することで、そのユーザーのスキルレベルに近いロビーを見つけることができます。 返される結果はベストマッチの順に並べ替えられます。 スキル基準が複数ある場合は、複数の近接フィルターを追加し、事前に設定した優先順位に合わせて検索結果を並べ替えることができます。 検索するスキルの最小値または最大値を指定することもできます。

少ない検索結果に対処する

マッチメイキングシステムでは検索結果が少なすぎることによって、マッチしたゲームどころかゲームそのものを見つけることができないという問題がよく起こります。 これは特にリアルタイムストラテジーのような、セッションの開始と終了が厳密で、途中参加ができないゲームでよく見られます。 同時に検索するユーザー数の少なさがその原因です。 Steamはこの問題を、検索結果が返されるまでの時間を数百ミリ秒に高速化することで解決します。 比較的限定的なフィルターから開始し、後に続く検索で範囲を拡大させて時間枠を拡大し、 プレイを開始する前にユーザーを待たせる時間のコントロールはゲームに任せつつ、適切なマッチを見つける確率を増加させることができます。

プレイスタイルによるマッチング

Steamworksマッチメイキングは1つの数字に限定されず、検索に複数のキーを指定可能にし、 プレイスタイルによるマッチングや、様々なゲームモード用に異なるスキル基準の使用を実現します。 これを行うために、数字を格納するための複数の統計データを作成し、作成されたロビー内に複数のキーを設定し、検索に対する複数の近接語句を追加できます。