# 微信小游戏性能优化方案

# 概述

在小游戏下开发重度游戏(尤其是重度3D游戏),则会面临一些问题:

  1. 逻辑计算部分用JavaScript实现过于耗时,尤其是动画、物理、渲染等模块中涉及大量矩阵运算的部分,并且很难应用多线程优化。
  2. 当渲染较重时,渲染模块占主线程的开销过重(主要来自于JavaScript与C++之间的通信开销),并且难以避免。

为了解决这些问题,我们推出了小游戏性能优化方案。

# 更强的性能

首先来看一下小游戏性能优化方案与旧开发模式的架构对比:

架构对比

可以看到,小游戏性能优化方案对比现有小游戏增加了逻辑加速层渲染加速层,将游戏中耗时部分的逻辑(如动画、渲染等)下沉至原生实现,使得小游戏能拥有更强的性能。平台提供辅助工具以便开发者对新能力接口进行学习,同时,方案中的新接口能力也是对外开放,欢迎开发者及第三方引擎方来进行适配及探讨交流。

# 开始开发游戏

打开已安装的开发者工具客户端,使用刚刚注册小游戏账号登记的微信账号“扫一扫”扫码即可进入小游戏开发环境。

选择左侧“小程序项目”中的“小游戏 Tab”,然后点击右侧“+”号,开始创建小游戏项目。

填写合适的项目名称,选择合适的本机空目录后,登录 刚刚注册的小程序管理平台,如下图找到小程序的 AppID,填入表单的“AppId”文本框中。

填写完整后点击右下角“新建”按钮,即可完成创建小游戏。

在开发者工具中就能进入小游戏的可视化开发界面了。

接下来我们将使用 小游戏框架提供的能力来完成绘制正方体旋转的基础功能。

# 创建正方体

开发者可以在左侧的Hierarchy标签中,右键Main Camera这个entity节点,创建一个正方体。然后点击选中Cube节点后可以在Inspector标签中设置他的position属性的z为5,这样我们就能在游戏相机的视角中看到它了。

# 创建脚本组件

小游戏框架推荐使用TypeScript来编写小游戏逻辑。可以在Project标签右键创建一个脚本组件,并取名为rotate。

然后可以把创建出来的脚本,从Project标签中左键拖到Hierachy的Cube_1节点上,这样子,我们就把脚本组件添加到了正方体节点上了,可以发现Cube节点的Inspector中就有一个rotate组件了。

# 保存场景

左上角的“保存”按钮,或是使用快捷键Ctrl+S(command+S on MacOs),就能把刚刚创建的游戏空间保存成一个场景资源。取一个cube的名字,这个资源就被落盘到了assets/cube.scene上。

# 让正方体旋转起来

工具内置了代码编辑器,开发者可以在Project中右键刚刚创建的rotate.ts脚本文件,使用内置编辑器打开。然后在代码中的onUpdate编写旋转的代码。onUpdate生命周期会以requestAnimationFrame的频率刷新,并通过this.entity操纵到正方体所在的entity。修改后记得保存代码。

public onUpdate(dt) {
  this.entity.transform.rotate(engine.Vector3.createFromNumber(15*dt, 30* dt, 45 * dt), true, false)
}

# 快速查看运行效果

这时候我们在最上方中间的2d/3d演示按钮中选择刚刚创建的3D场景:cube.scene。然后再点击播放,就能让游戏能运行起来。

播放的时候,开发者就能在Game标签中查看到正在旋转的正方形了,我们的游戏逻辑就运行起来了。同时也能在hierarchy,inspector标签查看实时的游戏状态。按停止以后可以回到编辑态。

# 构建游戏

回到编辑态以后,接下来我们要构建游戏,把游戏所需要的资源压缩打包。点击左上角编译构建 >> 构建工程,打开Build面板。点击“选择任务”,选择“微信小游戏”,然后点击“开始构建”,在3D入口场景中选择cube.scene场景。构建之后,所有的产物都会放置到minigame目录下。产物也可以使用模拟器预览来调试。

# 在手机上预览

点击开发者工具中的“预览”按钮,用手机扫描二维码,即可在手机上预览到刚刚创建的小游戏效果。

# 上传至体验版

在小游戏开发到一定阶段、希望给项目团队其他伙伴体验时,可提交一个体验版本。具体操作方式为,先点击Build标签的右上角“上传”。

在弹出窗口中填写版本号和项目备注后,点击“上传”按钮。

上传成功后,需 登录 小程序管理平台,点击“版本管理”。在右侧页面中,选择刚刚提交的版本,点击“选为体验版本”。

选为体验版本后,可点击版本号下方二维码图标,获得体验版本小游戏二维码。

需要注意的是,除了管理员与项目成员之外,其他人员如需体验“体验版”小游戏,则需先将这些人员的微信号添加到管理平台“成员管理”的“体验成员”列表中。具体操作方式请见小程序成员管理 详细说明

上述“上传至体验版”的流程,在开发过程中可多次上传,不同开发者上传的体验版本相互独立,生效的体验版本以管理平台中“选为体验版本”的为准。相同开发者每次上传新版本后会覆盖自己上传过的旧版本。扫码或从手机端已有体验版入口进入均会自动更新到最近版本的体验版。

# 提交审核

小游戏开发完成后,需要提交审核才可对外发布。

在小程序管理系统“版本管理”中,点击希望发布的体验版本右侧“提交审核”按钮,填写相关表单后即可提交审核。

# 确认发布

在提交审核的版本通过审核后,可点击“审核版本”中的“提交发布”,即可将小游戏对外发布。

# 问题反馈

使用过程中若有问题或建议,可前往 #微信开发者工具社区 发帖反馈交流。

# 新手引导案例

开发者可以下载小游戏版工具并打开,然后点击下面的新手引导链接即可直接下载引导并开始学习。