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

# Démarrage rapide du SDK Lobby

> Configurez le SDK C/C++ PlayFab Multiplayer et créez votre premier PlayFab Lobby grâce à ce démarrage rapide couvrant les prérequis, l'intégration et les premiers appels d'API.

Cet article explique comment configurer l'environnement de développement pour PlayFab Lobby et créer votre premier lobby à l'aide du SDK C/C++ PlayFab Multiplayer.

<Note>
  Le SDK PlayFab Multiplayer fournit également des API pour PlayFab Matchmaking. \* Pour plus de renseignements sur les API C++, consultez le [démarrage rapide du SDK Matchmaking](/fr-CA/services/playfab/multiplayer/matchmaking/quickstart-client-sdk). \* Pour plus de renseignements sur les API Unity, consultez le [démarrage rapide pour Unity](/fr-CA/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-sdk-getting-started) \* Pour plus de renseignements sur les API Unreal, consultez le [démarrage rapide pour Unreal](/fr-CA/services/playfab/multiplayer/networking/party-unreal-engine-oss-quickstart)
</Note>

## Prérequis

Vous avez besoin d'un [compte PlayFab](https://developer.playfab.com) pour utiliser PlayFab Lobbies. Pour savoir comment créer un compte, consultez [Démarrage rapide : Game Manager](/fr-CA/services/playfab/live-service-management/gamemanager/quickstart).

## Télécharger et configurer le SDK PlayFab Multiplayer

Téléchargez le [SDK C/C++](/fr-CA/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-matchmaking-sdks) pour votre plateforme et intégrez les fichiers d'en-tête et de bibliothèque fournis à votre build.

<Note>
  Ce démarrage rapide porte sur l'utilisation du SDK C/C++. Pour les interfaces Unity et Unreal, consultez les articles suivants : \* [Démarrage rapide pour Unity](/fr-CA/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-sdk-getting-started) \* [Démarrage rapide pour Unreal](/fr-CA/services/playfab/multiplayer/networking/party-unreal-engine-oss-quickstart)
</Note>

## Connecter une entité PlayFab

Pour utiliser le SDK PlayFab Lobby, vous devez authentifier votre client à l'aide de clés d'entité et de jetons d'entité PlayFab. Obtenez une paire clé d'entité et jeton PlayFab en vous connectant avec l'API REST [LoginWithCustomId](https://learn.microsoft.com/en-us/rest/api/playfab/client/authentication/login-with-custom-id). Cette API est également disponible sous forme de projection C/C++ au moyen du [SDK PlayFab Services](/fr-CA/services/playfab/sdks/playfab-sdk-intro).

<Note>
  LoginWithCustomId est un moyen rapide de commencer à utiliser les fonctionnalités PlayFab, mais il n'est pas destiné à être le mécanisme de connexion de votre jeu publié. Pour obtenir des conseils sur la connexion, consultez [Principes de base et pratiques exemplaires de connexion](/fr-CA/services/playfab/identity/player-identity/login/login-basics-best-practices).
</Note>

## Initialiser le SDK PlayFab Multiplayer

Initialisez le SDK PlayFab Multiplayer en suivant ces étapes de base :

1. Initialisez le SDK en appelant [PFMultiplayerInitialize](/fr-CA/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmultiplayer/functions/pfmultiplayerinitialize)
2. Définissez la clé d'entité et le jeton utilisés par la bibliothèque pour le compte de vos joueurs en appelant [PFMultiplayerSetEntityToken](/fr-CA/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;
}
```

## Créer un lobby

Enfin, nous allons créer un lobby en suivant ces étapes de base :

1. Appelez [PFMultiplayerCreateAndJoinLobby](/fr-CA/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayercreateandjoinlobby)
2. Vérifiez l'achèvement asynchrone en interrogeant périodiquement [PFMultiplayerStartProcessingLobbyStateChanges](/fr-CA/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartprocessinglobbystatechanges) jusqu'à obtenir un [PFLobbyCreateAndJoinLobbyCompletedStateChange](/fr-CA/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;
    }
}
```

Pour plus de renseignements sur la création de lobbies, consultez [Créer un lobby](/fr-CA/services/playfab/multiplayer/lobby/create-a-lobby).

Pour plus de renseignements sur le traitement des opérations asynchrones, consultez [Opérations et notifications asynchrones](/fr-CA/services/playfab/multiplayer/lobby/lobby-and-matchmaking-client-sdk-async).

## Étapes suivantes

* [Rechercher et rejoindre un lobby](/fr-CA/services/playfab/multiplayer/lobby/join-lobbies)
* [Inviter un autre joueur dans un lobby](/fr-CA/services/playfab/multiplayer/lobby/lobby-invites)
* [Utiliser les propriétés du lobby pour coordonner une session de jeu](/fr-CA/services/playfab/multiplayer/lobby/lobby-properties)

## Voir aussi

* [Créer un lobby](/fr-CA/services/playfab/multiplayer/lobby/create-a-lobby)
* [Opérations et notifications asynchrones](/fr-CA/services/playfab/multiplayer/lobby/lobby-and-matchmaking-client-sdk-async)
* [Créer des lobbies consultables](/fr-CA/services/playfab/multiplayer/lobby/define-search-keywords)
* [Propriétés du lobby](/fr-CA/services/playfab/multiplayer/lobby/lobby-properties)
* [Référence du SDK Lobby](/fr-CA/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/pflobby_members)
* [SDK Lobby](/fr-CA/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-matchmaking-sdks)
* [Démarrage rapide du SDK Matchmaking](/fr-CA/services/playfab/multiplayer/matchmaking/quickstart-client-sdk)


## Related topics

- [Démarrage rapide du SDK Matchmaking](/fr-CA/services/playfab/multiplayer/matchmaking/quickstart-client-sdk.md)
- [SDK PlayFab Lobby et Matchmaking](/fr-CA/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-matchmaking-sdks.md)
- [Démarrage rapide du plugiciel Multiplayer pour Unity](/fr-CA/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-plugin-quickstart.md)
- [Démarrage rapide](/fr-CA/services/playfab/economy-monetization/economy-v2/quickstart.md)
- [Démarrage rapide du SDK Generator](/fr-CA/services/playfab/sdks/sdkgenerator/quickstart.md)
