Freigeben über


Erstellen eines Wartebereichs

In diesem Artikel wird erläutert, wie Sie einen Wartebereich erstellen.

Wie werden Lobbies erstellt?

Es gibt mehrere Möglichkeiten, einen Wartebereich zu erstellen.

  • Von Ihren Spielern: Lobbies können von Spielern erstellt werden, die ein Team von Spielern zusammenkommen möchten, um zu spielen. Dies sind clienteigene Lobbies.
  • Von Ihren Spielservern: Die Spieleserver Ihres Titels können Lobbies erstellen und darauf warten, dass Die Spieler beitreten. Dies sind servereigene Lobbies.
  • Durch Matchmaking: Nachdem sich eine Gruppe von Spielern nach dem Matchmaking gebildet hat, wird ein Wartebereich als Halteplatz vor Beginn des Spiels erstellt. Dies sind clienteigene Lobbies.

Aus technischer Sicht werden alle Lobbies in zwei Standard Kategorien unterteilt, die auf dem Besitz basieren: servereigene und clienteigene. Weitere Informationen finden Sie unter Besitzeranforderungen und -berechtigungen.

Die allgemeine Verwendung von PlayFab Lobby besteht darin, eine Gruppe von Spielern vorübergehend zusammenzuhalten. Informationen zu häufig verwendeten Anwendungen von Lobby finden Sie in der Übersicht über die Azure PlayFab-Lobby.

Unterstützte Entitätstypen

Bevor ein Wartebereich erstellt werden kann, muss sich Ihr Titel als PlayFab-Entität anmelden.

Konfigurieren von Lobbies

Während der Erstellung werden mehrere wichtige Einstellungen für einen Wartebereich konfiguriert: maxMemberCount, accessPolicy, owner und ownerMigrationPolicy.

  • maxMemberCount definiert, wie viele Spieler die Lobby halten kann
  • accessPolicy definiert, wer die Verbindungszeichenfolge des Wartebereichs entdecken darf
  • owner definiert den Besitzer der Lobby, der über besondere Berechtigungen zum Aktualisieren von Daten im Wartebereich verfügt. Dieser Wert ist implizit die Client- oder Serverentität, die den Wartebereich erstellt.
  • ownerMigrationPolicy definiert Richtlinien dafür, wie der Besitz der Lobby übertragen werden soll, wenn der aktuelle Besitzer die Lobby verlässt oder Probleme hat, eine Verbindung mit der Lobby aufrechtzuerhalten.

Darüber hinaus kann der Ersteller der Lobby während der Erstellung auch benutzerdefinierte Lobbyeigenschaften und Sucheigenschaften definieren, um benutzerdefinierte Daten an die Lobbysitzung anzufügen. Diese benutzerdefinierten Eigenschaften können auch während der Lebensdauer des Wartebereichs vom Besitzer der Lobby geändert werden.

Weitere Informationen finden Sie unter Lobbyeigenschaften.

Beispiel zum Erstellen einer clienteigenen Lobby mit dem Lobby and Matchmaking SDK

In diesem Beispiel wird ein lokaler Spieler, der bei PlayFab angemeldet ist, als title_player_account Entität verwendet.

In diesem Codeausschnitt werden Lobbyeigenschaften als lobbyConfiguration übergeben, und der Spieler, der den Wartebereich erstellt, übergibt seine anfänglichen Membereigenschaften über creatorMemberConfiguration. Der lokale Spieler wird zum Besitzer der Lobby, sodass es sich um eine kundeneigene Lobby handelt. Nachdem die Lobby erfolgreich erstellt wurde, kann das PFLobbyHandle verwendet werden, um andere Spieler mit PFLobbySendInvite einzuladen.

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

Wenn der Aufruf zum Erstellen eines Wartebereichs abgeschlossen ist, wird ein PFLobbyCreateAndJoinLobbyCompletedStateChange von PFMultiplayerStartProcessingLobbyStateChanges bereitgestellt.

Beispiel zum Erstellen einer servereigenen Lobby mit dem Lobby and Matchmaking SDK

Dieses Beispiel ähnelt dem Beispiel eines clienteigenen Lobbys , mit dem Unterschied, dass der Wartebereich als game_server Entität erstellt wird und PFMultiplayerCreateAndClaimServerLobby anstelle von PFMultiplayerCreateAndJoinLobby aufgerufen wird.

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

Wenn der Aufruf zum Erstellen eines Wartebereichs abgeschlossen ist, wird ein PFLobbyCreateAndClaimServerLobbyCompletedStateChange von PFMultiplayerStartProcessingLobbyStateChanges bereitgestellt.

Weitere Informationen zu den Unterschieden zwischen clienteigenen Lobbies und servereigenen Lobbies finden Sie unter Game Servers and Lobbies.For more information on the differences between client-owned lobbies and server-owned lobbies, see Game Servers and Lobbies.

Notiz

Um die Spieleserver-APIs in PlayFab Multiplayer zu aktivieren, müssen Sie PFMULTIPLAYER_INCLUDE_SERVER_APIS definieren, bevor Sie PFLobby.h einschließen. Weitere Informationen finden Sie unter Spieleserver und Lobbies.

Weitere Informationen