活动
设置活动
每当游戏开始或加入多人游戏体验时,都应创建一个活动。这样做可以让 shell 以及您游戏中的其他玩家看到该玩家的活动,并允许其他玩家可能加入正在进行的游戏。如果玩家想要加入您游戏的活动而它没有运行,将启动它并将连接字符串传递给它。 当玩家加入或离开时,游戏应更新活动。这为其他玩家提供了活动的更丰富视图,并告知他们活动是否已满。 有关活动字段的信息,请参阅活动内容。 设置活动的代码示例如下。它同样适用于创建活动以及更新现有活动。- XAsyncBlock
- XAsyncGetStatus
- XblMultiplayerActivityInfo
- XblMultiplayerActivityJoinRestriction
- XblMultiplayerActivitySetActivityAsync
获取活动
游戏可能希望了解其他玩家的活动。例如,游戏可能希望显示游戏中好友及其活动的游戏内 UI。 检索活动的代码示例如下。- XAsyncBlock
- XblMultiplayerActivityGetActivityResultSize
- XblMultiplayerActivityInfo
- XblMultiplayerActivityGetActivityResult
- XblMultiplayerActivityGetActivityAsync
删除活动
当玩家结束或离开多人游戏活动时,游戏应使用以下代码删除该活动。邀请
无 UI 发送邀请
玩家可能希望直接向一位或多位其他玩家发送邀请。发送邀请之前,游戏应确保已设置活动。这确保了 shell 与您游戏之间的连续性,因为 shell 根据当前活动发送邀请。 若要在无 UI 的情况下发送邀请,在使用 XblMultiplayerActivitySetActivityAsync 设置活动后(参见上面的示例),游戏应调用 XblMultiplayerActivitySendInvitesAsync API,传入要邀请的玩家数组以及在当前活动中使用的相同连接字符串。 有关邀请内容的信息,请参阅发送请求以邀请其他玩家加入多人游戏体验。。 无 UI 发送邀请的代码示例如下。使用 UI 发送邀请
玩家可能希望直接向一位或多位其他玩家发送邀请。发送邀请之前,游戏应确保已设置活动。这确保了 shell 与您游戏之间的连续性,因为 shell 根据当前活动发送邀请。 若要使用 UI 发送邀请,在使用 XblMultiplayerActivitySetActivityAsync 设置活动后(参见上面的示例),游戏应调用 XGameUiShowMultiplayerActivityGameInviteAsync API,传入请求用户。它将使用游戏的当前活动,并使用其连接字符串和设置邀请玩家。 有关邀请内容的信息,请参阅发送请求以邀请其他玩家加入多人游戏体验。。 使用 UI 发送邀请的代码示例如下。- XAsyncBlock
- XAsyncGetStatus
- XGameUiShowMultiplayerActivityGameInviteAsync
- XGameUiShowMultiplayerActivityGameInviteResult
接收邀请
若要在玩家接受邀请时得到通知,游戏可以使用XGameInviteRegisterForEvent 注册邀请通知。每次接受邀请时,都会通过已注册的回调将格式化的 URI 传递给游戏。可以解析该 URI 以确定邀请发送者、接收者和连接字符串。连接字符串是游戏特定的,在创建多人游戏活动时设置。对于使用 Multiplayer Activity 服务的游戏,URI 的完整格式如下表所示。
当不再需要邀请通知时,可以使用
XGameInviteUnregisterForEvent 取消注册回调。注册和处理已接受邀请的代码示例如下。
最近玩家
若要更新玩家的最近玩家列表,游戏应提交与当前玩家有过有意义互动的其他玩家的列表。此列表是单向的,这意味着每个玩家的客户端负责更新自己的列表,玩家的列表不会影响其他人的列表。 例如,假设一组玩家一起在游戏前大厅中并已匹配。当比赛开始时,每位玩家都会用大厅中所有其他xuids 更新其列表。如果有新玩家加入,可以将其单独写入。
您可以决定什么构成有意义的互动。对于一款游戏,它可能是在大厅中的存在。对于另一款游戏,它可能是一位玩家射击另一位玩家。对于第三款游戏,它可能仅仅是屏幕上出现了另一位玩家。
XblMultiplayerActivityFlushRecentPlayersAsync。否则,最近玩家列表每五秒自动刷新一次。
更新最近玩家列表和刷新更新的代码示例如下。
