云同步调试
由于 “云同步” 技术方案的特殊性,与普通 Unity 游戏开发的情况有所不同,我们需要在开发时模拟多个主播开播的情形,调试不同的画面与输入。
开发不同阶段的调试方案:
1 | 接入过程中、功能开发中 | —— 推荐使用本地 Full Mock 方案,进行开发和调试 |
2 | 开发完成度较高后 | —— 可以到伴侣直播玩法的真实环境,进行调试和测试 |
本地 Full Mock 调试方案
特点:
- •可以在本地较为完整地模拟两个客户端同玩的流程
- •调试多实例画面与输入,匹配、切流、同玩的流程,有接近真实环境的 RTC 推流
接入 Full Mock
在云同步接入代码的初始化前调用:
ICloudSync.Instance.SetMockType(MockType.Full);
示例代码:
private async Task InitCloudGame() { // 本地调试时,设置Mock方式。可以启动两个进程后,模拟两个主播同玩。 注:如果是真实环境,不会生效。 ICloudSync.Instance.SetMockType(MockType.Full); // 云同步初始化 Init var initResult = await ICloudSync.Instance.Init(...); // ... }
调试运行
使用一个 Unity Editor 和一个独立 exe 进行调试运行。
- 1.前置:打开Unity工程。
- ◦可以使用↗云同步 SDK Demo工程,或使用开发者自己的玩法工程(接入了云同步SDK)。
- ◦Unity版本建议2022或以上
- 2.前置:接入Mock代码。
- ◦云同步Init之前调用:
ICloudSync.Instance.SetMockType(MockType.Full)
- 3.Editor中Build构建exe。
- 4.Editor中Play运行,点击【开始】,进入Mock调试“主播A”
- a.Play运行后,在Game视图,看到Mock Settings画面,如下图。
- b.其中Mock Settings说明:
1. Start As Server 默认勾选。
(备注:本地 FullMock 时,先启动的程序会默认勾选,表示它会创建一个 Mock 模拟的云游戏 RTC 服务)
2. 可自定义Mock网络设置,例如:Port 端口;NetDelay 可模拟Sdk接口的网络延迟;
3. 可自定义Mock模拟的主播信息,例如:LiveRoomId 直播间id;OpenId 直播openId;NickName 主播昵称。
4. 【开始】按钮,进入Mock调试。
- c.点击【开始】后,这个客户端会模拟作为一个主播,记为“主播A”
- 5.运行构建的exe,点击【开始】,进入Mock调试“主播B”
- a.运行exe进入后看到Mock Settings画面
- b.其中,Start As Server 不勾选。
(备注:后启动的程序不勾选 Start As Server,表示它要加入已开启的 Mock 模拟 RTC 服务)
- c.开始后,这个客户端会模拟作为第二个主播,记为“主播B”
- 6.看到游戏画面,即可调试“主播A”和“主播B”两个主播的画面、输入,以及匹配切流等流程了。
- a.说明:其中,Editor运行的,可以按常规Unity程序调试方式,下断点、看日志等方式调试。
- b.说明:其中,exe运行的,可以看Player.log日志,或自行attach调试器下断点。
- i.我们提供的demo的exe的输出日志,默认位于:%userprofile%\AppData\LocalLow\ByteDance\CloudSyncDemo\Player.log
- ii.Unity的Player.log日志,默认位置在C盘user目录的\AppData\LocalLow\公司名\Project名
- iii.Exe运行也可以用命令行方式手动指 定,示例:
cloudgame.exe -LogFile x1.log
会将日志输出在当前同级目录、保存为所指定文件名x1.log
注意:
Mock Settings 界面是本地模拟 Mock 方案专用的设置界面,运行到线上真实环境时不会有此界面。
演示视频:
伴侣真实环境调试
开发完成度较高后,可以上传和发布版本到开放平台直播小玩法,参考玩法发布 https://developer.open-douyin.com/docs/resource/zh-CN/interaction/introduction/zn/toybox-publish。
按直播小玩法的正常运行方式,在直播伴侣中,进行开播、挂载玩法、测试调试。
注意:
伴侣真实环境调试或运行时,不会出现上文中的 Mock Settings 界面,该界面是本地模拟 Mock 才有。
云启动的日志回捞:
伴侣真实环境调试时,日志回捞可以取回游戏在云端运行后产生的游戏日志文件,是重要的调试和排查手段。
需要按照抖音开放平台配置直播玩法的自查工具——云启动日志查询。
开放平台小玩法控制台配置:开发>自查工具>云启动日志查询>日志路径,填写新配置,保存。
- ◦路径正确配置范例:
\AppData\LocalLow\Douyin\DemoGame\Player.log
- ◦⚠ 注意!保存后,要再发布新包,会对后续云启动生效。
路径配置举例说明:
如果有个玩法游戏,Unity工程配置为公司名 Douyin ,工程名 DemoGame:
那么日志路径配置:
- 1.✅正确情况:
\AppData\LocalLow\Douyin\DemoGame\Player.log
- a.配置正确,符合要求。
- b.开发者可以自己验证:本机 PC 上运行玩法 exe 后,到目录:
%userprofile%\AppData\LocalLow\Douyin\DemoGame\
中,检查是否输出日志。- 2.❌错误情况:
C:\Users\Admin\AppData\LocalLow\Douyin\DemoGame\Player.log
- a.原因:按日志配置的网页说明,应当输入的开头是 \AppData\ ;而不应该有 C:\ 等开头
- 3.❌错误情况:
\AppData\LocalLow\DemoGame\Player.log
- a.原因:路径 LocalLow 中仅包含一层子文件夹,而通常 Unity 游戏的路径结构为两层(一层为公司名,一层为产品名)
附:其他调试方案
Simple Mock 调试方案
优点:
本地Editor即可模拟主播加入,可以快速本地预览 A,B 主播的画面。
缺点:
只能在 Editor 下,预览单个实例的两个玩家画面。无法完整模拟整个云同步流程。
接入 SimpleMock:
示例代码:
private async Task InitCloudGame() { // 需在 CloudSync.Init 之前调用 ICloudSync.Instance.SetMockType(MockType.Simple); // 简单版本的 Mock,可以预览画面多路输出效果 ... }
预览:
在 Editor 环境下,开发者可通过菜单项
CloudSync/Screen1
和 CloudSync/Screen2
打开独立窗口预览及操作主播画面。菜单项入口 | |
预览窗口 |
附:Mock方案对比
三种方案各有优劣,是相互的能力的补充。
建议开发调试的顺序为:
- 1.前期使用 SimpleMock 方案调试多路画面输出效果。
- 2.中期使用 FullMock 方案,较完整的模拟云同步方案能力。
- 3.最终发布,并在直播伴侣中验证。
附:变更记录
版本 2.4.3 接口变更:新增
ICloudSync.Instance.SetMockType
,废弃旧接口 MockCloudSync.Setup
。