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

# ロビーの作成

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

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

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

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

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

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

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

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

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

* プレイヤーに代わってクライアント所有のロビーを作成する場合は、title\_player\_account エンティティとしてログインします。詳細については、[ログインの基本とベスト プラクティス](/services/playfab/identity/player-identity/login/login-basics-best-practices) を参照してください。
* ゲーム サーバーに代わってサーバー所有のロビーを作成する場合は、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** は現在のオーナーがロビーを離れる、またはロビーへの接続を維持するのに困難がある場合に、ロビーの所有権をどのように移譲するかのポリシーを定義します。

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

詳細については、[ロビーのプロパティ](/services/playfab/multiplayer/lobby/lobby-properties) を参照してください。

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

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

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

```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](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges) によって [PFLobbyCreateAndJoinLobbyCompletedStateChange](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/structs/pflobbycreateandjoinlobbycompletedstatechange) が提供されます。

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

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

```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](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges) によって [PFLobbyCreateAndClaimServerLobbyCompletedStateChange](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/structs/pflobbycreateandclaimserverlobbycompletedstatechange) が提供されます。

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

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

## 関連項目

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


## Related topics

- [MPSD から PlayFab Multiplayer と MPA への移行](/ja-jp/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-to-mlp.md)
- [ロビーの検索](/ja-jp/services/playfab/multiplayer/lobby/find-lobbies.md)
- [検索可能なロビーの作成](/ja-jp/services/playfab/multiplayer/lobby/define-search-keywords.md)
- [ロビーへの参加](/ja-jp/services/playfab/multiplayer/lobby/join-lobbies.md)
- [ロビーの所有権の変更](/ja-jp/services/playfab/multiplayer/lobby/ownership-changes.md)
