Unite大会腾讯演讲:微信小游戏技术与工具升级,性能显著提高!

【GameLook专稿,禁止转载!】

GameLook报道/随着小程序游戏在各大平台打得如火如荼,用户对游戏品质的要求持续攀升,产品精品化与运营精细化已成为行业共识。在这一背景下,基础设施的性能瓶颈与开发效率问题正成为制约开发者创新与增长的关键因素。10月23日,在上海举办的UNITE小游戏技术专场上,微信小游戏平台携一系列重磅升级亮相,旨在通过底层技术突破与工具链全面进化,为行业下一阶段的发展注入新动能。

GameLook对演讲内容进行了整理和润色:

大家好,很荣幸这次能在 UNITE 大会代表微信小游戏平台,向广大开发者介绍我们在技术能力与工具体系方面的升级。我是来自微信小游戏平台的开发工程师左君博,主要负责小游戏的性能优化和工具建设工作。今天的分享将围绕平台能力、工具建设和引擎适配三个模块展开。

平台能力

我们先来看平台能力的升级。首先是小游戏平台基础能力的升级。通过 V8 版本更新以及底层的多项优化,微信小游戏在安卓平台的执行效率提升了 10%。在 PC 平台,我们通过优化底层文件系统,小游戏的 IO 性能有超过 20% 的提升。需要注意的是,这两项基础能力的升级属于平台侧的升级,开发者无需任何接入成本,就可以享受到这些升级所带来的性能收益。

随着小游戏的日趋精品化和重度化,原先 200MB 的缓存空间开始显得捉襟见肘。我们经常收到开发者反馈,由于缓存空间限制导致资源频繁清理和重复下载。为了解决这个问题,缓存空间扩容将向所有 IAA 游戏开放,提升门槛大幅降低。开发者只需在 MP 平台上传小游戏的通用素材封面,就可以申请将缓存空间从 200MB 提升到 1GB。我们相信这可以更好地助力 IAA 游戏的精品化。

为开发者提供优质的底层渲染能力,一直是微信小游戏开发团队关注的重点。经过深入的技术探索,我们推出了 Emscripten GLX 模式。

在之前的标准渲染模式(WebGL 渲染模式)下,所有 GL 指令都需要经过三层转换:首先从 Wasm 的业务逻辑层调用 GL 指令,然后通过 GL 胶水层序列化为 WebGL 调用,再由驱动层转译为本地图形 API。胶水层的频繁调用会带来繁重的性能开销,对画面要求高的游戏问题更加突出。 Emscripten GLX 模式在 Wasm 层面实现了 GL 指令的编码,彻底绕过了 GL 胶水层的序列化过程,带来了可观的性能收益。在我们的 Benchmark 场景中,相比原生方案, Emscripten GLX模式可以带来超过 10% 的执行性能提升。值得一提的是,现在已经有不少开发者开始接入这个模式,普遍都收获了算力性能的正向优化,尤其是在算力瓶颈的中低端设备上,这些优化更为明显。

需要知道的是,Emscripten GLX 的定位是小游戏平台提供的全平台通用能力。这意味着只要是支持我们环境的小游戏引擎,理论上都可以从这个功能中获益。渲染能力的升级不止于此。在 iOS 生态中,我们也有更加底层的突破。通过 Metal 图形方式,我们突破了原生 WebGL 的管线限制,实现了微信小游戏下的原生 Metal 后端支持。这也是业界首次在小游戏的容器侧提供 Metal 底层能力。

一方面,Metal 的原生特性带来了执行效率的提升和功耗的降低。测试数据显示,执行效率得到了超过 10% 的优化,功耗降低了超过 15%,预期会对 iOS 设备上的发热和耗电问题带来可观的改善。另一方面,使用 Metal 渲染后端可以突破 WebGL 的限制,进而使用各种高级渲染特性,包括但不限于 Compute Shader、Indirect 调用、PSO、UAV 等,这些是在传统 WebGL 渲染管线下难以达到的品质表现。从我们的视频中可以看到,通过 Compute Shader 加上 Indirect 调用,我们成功在 iPhone 13 的小游戏平台实现了大规模的动态植被渲染。我们相信,诸如 GPU 粒子、实时流体模拟、大规模战场单位渲染等更加高级的特性,未来也可以在小游戏环境中实现。

