抖音开放平台Logo
开发者文档
“/”唤起搜索
控制台

云同步调试

收藏
我的收藏
由于 “云同步” 技术方案的特殊性,与普通 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工程。
    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/Screen1CloudSync/Screen2 打开独立窗口预览及操作主播画面。
菜单项入口
预览窗口

附:Mock方案对比

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

附:变更记录

版本 2.4.3 接口变更:新增 ICloudSync.Instance.SetMockType,废弃旧接口 MockCloudSync.Setup