创建可搜索的大厅
本文介绍了如何创建可搜索的大厅。
要使大厅可搜索,其访问策略必须是“公共”或“好友”。 具有“私人”访问策略的大厅将无法从搜索查询中加入,必须通过邀请加入。 在最初创建大厅时,通常会配置此访问策略。
大厅的访问策略设置正确,其他玩家就可以使用“查找大厅”进行搜索。
此外,大厅的所有者可以定义自定义搜索属性,其他玩家在搜索大厅时可以使用这些属性来查找更具体的结果。
使用大厅和匹配 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);
}