打包器

把作品变成别人打得开的文件

打包器读的是标准 SB3,产出的是能在不同地方跑起来的成品:一个网页、一个双击就开的 EXE、一个能装进手机的应用。 网页版直接在浏览器里完成,桌面版多出需要本机工具链的两种格式。作品内容不上传。

网页版工作台在浏览器里跑,不需要安装客户端

网页版可做

网页

一个 HTML 或一个 ZIP,任何带浏览器的设备都能打开。适合发给同学、放进作品集、挂到静态托管。

  • 单文件 HTML:资源内联,最省事
  • 网页 ZIP:目录结构清晰,便于二次修改
  • 单资源 Web ZIP:减少小文件,方便上传
需桌面版

Windows 单文件 EXE

复用系统的 WebView2 Runtime,产物是一个 EXE 文件,不需要解包,也没有一整个运行时目录。

  • 可选作品数据目录,读写作品自己的存档
  • 支持文件下载与预编译
  • Windows x64
需桌面版

Android APK

把作品包成能装进手机的 WebView 应用,图标、名称、包名可配,签名密钥保存在本机保险库。

  • 首次构建会安装 Android 工具链
  • 同一包名可迭代升级,不必重新签名
  • Android 7.0 及以上
打包器能做什么

不只是「把 SB3 塞进网页」

通用选项沿用 TurboWarp 系的打包器,下面是 Gandi 打包器真正在用的部分。

编译器与预编译发布

编译器默认开启,把积木转成 JavaScript 运行;预编译发布(实验性)在打包阶段完成转换,产物不再包含原始积木——仅 Gandi 2 工程可用。

五种舞台缩放

保持宽高比、拉伸填满、动态调整舞台,外加「宽度适配 · 高度扩展」与「高度适配 · 宽度扩展」,按基准边缩放另一条边。

加载界面可定制

两种开场动画、进度条开关、多条加载文案(轮播 / 随机 / 随机后固定),以及多图或自制 HTML 的轮播封面。

资源预烘焙

长音频转 Opus、ADPCM 转 PCM;静态 SVG 按倍率烘焙成 PNG;可调最大纹理尺寸,换取更清晰的放大效果。

在线服务可保留

用了云数据、多人联机、成就与排行榜的作品,勾上 ccwAPI 就能在产物里继续登录使用,且这一项不可关闭。

配置可复用

导出与导入设置 JSON,与社区版编辑器里的导出设置同构;同一作品再次打包沿用上次的选择。

边界

这两种格式,需要本机工具链

网页里能生成的东西不少:网页、Electron 应用、macOS 应用都在浏览器内完成。 但把作品变成 Windows 单文件 EXE 或 APK,要在你的电脑上编译和签名,这只能在桌面版客户端里做。

需桌面版

Windows 单文件 EXE(WebView2)

产物是一个复用系统 WebView2 的 exe,没有解包目录。它需要一个原生宿主程序, 由桌面版在你本机编译出来后,把作品与运行时封装进去。

需桌面版

Android APK

APK 要经过 Android 构建工具链编译,并用你本机的签名密钥签名。 首次构建会下载工具链,之后同一包名可以持续升级。

源码保护也只在桌面版:混淆与资源加密由客户端在本机完成;V8 字节码还需要 与运行时匹配的编译器,所以只对 Windows 的 Electron 目标生效,Gandi 3 作品目前做混淆与加密。 网页版不提供这一项,避免给出「看起来受保护」的产物。

导出格式对照

网页版与桌面版各能出什么

同一份作品、同一套播放器:网页版在浏览器里完成,桌面版多出需要本机编译的两种格式。

