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.
- Wenn Sie kundeneigene Lobbies im Namen Ihrer Spieler erstellen, melden Sie sich als title_player_account Entität an. Weitere Informationen finden Sie unter Grundlagen und bewährte Methoden für die Anmeldung.
- Wenn Sie servereigene Lobbies im Namen Ihrer Spielserver erstellen, melden Sie sich als game_server-Entität an. Weitere Informationen finden Sie unter AuthenticateGameServerWithCustomId.
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.