本主题介绍如何将 MPA 与 PlayFab 大厅和 Match 服务集成。 这包括适用于其他类似大厅和匹配服务的最佳做法和一般指南。
设计概述
若要将 MPA 与 PlayFab 大厅和 Match 或类似服务集成,游戏或游戏服务必须从大厅状态查询相关信息,然后将此信息迁移到 MPA 服务。 MPA 服务不适用于大厅或会话状态信息。
活动
对于 MPA 活动,源信息应该是基础大厅信息。 游戏或服务需要使用以下最佳做法在 MPA 活动内容字段中设置相关信息:
更新频率
从大厅数据执行状态迁移时,应以合理的反映更改(如对信息的更新CurrentPlayers
)执行。 更新调用不应超过 细化速率限制中所述的调用限制。 也不应删除/重新创建 MPA 活动来更新信息。Xbox 用户标识 (XUID)
玩家的 XUID 通常是 Xbox 服务以外的服务中未经验证的信息,而不是跨网络服务的主要标识符。 PlayFab 大厅为玩家使用跨网络 PlayFab 用户实体 ID,该 ID 可通过 API 或服务调用转换为活动用户的 XUID。 有关详细信息,请参阅 PlayFab 教程:获取玩家个人资料。 仅此已解析的 XUID 才应被视为安全。无法以这种方式检索其他玩家的 XUID。 作为解决方案,可以在大厅中将 XUID 作为播放器的自定义字符串属性提供。 这些字符串不应被视为安全,并且始终通过 PlayFab 服务验证,方法是使用
PFAccountManagementClientGetPlayFabIDsFromXboxLiveIDsGetResult
来比较 XUID 的预期和实际的 PlayFab 用户实体 ID。 不匹配表示 XUID 不正确。对于所有服务,作为不安全字符串提供的 XUID 是不安全的,并且可能会导致未经验证的模拟攻击。
连接字符串
若要与 PlayFab 大厅服务集成,MPA 活动的连接字符串应设置为可通过 检索PFLobbyGetConnectionString
的大厅连接字符串。 其他服务应使用等效的联接字符串。反映大厅可加入性
活动旨在允许玩家加入游戏体验,并且需要与基础大厅状态的可加入性相匹配。 当活动已满 (达到值)CurrentPlayers
时,MaxPlayers
活动将自动变为不可加入状态。 想要暂时使活动不可加入的游戏也可以使用此行为。 应仅删除活动,不能将来加入。 请注意,更改活动的隐私设置只会受到限制,但不能阻止所有联接。由于活动加入的延迟,游戏应始终考虑针对完整会话或不可加入会话执行联接的流,并向玩家提供相应的错误。
反射隐私更改
通过加入限制的活动隐私的状态和更改应镜像为基础 PlayFab 大厅定义的访问策略。 这同样适用于类似的服务,并且可能需要映射隐私值。
邀请
对于 MPA 邀请,建议的源也应是基础大厅信息。 此最佳做法方法比邀请加入 PlayFab Party 等网络网格更可靠,并且可以通过大厅数据立即提供状态信息。
若要与 PlayFab 大厅服务集成,应将 MPA 邀请连接字符串设置为大厅连接字符串。 可以通过 检索 PFLobbyGetConnectionString
此字符串。 此外,应为邀请设置适当的跨平台联接值。
最近互动玩家
MPA 最近使用的玩家功能与基础大厅没有紧密联系,可以由游戏逻辑驱动。 最近的玩家调用不应超过 细粒度速率限制中所述的调用限制。 最佳做法是,应根据调用限制在合理的时间范围内对最近的玩家活动进行批处理。 游戏的最近玩家报告不应是即时的,最好是批量提交。
匹配
PlayFab Match 或更简化的匹配服务的集成不需要任何直接 MPA 功能。 如果无法加入,游戏可能需要在匹配期间更新 MPA 活动的可加入性。 作为最佳做法,PlayFab Match 应与 PlayFab 大厅结合使用。
与大厅用户标识一样,PlayFab Match 为玩家使用跨网络 PlayFab 用户实体 ID,该 ID 可通过 API 或服务调用转换为活动用户的 XUID。 无法以这种方式检索其他玩家的 XUID。 作为类似于大厅的解决方案,可以将 XUID 作为大厅中播放器的自定义字符串属性提供。 这些字符串不应被视为安全,并且始终通过 PlayFab 服务进行验证,将 XUID 的预期和实际 PlayFab 用户实体 ID 进行比较,如上面针对 PlayFab 大厅概述的那样。 不匹配表示 XUID 不正确。
对于匹配,作为不安全字符串提供的 XUID 是不安全的,并且可能会导致未经验证的模拟攻击。
常规最佳做法
MPA 服务设计为大厅或匹配服务(例如 PlayFab 大厅和 Match)上的 Xbox 功能的轻型集成点。 此集成可以是轻量级的,并且只能在特定的连接点执行,以反映活动、邀请和最近玩家功能中所需的信息和相关更新。
此外,MPA 服务的集成还应考虑服务到服务终结点。 根据游戏、多人游戏和服务器体系结构,直接服务到服务调用可能比客户端调用更加简单和可靠。 这通常适用于 MMO 游戏。
与作为 PlayFab 大厅和 Match 的一部分存储在自定义字符串中的 XUID 信息一样,任何其他自定义标识信息都应始终被视为不安全,并在使用前进行验证。 缺乏验证可能会导致模拟攻击,尤其是在游戏包含具有更多用户访问和保护的平台时。