次元羊游戏资讯网

决战沙邑
当前位置:首页>游戏评测 >

微信小游戏减慢速度-不要告诉别人-游戏性能分析怎么做-微信小游戏运行内存不足是什么原因

作者:次元羊 时间:2023-10-10 08:14:30阅读:(8)

一、背景业务中实践cocos导出的微信小游戏性能优化优化前后对比

二、性能优化过程(通用)参考:laya官方性能优化指南https://ldc2.layabox.com/doc/?nav=zh-ts-2-2-1cocos性能优化博客:https://new.qq.com/omn/20210413/20210413A04JEH00.html

微信小游戏性能优化指南https://developers.weixin.qq.com/minigame/dev/guide/performance/perf-overview.html比较通用的项目级的优化策略,整合cocos博客、微信小游戏及laya性能优化游戏资讯官方文档总结并实践

1、场景优化策略自动释放资源优化前

优化后

2、图集批次合并1)静态图集使用cocos自带工具的自动图集配置https://docs.cocos.com/creator/2.0/manual/zh/asset-workflow/auto-atlas.html

点击preview可查看生成打包图集,注意command+s保存

2)动态图集(包括文字)优化前

优化后

对其他场景采用类似方法最好还是使用位图字体(bmpfont (.png + .fnt 文件)),几个字母 + 图片,体积远远小于一个完整的字库(系统字体也是这样)3、prefab优化

在 Prefab 的属性检查器中,我们可以看到游戏资讯优化策略这个选项这个也需要我们根据实际的使用情况进行选择当我们选择“优化多次创建性能”这个选项时,Prefab 加载后会进行一个预处理的操作,这个预处理其实就是动态生成一些 Prefab 的实例化代码,并把这些代码交给 jit 去进行优化。

这样在实例化时的耗时将会大大减少,相应的,在 load 时的耗时会有所增加当我们选择“优化单次创建性能”这个选项时,Prefab 加载后会跳过预处理的步骤,这样在加载时的耗时会减少很多,但实例化时的耗时会增加。

例如一些固定 UI 界面,用于方便加载场景或者进行功能划分,通常会做成 Prefab,这种 Prefab 只会加载一次的,就可以选择这个选项,提升加载游戏资讯的性能需要注意的有一点:由于微信小游戏平台禁用了动态加载代码,类似 eval 这些不能使用,因此优化策略这个选项在微信小游戏平台是无效的。

4、代码体积引擎:把不要的模块去掉就可以,你要知道哪些模块是占体积多的物理引擎,能不用的模块,就不用【项目设置】-【模块设置】,只打包必要模块即可后查看cocos2d-js-min.js体积5、资源纹理压缩。

参考https://forum.cocos.org/t/topic/106919

在cocos creater里面进行简单的配置,就可以在打包小游戏的过程中把图片进行纹理压缩批量压缩参考cocos社区提供的脚本https://www.chuyouxiang游戏资讯.com/archives/760。

实测有bug,建议用pngyu压缩即可6、减少try catch的使用项目中尽量减少try catch的使用,被try catch的函数执行会变得非常慢7、垃圾回收小游戏中,JavaScript 中的每一个 Canvas 或 Image 对象都会有一个客户端层的实际纹理储存,实际纹理储存中存放着 Canvas、Image 的真实纹理,通常会占用相当一部分内存。

每个客户端实际纹理储存的回收时机依赖于 JavaScript 中的 Canvas、Image 对象回收在 JavaScript 的 Canvas、Image 对象被回收之前,客户端对应的实际纹理储存不会游戏资讯被回收。

通过调用wx.triggerGC()方法,可以加快触发 JavaScriptCore Garbage Collection(垃圾回收),从而触发 JavaScript 中没有引用的 Canvas、Image 回收,释放对应的实际纹理储存。

但 GC 具体触发时机还要取决于 JavaScriptCore 自身机制,并不能保证调用wx.triggerGC()能马上触发回收wx.triggerGC方法说明https://developers.weixin.qq.com/minigame/dev/api/base/performance/wx.triggerGC.html

使用场景:建议在每局游戏游戏资讯开始或结束触发一下配合wx.onMemoryWarning监听内存告警事件使用在场景切换的时候主动调用wx.triggerGC8、减少 Mask 组件数量由于 Mask 组件需要在 stencil 和 content 前后都添加修改 gl 状态的 render command,因此使用 Mask 会打断我们的 DrawCall 批处理。

