查找对局
以下步骤使用 Multiplayer Manager 向玩家的好友发送邀请,以便该好友可以加入正在进行的游戏。 步骤 1、2、3 和 5 在执行邀请的设备上完成。 步骤 4 通常在被邀请者的设备上启动,在通过协议激活启动应用之后。 有关详细信息,请参阅使用 SmartMatch 匹配玩游戏(流程图)。初始化 Multiplayer Manager
当使用有效的会话模板名称初始化 Multiplayer Manager 时,会自动创建大厅会话对象。会话模板在服务配置中定义。在添加用户之前,服务上的大厅会话实例不会被创建。
扁平 C API
通过添加本地用户创建大厅会话
将本地登录的 XBOX 服务用户添加到大厅会话。 当添加第一个用户时,会承载一个新的大厅。 所有其他用户以次要用户身份被添加到现有大厅。 Multiplayer Manager 在系统外壳中通告该大厅,以便好友加入。 只有在你添加了本地用户之后,才能发送邀请、设置大厅属性以及访问大厅成员。 当本地用户加入大厅时,我们建议设置他们的连接地址和任何自定义属性。 你必须对所有本地登录的用户重复此过程。添加单个本地用户
扁平 C API
- XblMultiplayerManagerLobbySessionAddLocalUser
- XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress
- XblMultiplayerManagerLobbySessionSetProperties
添加多个本地用户
扁平 C API
- XblMultiplayerManagerLobbySessionAddLocalUser
- XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress
- XblMultiplayerManagerLobbySessionSetProperties
::UserAdded 事件。
我们建议检查事件的错误代码,以查看该用户是否已成功添加。
如果失败,错误消息会提供失败原因的详细信息。
Multiplayer Manager 执行以下功能,以通过添加本地用户来创建大厅会话。
- 向 XBOX 服务多人游戏服务注册 Real-Time Activity 和多人游戏订阅。
- 创建大厅会话。
- 将所有本地玩家加入为活动状态。
- 上传安全设备地址 (SDA)。
- 设置成员属性。
- 注册会话变更事件。
- 将大厅会话设置为活动会话。
向好友发送邀请(可选)
显示标准 XBOX UI,玩家可以从中选择好友或最近玩过的玩家邀请加入游戏。 当玩家确认选择时,Multiplayer Manager 会向所选玩家发送邀请。 游戏也可以使用 XblMultiplayerManagerLobbySessionInviteUsers 方法向一组由 XBOX 服务用户 ID 定义的玩家发送邀请。 如果你使用自己的游戏内 UI 而不是标准 XBOX UI,则此方法很有用。扁平 C API
- 显示 XBOX 标准游戏可调用 UI (TCUI)
- 直接向所选玩家发送邀请
接受邀请(可选)
当受邀玩家接受游戏邀请或通过外壳 UI 加入好友的游戏时,系统会通过协议激活在其设备上启动游戏。 游戏启动后,Multiplayer Manager 可以使用协议激活的事件参数加入大厅。 如果未通过 XblMultiplayerManagerLobbySessionAddLocalUser 添加受邀用户,则 XblMultiplayerManagerJoinLobby 会失败,并通过JoinLobbyCompleted 事件调用 XblMultiplayerEventArgsXuid 提供邀请所针对的 xuid。
加入大厅后,我们建议设置本地成员的连接地址以及该成员的任何自定义属性。
如果不存在主机,你还可以通过 XblMultiplayerManagerLobbySessionSetSynchronizedHost 设置主机。
最后,如果游戏已在进行中且有空位容纳被邀请者,Multiplayer Manager 会自动将用户加入游戏会话。
游戏会通过 JoinGameCompleted 事件收到通知,并提供相应的错误代码和消息。
错误或成功结果通过 JoinLobbyCompleted 事件处理。
扁平 C API
- 注册 Real-Time Activity 和多人游戏订阅。
- 加入大厅会话。
- 清理现有的大厅状态。
- 将所有本地玩家加入为活动状态。
- 上传 SDA。
- 设置成员属性。
- 注册会话变更事件。
- 将大厅会话设置为活动会话。
- 加入游戏会话(如果存在)。
- 使用传输句柄。
查找对局
在邀请被接受并且主机准备开始游戏后,你可以使用 SmartMatch 执行以下操作之一:- 通过调用 XblMultiplayerManagerFindMatch 查找具有足够开放玩家席位以容纳大厅会话中所有成员的现有游戏。
- 通过调用 XblMultiplayerManagerJoinGameFromLobby 并随后调用 XblMultiplayerManagerAutoFillMembersDuringMatchmaking 来创建一个新的游戏会话,该会话包含大厅会话中的所有成员,并使用寻找同类型游戏的其他玩家填充开放席位。
扁平 C API
- 创建匹配票据。
- 处理所有服务质量 (QoS) 阶段。
- 处理名单变更。
- 重新提交(如果需要)。
- 加入目标游戏会话。
- 通过大厅会话通告游戏。
