多人游戏管理器 API 概述

本主题介绍多人游戏管理器 API 中最重要的方法。

有关详细的 API 信息,请参阅 参考文档

有关如何在应用程序中使用这些 API 的示例,请参阅 NetRumble 示例(NDA 主题)要求授权

命名空间

多人游戏管理器包含以下命名空间。

语言 命名空间
C XblMultiplayerManager* 前缀
C++ xbox::services::multiplayer::manager

应了解以下主要类。

多人游戏管理器类

多人游戏管理器是一个单一实例类,其中包含单个大厅会话对象和一个游戏会话对象。

至少必须对此类调用 XblMultiplayerManagerInitializeXblMultiplayerManagerDoWork 方法,多人游戏管理器才能正常工作。

下表描述了一些(但不是全部)更常用的方法和属性。 有关完整的描述性成员列表,请参阅 参考文档

C C++ 描述
方法
XblMultiplayerManagerInitialize initialize() 初始化多人游戏管理器。 使用多人游戏管理器之前必须先调用此方法。
XblMultiplayerManagerDoWork do_work() 更新应用可见会话状态。 每个帧至少应调用一次此方法。 您的游戏应处理方法返回的多人游戏事件。
XblMultiplayerManagerJoinLobby join_lobby() 提供一种通过 handleId 加入好友大厅会话的方法,该可唯一标识用户要加入的大厅,或者当用户接受导致游戏激活协议的邀请时。
XblMultiplayerManagerJoinGameFromLobby join_game_from_lobby() 加入大厅的游戏会话(如果存在)以及是否有空间。 如果会话不存在,它会使用当前大厅成员创建新游戏会话。 这不会将现有的大厅会话属性迁移到游戏会话。 加入后,可以通过 *SetSynchronizedProperties API 设置属性或主机。 游戏需要在所有想要加入游戏会话的客户端上调用此 API。
XblMultiplayerManagerJoinGame join_game() 给定全局唯一会话名称(通常通过第三方匹配服务找到)加入现有游戏会话。 你可以传入要加入游戏的 Xbox 用户 ID 列表。
XblMultiplayerManagerFindMatch find_match() 使用 Xbox 服务匹配查找和加入游戏。
XblMultiplayerManagerLeaveGame leave_game() 离开游戏,并将此成员和所有本地成员返回到大厅。
属性
LobbySession lobby_session() 表示大厅会话的对象的句柄。
GameSession game_session() 表示游戏会话的对象句柄。

多人游戏事件类

语言
C XblMultiplayerEvent
C++ multiplayer_event

调用 XblMultiplayerManagerDoWork时,多人游戏管理器将返回一个事件列表,这些事件表示自上次调用 XblMultiplayerManagerDoWork以来对会话所做的更改。 这些事件包括成员已加入会话、成员已离开会话、成员属性已更改或主机客户端已更改等更改。

有关所有可能的事件类型的列表,请参阅 XblMultiplayerEventType 枚举。

每个返回 的 XblMultiplayerEvent 都包含一个 EventArgsHandle。 必须使用它来获取事件类型的适当。 args 例如,如果 XblMultiplayerEventTypeMemberJoined,则可以调用 XblMultiplayerEventArgsMembersCountXblMultiplayerEventArgsMembers

调用 XblMultiplayerManagerDoWork 后,游戏将根据需要处理每个事件。

多人游戏成员类

语言
C XblMultiplayerManagerMember
C++ multiplayer_member

此类表示大厅或游戏会话中的玩家。 它包含有关成员的属性,例如玩家的 Xbox 用户 ID、玩家的网络连接地址以及每个玩家的自定义属性。

多人游戏大厅会话类

语言
C XblMultiplayerManagerLobbySession* 前缀
C++ multiplayer_lobby_session

此类创建一个持久会话,用于管理此设备本地用户和想要一起玩游戏的受邀好友。 大厅会话必须包含至少一个成员,多人游戏管理器才能执行任何多人游戏操作。 最初可以通过调用 XblMultiplayerManagerLobbySessionAddLocalUser 方法来创建新的大厅会话。