对于一些特殊的显示,例如圆角的 icon 等,如果条件允许,尽量不要使用 Mask 组件来进行处理,而是通过对资源进行处理达到同样的效果目前 Mask 组件、Spine 组件、DragonBone 组件都会打断批处理,在节点结构上我们要避免被打断的情况发生。

9、游戏资讯借助cocos插件YH Multi UIhttps://forum.cocos.org/t/topic/134846可以不用关心怎么去实现,怎么去优化,你直接用,自然DC就降下来了!而且支持一键转换

三、性能优化过程(代码逻辑)业务中的游戏叫球生之路,是一款挡板接球撞击消除砖块的游戏,还有buff可以分裂多球

以下针对游戏代码逻辑做优化1、游戏中多球碰撞检测1)球到一定数量就不要再增加目前是300做阈值,对象池初始节点数为50=》改成阈值200,初始2002)看看碰撞体之间,有没有多余的判断,比如球跟球之间是否可以取消

2、首页关卡数据展示1)远程获取2)分页展示四、测试性能工具1. cocos 浏游戏资讯览器运行查看调试信息其中drawcall可作为初步优化效果的重要依据

2. 微信小游戏真机调试工具参考https://developers.weixin.qq.com/minigame/dev/guide/performance/perf-action-memory-dev-profile.html

微信开发者工具中内置了Google Chrome DevTools工具, DevTools可以帮助开发人员即时编辑页面并快速诊断问题,最终可以帮助开发人员更快地构建更好的小游戏Google Chrome DevTools。

https://developer.chrome.com/docs/devtoo游戏资讯ls/2)Android真机性能工具微信Android端自身集成了三种内存分析工具,分别是性能监控面板、Heap Snapshot、V8-CPU-Profile。

开发者可通过三者监控Android真机环境下各性能指标地址https://developers.weixin.qq.com/minigame/dev/guide/performance/perf-action-device-monitor.html。

3)PerfDog移动全平台iOS/Android性能测试、分析工具平台快速定位分析性能问题,提升APP应用及游戏的性能和品质手机无需ROOT/越狱手机硬件、游戏及APP应用也无需做任何修游戏资讯改,极简化即插即用。

地址https://perfdog.qq.com/3.微信小游戏云测试(推荐)云测试服务是微信小游戏团队为开发者提供的一套多模式在线测试服务,可以为用户提供智能、高效、稳定的云真机测试能力,帮助游戏快速进行功能、性能、兼容性、稳定性测试,并提供全面、专业、详实的产品质量评估和问题分析报告。

小游戏云测试服务具备下述能力和优势:支持标准化、录制回放、测试框架等多种测试模式,开发者可以根据使用成本和测试精准度的不同需要灵活选择配套服务;集成功能、性能、兼容性、稳定性等全套测试能力和工具,一次运行即可获得全方位测试结果;

提供覆盖主流厂商和头部用户的真机设备集群;提供全面专业的可视化游戏资讯质量报告,帮助开发者快速定位问题服务入口​https://developers.weixin.qq.com/minigame/dev/minigame-testtool/quick-start.html#%E8%BF%9B%E5%85%A5%E4%BA%91%E6%B5%8B%E8%AF%95。

‍五、微信小游戏跑分优化1、启动1)数据预拉取修改地址https://mp.weixin.qq.com/wxamp/devprofile/get_profile?token=1106658438&lang=zh_CN

开启功能后,在用户打开小程序时,小程序可提前拉取所需要的数据,从而提升小程序的加载速度了游戏资讯解详情https://developers.weixin.qq.com/miniprogram/dev/framework/ability/pre-fetch.html。

小游戏暂时不支持2)小游戏测速

查看开发文档https://developers.weixin.qq.com/minigame/dev/guide/open-ability/performance-report.html3)引擎分离

注意构建时需要删掉构建模版里的引擎源码压缩文件,才不会报md5不同

小游戏内置的cocos引擎插件源码有bug,进入自动释放资源的场景回循环报错,已反馈待修复:cocos引擎插件分离运行报错https:游戏资讯//developers.weixin.qq.com/community/develop/doc/0004800f2043288b96ddd20ec5b800?fromCreate=0

4)代码依赖无用代码删除

2、网络性能1)数据周期性更新开启功能后,小程序可在后台每隔12小时下载数据到本地,使小程序在弱网或无网条件下也可以正常使用了解详情https://developers.weixin.qq.com/miniprogram/dev/framework/ability/background-fetch.html。

推荐阅读