如何拥有炫酷又高效的技能特效表现?本次孙二喵带来了一个 3D 技能特效管理器,在提供丰富特效效果的同时也对运行效率进行了优化。下载地址见文末。
部分效果演示
在 RPG、MMO 等游戏中,我们常常会用到大量的粒子来制作技能特效。在实际操作中我们知道,快速实现炫酷的粒子特效其实并不容易,而使用大量粒子也对性能优化提出了更高的要求。
本次的 3D 技能特效管理器包含多种特性:
10个超炫的 AOE 技能体;
人物 Simple Toon 无光照 shader,支持 instancing 边缘光合批、消融合批;
技能管理系统,支持暴击、躲避、连击等。
开发者可快速取用并根据实际需求调整参数,事半功倍地达到自己想要的效果。同时,这套资源从特效加载、材质表现、文字合批、帧数、音效等方面进行了优化,以提高 3D 技能特效的表现质量与运行效率。
以下是重点优化分享。
特效加载优化
优化粒子贴图尺寸
目前在第一次加载特效的时候,需要去加载解析特效中用到的 texture。
小游戏特效贴图的分辨率大小建议控制在 128x128 - 512x512 以内,尽可能复用特效贴图,以节省内存和显存。
粒子 Mesh 优化
建议尽量使用减面后的 Mesh 做粒子特效。
以 Cocos 自带的球体为例,减面前:
减面后,将减少粒子渲染时间:
GPU 和 CPU 资源互换
目前小游戏和休闲游戏常在 CPU 遇到瓶颈。建议粒子材质使用 GPU 材质;由于 GPU 材质不支持重力参数,需要用到重力的粒子效果,可以使用 GPU 材质 + ForceOverTime 的 curve 去模拟。
使用 burst 去创建多个粒子
如何避免重复创建使用较多的粒子?可以用 burst 的重复次数 + 间隔,在单个粒子内重复生成,确保合批。
多个图案合图 + textureanimation 随机
常用的雪花、岩石效果可以用一张贴图合图,使用 textureanimation 随机生成不同的图案,减少粒子数量。
混合 Mesh 使用
部分使用较多的效果可以使用 Mesh + UV 动画模拟,减少粒子开销。这里使用的是动画编辑器,数量较多的话可以使用 instancing + instancedarribute 控制。
粒子预加载
在资源加载阶段,可以提前把粒子实例化,丢到天上或者视野外播放。由于部分粒子有 start delay,会有播放延迟,这里统一设置 0.65s 后播放并回收。这样可以保证第一次使用技能时,不会因为贴图加载解析而造成卡顿。
当然,也可以直接使用 prewarm,先记录下延迟,然后还原再回收。
角色优化
当技能砸中角色时候的时候,我们给角色设置边缘光作为反馈。
这里使用了自定义的材质,使用了引擎自带的 unlit + 边缘光 + 溶解效果 + 阴影,并通过 instancedarribute 控制材质效果。
溶解和 instancdarribute 都通过 MeshCtrl 脚本进行控制。
使用的时候,可以获取 MeshCtrl Class,通过 tween 来控制溶解范围。
伤害文字合批优化
所有的伤害文字都挂在了血条下面,全部使用了 bmfont,减少 drawcall。这样只需要血条跟随角色位置,做一次本地空间坐标转换即可。
AOE 效果伤害文字演示:
降帧
游戏中粒子特效较多,这里把 game.frameRate 降低到了 30FPS,每帧有更多的时间处理开销。
钝帧和屏幕震动
游戏开始的时候 overwrite 了 director.tick,每次释放技能都会通知相机屏幕震动(这里是整体缩放放大,部分技能也可以设置上下震地的效果)和钝帧(减慢游戏时间),减少玩家的卡顿感知,通知增加游戏打击感。
*这里修改的是整体的缩放,也可以单独 tween x 轴或者 y 轴。
震动和钝祯都通过配置文件获取:
物理优化
这里物理使用了引擎自带的 BuiltIn,追求性能的也可以考虑 Bullet 物理引擎或者自己封装树结构的碰撞检测,技能的碰撞体尽量选用球类,检测性能最高。
连击优化
连击写到了配置文件,技能只会检测一次(需要持续检测可以加一个碰撞体离开参数)。
音效优化
为了避免同一个音效集中播放,可以使用轨道音效,控制音效数量,也可以记录播放时间,比如击中音效,这里做了 50ms 的播放限制,避免 50ms 内重复播放一个音效。
下载与福利
3D 技能特效管理器 - 下载地址
https://store.cocos.com/app/detail/4321
体验链接
http://gameview.creator-star.cn/iwea/skill/index.html
论坛专贴
https://forum.cocos.org/t/topic/143309
🎁 放福利!转发本篇文章并在评论区留言,12月19日,我们将从评论区随机抽选3名小伙伴,送上 3D 技能特效管理器免费兑换码1个!
往期精彩