ロビーと接続文字列の結合
プレイヤーはロビー サービスにロビーの "接続文字列" を提供することでロビーに参加します。これは、ロビーにメンバーシップを付与する不透明な識別子です。
プレイヤーは次の方法で接続文字列を検出し、ロビーに参加することができます。
- ゲーム内の招待を使用する — ロビーのメンバーは、ロビー サービスを介して別のプレイヤーをそのロビーに直接招待できます。 これで、ロビーの接続文字列を招待されたプレイヤーと共有できます。 これらの招待はクロスプラットフォームで動作しますが、ゲーム内でのみ動作します。 詳細については、「ロビーの招待」をご覧ください
- プラットフォームが提供する招待を使用する — ロビーのメンバーは、プラットフォーム固有の招待メカニズムを介してロビーの接続文字列を他のプレイヤーと直接共有できます。 これらの招待はクロスプラットフォームでは機能しませんが、受信者がゲームを既に実行せずに受信できます。
- FindLobbies で使用可能なロビーを検索し、参加する
- 帯域外のカスタム検出メカニズムを介してロビーの接続文字列を共有する
注: メンバーとしてロビーに参加できるのは、プレイヤー (PlayFab エンティティ title_player_account) だけです。 ゲーム サーバー (PlayFab エンティティ game_server) は、メンバーとしてロビーに参加できません。 ゲーム サーバーがロビーとやり取りする方法の詳細については、「ゲーム サーバーとロビー」をご覧ください。
接続文字列とロビー ID
接続文字列とは別に、ロビーには 、LobbyId と呼ばれる別の識別子があります。 LobbyId は、ロビーの一意の識別子です。 タイトルは、プレイヤーが存在する複数のロビーを区別するために LobbyId を使用する場合がありますが、LobbyIds を使用してロビーに参加したり、メンバーシップを必要とする情報を直接照会したりすることはできません。 そのため、タイトルは LobbyId をシークレットにしておく必要はありません。 一方、接続文字列はロビーへのアクセスを許可するため、不要な外部の第三者に公開しないように注意する必要があります。
ロビーとマッチメイキング SDK を使用したロビーへの参加例
以下に、SDK が提供する PFMultiplayerJoinLobby API に接続文字列を渡す方法を示す短いスニペットをご紹介します。
このスニペットでは、接続文字列は、ゲーム内の招待、プラットフォーム固有の招待、フィルターをかけたロビー検索など、前述した各種の検出メカニズムから取得することができます。
// Initialize the member properties for the newly joining member
const char* playerColorPropertyKey = "PlayerColor";
const char* playerColorPropertyValue = MyGame::GetPlayerColorString(localUser);
PFLobbyJoinConfiguration joinConfig;
joinConfig.memberPropertyCount = 1;
joinConfig.memberPropertyKeys = &playerColorPropertyKey;
joinConfig.memberPropertyValues = &playerColorPropertyValue;
// Join the lobby using the connection string
HRESULT hr = PFMultiplayerJoinLobby(
g_pfmHandle,
&localUser,
connectionString,
&joinConfig,
nullptr,
nullptr);