다음을 통해 공유


검색 가능한 로비 만들기

이 문서에서는 검색 가능한 로비를 만드는 방법을 설명합니다.

로비를 검색할 수 있게 하려면 해당 액세스 정책이 공개 또는 친구여야 합니다. 비공개 액세스 정책이 있는 로비는 검색 쿼리를 통해 참가할 수 없으며, 초대를 통해 참가해야 합니다. 일반적으로, 로비를 처음 만들 때 이 액세스 정책을 구성합니다.

로비의 액세스 정책이 올바르게 설정되면, 다른 플레이어가 로비 찾기를 사용하여 검색할 수 있습니다.

또한 로비의 소유자는 다른 플레이어가 로비를 검색하여 더 구체적인 결과를 찾을 때 사용 가능한 사용자 지정 검색 속성을 정의할 수 있습니다.

로비 찾기로비 참가에서 자세한 내용을 참고하세요.

로비 및 매치 메이킹 SDK를 사용하여 검색 속성을 설정하는 예제

이 예제에서 만든 로비에는 다음과 같은 사용자 지정 검색 속성이 정의되어 있습니다.

  • 게임 모드 = "DeathMatch"
  • 경쟁 스타일 = "Ranked"
  • 기술 수준 = 로비를 만든 사람의 기술 수준
static PFMultiplayerHandle g_pfmHandle; // initialized elsewhere

#define PFLOBBY_SEARCH_KEY_GAME_MODE "string_key1"
#define PFLOBBY_SEARCH_KEY_COMPETITION_STYLE "string_key2"
#define PFLOBBY_SEARCH_KEY_SKILL "number_key1"

#define GAME_MODE_DEATH_MATCH "DeathMatch"
#define COMPETITION_STYLE_RANKED "Ranked"

PFEntityKey m_localUser;
namespace MyGame {
    uint32_t GetPlayerSkill(); // defined elsewhere
}

void CreateLobbyWithSearchProperties()
{
    // Initialize the lobby configuration with search properties
    std::string playerSkill = std::to_string(MyGame::GetPlayerSkill());

    const char* searchPropertyKeys[] = {
        PFLOBBY_SEARCH_KEY_GAME_MODE,
        PFLOBBY_SEARCH_KEY_COMPETITION_STYLE,
        PFLOBBY_SEARCH_KEY_SKILL,
    };

    const char* searchPropertyValues[_countof(searchPropertyKeys)] = {
        GAME_MODE_DEATH_MATCH,
        COMPETITION_STYLE_RANKED,
        playerSkill.c_str(),
    };

    PFLobbyCreateConfiguration lobbyConfiguration{};
    lobbyConfiguration.maxMemberCount = 16;
    lobbyConfiguration.searchPropertyCount = _countof(searchPropertyKeys);
    lobbyConfiguration.searchPropertyKeys = searchPropertyKeys;
    lobbyConfiguration.searchPropertyValues = searchPropertyValues;

    // Initialize an empty join configuration. This can be optionally initialized with the creator's member properties 
    PFLobbyJoinConfiguration creatorMemberConfiguration{};
    creatorMemberConfiguration.memberPropertyCount = 0;

    // Create and join the lobby
    PFLobbyHandle lobby;
    HRESULT hr = PFMultiplayerCreateAndJoinLobby(
        g_pfmHandle,
        &m_localUser,
        &lobbyConfiguration,
        &creatorMemberConfiguration,
        nullptr,
        &lobby);
}

참고 항목