试玩广告是很多开发者非常关注的板块,这个板块也迎来了一波能力升级。我们都知道,在旧版本的试玩广告中,它不具备独立的 APP ID,需要占用小游戏的正式包体空间,而这个空间非常珍贵,同时也带来了一系列管理成本。在之后的升级中,试玩广告有了独立的 APPID 和独立的包体。一方面减轻了正式包体积的压力,另一方面由于独立 APP ID,试玩广告的审核效率也大幅提升。

针对 Unity 和 Cocos 引擎,我们提供了导出试玩包的功能。以往开发 Unity 和 Cocos 小游戏的试玩广告,往往需要涉及引擎切换、资产重置、业务逻辑重写等工作。随着 Unity 和 Cocos 引擎对试玩广告导出流程的适配,试玩广告的开发生态正在越发完善,越来越多的试玩广告开发流程可以在引擎内部实现闭环。

我们与开发商进行的深入沟通显示,Unity 与 Cocos 试玩开发的时间成本从原来的 10-14 人天降低到了 3-4 人天,这是一个非常大的改进。并且由于资产和业务逻辑都可以直接复用,试玩广告的产出质量也得到了进一步保证。

还不止如此,我们还为试玩广告添加了 Video Decoder、WebAssembly 等支持,并进一步优化了启动速度。针对旧版试玩,我们推出了免开发迁移功能,开发者无需编写一行代码,只需少量配置,就可以将试玩广告从老版本升级到新版本。此外,我们还支持了朋友圈试玩广告功能。相信这些升级可以助力开发者产出更高质量的试玩内容。

工具建设

工具体系是业务落地的核心支撑。小游戏平台一直致力于各种工具的建设,从多维度降低小游戏的接入、开发、优化和运营成本。在工具建设方面,我们将向大家介绍 iOS 真机调试工具和游戏实时日志功能。

我们先来看 iOS 真机调试工具。众所周知,作为小游戏开发者,我们的工作空间通常是在开发者工具上,而开发者工具往往无法完全模拟真机的表现,因此真机调试工具对移动端小游戏开发是不可或缺的。之前由于一些条件限制,iOS 平台的小游戏真机调试工具一直缺位。经过这段时间的突破和底层方案重构,我们现在可以在 iOS 平台完成小游戏真机调试的过程。

iOS 真机调试工具提供以下功能:第一,断点调试允许大家查看在 iOS 真机侧的断点上下文内容,这对开发同学来说是非常实用的功能;执行效率分析允许查看 Performance 火焰图信息,辅助定位单帧性能热点;并且工具还允许将性能数据导出,方便团队共享,也可以使用 SpeedScope 等第三方工具进行进一步分析;此外还有一些常规功能,如日志查看、网络请求和控制台。我们相信这些功能会成为开发者手中的利器,大大提升小游戏在 iOS 生态下的开发调试和性能优化效率。

接下来是游戏实时日志的功能。在座开发者应该都知道,以往针对线上信息的收集,只能通过收集 JS Error 信息,或者依赖用户主动反馈才能获取,很难收集到线上的详细信息。这两种做法都有相当的局限性。因此我们提供了一整套端到端的解决方案,协助开发者快速触达、统计和分析线上信息。

在 API 上,我们提供了特定的日志上报能力;在 MP 后台侧,我们提供了一整套完备的线上日志信息的统计、筛选和分析功能。我们支持从秒到天的时间粒度统计,也支持按条数或按人数的分布统计。在 MP 后台,开发者可以查看相关的分布图、趋势和对比报表。MP 后台提供的多种维度筛选能够辅助开发者进行日志信息的精确定位,甚至可以回溯到玩家每一次游玩的上报数据。

大家可以想象一下,每一次线上玩家启动小游戏后,脱敏上报的信息都可以在 MP 平台查看。不只是查看,我们也提供了相应的维度排序、单位转换、JSON 数据格式化展示的能力,帮助开发者更加高效地进行线上数据分析。

