发布到微信小游戏

    作为引擎方,为了尽可能简化开发者的工作量,我们为用户完成的主要工作包括:

    • 引擎框架适配微信小游戏 API,纯游戏逻辑层面,用户不需要任何额外的修改
    • Cocos Creator 编辑器提供了快捷的打包流程,直接发布为微信小游戏,并自动唤起小游戏的开发者工具
    • 自动加载远程资源,缓存资源以及缓存资源版本控制

    除此之外,小游戏的游戏提交、审核以及发布流程,和小程序是没有区别的,都需要遵守微信团队的要求和标准流程,具体信息可以参考 微信小游戏开发文档

    1. 在 下载微信开发者工具。

    2. 在编辑器主菜单的 Cocos Creator -> 偏好设置 -> 外部程序 中设置微信开发者工具路径。

    3. 登录微信公众平台,找到 AppID。

      appid

    发布流程

    1. 使用 Cocos Creator 打开需要发布的项目工程,从 菜单栏 -> 项目 中打开 构建发布 面板。在 构建发布 面板的 发布平台 中选择 微信小游戏

      通用构建选项的设置请参考 通用构建选项,微信小游戏特有的构建选项如下,具体说明请参考下文 构建选项 部分的内容。

    2. 构建发布 面板的构建选项设置完成后,点击 构建
      构建完成后点击 构建任务 左下角的文件夹图标按钮打开项目发布包,可以看到在默认发布路径 目录下生成了 wechatgame(以具体的构建任务名为准)文件夹,其中已经包含了微信小游戏环境的配置文件:game.jsonproject.config.json

      package

    3. 然后点击微信小游戏 构建任务 右下角的 运行 按钮,打开微信开发者工具。

    在微信小游戏环境中,资源管理是最特殊的部分,它和浏览器的不同包括以下几点:

    • 小游戏的主包体积不能超过 4MB,包含所有代码和资源,额外的资源必须通过网络请求下载。
      当包体过大时,可在 构建发布 面板配置 资源服务器地址 选项,将资源上传到远程服务器,详情请参考 。
    • 不可以从远程服务器下载脚本文件。
    1. 远程资源的下载、缓存及版本管理,这部分内容 Creator 已经帮开发者做好了,详情请参考 缓存管理器

    2. 首场景的加载速度。当主包资源放到远程服务器上时,如果要提高初始场景的加载速度,可以在构建时勾选 构建发布 面板中的 初始场景分包 选项。
      构建完成后,初始场景及其相关的依赖资源会被构建到发布包目录下的 assets/start-scene bundle 中。这个 bundle 不会放到远程服务器上,而是放在本地,引擎在启动阶段时就会自动从本地包内加载这个 bundle,从而加快初始场景的加载速度。

    分包加载

    微信小游戏的分包加载请参考 小游戏分包

    除了纯游戏内容以外,其实微信小游戏环境还提供了非常强大的原生 SDK 接口,其中最重要的就是用户、社交、支付等,这些接口都是仅存在于微信小游戏环境中的,等同于其他平台的第三方 SDK 接口。这类 SDK 接口的移植工作在现阶段还是需要开发者自己处理。下面列举一些微信小游戏所提供的强大 SDK 能力:

    1. 用户接口:登陆,授权,用户信息等
    2. 微信支付
    3. 转发以及获得转发信息
    4. 文件上传下载
    5. 媒体:图片、录音、相机等
    6. 其他:位置、设备信息、扫码、NFC、等等

    WebAssembly 支持

    从 Cocos Creator 3.0 开始,微信小游戏的构建选项中新增了 物理 wasm 实验性功能 选项,当编辑器主菜单的 项目 -> 项目设置 -> 功能裁剪 -> 3D -> 物理系统 设置为 bullet(ammo.js) 时生效。目前包括以下几种使用模式:

    • js:使用 js 模式,此模式与以往版本一致。
    • fallback:自动回退模式,在支持 wasm 的环境中使用 wasm,否则回退到 js
    • wasm:使用 wasm 模式。

    使用 fallback 模式时,编辑器会打包 wasmjs 模式的代码,两个模式对应的代码包体分别为 1.2MB0.7MB,总共接近 2MB,这对主包 4MB 的限制影响很大。解决办法是通过配置子包来减轻主包的压力,这里以 ammo-82499473.js 文件为例,操作步骤如下:

    1. 修改 game.json,增加子包配置。

    2. 修改 game.js 的 方法,提前加载子包。

      1. // 大致在第 55 行左右
      2. window.__globalAdapter.init(function() {
      3. fsUtils.loadSubpackage('ammo', null, (err) => {
      4. System.import('./cocos-js/ammo-82499473.js').then(() => {
      5. return System.import('./application.js').then(({ createApplication }) => {
      6. loadJsListFile: (url) => require(url),
      7. loadAmmoJsWasmBinary,
      8. });
      9. }).then((application) => {
      10. return onApplicationCreated(application);
      11. }).catch((err) => {
      12. console.error(err);
      13. });
      14. })
      15. });
    1. 微信小游戏引擎插件目前仅支持 js 模式。
    2. 微信 WebAssembly 要求微信版本为 v7.0.17 及以上。
    3. 微信 WebAssembly 要求微信开发者工具的调试基础库为 v2.12.0 及以上。
    4. 推荐使用 fallback 模式以得到更全面的设备支持。

    微信小游戏不支持 WebView。

    参考链接