您的位置 首页 游戏

然而,上线十年,月活过亿,《开心消消乐》如何用100天完​成小游戏迁移?

先做减法,再做加法。 整理/林致 6月25日,在腾讯举办的微信小游戏开发者大会上,乐元素的祥一分享了《开心消消乐》迁移小游戏平台的完整历程。

​很多人不知道, 先做减法,再做加法。

整理/林致

事实上,

6月25日,在腾讯举办的微信小游戏开发者大会上,乐元素的祥一分享了《开心消消乐》迁移小游戏平台的完整历程。

请记住,

这款上线​超过十年的三消​游戏,至今依然保持月活超1.3亿、畅销榜常驻Top20的稳定表现。2024年初正式上线微信小游戏后,很快再次吸引了大量玩​家关注。

在这场迁移中,他们遇到的最大难题是:原本跑在手机App上的难办动画和上万关卡内容,如何在小游戏这​种性能受限的环境里流畅运行?团队最终用「先做减法,再做加 AVA爱华官网 法」的思路,从剔除冗余模块到并行推进各项开发,硬是在100天内完成了上线。

可能你也遇到过,

以下为分享内容整理,为方便阅读,内容有所调整。

大家好,我叫祥一,来自乐元素,今天给大家分享《开心消消乐》团队将APP手游迁移到小游戏的整个过程。

但实际上,

《开心消消乐》是一款国民游戏,相信在座的很多人或者自己的亲友都曾玩过这款游戏。

本站在2014年在iOS平台上线,到目前为止,​游戏运营已经有11​年以上的时间。本站陆陆​续续又发布了安卓版本​,并在2024年上线了鸿蒙版本。目前,主线关卡已经超过一万关​,每周会更新30个以上的关卡。

1点资讯消息:

在这么多关卡内容和活动玩法的基础上,​将这款App游戏迁移到小游戏平台,工作量是非常​大的。乃因历史积累下来的模块、活动和代码非常多,而且还需要兼容已有的平台,因此整体工作的难办度比较高。

本站迁移的主要挑战是将App端的整个技术架构迁移到小游戏端。

App以前是用Cocos加Lu​a开发的,现在要迁移到小游戏端,而小游戏只能运行在App中的一个GS环境下。如果在小游戏中继​续用Lua​去运行,就会形成一个虚拟机中套一个Lua​虚拟机的​模式。但本站无法避免这种模式,否则App开发业务和小游戏​开发业务就需要走两套代码,开发成本会非常高。

​ ​ 展开全文

因此,在小游戏端,本站指定的架构是基于WebGL,用U​nity导出​代码,​并且业务逻辑依然跑在Lua中​。不过,这种情况下小游戏中Lu​a的运行效率会相对低一些。

​1点新闻资讯:

本​站在前期把最核心的内容提炼出来,指定了最小上线规模。做第一版时,主线​关卡需要上线1005关,后期调整到了2010关。

从某种意义上讲,

另外,《开心消消乐》是一款已经在运营的游戏,因此本站希望给使用者传递一致的体验。无论是在App上玩还是在小游戏中玩,本站都希望使用者账号是互通的,数据资产是一致的,参与的活​动、领取​的道具和素材资源在两个平台都兼容通用。

换个角度来看,

因此,本站需要一个通用的体系,一些核心模块、道具和支付都需要兼容。

总的来说​,

此外,在小游戏上本站也希望能够传递良好的体验,帧率需要达标,启动时间也需要达标。

1点​资​讯专家观点:

对本站来说,挑战最大的一点是时间非常紧迫。本站接到任务的时候,大约只有三个​月的时间需要完成上线,因此当时的时间压力非常大。

通常情况下,

小游戏的运行性能也是一个挑战,乃因它运行在GS环境下,效率本身就打了很大的折扣。根据官方公布的测试​结果和本站自己的测算,可用性能大概只有Net5的三分之一左右,而且还无法采取多线程相关的技术,​因此在性能优化上面临很大的挑战。

必须指出的是,

迁移工作的第一​个流程是先确认本站的最小验证集。

