不建议使用 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 子句可用于任何搜索数字键或数字类型的预定义搜索键。若要按最接近某个数字的方式排序,可以使用距离标记以按给定数字搜索键的距离排序。你不能对距离排序使用升序或降序。此字段仅支持一个排序子句或一个距离子句。如果未提供排序或给定排序需要判定并列,则默认排序为按创建时间降序。使用 Lobby 和 Matchmaking SDK 查找大厅的示例
在此示例中,玩家想要查找满足以下要求的所有大厅:- 游戏模式为 “DeathMatch”
- 竞技风格为 “Ranked”
- 玩家的技能等级位于大厅的最低和最高技能限制内。
- 最优技能等级最接近玩家技能等级的大厅应排在前面
