다음을 통해 공유


로비 만들기

이 문서에서는 로비를 만드는 방법에 대해 설명합니다.

로비는 어떻게 만들어지나요?

여러 가지 방법으로 로비를 만들 수 있습니다.

  • 플레이어 기준: 플레이할 플레이어 팀을 구성하려는 플레이어가 로비를 만들 수 있습니다. 클라이언트 소유 로비입니다.
  • 게임 서버 기준: 타이틀의 게임 서버는 로비를 생성하고 플레이어가 참여할 때까지 기다릴 수 있습니다. 이들은 서버 소유 로비입니다.
  • 매치 메이킹 기준: 매치 메이킹 후 플레이어 그룹이 형성되면 게임이 시작되기 전에 대기 장소로 로비가 생성됩니다. 클라이언트 소유 로비입니다.

기술적인 관점에서 볼 때 모든 로비는 소유권에 따라 서버 소유와 클라이언트 소유의 두 가지 주요 범주로 나뉩니다. 자세한 내용은 소유자 요구 사항 및 권한을 참조하세요.

PlayFab Lobby의 일반적인 용도는 일시적으로 플레이어 그룹을 함께 유지하는 것입니다. 일반적으로 사용되는 Lobby 애플리케이션은 Azure PlayFab Lobby 개요를 참조하세요.

지원되는 엔터티 형식

로비를 만들려면 타이틀이 PlayFab 엔터티로 로그인해야 합니다.

  • 플레이어를 대신하여 클라이언트 소유 로비를 생성할 때 title_player_account 엔터티로 로그인하세요. 자세한 내용은 로그인 기본 사항 및 모범 사례를 참조하세요.
  • 게임 서버를 대신하여 서버 소유 로비를 생성할 때 game_server 엔터티로 로그인합니다. 자세한 내용은 AuthenticateGameServerWithCustomId를 참조하세요.

로비 구성 방법

로비를 만드는 동안 maxMemberCount, accessPolicy, ownerownerMigrationPolicy와 같은 몇 가지 중요한 설정이 구성됩니다.

  • maxMemberCount는 로비에 수용할 수 있는 플레이어 수를 정의합니다.
  • accessPolicy는 로비의 연결 문자열을 검색할 수 있는 사람을 정의합니다.
  • owner는 로비에서 데이터를 업데이트할 수 있는 특별한 권한이 있는 로비 소유자를 정의합니다. 이 값은 암시적으로 로비를 생성하는 클라이언트 또는 서버 엔터티입니다.
  • ownerMigrationPolicy는 현재 소유자가 로비를 떠나거나 로비 연결을 유지하는 데 문제가 있는 경우 로비 소유권을 이전하는 방법에 대한 정책을 정의합니다.

또한 생성 중에 로비 생성자는 사용자 지정 로비 속성 및 검색 속성을 정의하여 로비 세션에 사용자 정의 데이터를 추가할 수도 있습니다. 이러한 사용자 지정 속성은 로비 소유자가 로비 수명 동안 수정할 수도 있습니다.

자세한 내용은 로비 속성을 참조하세요.

로비 및 매치 메이킹 SDK를 사용하여 클라이언트 소유 로비를 만드는 예

이 예에서는 PlayFab에 title_player_account 엔터티로 로그인한 로컬 플레이어를 사용합니다.

이 코드 조각에서 로비 속성은 lobbyConfiguration으로 전달되고 로비를 생성하는 플레이어는 creatorMemberConfiguration을 통해 초기 구성원 속성을 전달합니다. 로컬 플레이어가 로비 소유자가 되므로 클라이언트 소유 로비입니다. 로비가 성공적으로 생성되면 PFLobbyHandle을 사용하여 PFLobbySendInvite로 다른 플레이어를 초대할 수 있습니다.

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

로비 생성 호출이 완료되면 PFMultiplayerStartProcessingLobbyStateChanges에서 PFLobbyCreateAndJoinLobbyCompletedStateChange를 제공합니다.

로비 및 매치 메이킹 SDK를 사용하여 서버 소유 로비를 만드는 예

이 예는 로비를 game_server 엔티티로 생성하고 PFMultiplayerCreateAndJoinLobby 대신 PFMultiplayerCreateAndClaimServerLobby를 호출한다는 점을 제외하면 클라이언트 소유 로비 예와 유사합니다. .

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

로비 생성 호출이 완료되면 PFMultiplayerStartProcessingLobbyStateChanges에서 PFLobbyCreateAndClaimServerLobbyCompletedStateChange를 제공합니다.

클라이언트 소유 로비와 서버 소유 로비의 차이점에 대한 자세한 내용은 게임 서버 및 로비를 참조하세요.

참고 항목

PlayFab Multiplayer에서 게임 서버 API를 활성화하려면 PFLobby.h를 포함하기 전에 PFMULTIPLAYER_INCLUDE_SERVER_APIS를 정의해야 합니다. 자세한 내용은 게임 서버 및 로비를 참조하세요.

참고 항목