值得一提的是,现在已经有非常多的游戏开发者接入了这个能力。在深入沟通中,让我们感到惊喜的是,他们在非常多我们原来没有想到的场景里都用上了这个能力。举个例子,在游戏启动阶段的各个关键节点,可以进行预置上报,这样当线上游戏启动失败时,很容易知道失败在哪个节点,从而协助定位和快速修复线上问题。

又比如,当检测到游戏发生卡顿时,可以将游戏相关的上下文(例如当前是第几关、场景中有几只怪物、有什么英雄、在放什么技能等信息)进行上报,这样可以快速了解线上卡顿信息与游戏业务的相关性,从而辅助开发者进行游戏性能的持续优化。我们相信这个能力可以被用在更多关键场景中,帮助开发者解决线上问题。

引擎快适配

引擎适配是小游戏平台的核心能力之一。接下来我们将展示引擎适配能力在这段期间的全面升级。我们一直坚信开放的技术架构是生态繁荣的基石,小游戏一直在努力夯实平台能力的技术合作,同时持续迭代平台工具,降低引擎适配门槛。此外,我们与 Unity、Cocos 等伙伴共同打磨优化,输出了各个版本的高清 SDK,让越来越多的小游戏开发者能够快速、低损耗地接入小游戏生态。

得益于引擎适配能力的持续进化,适配游戏的接入量正在快速上涨,目前已经超过了 1 万款。微信小游戏会一直保持着开放的技术架构,致力于提供足够通用的能力和工具。如果开发者在小游戏平台遇到任何问题或有任何诉求,也欢迎随时联系我们。

在这段时间内,从平台能力、平台工具、引擎调优和 SDK 层面,引擎适配都进行了全方位的升级。在平台能力这一块,我们在音频播放层面进行了优化,并且还支持了 iOS 18 系统字体的新能力。此外,Shader Warm-up 功能也在内测中,大家可以申请体验。

在适配平台工具这一块,我们的目标一直是解决开发者的实际痛点。我们优化了转换插件,降低了生成代码的体积;开发了性能深度分析工具,能够针对微信小游戏的执行效率、内存和渲染专项进行更加细致的分析,协助开发者进行热点定位;此外,分包工具的持续升级带来了内存占用、运行性能和易用性三个层面的优化。

微信小游戏平台和 Unity、Cocos 引擎一直保持着紧密合作。本次升级在适配微信小游戏的启动速度、实时运行效率、内存占用和编辑器易用性扩展层面,都有了不同程度的优化。

最后,我们的 SDK 也在持续不断升级:我们进行了开放页面管理页的接入,这个功能可以用于启动微信内置的各种小游戏活动和功能页面;聊天模式的接入也允许各位开发者更好地将小游戏与微信聊天结合;我们还优化了 Benchmark 体系,用于辅助开发者进行更准确的设备分级评估和性能分析。

大家有没有注意到,我们刚刚提到了一个新的工具——性能深度分析工具。这是什么东西?我们接下来就来看看。

对于游戏开发来说,性能一直是永恒的主题。随着越来越多的重度游戏接入小游戏生态,性能问题也开始日益凸显。在与开发者的持续沟通中,我们了解到开发者最迫切的诉求是对热点定位。基于这个诉求,我们推出了性能深度分析工具,从执行效率专项、内存专项、渲染专项三个方面提供相应功能,辅助开发者进行热点分析和定位。

在执行效率层面,我们已经兼容了 Unity 下的所有 Profile 结构,并且提供了微秒级别精度的时间函数。这与主流浏览器环境不同,主流浏览器环境可能只能提供毫秒级的时间精度,而我们提供的微秒级时间精度可以与原生 App 完全对标。此外,我们还提供了运行效率分析,将 Lua 函数与 Unity 执行效率情况都用火焰图的形式呈现,便于开发者精确定位执行效率热点。

