前言
目前的游戏市场有很多种卡牌回合制手游,可能由于这种游戏不像MMO会占用玩家大量时间,所以也有着相当的受众群体,像笔者以前读书那会玩过的腾讯的《龙珠激斗》,《火影忍者ol》均属于此类。跟大部分类型的游戏相同的是,战斗也是卡牌游戏的核心模块,而游戏中所有培养系统,竞技场,抽卡系统,全服活动均是为了战斗服务。一个设计比较好的战斗系统无疑能吸引到更多玩家。
业务逻辑
这种游戏一般是双方战斗开始前先布置好自己的阵容,然后进入打斗。期间按照回合制打法进行战斗,由先手一方先出手,选取攻击对象进行攻击,然后由对方出手,依次反复直至战斗结束,最后进行战斗的结算。
实现
与一些需要操作的游戏不同的是,一般的卡牌回合制不需要玩家操作,战斗这块相对于其他游戏也比较简单,战斗其实对于服务端来说就是一瞬间就结束了,由服务端来进行战斗的模拟一回合一回合打斗计算,最后将战斗记录发送给客户端,由客户端进行解析并进行战斗的播放。由于我是服务端开发,所以这里只讨论服务端的实现。
代码架构设计
BattleScene类:作为战斗逻辑的核心类,也是后续开发中其他战斗类的基类,主要实现了一般战斗的战斗逻辑。
BattleEntity类:作为战斗实体类,实现了战斗实体的行为逻辑,也是后续如果想新增新类型实体类的基类。
BattleEntityManager类:作为战斗实体的管理类,主要负责存储战斗开始前初始化的战斗实体,并负责在战斗结束后将战斗实体的内存进行回收。