下表介绍了此类的一些(但不是全部)更常用的方法和属性。 有关类成员的完整描述性列表,请参阅 参考文档

C C++ 描述
方法
XblMultiplayerManagerLobbySessionAddLocalUser add_local_user() 将本地用户(已在本地设备上登录的玩家)添加到大厅会话。 如果这是添加到大厅会话的第一个成员,此方法将创建新的大厅会话。
XblMultiplayerManagerLobbySessionRemoveLocalUser remove_local_user() 从大厅和游戏会话中删除指定成员。
XblMultiplayerManagerLobbySessionInviteFriends invite_friends() 打开标准Xbox UI,该 UI 允许玩家从好友列表中选择好友,然后邀请这些玩家加入游戏。
XblMultiplayerManagerLobbySessionInviteUsers invite_users() 邀请指定的 Xbox 玩家加入游戏。
XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress set_local_member_connection_address() 设置本地成员的网络地址。 游戏可以使用此网络地址建立成员之间的网络通信。
XblMultiplayerManagerLobbySessionSetLocalMemberProperties set_local_member_properties() 设置本地成员的自定义属性。 此属性存储在 JSON 字符串中。
XblMultiplayerManagerLobbySessionDeleteLocalMemberProperties delete_local_member_properties() 删除本地成员的自定义属性。
XblMultiplayerManagerLobbySessionSetProperties / XblMultiplayerManagerLobbySessionSetSynchronizedProperties set_properties() / set_synchronized_properties() 设置大厅会话的自定义属性。 此属性存储在 JSON 字符串中。 如果属性在设备之间共享,并且可由多个设备同时更新,请使用该方法的同步版本。
XblMultiplayerManagerGameSessionIsHost is_host() 指示当前设备是否充当大厅主机。
XblMultiplayerManagerGameSessionSetSynchronizedHost set_synchronized_host() 设置大厅的主机。
属性
XblMultiplayerManagerLobbySessionLocalMembers local_members() 本地设备上已登录的成员集合。
XblMultiplayerManagerLobbySessionMembers members() 大厅会话中的成员集合。
XblMultiplayerManagerLobbySessionSetProperties properties() 表示大厅会话的属性集合的 JSON 对象。
XblMultiplayerManagerLobbySessionHost host() 大厅的主持人。

多人游戏会话类

语言
C XblMultiplayerManagerGameSession* 前缀
C++ multiplayer_game_session

游戏会话表示正在参加实际游戏实例的 Xbox 服务成员组。 这可能包括通过匹配服务进行匹配的玩家。

若要启动包含大厅会话成员的新游戏会话,请调用XblMultiplayerManagerJoinGameFromLobby。 如果要使用 Xbox 服务匹配,请调用 XblMultiplayerManagerFindMatch。 如果使用的是第三方匹配服务,可调用 XblMultiplayerManagerJoinGame

下表介绍了多人游戏管理器的一些(但不是全部)更常用的方法和属性。 有关类成员的完整描述性列表,请参阅此类的 API 参考。

C C++ 描述
方法
XblMultiplayerManagerGameSessionSetProperties / XblMultiplayerManagerGameSessionSetSynchronizedProperties set_properties() / set_synchronized_properties() 设置游戏会话的自定义属性。 此属性存储在 JSON 字符串中。 如果属性在设备之间共享,并且可由多个设备同时更新,请使用该方法的同步版本。
XblMultiplayerManagerGameSessionIsHost is_host() 指示当前设备是否充当游戏主机。
XblMultiplayerManagerGameSessionSetSynchronizedHost set_synchronized_host() 设置游戏的主机。
属性
XblMultiplayerManagerGameSessionMembers members() 游戏会话中的成员集合。
XblMultiplayerManagerGameSessionPropertiesJson properties() 表示游戏会话的属性集合的 JSON 对象。
XblMultiplayerManagerGameSessionHost host() 游戏的主持人。