不建議使用 FindLobbies 實作背景配對。在該情境中,我們強烈建議使用配對功能。否則,您必須透過篩選、排序及其他技術 (例如在搜尋資料欄位中使用隨機值) 來處理所有玩家都嘗試加入相同大廳的衝突。
了解大廳搜尋屬性與尋找大廳之間的關係
玩家透過定義搜尋屬性讓其大廳可被探索。玩家藉由呼叫 FindLobbies 並使用查詢字串,根據目前作用中大廳上所定義的搜尋屬性篩選和排序搜尋結果,來找到這些可探索的大廳。符合這些查詢的大廳會傳回給呼叫的玩家。 如需定義搜尋屬性的詳細資訊,請參閱建立可搜尋的大廳如何使用 FindLobbies
呼叫 FindLobbies 時,您可以使用 filter 參數將查詢限制為只傳回符合以大廳自訂搜尋屬性為基礎之某組準則的搜尋結果。 此外,您可以使用排序參數,根據搜尋屬性排序從服務傳回的結果。這很有用,因為服務只會傳回有限數量的搜尋結果。排序可確保您看到最相關的搜尋結果。常見情境
以下是遊戲中使用 FindLobbies 功能的幾種常見方式。- 為遊戲中特定遊戲模式的遊戲工作階段尋找大廳
- 尋找朋友正在主持之遊戲工作階段的大廳
- 為有足夠空位容納所有本機玩家的遊戲工作階段尋找大廳
- 尋找您已在其中的大廳,以便在遊戲用戶端或遊戲伺服器意外當機後復原連線。
支援的搜尋索引鍵
定義自訂搜尋屬性時,只允許使用一組受限的索引鍵。- 對於字串屬性,支援下列索引鍵:string_key1、string_key2、[…] string_key30
- 對於數值屬性,支援下列索引鍵:number_key1、number_key2、[…] number_key30
為 FindLobbies 建構查詢字串
FindLobbies API 的查詢字串以類似 OData 的語法建構。篩選字串的大小上限為 600 個字元。 這些 OData 運算子可用來撰寫查詢字串。運算子會區分大小寫。比較字串屬性時,請務必以單引號括住比較的值。例如:“string_key1 eq ‘SOME STRING VALUE’“。數值屬性不需要括住。
這些常數的 SDK 定義記載於這裡。
排序
OData 樣式的字串,包含此查詢以遞增 (“asc”) 或遞減 (“desc”) 順序進行的排序。OrderBy 子句可用於任何搜尋數字索引鍵,或屬於數值的預先定義搜尋索引鍵。若要依最接近某個數字排序,可以使用 distance 名稱,依與指定數字搜尋索引鍵的距離排序。距離排序不能搭配遞增或遞減使用。此欄位只支援一個排序子句或一個距離子句。如果未提供排序,或指定的排序需要決勝條件,預設排序將依建立時間遞減。使用 Lobby 和 Matchmaking SDK 尋找大廳的範例
在此範例中,玩家想要尋找符合下列需求的所有大廳:- 遊戲模式為 “DeathMatch”
- 競賽風格為 “Ranked”
- 玩家的技能等級在大廳的最低和最高技能限制之內。
- 最佳技能等級最接近玩家技能等級的大廳應排在較前面
