# 优化建议
# 启动性能
指标名称 | 指标释义 | 优化建议 |
---|---|---|
代码包下载耗时 | 从启动开始到代码包下载完成阶段的耗时,即主包下载耗时 | ● 精简首包资源:① 使用资源压缩、文件合并(小文件合并,图集等)的方式降低资源占用量 ② 减少不必要的资源,通常只保留首屏依赖的少量资源 ● 分包加载 :减少启动时需要下载的内容(普通资源或代码) ● 引擎插件能力:当小游戏首次启动时,如果本地已经存在同类别游戏引擎插件,可直接复用或可通过增量下载的方式快速下载(平台侧将引擎代码在客户端缓存,让不同的小游戏能够共用) ● 微信开发者工具开启"将 JS 代码编译成 ES5":上传代码时工具会压缩和混淆 JS 代码,减小代码包体积,某些场景不适用,具体参考代码编译 |
游戏代码注入耗时 | game.js注入耗时 | ● 减少初始代码大小 |
首屏渲染耗时 | 从游戏代码注入完成到首帧开始渲染的耗时,首屏渲染准备阶段主要包含文件下载、文件处理两个部分 | ● 降低首屏渲染所需要资源:降低首屏的初始业务代码逻辑与资源(初始画面的资源不建议从远程CDN获取),尽量将资源置于首包内 ● 尽快渲染:缩短业务代码注入完成到首屏渲染指令的时间 ①减少初始代码大小,降低代码注入时间 ②简化首屏逻辑,如不依赖第三方引擎进行轻量渲染 ● 封面图插件:游戏首包仅绘制一张最简单的静态图,玩家能够在最短的时间内看到游戏元素进而提升游戏的启动留存 |
游戏可交互耗时 | 从首帧开始渲染到开发者调用wx.reportScene({sceneId: 7})的总耗时,可参考启动场景上报分析 | ● 并行下载能力:对于使用了代码分包能力的小游戏,可以考虑在启动流程中使用网络I/O去提前下载游戏所需要的代码分包资源,仅限 正式版 小游戏 |
总启动耗时 | 从启动游戏到首帧开始渲染的总耗时 | ● 参考上述优化建议 |
# 运行性能
指标名称 | 指标释义 | 优化建议 |
---|---|---|
内存 | 小游戏进程所占总内存 | ● 纹理压缩:专为在计算机图形渲染系统中存储纹理而使用的图像压缩技术 ● 减少垃圾回收:减少对象的临时创建,垃圾回收本身也会对CPU造成压力 ● 使用work:一些异步处理的任务,可以放置于work中运行,待运行结束后,再把结果返回到小程序主线程 ● 内存图表定位:通过截图查看整个内存占用峰值所在场景,通过优化处理逻辑减少内存占用 ● 内存快照:能够查看到js内存 |
CPU | 小游戏运行程序占用的CPU资源 | ● GPU分担:在CPU出现瓶颈而GPU较为空闲时,可以采用GPU进行分担,比如GPU骨骼动画、GPU粒子等 ● 图集合并:合成图集时可以一定程度上减少整体游戏包体,并且有利于引擎进行批次优化,降低CPU处理时间 ● 定位内存泄漏:如果存在持续过度的增长,游戏有可能存在内存泄漏的情况,可以通过运行的截图定位具体哪个场景疑似存在着内存泄漏 ● CpuProfile分析:提交云测试时勾选日志选项"导出CPU Profile",在"详细报告"->"运行性能"->"CPU图表"->"展开详细数据",找到具体耗时过长的函数,并进行优化 ● CPU图表定位:通过截图查看整个CPU占用峰值所在场景,通过优化处理逻辑减少CPU占用 |
FPS | 每秒渲染帧数 | ● 限制帧率:FPS游戏可用wx.setPreferredFramesPerSecond限制帧率避免设备发烫问题 ● FPS图表定位:根据关键帧对应时间点的截图,定位对应游戏场景以及DrawCall次数、顶点数和三角形面数,通过优化该场景的代码减少该场景掉帧情况的发生 |
Stutter | 卡顿率,测试过程中卡顿时长的占比 | |
DrawCall | 调用图形绘制接口的次数 | ● 渲染合批:将一些使用相同材质的物体模型合并成一个模型,或游戏引擎工具在处理渲染队列时进行渲染批次优化,降低DrawCall的数量 |
其他 | ● 降低模型复杂度:评测不同机型能处理的模型定点数、面数的上限,使用LOD技术或在低端设备降低模型精度来提升游戏流畅程度 ● 混合渲染:开放数据域请使用混合渲染模式加快渲染效率 ● 垃圾回收:通过调用wx.triggerGC()方法,可以加快触发回收JavaScript中没有引用的Canvas、Image,释放对应的实际纹理储存 ● 高性能模式:在高性能模式下, 性能提升显著 |
# 网络性能
指标名称 | 异常原因 | 优化建议 |
---|---|---|
wx.downloadFile失败率 | ● 失败定位:可在"详细报告"->"网络性能"中查看具体的失败请求详情 ● 日志定位:可在"详细报告"中下载"Console日志"查看具体原因 | ● 在微信公众平台中"开发"->"开发管理"->"开发设置"->"服务器域名"加上对应的 dowloadFile/requests/uploadFile/socket 合法域名 |
wx.request失败率 | ||
wx.uploadFile失败率 | ||
wx.sendSocketMessage失败率 |
# 兼容性
主要问题 | 异常原因 | 优化建议 |
---|---|---|
游戏出现黑屏 | ● 黑屏定位:可在"详细报告"->"兼容性"中查看具体的黑屏截图信息 ● 内存异常 ● CPU异常 | ● 可参考内存/CPU优化建议 |
游戏出现JSError | ● JSError定位:可在"详细报告"->"兼容性"中查看具体的JSError详情 | ● 如果开发者使用引擎工具生成SourceMap,并在开发者工具上传,则可直接定位到源文件报错位置 |
小游戏打开失败 | ● 未设置体验版 ● 跑云测试过程中切换或取消体验版版本 | ● 设置体验版 ● 在测试任务执行完之前,建议不要更新体验版版本 |
# 其他
主要问题 | 异常原因 | 优化建议 |
---|---|---|
用例执行失败 | ● 自定义脚本代码有误 ● 可在"详细报告"中下载"Console日志"查看具体原因 | ● 根据Console日志的报错信息,修改自定义脚本 |
用例执行超时 | ● 自定义脚本用例过长,用例还未执行结束,但云测试已达到最大执行时长 | ● 提交测试时,测试时长选择完整模式 ● 精简用例内容 |
小游戏卡Unity Loading页 | ● Loading页提示"资源下载失败" ● Loading页长时间未加载完 ● 可在"详细报告"中下载"Console日志"查看具体原因 ● 极少可能是设备问题(设备网络问题/设备性能问题) | ● MP后台"开发"->"开发管理"->"开发设置"->"服务器域名"->"downloadFile合法域名"中加上资源域名,微信开发者工具"详情"->"本地设置"中设置取消勾选"不校验合法域名",然后重新上传体验版 ● 如果只有个别设备出现此问题,可能是设备问题,需云测试服务人员关注 |
设备异常 | ● 设备原因 | ● 无需开发者修改,云测试服务人员关注 |