作品自荐:山海勇者传
04/2574 浏览作品自荐
山海勇者转(下面包含了spine的学习和教训)
按老套路的增量玩法,不断递进关卡数。
通过砍怪掉落对应关卡等级的装备来达到玩家爽感。
构建外挂式功能 宝物,来不足前中期的卡关情况宝物具有穿透攻击,恢复血量,斩杀怪物,增强伤害。
后期也能通过递进式更新,填充游戏内核。
重点
下面描述一下本游戏的spine构建经历。
说在前头,spine目前的实现基于lua相当于是二次实现。游戏解析性能低下。在官方发布正式版本之前,不推荐!
通过spine官方的GitHub入口,能找到spine-lua的依赖库。这是基于lua实现的。
需要让哒拉拉下载。
下载后需要让其解压。依赖库,拿到后,哒拉拉会提示你需要在项目中实现渲染层渲染。
参考图一。渲染层首先获取json骨骼内容,绘制出顶点信息。第二部根据顶点信息绘制骨骼图集信息,参考图二。
很好到这里已经能成功加载spine素材了。
下面开始讲解基于lua的优化方案
方案一,原生nvg直出spine,就是前面讲解的原生态直出。性能支持5-15个spine实例
方案二,批量可同步动作的情况,使用离屏方案统一绘制,绘制一份实例,同步到每一个出现的spine场景。性能消耗,由于多个spine用的一个实例,几百个重复spine性能开销 近乎=1个。
方案三,调用3d的api,借用3d的批量计算,即为合批计算提交GPU。此方案,实际情况并不理想。不清楚是否是,3d性能本事不行。我的想法是3d,绘制接口走的GPU应该能提升物理计算的效率。你们可以继续尝试一下。
方案四,借用临时table缓存骨骼顶点数据,将每帧绘制需要计算的内容,使用缓存一次拿到。避免重复计算。实际情况非常好。能提升100个不同spine动画实例且不同动作,fps大概在10左右。
方案五,上述内容的通病,lua非c或c++实现,导致lua本身能提供的加速非常尴尬。那么为了避免每帧的高度计算量,可以使用不同spine使用隔帧方案,提升50%计算优化。且隔帧玩家无法察觉。
也可以使用降低spine动画的fps,画面实际会影响动画播放这个不推荐。
方案可重叠使用,不影响。按需操作。lua实现能发挥极限性能则需要靠大家了。最好是官方能尽快推出引擎自身适配。期待taptap制造越来越好