内存优化一直是小游戏的难点,尤其是在 iOS 平台。性能深度分析工具可以收集核心的内存指标,并且提供 Unity 资产一览的能力。此外,这个工具还允许开发者捕获 Unity 和 Lua 内存快照,并将其上传至 MP 平台进行快照的在线解析和下载操作。

在渲染层面,工具提供了核心渲染指标的收集以及各类图形资产的信息展示,比如 Render Texture 分辨率、贴图尺寸、压缩格式等等。此外,工具还提供了渲染 API 调用的录制功能,可以输出某一帧的渲染 API 调用流程,从而进行针对性优化和问题定位修复。

最重要的是,该工具为开发者提供端到端一站式的服务。开发者可以一键进行报告的录制,并且辅以定时截图功能,方便开发者了解某一次热点的上下文到底是什么。此外,我们还提供了报告的在线自动解读功能,用于评估各项关键指标、定位性能问题以及输出优化建议。目前这个工具已经完成了 Unity 2021、2022 以及 Cocos 引擎的适配,开发者可以参考使用说明进行该能力的接入。

我们可以来看一个具体的使用案例。在右方的场景截图中,我们可以看到业务逻辑非常密集、资产内存占用率很高、场景渲染

很复杂等各种问题。针对业务逻辑密集所带来的执行效率热点,我们可以使用高精度时间加上函数调用火焰图的形式来处理。从图中的火焰图示例,我们可以一目了然地定位到当前这一帧的热点是什么,以及热点中的具体开销是多少。

针对内存开销,如图中所示,我们可以看到各类资产的内存占用,以及每一个资产的内存占用信息,都可以在这个报告中呈现。另外,据我所知,以往大家没有很方便地采集 Memory Snapshot 的工具,而这个工具可以一键进行 Memory Snapshot 的采集和上传操作,在 MP 端也可以对这种快照进行在线解析和下载。

针对渲染专项,我们这个工具也提供了在真机录制某一帧的渲染 API 调用的功能,比如 Draw Call 数量、Render Pass 调用情况,并在 MP 平台进行调用流程展示,从而分析该帧的渲染流程是否合理。在我们和很多开发者的沟通中,发现这个功能帮助开发商排查到了很多渲染问题,辅助定位到了不少渲染热点。我们非常推荐大家使用。左边四款是使用这个工具进行热点定位和优化的小游戏标杆,大家也可以体验一下。

本次更新还有一个重头戏,就是分包工具的升级。在这次升级之后,分包后的小游戏运行性能大幅提升。针对典型的小游戏,分包能够大幅降低编译内存占用。在此基础上,我们进行了进一步升级,使分包之后的小游戏内存占用也进一步下降。我们测试了 4 款线上游戏,分别有不同程度的内存占用下降,平均内存占用优化达到 10% 左右。

值得一提的是,我们收到很多开发者反馈,在某些特定的 iOS 系统版本下,编译占用的内存非常高,容易导致小游戏异常退出。想要解决这个问题,分包是性价比最高的方案。因此分包的必要性正在日益凸显,我们也建议各位开发者在小游戏正式发布之前,进行一次完整的分包流程。

最后,我们也一直在关注分包工具的易用性。我们相信好用的工具能够提升研发效率。分包工具的易用性迎来了大幅度优化:我们优化了 Profile包的性能,现在 Profile 包的性能有超过 50% 的提升,这意味着分包收集工作的时间成本大幅降低;此外,我们也提供了分包工具的 CI 流程,通过自动化 CI 流程,可以大大降低开发团队中分包工作的人力成本。目前这个插件正在发布的尾声,大家可以通过官方文档查看更加详细的说明。

到这里,本次技术能力和工具升级的内容差不多结束。但请允许我打个广告:微信小游戏的智能客服小助手一直在进化,开发者有任何问题都可以直接联系小助手。值得一提的是,在 MP 端的小助手我们已经接入了大语言模型,它能够提供更加高效、精准的回答。另外也欢迎各位关注“做个小游戏”微信公众号,在公众号上会分享大量各类微信小游戏相关的学习资料供大家学习。

谢谢大家。

如若转载,请注明出处:http://www.gamelook.com.cn/2025/10/580738/

关注微信