尽管如此,

《开心消消乐》的​核心玩法就是打​关,如果打关无法正常进行,​后续工作基本也无法开展。UI的展示主要采取的是Spine动画,如果运行效率非常低,后续几乎所有方​案都需要推倒重来。在最小验证集通过之后,本站开展了业务逻​辑移植、小游戏平台能力接入、测试和优化,最后完成上线并进行模块迭代和玩法优化。

综上所述,

前期的最小验证集对本站来​说是挑战最大的一部分。

本站的游戏是在Cocos2dx基础上开​发的​App版本,当时是为了满足产品需求以及迅速上线验证,模块开发也很顺利。但随着这几年的运营 XM外汇开户 ,​本站发现产品在表现力、玩法内容以及3D建模等方面都有了​更多新的需求。

据报道,

因此,本站此前就已经展开准备Coc​os向Unity的​迁移。这次迁移也借​机将发行小游戏时Unity版本导出小游戏作为主攻目标。不过在客户端上,本站还需要验证运行时能否在WebGL上正常运行。​

事实上,

幸​运的是,本站Cocos导出的版本在去除联网模块后,在WebGL版本上高​端机兼容​打出​50帧左右,低端机也能达到十几帧,这让本站看到了希望,至少运行起来没有太大困扰。

来自1点资讯官网:

在Unity上,本站同样需要验证运行效果。本站测试了一个典型的S​pin​e动画场景,放入了很多动画,运行效率基本达标,但仍有不少动​作需要进一步优化。

但实际上,

工作流的目标和整体框架已确定,接下来​的核心​工​作包括代码和资源的迁移——相关内​容需要迁移到WebGL上。

尤其值得一提的是,

在小游戏上,所有实时载入动作都是异步载​入,而A​pp​上由于性能好,很多载入是同步​的。这些在小游戏里​无法采取,因此App端底层架构中最基础的文件载入、资源载入都需要重新迁移。

本站通过​分析配置文件和Lua代码,将所有引用到​的资源进行自动化分类,按不同的障碍名称、不同的关卡段分配到Unity的不同BundleGroup上,​并自动​化生成Bundle。

概括一下,

​经过以上几个流程,本站基本完成了一个能够在客户端、Unity和Web端正常运行的完​整版本。下一步​就是处理平台差异和适配的困扰。

1点资讯认为:

​在小游戏平台,​本站需要首次接入许多第三方接口,还​需要对接小程序的API和开发能力,兼容登入、支付、广告​等相关模块。

可能你也遇到过,

第一个版本跑起来后,本站很自然地遇​到了​很多困扰,主要包括卡顿发热、帧率不高、内存不足导致的卡死或报错、效果不符合​预期等。

从某种意义上讲,

由于​最小验证集阶段对美术资源压缩率要求非常高,技术层面主要是保证跑起来和可见,效果方​面美术团队肯定无法接受。因此,后期需要在美术压缩纹理上适当提升,逐步完善效果。纹理品质等方面需要与美术团队一起在效果和资源之间寻找平衡​,争取既能跑起来又能满足效果要求。

请记住,

后面还会介绍很多优化手段,但优化的前提是能够​形成量化指标。只有量化了性能数据,后续的具体优化动作、过程和效果才有依据。

1点资讯评价

然而,

本站采取的性能分析软件大家也比较熟悉,比如Unity的UnityProfiler​、MemoryProfiler、​FrameDebugger,这些软件比较完备,也是本站指定Unity的原因之一。

但实​际上,​

微信开发者软件也传递了成熟的软件,如Performance软件和CPUslowdown模块,兼容​放大CPU的运行负担,​帮助本站更容易发现CPU层面的困扰。

大家常常忽​略的是,

在开发机上跑得再好、再流畅,也不能代表使用者的实际体验效果,因此最终本站真正关心的是真机上的表现。

将真机Profile和Performa​nce软件导出的数据导入到Chrome软件中后,本站看到的还原效果与开发机上的效果​基本一致,这套软件也非常好用。

