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

# Inicio rápido del SDK de Lobby

> Configure el SDK de C/C++ de PlayFab Multiplayer y cree su primer lobby de PlayFab con este inicio rápido que cubre los requisitos previos, la integración y las primeras llamadas de API.

En este artículo se describe cómo configurar el entorno de desarrollo para PlayFab Lobby y crear su primer lobby con el SDK de C/C++ de PlayFab Multiplayer.

<Note>
  El SDK de PlayFab Multiplayer también proporciona API para PlayFab Matchmaking. \* Para obtener más información sobre las API de C++, consulte el [Inicio rápido del SDK de Matchmaking](/services/playfab/multiplayer/matchmaking/quickstart-client-sdk). \* Para obtener más información sobre las API de Unity, consulte el [Inicio rápido para Unity](/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-sdk-getting-started) \* Para obtener más información sobre las API de Unreal, consulte el [Inicio rápido para Unreal](/services/playfab/multiplayer/networking/party-unreal-engine-oss-quickstart)
</Note>

## Requisitos previos

Necesita una [cuenta de PlayFab](https://developer.playfab.com) para usar los lobbies de PlayFab. Para obtener instrucciones sobre cómo crear una cuenta, consulte [Inicio rápido: Game Manager](/services/playfab/live-service-management/gamemanager/quickstart).

## Descargar y configurar el SDK de PlayFab Multiplayer

Descargue el [SDK de C/C++](/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-matchmaking-sdks) para su plataforma e integre los archivos de encabezado y biblioteca proporcionados en su compilación.

<Note>
  Este inicio rápido se centra en el uso del SDK de C/C++. Para las interfaces de Unity y Unreal, consulte los siguientes artículos: \* [Inicio rápido para Unity](/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-sdk-getting-started) \* [Inicio rápido para Unreal](/services/playfab/multiplayer/networking/party-unreal-engine-oss-quickstart)
</Note>

## Iniciar sesión con una entidad de PlayFab

Para usar el SDK de PlayFab Lobby, debe autenticar su cliente mediante claves de entidad y tokens de entidad de PlayFab. Adquiera un par de clave de entidad y token de PlayFab iniciando sesión con la API REST [LoginWithCustomId](https://learn.microsoft.com/en-us/rest/api/playfab/client/authentication/login-with-custom-id). Esta API también está disponible como proyección de C/C++ a través del [SDK de PlayFab Services](/services/playfab/sdks/playfab-sdk-intro).

<Note>
  LoginWithCustomId es una forma rápida de empezar a usar las características de PlayFab, pero no está pensado como el mecanismo de inicio de sesión con el que publicará el juego. Para obtener orientación sobre el inicio de sesión, consulte [Conceptos básicos y procedimientos recomendados de inicio de sesión](/services/playfab/identity/player-identity/login/login-basics-best-practices).
</Note>

## Inicializar el SDK de PlayFab Multiplayer

Inicialice el SDK de PlayFab Multiplayer siguiendo estos pasos básicos:

1. Inicialice el SDK llamando a [PFMultiplayerInitialize](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmultiplayer/functions/pfmultiplayerinitialize)
2. Establezca la clave de entidad y el token que usa la biblioteca en nombre de sus jugadores llamando a [PFMultiplayerSetEntityToken](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmultiplayer/functions/pfmultiplayersetentitytoken).

```cpp theme={null}
static PFMultiplayerHandle g_pfmHandle = nullptr;
...
...
HRESULT hr = S_OK;

// Initialize the PFMultiplayer library.
hr = PFMultiplayerInitialize(titleId, &g_pfmHandle);
if (FAILED(hr))
{
    // handle initialize failure
    printf("PFMultiplayerInitialize failed! %s\n", PFMultiplayerGetErrorMessage(hr));
    return hr;
}

// Set an entity token for a local user. The token is used to authenticate PlayFab operations on behalf of this user. 
// Tokens can expire, and this API token should be called again when this token is refreshed.
hr = PFMultiplayerSetEntityToken(g_pfmHandle, localUserEntity, entityToken);
if (FAILED(hr))
{
    // handle set entity token failure
    printf("PFMultiplayerSetEntityToken failed! %s\n", PFMultiplayerGetErrorMessage(hr));
    return hr;
}
```

## Crear un lobby

Por último, crearemos un lobby siguiendo estos pasos básicos:

1. Llame a [PFMultiplayerCreateAndJoinLobby](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayercreateandjoinlobby)
2. Compruebe la finalización asincrónica sondeando periódicamente [PFMultiplayerStartProcessingLobbyStateChanges](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges) en busca de un [PFLobbyCreateAndJoinLobbyCompletedStateChange](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges).

```cpp theme={null}
PFLobbyCreateConfiguration lobbyConfiguration{};
lobbyConfiguration.maxMemberCount = 16;
lobbyConfiguration.ownerMigrationPolicy = PFLobbyOwnerMigrationPolicy::Automatic;
lobbyConfiguration.accessPolicy = PFLobbyAccessPolicy::Public;

PFLobbyJoinConfiguration memberConfiguration{};

PFLobbyHandle lobby;
HRESULT hr = PFMultiplayerCreateAndJoinLobby(g_pfmHandle, localUserEntity, &lobbyConfiguration, &memberConfiguration, nullptr, &lobby);
if (FAILED(hr))
{
    // handle immediate create failure
    printf("PFMultiplayerCreateAndJoinLobby failed! %s\n", PFMultiplayerGetErrorMessage(hr));
    return hr;
}

// NOTE: to simplify this quickstart, we'll synchronously block waiting for the CreateAndJoinLobby operation
// to finish. In a real implementation, this polling would be done asynchronously on a background thread/worker.
bool createAndJoinLobbyFinished = false;
while (!createAndJoinLobbyFinished)
{
    uint32_t lobbyStateChangeCount;
    const PFLobbyStateChange * const * lobbyStateChanges;
    HRESULT hr = PFMultiplayerStartProcessingLobbyStateChanges(m_pfmHandle, &lobbyStateChangeCount, &lobbyStateChanges);
    if (FAILED(hr))
    {
        // handle the failure
        printf("PFMultiplayerStartProcessingLobbyStateChanges failed! %s\n", PFMultiplayerGetErrorMessage(hr));
        return hr;
    }

    for (uint32_t i = 0; i < lobbyStateChangeCount; ++i)
    {
        const PFLobbyStateChange* stateChange = lobbyStateChanges[i];
        switch (stateChange->stateChangeType)
        {
            case PFLobbyStateChangeType::CreateAndJoinLobbyCompleted:
            {
                auto createAndJoinStateChange = 
                    static_cast<const PFLobbyCreateAndJoinLobbyCompletedStateChange*>(stateChange);

                if (SUCCEEDED(createAndJoinStateChange->result))
                {
                    // lobby successfully created!
                    printf("Lobby 0x%p successfully created!\n", createAndJoinStateChange->lobby);
                }
                else
                {
                    // report asynchronous failure
                    printf("Failed to create lobby 0x%p! %s\n",
                        createAndJoinStateChange->lobby,
                        PFMultiplayerGetErrorMessage(createAndJoinStateChange->result));
                }
                createAndJoinLobbyFinished = true;
                break;
            }
        }
    }

    hr = PFMultiplayerFinishProcessingLobbyStateChanges(m_pfmHandle, lobbyStateChangeCount, lobbyStateChanges);
    if (FAILED(hr))
    {
        printf("PFMultiplayerFinishProcessingLobbyStateChanges failed! %s\n", PFMultiplayerGetErrorMessage(hr));
        return hr;
    }
}
```

Para obtener más información sobre la creación de lobbies, consulte [Crear un lobby](/services/playfab/multiplayer/lobby/create-a-lobby).

Para obtener más información sobre el procesamiento de operaciones asincrónicas, consulte [Operaciones y notificaciones asincrónicas](/services/playfab/multiplayer/lobby/lobby-and-matchmaking-client-sdk-async).

## Pasos siguientes

* [Buscar un lobby y unirse a él](/services/playfab/multiplayer/lobby/join-lobbies)
* [Invitar a otro jugador a un lobby](/services/playfab/multiplayer/lobby/lobby-invites)
* [Usar las propiedades del lobby para coordinar una sesión de juego](/services/playfab/multiplayer/lobby/lobby-properties)

## Consulte también

* [Crear un lobby](/services/playfab/multiplayer/lobby/create-a-lobby)
* [Operaciones y notificaciones asincrónicas](/services/playfab/multiplayer/lobby/lobby-and-matchmaking-client-sdk-async)
* [Crear lobbies con capacidad de búsqueda](/services/playfab/multiplayer/lobby/define-search-keywords)
* [Propiedades del lobby](/services/playfab/multiplayer/lobby/lobby-properties)
* [Referencia del SDK de Lobby](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/pflobby_members)
* [SDK de Lobby](/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-matchmaking-sdks)
* [Inicio rápido del SDK de Matchmaking](/services/playfab/multiplayer/matchmaking/quickstart-client-sdk)


## Related topics

- [Inicio rápido del SDK de Matchmaking](/es/services/playfab/multiplayer/matchmaking/quickstart-client-sdk.md)
- [SDK de PlayFab Lobby y Matchmaking](/es/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-matchmaking-sdks.md)
- [Inicio rápido del complemento de Unity de Multiplayer](/es/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-plugin-quickstart.md)
- [Inicio rápido de datos del jugador](/es/services/playfab/player-progression/player-data/quickstart.md)
- [Inicio rápido (Windows): configuración del SDK de Core](/es/services/playfab/sdks/unified-sdk/quickstart-core.md)
