2D小游戏性能优化天花板,复制几个文件搞定!绝了!

共 4208字,需浏览 9分钟

 ·

2024-08-02 14:53

本公众号由以下老铁赞助,感谢他们❗️



01 引言

众所周知,小游戏非常强调用户体验,除玩法、题材、美术效果之外,个人认为最重要的一点就是游戏性能体验

然而玩法、题材、美术这些,越是做的好、做的多,往往又与游戏性能体验相冲突,结果背道而驰。

如果游戏没玩起来卡顿、不流畅,所有对项目的心血付出,用户只会体验到——不爽!

项目做到最后,为程序只会感受到金玉其外,败絮......哪啥的。

我就不说了,过来人都知道,那种滋味不好受,只会让人无比的焦虑与挫败感!

但是,游戏策划和美术同学,则很有可能是完全相反的感觉。

他们会觉得,越来越多的玩法创意、美术效果在尽情释放,自己开发的游戏那是步步精心,独一无二,都快要上天了。

如果游戏发出去不行的话,主要是程序无法实现他们所要的效果和体验。最为可怕的是,老板也这么想的。

啊!那,要怎么办呢?我要变强!

我想,这是绝大多数人的想法。

不停学习!学习!再学习!

力大涨之后,一双慧眼,终于可以发现项目的诸多问题。

但,项目已经开发一大半,甚至已经被迫上线,没有机会,也不可能从再头来啊!

以上,是我真实遇到过的经历,而且还不止一次!

......

不知道,你遇到过没有呢?


02 解决方案

这里,我不得不佩服 Cocos 社区一技术大神:98K!

98K有一套游戏性能优化的理念,超级牛逼——“将游戏内容开发,与性能优化分离!”

98K大佬十多年来,一直在从事游戏性能优化方面的工作,对引擎源码、算法等有过长期而深入的研究。

“将游戏内容开发,与性能优化分离!” 这是什么意思呢?

再直白一点说就是:如果你已经开发好一个游戏,无需修改业务代码,只需要将性能优化相关的代码,放到项目指定位置就OK了!

这就是今天,晓衡推荐的《98K多纹理合批》它为大家提供适应性更强的 2D 小游戏性能优化方案,可解决日常见 2D 游戏性能问题

可以这么说,它将让你安心做好 H5 小游戏内,下面是对本多纹理方案的实际测试效果:

上图是 Cocos 官方的一个 2D DEMO 工程,背包界面中包含100个图标元素,开启98K多纹理优化后,直接将 867 的 Draw Call 降到了 8 个。

你可以通过在线体验,感受一下:
  • http://wechat.xhserver.com/MultBatch2D/index.html

需要注意的是,H5链接代码经过混淆,性能会损耗,仅为大家体验,真实性能以小游戏环境为准。

图文背包测试

我们再看一个更极端一点案例,包含 500 个图标元的背包,请注意一下顶部 FSP、DC 数值:

  • 左图:多纹理合批 + 使用大图集 fps: 61.62 | drawCall: 5 | render(ms): 8.69 

  • 中图:多纹理合批( sprite 散图 ) fps: 61.88 | drawCall: 297  | render(ms): 10.79 

  • 右图:关闭多纹理合( sprite 散图 )  fps: 47.71 | drawCall: 3990  | render(ms): 19.76 

通过上面测试可以看出,在开启98K多纹理合批后,游戏性能明显上升。而这还仅仅是一个静态的,游戏背包界面。

动态战斗场景测试

我们再看一个 1000 角色运动遮挡的案例。先给测试结果,开启多纹理合批,均能保持 60 fps,不开启的话仅 28 fps。

这个案例,可以用来模拟游戏动态战斗场景的性能。

  • 左图:多纹理合批 + 使用大图集 fps: 61.62 | drawCall: 6 | render(ms): 9.25 ms

  • 中图:多纹理合批( sprite 散图 ) fps: 62.50 | drawCall: 233  | render(ms): 12.21 ms

  • 右图:关闭多纹理合( sprite 散图 ) fps: 28.14  | drawCall: 5015  | render(ms): 33.67 ms

