> ## 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.

# Crear una sala

> Cree instancias de Lobby de PlayFab de propiedad del cliente o del servidor, configure el número máximo de jugadores, la directiva de acceso y las propiedades iniciales de los miembros para las sesiones multijugador.

Este artículo explica cómo crear una sala.

## ¿Cómo se crean las salas?

Hay varias formas de crear una sala.

* **Por sus jugadores**: los jugadores que quieran reunir un equipo de jugadores para jugar pueden crear salas. Estas son salas de propiedad del cliente.
* **Por sus servidores de juegos**: los servidores de juegos de su título pueden crear salas y esperar a que los jugadores se unan. Estas son salas de propiedad del servidor.
* **Por emparejamiento**: después de que se forme un grupo de jugadores tras el emparejamiento, se crea una sala como lugar de espera antes de que comience el juego. Estas son salas de propiedad del cliente.

Desde una perspectiva técnica, todas las salas se dividen en dos categorías principales según la propiedad: de propiedad del servidor y de propiedad del cliente. Para obtener más información, consulte [Requisitos y privilegios del propietario](/services/playfab/multiplayer/lobby/owner-requirements-and-privileges).

El uso general de Lobby de PlayFab es mantener temporalmente unido a un grupo de jugadores. Para conocer las aplicaciones de uso común de Lobby, consulte la [información general de Lobby de PlayFab](/services/playfab/multiplayer/lobby).

### Tipos de entidad admitidos

Antes de poder crear una sala, su título debe iniciar sesión como una entidad de PlayFab.

* Al crear salas de propiedad del cliente en nombre de sus jugadores, inicie sesión como una entidad title\_player\_account. Para obtener más información, consulte [Conceptos básicos y procedimientos recomendados de inicio de sesión](/services/playfab/identity/player-identity/login/login-basics-best-practices).
* Al crear salas de propiedad del servidor en nombre de sus servidores de juegos, inicie sesión como una entidad game\_server. Para obtener más información, consulte [AuthenticateGameServerWithCustomId](https://learn.microsoft.com/en-us/rest/api/playfab/authentication/authentication/authenticate-game-server-with-custom-id).

## Cómo se configuran las salas

Varios ajustes importantes de una sala se configuran durante la creación: **maxMemberCount**, **accessPolicy**, **owner** y **ownerMigrationPolicy**.

* **maxMemberCount** define cuántos jugadores puede contener la sala
* **accessPolicy** define quién puede descubrir la cadena de conexión de la sala
* **owner** define el propietario de la sala, que tiene permisos especiales para actualizar los datos de la sala. Este valor es implícitamente la entidad de cliente o servidor que crea la sala.
* **ownerMigrationPolicy** define las directivas sobre cómo debe transferirse la propiedad de la sala si el propietario actual la abandona o tiene problemas para mantener una conexión con la sala.

Además, durante la creación, el creador de la sala también puede definir propiedades de sala personalizadas y propiedades de búsqueda para anexar datos personalizados a la sesión de la sala. El propietario de la sala también puede modificar estas propiedades personalizadas a lo largo de la vida de la sala.

Para obtener más información, consulte [Propiedades de la sala](/services/playfab/multiplayer/lobby/lobby-properties).

## Ejemplo de creación de una sala de propiedad del cliente mediante el SDK de Lobby y Matchmaking

Este ejemplo usa un jugador local que ha iniciado sesión en PlayFab como una entidad [title\_player\_account](/services/playfab/live-service-management/game-configuration/entities/available-built-in-entity-types).

En este fragmento de código, las propiedades de la sala se pasan como **lobbyConfiguration** y el jugador que crea la sala pasa sus propiedades de miembro iniciales mediante **creatorMemberConfiguration**. El jugador local se convierte en el propietario de la sala, por lo que se trata de una sala de propiedad del cliente. Después de crear correctamente la sala, se puede usar el **PFLobbyHandle** para invitar a otros jugadores con [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);
```

Cuando se completa la llamada para crear una sala, [PFMultiplayerStartProcessingLobbyStateChanges](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges) proporcionará un [PFLobbyCreateAndJoinLobbyCompletedStateChange](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/structs/pflobbycreateandjoinlobbycompletedstatechange).

## Ejemplo de creación de una sala de propiedad del servidor mediante el SDK de Lobby y Matchmaking

Este ejemplo es similar al [ejemplo de sala de propiedad del cliente](#example-creating-a-client-owned-lobby-using-the-lobby-and-matchmaking-sdk), excepto que crea la sala como una entidad [game\_server](/services/playfab/live-service-management/game-configuration/entities/available-built-in-entity-types) y se llama a [PFMultiplayerCreateAndClaimServerLobby](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayercreateandclaimserverlobby) en lugar de [PFMultiplayerCreateAndJoinLobby](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayercreateandjoinlobby).

```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);
```

Cuando se completa la llamada para crear una sala, [PFMultiplayerStartProcessingLobbyStateChanges](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges) proporcionará un [PFLobbyCreateAndClaimServerLobbyCompletedStateChange](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/structs/pflobbycreateandclaimserverlobbycompletedstatechange).

Para obtener más información sobre las diferencias entre las salas de propiedad del cliente y las salas de propiedad del servidor, consulte [Servidores de juegos y salas](/services/playfab/multiplayer/lobby/lobby-server-overview).

<Note>
  Para habilitar las API de servidor de juegos en PlayFab Multiplayer, debe definir PFMULTIPLAYER\_INCLUDE\_SERVER\_APIS antes de incluir PFLobby.h. Para obtener más información, consulte [Servidores de juegos y salas](/services/playfab/multiplayer/lobby/lobby-server-overview)
</Note>

## Consulte también

* [Referencia del SDK de Lobby](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/pflobby_members)
* [Crear salas que admiten búsqueda](/services/playfab/multiplayer/lobby/define-search-keywords)
* [Invitar a jugadores a una sala](/services/playfab/multiplayer/lobby/lobby-invites)
* [Propiedades de la sala](/services/playfab/multiplayer/lobby/lobby-properties)
* [Salas y emparejamiento](/services/playfab/multiplayer/lobby/lobby-and-matchmaking)


## Related topics

- [Crear salas que admiten búsqueda](/es/services/playfab/multiplayer/lobby/define-search-keywords.md)
- [Inicio rápido (Windows): Party y Multiplayer](/es/services/playfab/sdks/unified-sdk/quickstart-windows-party.md)
- [Migración de MPSD a PlayFab Multiplayer y MPA](/es/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-to-mlp.md)
- [Tareas multijugador](/es/services/xbox-services/multiplayer/mpsd/how-to/live-mpsd-how-tos.md)
- [Emparejamiento multijugador con SmartMatch y MPM](/es/services/xbox-services/multiplayer/mpm/how-to/live-play-multiplayer-with-matchmaking.md)