导出格式与可用平台(网页版暂只支持 Gandi 2 工程)
格式 产物 网页版 桌面版 在线服务 源码保护
单文件 HTML 一个 .html,双击即开(仅 Gandi 2) 支持 支持 受限(file:// 无法登录) 不支持
网页 ZIP 目录包,需静态服务 支持 支持 支持(需 ccwAPI) 不支持
单资源 Web ZIP 资源内联,文件数更少 支持 支持 支持(需 ccwAPI) 不支持
Electron 应用 Windows / macOS / Linux 压缩包 支持(取一次运行时) 支持(安装程序 / 便携版) 支持 桌面版 · 仅 Windows
macOS WKWebView 体积更小的 .app 压缩包 支持 支持 支持 不支持
Windows 单文件 EXE WebView2,一个 exe 免安装 不支持 支持 支持 暂不支持字节码保护
Android APK 可直接安装的 .apk 不支持 支持 支持 不支持
在线服务

用了云扩展的作品,打包后照样能连

作品里有多人联机、云数据、成就与排行榜这类在线扩展?打包选项里有 「包含 ccwAPI 支持」:勾上之后,产物会在开场动画结束后弹出登录窗口,登录即可连接对应服务。

  • 检测到在线扩展时,这一项自动勾选且无法取消
  • 登录时勾「记住我」,下次进入不再弹窗
  • 不包含 ccwAPI 的产物不弹登录窗口,在线扩展也就无法使用
  • 想和网页玩家进同一个 MMO / 数据服务器,要用在线作品打包——产物携带 OID
打包选项
包含 ccwAPI 支持 检测到在线扩展 · 已锁定 锁定
显示暂停按钮 产物运行时提供暂停/继续
自动开始运行 加载完成后直接运行
开场动画 经典动画
在线扩展存在时,这一项不可关闭

OID 决定了在线服务能不能互通: 用在线作品打包会携带 OID,MMO 与云数据能和网页玩家在同一服务器; 离线作品没有 OID,即使装了扩展也不保证在线服务可用; 单文件 HTML 走 file:// 协议无法登录,改用 ZIP 或本地服务打开。

兼容与限制

哪些能打包,哪些要换个做法

在线扩展不是「不支持」,而是需要在打包时保留 ccwAPI、并用在线作品打包; 真正会卡住的是协议与登录态的限制。

可以打包

  • 标准单场景作品,含角色、造型、声音、变量
  • 多场景作品(Gandi 3)
  • 社区版内置的官方扩展与引擎脚本
  • MMO、CCWData、成就与排行榜等在线扩展(保留 ccwAPI)
  • 手机版导出的 SB3 可继续打包
  • GandiPython 等 Python 扩展:选网页 ZIP,运行时随包分发

要换个做法

  • 单文件 HTML 里用在线服务:file:// 无法登录,改用 ZIP 或本地服务打开
  • 单文件 HTML 里的 Python 扩展:单文件不带 Python 运行时,改用网页 ZIP
  • 离线作品想进同一个 MMO / 数据服:先用在线作品打包,才有 OID
  • 网页产物的源码保护:网页与 ZIP 不提供,需要保护时选 Electron 目标并用桌面版
  • Windows 单文件 EXE 与 APK:在桌面版客户端里生成

关于「能打开」和「完全一致」:产物里的播放器是重新打包的运行时, 常规作品与编辑器行为一致;涉及场景切换、引擎组件或有状态的服务时, 请在实际设备上完整跑一遍再发布。

细节问题

打包器常被问到的

网页版会上传我的作品吗?

作品不会离开你的设备:文件在浏览器里读取,打包也在本地完成。不过打包过程需要联网取播放器内核、 官方扩展资源与 Electron 运行时;产物本身离线可运行。

为什么网页版不能出 APK 和 Windows 单文件 EXE?

这两种产物需要本机工具链:APK 要 Android SDK 编译与签名,WebView2 单文件要一个原生宿主程序。 浏览器里没有这些能力,桌面版客户端则内置了它们。

打包会重新编译我的作品吗?

作品本身始终是标准 SB3,打包器读它、生成配套的播放器与外壳,再装到一起。 默认情况下积木在运行时才编译成 JavaScript;勾选「预编译发布」会提前到打包阶段完成—— 这一项只对 Gandi 2 工程可用。

Gandi 2 和 Gandi 3 的作品都能打包吗?

桌面版都能;网页版目前只支持 Gandi 2 工程——Gandi 3 的播放器需要随包的 worker 文件与额外运行时资源, 仍由桌面版负责。单文件 HTML 只属于 Gandi 2,预编译发布也只对 Gandi 2 生效。

网页 ZIP 为什么双击打不开?

浏览器限制 file:// 下的模块加载。解压后在目录里起一个静态服务 (例如 python -m http.server 8000),再访问 http://127.0.0.1:8000/。

先打一份出来看看

网页版工作台不需要安装,选好作品和出口就能开始;要 EXE 或 APK 时再用桌面版。