> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ロビーの作成

> クライアント所有またはサーバー所有の PlayFab Lobby インスタンスを作成し、マルチプレイヤー セッション用に最大プレイヤー数、アクセス ポリシー、および初期メンバー プロパティを構成します。

この記事では、ロビーの作成方法について説明します。

## ロビーはどのように作成されるか

ロビーはいくつかの方法で作成できます。

* **プレイヤーによる作成**: プレイヤーがゲームをプレイするチームを集めたいときにロビーを作成できます。これらはクライアント所有のロビーです。
* **ゲーム サーバーによる作成**: タイトルのゲーム サーバーはロビーを作成し、プレイヤーの参加を待つことができます。これらはサーバー所有のロビーです。
* **マッチメイキングによる作成**: マッチメイキング後にプレイヤーのグループが形成されると、ゲームが始まる前の待機場所としてロビーが作成されます。これらはクライアント所有のロビーです。

技術的な観点から、すべてのロビーは所有権に基づいて 2 つの主要なカテゴリ、すなわちサーバー所有とクライアント所有に分類されます。詳細については、[オーナー要件と権限](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/owner-requirements-and-privileges.md) を参照してください。

PlayFab Lobby の一般的な用途は、プレイヤーのグループを一時的にまとめておくことです。Lobby の一般的な使用例については、[PlayFab Lobby の概要](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby.md) を参照してください。

### サポートされるエンティティ タイプ

ロビーを作成する前に、タイトルは PlayFab エンティティとしてログインする必要があります。

