在SLG项目五年有一些战斗系统的经验总结,分享一下。只是作为QA的观点。
只做参考,不做建议。xiang
目前经历的项目,战斗分为数值与交互
数值部分包括英雄、技能、buff
交互部分包括pvp和pve
接下来我会分别讲一下这两部分的经验
数值与战斗框架
英雄是一个地基,作为战斗的实体,可以承接数值。比如属性、技能、装备、称号等。
技能是目前SLG战斗差异化的表现。
BUFF则是一个万能胶水,它可以粘盒技能也可以独立使用,可以对条件进行判断。甚至整个SLG所有的一切都可以用BUFF实现。
英雄框架
英雄作为SLG游戏的实体承载着数值部分和交互部分的中间体,在设计之处至关重要。
最重要的点有两个,扩展性、交互性。
扩展性就是在英雄这个实体(表格)上需要可以承载足够多的系统。
交互性就是不同系统数值、英雄以及pvp中的敌人的实体。
英雄主体:技能ID、装备BUFF、属性倍率等

技能框架
技能是在英雄的主要差异化,以及数值表现
我经历的项目的经历以及实现方式,基本都是技能主体+封装效果+索引buff
技能主体:技能描述、技能类型、技能CD、技能概率
封装效果:DOT伤害、直伤、添加BUFF、护盾、驱散、净化
索引BUFF:也就是对于buff,在不同阶段不同地方的索引
然后我接触的两个项目的技能框架略有不同,一个是较为简单的,一个是较为复杂的
简单的就是技能索引封装然后需要buff的在添加buff

复杂的就是率土like类型的技能执行会有多个阶段在不同阶段可以分别引用类型与buff。

BUFF框架
BUFF则是一个越简单约好的一个基础。但是实际上buff可能因为策划需求出现各种各样的问题。
首先BUFF:效果(封装)、叠加、持续时间、刷新等等参数对于不同游戏完全不同也和策划的设计思路有明显的强相关。
然后还有一个我在项目中遇到的问题,BUFF的重载问题。在SLG其实很多BUFF可能直接存在了DB,不回去大规模修改。而如果策划在上线后,再次修改BUFF就会导致玩家可能身上的新老BUFF完全不一样。而在初期可能还可以维护期脚本进行修改。但是如果玩家人数过多这种就是完全不可能成立的事情。当然这些在设计之初,设计框架的时候可以考虑到的。但是如果真的已经遇到这种问题。目前我经历的解决方式是对buff表进行版本号管理。即正常情况版本号一直不会触发重载,但是若某次维护,玩家登录时,版本号不一致则会触发重载重新按照功能加载一遍应该有的BUFF。
未完待续…