検索可能なロビーを作成する

この記事では、検索可能なロビーを作成する方法について説明します。

ロビーを検索可能にするには、アクセス ポリシーが パブリック または フレンド である必要があります。 プライベート アクセス ポリシーを持つロビーは検索クエリから参加できないため、招待 を介して参加する必要があります。 最初にロビーを作成するときに、このアクセス ポリシーを構成するのが一般的です。

ロビーのアクセス ポリシーが正しく設定されると、他のプレイヤーは [ロビーの検索] を使用してロビーを検索できます。

さらに、ロビーの所有者は、ロビーを検索するときに他のプレイヤーが使用できるカスタム検索プロパティを定義して、より具体的な結果を見つけることができます。

詳細については、「ロビーを検索する」「ロビーに参加する」を参照してください。

ロビーとマッチメイキング 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);
}

関連項目