* プレイヤーに代わってクライアント所有のロビーを作成する場合は、title\_player\_account エンティティとしてログインします。詳細については、[ログインの基本とベスト プラクティス](https://docs.xbox.com/ja-jp/services/playfab/identity/player-identity/login/login-basics-best-practices.md) を参照してください。
* ゲーム サーバーに代わってサーバー所有のロビーを作成する場合は、game\_server エンティティとしてログインします。詳細については、[AuthenticateGameServerWithCustomId](https://learn.microsoft.com/en-us/rest/api/playfab/authentication/authentication/authenticate-game-server-with-custom-id) を参照してください。

## ロビーの構成方法

ロビーの重要な設定は、作成時に構成されます: **maxMemberCount**、**accessPolicy**、**owner**、および **ownerMigrationPolicy**。

* **maxMemberCount** はロビーが保持できるプレイヤーの数を定義します
* **accessPolicy** はロビーの接続文字列を発見できるユーザーを定義します
* **owner** はロビーのオーナーを定義します。オーナーはロビーのデータを更新するための特別な権限を持ちます。この値は、ロビーを作成するクライアントまたはサーバー エンティティに暗黙的に設定されます。
* **ownerMigrationPolicy** は現在のオーナーがロビーを離れる、またはロビーへの接続を維持するのに困難がある場合に、ロビーの所有権をどのように移譲するかのポリシーを定義します。

さらに、ロビー作成者は作成時にカスタム ロビー プロパティおよび検索プロパティを定義して、ロビー セッションにカスタム データを追加できます。これらのカスタム プロパティは、ロビーの存続期間中にロビーのオーナーによって変更することもできます。

詳細については、[ロビーのプロパティ](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/lobby-properties.md) を参照してください。

## Lobby and Matchmaking SDK を使用したクライアント所有ロビーの作成例

この例では、PlayFab に [title\_player\_account](https://docs.xbox.com/ja-jp/services/playfab/live-service-management/game-configuration/entities/available-built-in-entity-types.md) エンティティとしてログインしたローカル プレイヤーを使用します。

このコード スニペットでは、ロビー プロパティが **lobbyConfiguration** として渡され、ロビーを作成するプレイヤーは **creatorMemberConfiguration** を介して初期メンバー プロパティを渡します。ローカル プレイヤーがロビーのオーナーになるため、これはクライアント所有のロビーです。ロビーが正常に作成された後、**PFLobbyHandle** を使用して [PFLobbySendInvite](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pflobbysendinvite.md) で他のプレイヤーを招待できます。

```cpp theme={null}
    // Retrieved elsewhere from SDK's PFMultiplayerInitialize API
    PFMultiplayerHandle apiHandle = g_pfmHandle;

    // Retrieved elsewhere from one of PlayFab's title_player_account login APIs
    const PFEntityKey* clientOwner = m_localPlayerTitlePlayerAccounts[0];

    // Initialize the lobby configuration
    const char* gameModePropertyKey = "GameMode";
    const char* gameModePropertyValue = "GameMode_Foo";

    PFLobbyCreateConfiguration lobbyConfiguration{};
    lobbyConfiguration.maxMemberCount = 16;
    lobbyConfiguration.ownerMigrationPolicy = PFLobbyOwnerMigrationPolicy::Automatic;
    lobbyConfiguration.accessPolicy = PFLobbyAccessPolicy::Private;
    lobbyConfiguration.lobbyPropertyCount = 1;
    lobbyConfiguration.lobbyPropertyKeys = &gameModePropertyKey;
    lobbyConfiguration.lobbyPropertyValues = &gameModePropertyValue;
    
    // Initialize the creator's member properties
    const char* playerColorPropertyKey = "PlayerColor";
    const char* playerColorPropertyValue = "Red";

    PFLobbyJoinConfiguration creatorMemberConfiguration{};
    creatorMemberConfiguration.memberPropertyCount = 1;
    creatorMemberConfiguration.memberPropertyKeys = &playerColorPropertyKey;
    creatorMemberConfiguration.memberPropertyValues = &playerColorPropertyValue;

    // Create a lobby using our first player
    PFLobbyHandle lobby;
    HRESULT error = PFMultiplayerCreateAndJoinLobby(
        apiHandle,
        clientOwner,
        &lobbyConfiguration,
        &creatorMemberConfiguration,
        nullptr,
        &lobby);
```

ロビー作成の呼び出しが完了すると、[PFMultiplayerStartProcessingLobbyStateChanges](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges.md) によって [PFLobbyCreateAndJoinLobbyCompletedStateChange](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/structs/pflobbycreateandjoinlobbycompletedstatechange.md) が提供されます。

## Lobby and Matchmaking SDK を使用したサーバー所有ロビーの作成例

この例は [クライアント所有ロビーの例](#example-creating-a-client-owned-lobby-using-the-lobby-and-matchmaking-sdk) と似ていますが、[game\_server](https://docs.xbox.com/ja-jp/services/playfab/live-service-management/game-configuration/entities/available-built-in-entity-types.md) エンティティとしてロビーを作成し、[PFMultiplayerCreateAndJoinLobby](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayercreateandjoinlobby.md) の代わりに [PFMultiplayerCreateAndClaimServerLobby](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayercreateandclaimserverlobby.md) を呼び出します。

```cpp theme={null}
    // Retrieved elsewhere from SDK's PFMultiplayerInitialize API
    PFMultiplayerHandle apiHandle = g_pfmHandle;

    // Retrieved elsewhere from one of PlayFab's game_server login APIs
    const PFEntityKey* serverOwner = m_gameServerEntityKey;

    const char* gameModePropertyKey = "GameMode";
    const char* gameModePropertyValue = "GameMode_Foo";
    
    // Initialize the lobby configuration
    PFLobbyCreateConfiguration lobbyConfiguration{};
    lobbyConfiguration.maxMemberCount = 16;
    lobbyConfiguration.ownerMigrationPolicy = PFLobbyOwnerMigrationPolicy::Automatic;
    lobbyConfiguration.accessPolicy = PFLobbyAccessPolicy::Public;
    lobbyConfiguration.lobbyPropertyCount = 1;
    lobbyConfiguration.lobbyPropertyKeys = &gameModePropertyKey;
    lobbyConfiguration.lobbyPropertyValues = &gameModePropertyValue;
    
    // Create a lobby using our first player
    PFLobbyHandle lobby;
    HRESULT error = PFMultiplayerCreateAndClaimServerLobby(
        apiHandle,
        serverOwner,
        &lobbyConfiguration,
        nullptr,
        &lobby);
```

ロビー作成の呼び出しが完了すると、[PFMultiplayerStartProcessingLobbyStateChanges](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges.md) によって [PFLobbyCreateAndClaimServerLobbyCompletedStateChange](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/structs/pflobbycreateandclaimserverlobbycompletedstatechange.md) が提供されます。

クライアント所有ロビーとサーバー所有ロビーの違いに関する詳細は、[ゲーム サーバーとロビー](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/lobby-server-overview.md) を参照してください。

> [!NOTE]
>
> PlayFab Multiplayer でゲーム サーバー API を有効にするには、PFLobby.h をインクルードする前に PFMULTIPLAYER\_INCLUDE\_SERVER\_APIS を定義する必要があります。詳細については、[ゲーム サーバーとロビー](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/lobby-server-overview.md) を参照してください。

## 関連項目

* [Lobby SDK リファレンス](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/pflobby_members.md)
* [検索可能なロビーの作成](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/define-search-keywords.md)
* [ロビーへのプレイヤーの招待](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/lobby-invites.md)
* [ロビーのプロパティ](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/lobby-properties.md)
* [ロビーとマッチメイキング](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/lobby-and-matchmaking.md)


## Related topics

- [ロビーの作成](https://docs.xbox.com/ja-jp/services/playfab/api-references/rest/multiplayer/lobby/create-lobby.md)
- [MPSD から PlayFab Multiplayer と MPA への移行](https://docs.xbox.com/ja-jp/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-to-mlp.md)
- [ロビーの検索](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/find-lobbies.md)
- [検索可能なロビーの作成](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/define-search-keywords.md)
- [ロビーへの参加](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/join-lobbies.md)