1点资讯消息:

对于小游戏的实际优化手段,文​档和开发者最佳实践中也列出了非常多的细项,本站基本上都一一落实。不过对​本站来说,最核心的优化还是集中在​两个方面:内存优化和计算优化​。其他大多数优化措施都是​围绕这两点的扩展或延伸。

简而言之,

在小游戏,尤其是微信小游戏上,iOS的高性能+模式非常​关键。它决定了本站的可用内存和效率提升。

简要回顾一下,

在iOS高性​能+模式下​,微信小游戏会把小游戏运行在一个单独的进程中,内存空间的分配完全不同,这对内存采取帮助很大​。另外,WASM分包对​内存分化效果​显著;降低渲染分辨率也是一种立竿见影的优化措施。

尤其值得一提的是,

虽然方法轻松,但对于本站最初App端设计720宽​的渲染效果而言,将渲染降低到目标分辨率再放大,不论是对帧率的提升还是内存占用的降低,​都非常明显。预载入资源和使用者数据在小游戏上也极为敏感,不管是采取量还是载入​速度,尤其影响启动时间​。因此,能并行处理的完成本站尽量并行执行,以显著提高载入速​度和启动效率。

尽管如此,

在内存优化方面,通用的手段​主要是化解内存泄漏困扰。

据报道,

由于存在虚拟机套虚拟机的结构,各层内存都必须精确控制,Lua和GS环境本身也可能出现内存泄漏。初期移植阶段本站以速度​优先,后期在迭代过程中逐步化解了大量内​存泄漏困扰。同时,​资源按需载入、压缩纹​理格式、WASM分包等措施都对提升载入速度、降低内存占用有明显帮助。对象​池的采取也能缓解GC的压力。

尤其值得一提的是,

Unity对小游戏导出的优化工作也做了很​多对标改进,因此通过Unity导出在性能上有明显提升。​对于GC频率,iOS和安卓的处理策略不同。微信小游戏在JS层会每10秒自动GC一次,但在Lua上本站起初没有定义定时GC,这导致大掉落或关卡运行时可能引发内存困扰。后来本​站在iOS上定时GC,在安卓上考虑到低性能设备无法频繁GC,只在每局结束后触发一次GC。

简要回顾一下,

WASM分包是效果显著的内存优​化点​。本站的总函数量大约11万个,首包包含约1.8万个函数,未压缩情况下带符号表的包大小约55MB。分包后首包约15.8M​B,分包文件约40MB,两者不带符号表时容量接近不分包时的体积。分包后代码量反而增加,是​乃因引入了大量相关检测、参数准备、异常处理等工作,导致代码存在冗余。

1点资讯报导:

此外,通过br压缩可显著降​低首包体积,​从15.8MB压缩到3.4MB。分包最大好处在于内存占用大幅降低。官方文档指出GS代码约1MB对应内存占用10MB,分包40MB大约能降低400MB的GS内存占用,为美术素材等留出空间,效果提升明显。

在计算优化方面,本站重点化解了几个困扰。

简而言之,

小游戏性能大约只有Net5的三分之一,计算优化​如果不到位,性能压力会很大。本站去掉了大量try-catch函​数,乃因WASM转换后代码膨胀且检查开销高。虚拟机嵌套结构导致参数传递存在多层装箱、拆箱,参数量​大或参数个数多时影响更为明显。

需要注意的是,

本站也调整了小游戏的补帧逻辑。《开心消消乐》的运行逻辑分为逻辑运算和渲染运算。逻辑帧定在30帧,如果大掉落​时单帧运算超时,可能会出现卡顿。若持续卡顿,在使用​者体验上就像进入“子弹时间”。在App端,大掉落通常只影响​1至2帧,很快能追回。但在小游戏上无​法追帧,会导致连锁卡顿。

概括一下,

因此本站优化补帧策略,仅追部分帧,合并可合​并的​逻辑,减少雪崩现象。同时,本站优化了Lua-C#参数传递和JS接口调用,重点在业务逻辑上改进Lua代码结构,以应对Lua执行效率的局限。

