【万人同屏】Spine多角色合批,性能优化

1 万个 Spine 同屏,微信真机稳 60 帧

做小游戏 / 手游大概率都遇到过同一个噩梦:Spine 动画效果好,但角色一多就卡。
几百个角色 Draw Call 爆炸、CPU 骨骼计算吃不消,最后砍表现、砍人数,气氛暴跌。
现在来个骁龙 865 真机压测:10000 个 Spine 角色同屏,Draw Call 只有 1,稳 60 帧。
:point_right: 完整演示视频:https://www.bilibili.com/video/BV1mnh766EEj

实测数据:直接上真机截图

测试机器:小米10 pro , 骁龙865
测试环境:微信小游戏真机,Cocos Creator 3.8.x,
开启实时性能面板(RT-FPS / Draw Call 全部来自引擎真机数据)。

10000 人同屏:依然一条 Draw Call

指标 静止站位 移动+排序
RT-FPS(真机帧率) 63 63
Draw Call 1 1
逻辑帧时间 0.4 ms左右 9.00 ms左右
三角形 380,278 380,280

万人同屏、全员播放骨骼动画、全实时移动+深度排序,真机帧率仍然顶在 60 帧上限,全程零卡顿零抖动。这不是模拟器跑分,是真机压测。

有人可能会问:1w 角色同屏,真有人需要吗?

说实话,正常玩法 500~1000 人就够用了。但这个数字能跑到,意味着 500 人对你来说是零压力——中端机随便霍霍,性能余量直接拉满。1w 不是目标,是「你再也不同为角色数量焦虑」的证明。

1000 人同屏:帧时间不到 1ms

指标 静止站位 移动+排序
RT-FPS(真机帧率) 63 61
Draw Call 1 1
逻辑帧时间 0.12 ms 左右 0.80 ms左右
三角形 38,278 38,278

回到日常场景:1000 人同屏,移动 + 排序全开,CPU 帧时间也只有 0.8ms——60 帧预算(16.6ms)连零头都没用到。

它是怎么做到的?

这款 Cocos Creator 插件——【高性能合批】Spine 多角色,
核心思路是把 Spine 的顶点动画,渲染管线搬到 GPU 合批轨道上,不是在传统高cpu运算方式:

  • GPU 合批渲染:同屏任意数量角色合并为个位数 Draw Call,角色数量不再是渲染瓶颈;
  • 多角色同屏:一套方案覆盖大量不同角色 / 大量同角色的战场、割草、塔防、MMO 人群场景;
  • 动画切换:运行时自由切换动画,实例之间动画状态互相独立;
  • 事件系统:完整支持 Spine 动画事件,逻辑与表现不脱节;
  • 挂点系统:武器、特效等挂点照常工作,不需要为性能牺牲功能。

一句话总结:不砍美术表现、不砍玩法人数,把「同屏角色数」这个性能枷锁直接摘掉。

适合谁?

  • 微信小游戏 / 抖音小游戏开发者:包体小、性能上限低,合批收益最大;
  • 塔防、割草、SLG、放置、MMO 类项目:同屏单位动辄成百上千;
  • 已经被 Spine 性能折磨过、先试试这个,可能不用降级。

获取方式

联系方式(个人微信)

欢迎试用和交流,讨论游戏优化问题:

1赞

:+1:,支持安卓的spine合批是吗,应该可以和多纹理合批共用的吧,期待大佬做出支持2.4版本的。

里面包含打包工具,可以把多个不同角色打包成一个整体,支持原生和h5,优先考虑使用现在这个。

有2.X的兼容计划吗

烘焙工具是通用,2x渲染暂时还没支持(理论上改大buffer顶点Mesh是可以),目前主要是利用3 x的GPUinstancing做渲染显示优化,2x看后续计划

支持spine内部渲染模式切换不断批吗

针对性能合批不支持,内部渲染模式是基于附件级别blend,但工具有做代替性补偿转换(近似不等同原效果)或剔除。