按常规的做法,游戏中多达 1000 个角色最少要超过 5000 的 DrawCall,这将产生多少次的渲染被打断。

而开启多纹理合批后,将 5000+ 的DrawCall 直接砍到仅 6 次,如果你开发的是 MMO 类的游戏,这个案例非常具有说明性。

测试分析总结

通过以上测试分析,我们来小结一下:

  1. (多纹理+合图) > (仅多纹理) > (祼奔),上面体性能优化效果,有高到低排列。

  1. 多纹理合批,不开启合图,散图情况下也能保持60fps以上,DC也能暴砍数倍,性能明显改善。

  1. 开启引擎合图(等同打大图集),DC得进步一的降低,render时间消耗也低明显,这样能为游戏逻辑腾出更多性能时间。

提示:使用多纹理方案,结合打大图集+引擎动态合图,进一步降低DC,性能发挥到极致。

现在可以再一下概括,98K多纹理合批具体功能:

  • 对默认精灵材质DrawCall能下降N倍到8倍

  •  开箱即用 ,不影响工程,无需修改引擎源码

  • 解决图文混合不同纹理带来DrawCall问题

  • 支持全图片格式多纹理合批包括压缩纹理


03 极致上手体验

插件、框架功能强大是一会事,如何能无伤害整合到自己的项目,能无痛使用上才是关键!不然再牛逼,也只能看看并不能产生多大的价值。

而 98K 多纹理优化方案,使用方法简单至极,就算你不会代码也能使用上。

  1. 资源摆放在工程 resource 目录下,剩下的交给98K

  2. 项目设置 BATCHER2D_MEM_INCREMENT (建议1440)

你看是不是,任何人都能用上?正如文章开头所说的,做到了“将游戏内容开发,与性能优化分离!”

98K多纹理合批上架 Cocos Store

原价¥499

新品上架仅需¥199,限时7天

购买链接(文末阅读原文直达):
  • https://store.cocos.com/app/detail/6587

体验链接

  • http://wechat.xhserver.com/MultBatch2D/index.html

温馨提示:购买用户,文末可以加开发者微信,可加入98K技术交流群,与更多开发者一起分享经验,还有机会享受更优惠活动!


04 小结

今年小游戏流水疯狂,目前已经开始走向中重度,随着游戏体量和复杂度的增加,保证游戏的性能体验,开发要面临以下问题:

  • 复杂UI系统,背包系统,多层的图文混合,由于不同纹理会打断绘画,容易产生大量DC。

  • 为了节省GPU内存,采用压缩纹理方案(不支持动态合图)。实际项目中,未必能全部打上整个大图,容易会产生大量DC。

  • 大量的不同精灵,序列帧精灵播放变换,角色各种层级设计,各种技能buff的层级,这是战斗常见的需求,也是不好控制,很容易产生大量DC。

  • 大地图设计2D ,通常是按类型分层打的大图,而且图量众多,打一张大图也是不现实,各种地编层级和动态物体增删,同时还要兼顾与角色之间排序的遮挡关系,不可避免容易产生大量DC。

高性能多纹理合批,有效的解决上面这些问题,它是一个头部厂商2D性能决方案, 像百炼英雄江南百景图......,这些成功的游戏项目,都在采用多纹理合批方案。

除上面说的游戏外,对现在流行 2D 游戏,例如:塔防,弹幕,割草,肉鸽,背包,打僵尸......也能提供良好的 2D 精灵合批性能。

面是 98K 大佬微信,欢迎咨询交流!


游戏开发,副业变现

晓衡的愿景是助力 1000 位个人开发者

一年独立挣钱10W+
欢迎加晓衡微信
IAA小游戏同质化有点严重!背包like成为流量密码?
无需版号可上线测试?广东省已率先开始!
一群看穿市场的开发者们!7月精品推荐
从入门到爆款?16套视频教程助你起飞(免费)
用这个看微信小游戏排行榜,真是太方便了!
6月微信小游戏排名TOP!用户喜欢什么样的游戏?
2024小游戏出海!11家门户渠道要记住了
吃透这2个指标!真正读懂微信「畅玩榜」


浏览 129
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报