设计概述
若要将 MPA 与 PlayFab Lobby 和 Match 或类似服务集成,游戏或游戏服务必须从大厅状态查询相关信息,然后将此信息迁移到 MPA 服务中。MPA 服务不适用于大厅或会话状态信息。活动
对于 MPA 活动,源信息应该是底层的大厅信息。游戏或服务需要按照以下最佳实践在 MPA 活动内容字段中设置相关信息:-
更新频率
从大厅数据迁移状态应以合理的频率进行,以反映变化(例如
CurrentPlayers信息的更新)。更新调用不应超过细粒度速率限制中所述的调用限制。也不应通过删除/重新创建 MPA 活动来更新信息。 -
XBOX 用户身份 (XUID)
玩家的 XUID 在 XBOX 服务之外的服务中通常是未经验证的信息,也不是跨网络服务的主要标识符。PlayFab Lobby 使用跨网络的 PlayFab 用户实体 ID 来标识玩家,可以通过 API 或服务调用将其转换为活动用户的 XUID。有关更多详细信息,请参阅 PlayFab 教程:获取玩家配置文件。只有此已解析的 XUID 才应被视为安全。
其他玩家的 XUID 无法通过这种方式检索。作为解决方案,可以将 XUID 作为大厅中玩家的自定义字符串属性提供。这些字符串不应被视为安全,并且应始终通过 PlayFab 服务使用
PFAccountManagementClientGetPlayFabIDsFromXboxLiveIDsGetResult来验证,以比较 XUID 对应的预期和实际 PlayFab 用户实体 ID。不匹配则表示 XUID 不正确。 对于所有服务,作为不安全字符串提供的 XUID 都不安全,如果不加以验证,可能会导致假冒攻击。 -
连接字符串
若要与 PlayFab Lobby 服务集成,MPA 活动的连接字符串应设置为可通过
PFLobbyGetConnectionString检索的 Lobby 连接字符串。其他服务应使用等效的加入字符串。 -
反映大厅可加入性
活动旨在允许玩家加入游戏体验,需要与底层大厅状态的可加入性相匹配。当活动已满时(
CurrentPlayers达到MaxPlayers值),活动会自动变为不可加入。希望使活动暂时不可加入的游戏也可以使用此行为。只有在将来不可能有加入时,才应删除活动。请注意,改变活动的隐私设置只会限制,但不能阻止所有加入。 由于活动加入的延迟,游戏应始终考虑对已满或不可加入会话执行加入的流程,并向玩家提供适当的错误。 - 反映隐私更改 通过加入限制反映的活动隐私状态和变化应与为底层 PlayFab Lobby 定义的访问策略保持一致。这同样适用于类似的服务,可能需要映射隐私值。
邀请
对于 MPA 邀请,推荐的源信息也应该是底层的大厅信息。这种最佳实践方法比像 PlayFab Party 这样的网状网络邀请更可靠,并且可以通过大厅数据立即提供状态信息。 若要与 PlayFab Lobby 服务集成,MPA 邀请的连接字符串应设置为 Lobby 连接字符串。此字符串可通过PFLobbyGetConnectionString 检索。此外,应为邀请设置适当的跨平台加入值。
