> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 建立可搜尋的大廳

> 在 PlayFab Lobby 上定義搜尋索引鍵和可搜尋的字串或數字屬性，讓玩家能夠有效率地篩選和探索公開遊戲工作階段。

本文說明如何建立可搜尋的大廳。

若要讓大廳可供搜尋，其存取原則必須為 **Public** 或 **Friends**。具有 **Private** 存取原則的大廳無法從搜尋查詢加入，必須透過[邀請](/zh-TW/services/playfab/multiplayer/lobby/lobby-invites)加入。通常會在最初建立大廳時設定此存取原則。

正確設定大廳的存取原則後，其他玩家就可以使用[尋找大廳](/zh-TW/services/playfab/multiplayer/lobby/find-lobbies)搜尋它。

此外，大廳擁有者可以定義自訂搜尋屬性，讓其他玩家在搜尋大廳時使用這些屬性來找到更具體的結果。

若要深入了解，請參閱[尋找大廳](/zh-TW/services/playfab/multiplayer/lobby/find-lobbies)和[加入大廳](/zh-TW/services/playfab/multiplayer/lobby/join-lobbies)。

## 使用 Lobby 和 Matchmaking SDK 設定搜尋屬性的範例

在此範例中，所建立的大廳定義了下列自訂搜尋屬性。

* 遊戲模式 = "DeathMatch"
* 競賽風格 = "Ranked"
* 技能等級 = 建立大廳者的技能等級

```cpp theme={null}
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);
}
```

## 另請參閱

* [尋找大廳](/zh-TW/services/playfab/multiplayer/lobby/find-lobbies)
* [大廳屬性](/zh-TW/services/playfab/multiplayer/lobby/lobby-properties)
* [擁有者需求和權限](/zh-TW/services/playfab/multiplayer/lobby/owner-requirements-and-privileges)
* [建立大廳](/zh-TW/services/playfab/multiplayer/lobby/create-a-lobby)


## Related topics

- [建立大廳](/zh-TW/services/playfab/multiplayer/lobby/create-a-lobby.md)
- [尋找大廳](/zh-TW/services/playfab/multiplayer/lobby/find-lobbies.md)
- [加入大廳](/zh-TW/services/playfab/multiplayer/lobby/join-lobbies.md)
- [大廳擁有權變更](/zh-TW/services/playfab/multiplayer/lobby/ownership-changes.md)
- [PlayFab Lobby 自訂屬性](/zh-TW/services/playfab/multiplayer/lobby/lobby-properties.md)
