Freigeben über


Lobby-Einladungen

Dieser Artikel bietet eine Übersicht über Lobby-Einladungen und deren Verwendung im Lobby and Matchmaking SDK.

HINWEIS: Nur Spieler (d. h. title_player_account PlayFab-Entitäten) können Einladungen senden oder empfangen. Spielserver (d. h. game_server PlayFab-Entitäten) können nicht verwendet werden. Weitere Informationen zur Interaktion von Spielservern mit Lobbies finden Sie unter Spieleserver und Lobbies.

Einladungstypen

Es gibt zwei Arten von Einladungen, die Ihr Spiel wahrscheinlich nutzen wird.

  1. In-Game-Einladungen
  2. Plattform-Einladungen

Beitreten zu einer Lobby durch In-Game-Einladungen

  • Ein Mitglied einer Lobby kann einen anderen Spieler direkt über den Lobby-Service in diesen Wartebereich einladen.
  • Diese Einladung teilt die Verbindungszeichenfolge der Lobby mit dem eingeladenen Spieler.
  • Der eingeladene Spieler empfängt die Einladung über PFLobbyInviteReceivedStateChange und kann die angefügte Verbindungszeichenfolge verwenden, um dem Wartebereich beizutreten.
  • Diese Einladungen funktionieren plattformübergreifend, aber nur im Spiel.

Beitreten zu einer Lobby nach Plattform-Einladungen

  • Mitglieder der Lobby können die Verbindungszeichenfolge der Lobby über plattformspezifische Einladungsmechanismen direkt mit anderen Spielern teilen.
  • Diese Einladungen funktionieren nicht plattformübergreifend, können aber empfangen werden, ohne dass der Empfänger das Spiel bereits ausführt.
  • Sobald der eingeladene Spieler die Verbindungszeichenfolge über den Plattformmechanismus erhält, kann er die angefügte Verbindungszeichenfolge verwenden, um dem Wartebereich beizutreten.

Beispiel für das Senden und Empfangen von Einladungen mit dem Lobby and Matchmaking SDK

Verwenden Sie PFMultiplayerStartListeningForLobbyInvites für den Einladungsempfänger, um den Empfang von Einladungen im Spiel zu ermöglichen.

Der Einladungslistener ändert seinen status als Lauschen, nachdem er erfolgreich eingerichtet wurde.

HRESULT AllowInvitations(
    const PFEntityKey* entity)
{
    return PFMultiplayerStartListeningForLobbyInvites(g_pfmHandle, entity);
}

void HandleInvitationListenerStatusChange(
    const PFLobbyInvitationListenerStatusChangedStateChange& invitationListenerStateChange)
{
    PFLobbyInvitationListenerStatus status;
    HRESULT hr = PFMultiplayerGetLobbyInvitationListenerStatus(
        g_pfmHandle,
        &invitationListenerStateChange.listeningEntity,
        &status);
    assert(SUCCEEDED(hr));

    switch (status)
    {
        case PFLobbyInvitationListenerStatus::Listening:
        {
            Log("%s is listening for invitations", invitationListenerStateChange.listeningEntity.id);
            break;
        }
        case PFLobbyInvitationListenerStatus::NotAuthorized:
        {
            Log("Invitation listener not authorized!"); // this is likely an issue with the listener's entity token.
            break;
        }
        default:
    }
}

Verwenden Sie PFLobbySendInvite , um über den Wartebereich eine Einladung an einen anderen PlayFab-Benutzer zu senden.

Der Empfänger erhält eine PFLobbyInviteReceivedStateChange.

HRESULT SendInvite(PFLobbyHandle lobby, const PFEntityKey* sender, const PFEntityKey* receiver)
{
    return PFLobbySendInvite(lobby, sender, receiver, nullptr);
}

void HandleInvitationNotification(const PFLobbyInviteReceivedStateChange& invite)
{
    Log("%s invited to lobby by %s", invite.listeningEntity.id, invite.invitingEntity.id);
    // pass invite.connectionString to PFMultiplayerJoinLobby
}

Weitere Informationen