抖音开放平台Logo
开发者文档
“/”唤起搜索
控制台
  • 开发指南
  • 游戏引擎
  • 小游戏平台引擎适配说明
  • Unity 引擎适配
  • 基本
  • 方案概述与能力适配
  • WebGL适配方案
  • 方案概述与兼容性
  • 能力适配
  • 问题反馈
  • BGDT 手册
  • Cocos/Laya/Egret引擎适配
  • Godot引擎适配
  • 基础能力
  • 开放能力
  • 性能优化
  • 安全指引
  • 背景

    当前小游戏链路下,所有平台共用同一套 Unity 构建产物。虽然易于管理,但在某些场景下由于缺乏定制化,无法完全释放某个性能特性或技术方案的满血效率。
    比如有些能力依赖较新的抖音客户端及基础库,且不同能力的代码包差异较大,需要根据环境加载不同的包。
    因此我们增加了多包融合工具,方便开发者做合包操作。
    ​

    工具版本要求

    TTSDK版本最低为 6.9.5,IDE版本最低为 4.5.7。
    如果使用命令行版本分包,tt-wasmsplit-cli 版本最低为 1.0.10。
    ​

    融合产物结构

    以 无SIMD包 minigame、SIMD包minigame-simd为例,融合后结果大致如下:
    merged_output/ ├── game.js # 根入口:根据条件选择包 ├── game.json # 根配置:聚合所有分包声明 ├── package-selector.js # 条件判断模块 ├── project.config.json # 项目配置(使用默认包) ├── images/ # 公共资源(从默认包复制) ├── StreamingAssets/ # 公共 StreamingAssets ├── minigame/ # 默认包(标准包) │ ├── wasmcode/ # 原始包 wasm │ │ └── xxx.webgl.wasm.code.unityweb.wasm │ ├── data-package/ # 数据包 │ │ └── xxx.webgl.data.unityweb.bin │ └── runtime/ # 其他运行时必要文件 │ ├── game.js │ ├── webgl.framework.js │ ├── plugin.config.js │ ├── unity-namespace.js │ └── webgl-wasm-split.js └── minigame-simd/ # 条件包(SIMD 包) ├── wasmcode/ # 条件包分包名加后缀 → wasmcode-simd │ └── xxx.webgl.wasm.code.unityweb.wasm ├── data-package/ # → data-package-simd │ └── xxx.webgl.data.unityweb.bin └── runtime/ # 其他运行时必要文件 ├── game.js ├── webgl.framework.js ├── plugin.config.js ├── unity-namespace.js └── webgl-wasm-split.js
    注意不要修改文件、文件夹的命名。

    game.json的变化

    融合工具会重新生成 game.json 中的 subpackages。同样地,不要随意修改game.json中的内容。
    同样以融合 SIMD 的包为例,原来两个单包里都有
    { "subpackages": [ { "name": "wasmcode", "root": "wasmcode/" }, { "name": "data-package", "root": "data-package/" } ] }
    融合后会变成类似:
    { "subpackages": [ { "name": "data-package", "root": "minigame/data-package/" }, { "name": "data-package-simd", "root": "minigame-simd/data-package/" }, { "name": "wasmcode", "root": "minigame/wasmcode/" }, { "name": "wasmcode-simd", "root": "minigame-simd/wasmcode/" } ] }
    ​

    运行时如何选择包

    融合产物顶层的 game.js 会先执行 package-selector.js 的环境检测,再根据条件选择加载哪个包。
    这两个文件开发者可以在融合后自行修改。
    ​

    小结

    融合包工具主要是为了给开发者提供在不同环境运行不同配置的包,以达到最佳的定制化效果。下一篇我们会以 SIMD 为例,详细介绍从 打单独的场景包 到 最后的融合包 的操作链路。
    ​
    ​