多人互动

最近更新时间:2023-04-10 16:00:44

我的收藏

客户场景与实践

适用于多人互动、直播等云游戏相关业务场景,客户使用场景可参考下列内容。

场景1:多人互动直播

业务背景:某直播厂商,需实现主播直播时与粉丝游戏互动。
实现逻辑
主播开播时,通过连接云游戏创建房间,粉丝可以向主播发起加入房间申请或者通过主播提供的邀请连接,进入房间与主播进行多人游戏。
其他粉丝可以通过直播观看主播与粉丝的游戏互动直播画面。

场景2:多人擂台游戏

业务背景:某云游戏厂商,需实现多人擂台云游戏。
实现逻辑
管理员创建云游戏房间。
其他玩家可以排队依次进入进行擂台 PK 游戏,胜利者继续游戏,失败者切换角色或退出。

概念说明

多人互动云游戏可以抽象理解为一个云游戏房间+直播流(可选)的形式。房间由云游戏玩家(房主)创建后,其他玩家(游客)可通过房主的 UserId 加入同一房间,同一房间内的所有玩家通过云游戏连接看到同一个云端画面。




业务用户说明

房主:创建房间的玩家
管理他人是否拥有控制权(点击、键鼠、手柄等操作,针对游戏配置)。
管理房间内所有人的麦克风状态。
游客:加入其他人房间的玩家
需要向房主申请控制权。
开关自己的麦克风。
观众:观看直播流,未连接云游戏实例
无其他权限,仅能观看画面。

云游戏角色说明

Player:拥有游戏控制权
人数最多为 7 人。
Viewer:仅支持观看
人数没有限制。
说明:
房主可以切换角色为 Player 进行游戏控制,也可以切换为 Viewer 仅观看。
游客可以是 Player,也可以是 Viewer,房主可以控制游客的角色。

流程说明

房主创建房间

1. 房主客户端向业务后台发起启动云游戏请求,业务后台通过调用 TrylockWorker() 申请锁定云游戏实例。
2. 业务后台通过调用 CreateSession() 创建会话,其中请求参数 HostUserId 需要与 UserId 相同,Role 可选择 Player 或者 Viewer。
注意:
房主创建房间与单人云游加入游戏流程相同,唯一的区别是调用云 API 创建会话时需填入 HostUserId。

游客加入房间

1. 游客客户端向业务后台发起启动云游戏请求。
2. 业务后台通过调用 CreateSession() 创建会话,其中请求参数 HostUserId 需要与房主的 UserId 相同,Role 可选择 Player 或者 Viewer。
注意:
仅房主需要调用 TrylockWorker(),游客不需要调用。

推流直播

1. 调用 开始云端推流 API 将云游实例运行的完整画面推流至 腾讯云直播
2. 腾讯云直播可以将此直播流用于播放分发,观众通过直播地址观看直播。

切换角色

1. 游客客户端调用 TCGSDK.submitSeatChange() 接口申请切换角色,可以申请切换为 Player 或者 Viewer。
注意:
Viewer 切换成 Player,需要带上切换的操控席位信息(该席位必须是空的)。
Viewer 切换成 Viewer,无需申请,可直接切换。
Player 切换成 Viewer,无需申请,可直接切换。
Player 切换成 Player,需要带上切换的操控席位信息,Player 之间席位切换会导致游戏内所操控角色切换。
综上所述,Player 需要严格对号入座,Viewer 不分配坐席。
2. 房主客户端通过回调 onMultiPlayerChange() 接口获取其他玩家申请切换角色的请求,通过调用 TCGSDK.seatChange() 接口切换游客角色。
3. 游客客户端通过回调 onMultiPlayerChange() 接口获取申请切换角色的结果。

切换麦克风状态

1. 房主客户端调用 TCGSDK.changeMicStatus() 接口可以切换其他玩家或者自己的麦克风状态。
2. 游客客户端调用 TCGSDK.changeMicStatus() 只能切换自己的麦克风状态。