다음을 통해 공유


로비 초대

이 문서에서는 로비 초대에 대한 개요와 로비 및 매치메이킹 SDK에서 이를 사용하는 방법을 설명합니다.

참고: 플레이어(즉, title_player_account PlayFab 엔터티)만 초대를 보내거나 받을 수 있습니다. 게임 서버(즉, game_server PlayFab 엔터티)는 할 수 없습니다. 게임 서버가 로비와 상호 작용하는 방식에 대한 자세한 내용은 게임 서버 및 로비를 참조하세요.

초대 유형

게임에서 사용할 수 있는 두 가지 유형의 초대가 있습니다.

  1. 게임 내 초대
  2. 플랫폼 초대

게임 내 초대로 로비에 참여하기

  • 로비의 구성원은 로비 서비스를 통해 다른 플레이어를 해당 로비에 직접 초대할 수 있습니다.
  • 이 초대는 초대된 플레이어와 로비의 연결 문자열을 공유합니다.
  • 초대된 플레이어는 PFLobbyInviteReceivedStateChange를 통해 초대를 받고 첨부된 연결 문자열을 사용하여 로비에 참여할 수 있습니다.
  • 이러한 초대는 플랫폼 간 작동하지만 게임 내에서만 작동합니다.

플랫폼 초대로 로비에 참여하기

  • 로비의 구성원은 플랫폼별 초대 메커니즘을 통해 로비의 연결 문자열을 다른 플레이어와 직접 공유할 수 있습니다.
  • 이러한 초대는 플랫폼 간 작동하지 않지만 받는 사람이 이미 게임을 실행하지 않고도 받을 수 있습니다.
  • 초대된 플레이어가 플랫폼 메커니즘을 통해 연결 문자열을 받으면 첨부된 연결 문자열을 사용하여 로비에 참가할 수 있습니다.

로비 및 매치메이킹 SDK를 사용하여 초대를 보내고 받는 예

초대 수신자에서 PFMultiplayerStartListeningForLobbyInvites를 사용하여 게임 내 초대를 받을 수 있습니다.

초대 수신자는 성공적으로 설정되면 상태를 수신 중으로 변경합니다.

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:
    }
}

PFLobbySendInvite를 사용하여 로비 서비스를 통해 다른 PlayFab 사용자에게 초대를 보냅니다.

수신자는 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
}

참고 항목