検索可能なロビーを作成する
この記事では、検索可能なロビーを作成する方法について説明します。
ロビーを検索可能にするには、アクセス ポリシーが パブリック または フレンド である必要があります。 プライベート アクセス ポリシーを持つロビーは検索クエリから参加できないため、招待 を介して参加する必要があります。 最初にロビーを作成するときに、このアクセス ポリシーを構成するのが一般的です。
ロビーのアクセス ポリシーが正しく設定されると、他のプレイヤーは [ロビーの検索] を使用してロビーを検索できます。
さらに、ロビーの所有者は、ロビーを検索するときに他のプレイヤーが使用できるカスタム検索プロパティを定義して、より具体的な結果を見つけることができます。
詳細については、「ロビーを検索する」と「ロビーに参加する」を参照してください。
ロビーとマッチメイキング 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);
}