抖音开放平台Logo
开发者文档
控制台

4. 调试与 Mock 方案

收藏
我的收藏
由于 “云同步” 技术方案的特殊性,与普通 Unity 游戏开发的情况有所不同,我们需要在开发时模拟多个主播开播的情形,调试不同的画面与输入。
开发不同阶段,调试方案:
    1.接入过程中、功能开发中
—— 推荐使用本地 Full Mock 方案,进行开发和调试
    2.开发到较高完成度后
—— 可以到伴侣直播玩法的真实环境,进行调试和测试

本地 Full Mock 调试方案

特点:
    可以在本地模拟,较为完整的模拟两个客户端同玩的流程
    调试多实例画面与输入,调试匹配、切流、同玩的流程,有接近真实环境的RTC推流

接入 Full Mock

在云同步接入代码的初始化前调用:
MockCloudSync.Setup(MockType.Full)
示例代码:
private async Task InitCloudGame() { // 设置 Full Mock,需在云同步Init之前调用 MockCloudSync.Setup(MockType.Full); // 云同步初始化 Init var initResult = await ICloudSync.Instance.Init(...); // ... }

调试运行

一个 Unity Editor,一个独立 exe 来调试运行。
    1.前置:打开Unity工程。
    可以使用云同步 SDK Demo工程,或使用开发者自己的玩法工程(接入了云同步SDK)。
    Unity版本建议2021或以上
    2.前置:接入Mock代码。
    云同步Init之前调用:MockCloudSync.Setup(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
演示视频:

伴侣真实环境调试

开发到较高完成度后,可以上传和发布版本到开放平台直播小玩法,参考玩法发布 https://developer.open-douyin.com/docs/resource/zh-CN/interaction/introduction/zn/toybox-publish
按直播小玩法的正常运行方式,在直播伴侣中,进行开播、挂载玩法、测试调试。

附:其他调试方案

Simple Mock 调试方案

优点:
    本地Editor即可模拟主播加入,可以快速本地预览 A,B 主播的画面。
缺点:
    只能在 Editor 下,预览单个实例的两个玩家画面。不能模拟整个流程。
接入 SimpleMock:
示例代码:
private async Task InitCloudGame() { // 需在 CloudSync.Init 之前调用 MockCloudSync.Setup(MockType.Simple); // 简单版本的 Mock,可以预览画面多路输出效果 ... }
预览:
在 Editor 环境下可以通过菜单项 CloudSync/Screen1 & CloudSync/Screen2 ,打开独立的窗口来预览和操作主播的画面。
菜单项入口
预览窗口

附:Mock方案对比

三种方案各有优劣,是相互的能力的补充。
建议开发调试的顺序为:
    1.前期使用 SimpleMock 方案调试多路画面输出效果。
    2.中期使用 FullMock 方案,较完整的模拟云同步方案能力。
    3.最终发布,并在直播伴侣中验证。