검색 가능한 로비 만들기
이 문서에서는 검색 가능한 로비를 만드는 방법을 설명합니다.
로비를 검색할 수 있게 하려면 해당 액세스 정책이 공개 또는 친구여야 합니다. 비공개 액세스 정책이 있는 로비는 검색 쿼리를 통해 참가할 수 없으며, 초대를 통해 참가해야 합니다. 일반적으로, 로비를 처음 만들 때 이 액세스 정책을 구성합니다.
로비의 액세스 정책이 올바르게 설정되면, 다른 플레이어가 로비 찾기를 사용하여 검색할 수 있습니다.
또한 로비의 소유자는 다른 플레이어가 로비를 검색하여 더 구체적인 결과를 찾을 때 사용 가능한 사용자 지정 검색 속성을 정의할 수 있습니다.
로비 찾기 및 로비 참가에서 자세한 내용을 참고하세요.
로비 및 매치 메이킹 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);
}