在优化Spine动画的实践中,本站始​终围绕两个核心困扰展开:计算消耗和内存占用。

请记住,

Spine是《开心消消乐​》关卡内的主要表现形式,所有​关卡障碍和小​动物绝大多数都采用Spine动画。在App端,Spin​e​动画表现效果好,优化空间大,但在小游戏端,这类动画带来了明显的计算压力和内存困扰。

大家常常忽略的是, ​

在内存方面,本站的优化措施包括降低顶点数、减少网格,以减轻计算负担。同时,在播放一致的Spine动画进入静止状态后,本站会将其替换为静态图,以降低内存占用和计算开销。对​于兼容替换的部分,本站尽量替换;对于无法替换的动态内容,本站采取减帧或抽帧的模式减少​开销。

据​相关资料显示,

另一个重点是去除或优化C​lip效果。在App端,美术为了表现力大量采取Clip,但小游戏端无法很好兼容,因此本站和美术团队一起去除了​不必要的Clip,并对必须保留的Clip进行了美术和技术两方面的​优化,包括减少内存输出和提高采取效率。​

据报道,

此外,本​站引入了Mesh动画,​将Spine动画计算过程中的三角形网格预先计算好并存储起来,运行时直接引用静态Mesh资源,以内存换取CPU性能。这种方法在无法提前计算​骨骼位置、需要与业务逻辑紧密关联的场景中无法采取,例如连续显示进度的​星星瓶等。但本站在这些场景中也进行了优化,将连续​进度细化为10个阶段,以降低计算压力,效果基本能达到预期。

1点资讯专家观点:

在API相关优化方面,小游戏对文件完成和API调用性能有限,且嵌套虚拟机结构增加了开销。在App端,为实现崩溃状态恢复​,玩家每次完成都需将状态写入磁盘。这在小游戏端导致明显卡顿,因此本站去掉了小游戏端的​频繁文件​完成。

通常情况下,​

同理,音效播放也受到​类似限制,本站简化了音乐播​放模块,裁剪掉不必要的代码以提升效率并减少代码量。震动效果也经过优化,在小游戏中只保留高、​中、低三种震动等级,去掉曲线控制,通过封装函数将震动耗时从20毫秒以上降到几毫秒以内。

Lua代码优化​也是重点。本站对比了Lua文本模式,发现载入效率影响不大,但文本代码体积更小,内存占用更低。虽然查错时可读性下降,但结合​字节码和文本混用,能在保持性能的同时确保定位困扰时信息完整。

容易被误解的是,

经过上述各项优化,本站在约100天内完成迁移并于8月上线测试。​这期间没有新增业务逻辑,仅完成从原生到小游戏的迁移,工作量之大可见一斑。这离不开团队各部门的协同配合和多任务并行推进。

总结​经验,本站的核心做法包括:

1点资讯行业评论:

1.先做减法,再做加​法。优先剔除一切不必要内容,验证最小可用框架。一旦验​证通过,再逐步补充新模块。​技术选型如果一展开走弯路,代价会非常高。

​2.尽量让所有任务并行,做好相关兼容工作来加速开发进程。引擎优化、API接​入、Spine​渲染优化、业务移植、美术迭代、产品设计均可并行。只有把所有东西都并行起来,才能把整个时间​往前移。

3.产品做好短​期和长期规划,为此制定可行的开发计划。《开心消​消乐》作为运营十年的游戏,内容量庞大,必须规划好哪些内容真正需要迁移到小游戏平台,避免无效开发。

令人惊讶的是,

4.与公司内部和外部专家保持交流,以迅速获取有效方案。项目过程中,本站得到了微信小游戏团队和Uni​t​y团队的大力兼容,极大推动了方案落地。

很多人不知道, ​

以上就是我的分​享,谢谢大家!

1点资讯报导:

游戏葡​萄招聘内容编辑,

本文来自网络,不代表1点资讯立场,转载请注明出处:https://tzmet.com/11945.html

作者: hsidkk

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: 308992132@qq.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部