一个格斗游戏引擎的设想

  一直想做一个格斗游戏,但是有很多技术细节不清楚。现在接触as有些时间了,对mapdemo也有了些了解,拳皇也被虐腻了,终于有了些想法,我想应该可以开始尝试了 ^ ^,所以用这一帖来和大家一起商量一下,一个格斗游戏的引擎该怎么设计,引擎好了,做一个格斗游戏自然就不成问题了。
  下面来说说我的看法。部分设想是从mapdemo的源码中得来的。
1、设想
  格斗游戏需要选择人物,人物的资料差别在于每个人物使用的图像不同,但是人物之间也有很多共同点。比如 :动作状态、动画切换速度、XY坐标、高度标记、移动速度、动画队列、输入判定、防御极限(用于判断破防)、是否破绽(用于判断受到伤害时是否有加成)、命中判定等。
  每个人物需要一张完整的像素图,像素图包含了所有的动作动画,还需要一个配置文件,保存了人物的所有出招按键序列,招式高度标记,攻击帧、防御帧、无敌帧,攻击帧还包含这帧的攻击范围、攻击力,力度(用于计算攻击成功后的反弹距离)、强度(破防点)、级别(用于标识招式的级别)、招式类型(拳脚/投技/必杀技/自动连续技)等。

2、实现构想
  动画切割类:通过mapDemo中的人物类,可以发现其中有个切图用的类,里面包含了如何把一张图片切割成动画序列的方法,改进一下,让它可以根据外部的配置,切割出我们想要的各组动画序列,保存到一个动画管理用的类或变量里面,以备打斗时播放。
  动画控制类:有切割动画用的类,就需要有负责播放动画的类,包括动画切换速度、人物移动及人物移动速度、人物对象的左右转向、人物对象的各种动作切换、人物攻击/被攻击/防御时添加到场景的特效、场景切换/震动/移动、蓄气槽/血槽相关动画等。
  数据判定类,包括输入判定、伤害判定、人物状态和数据变化的设置等,它会和动画类紧密配合,完成格斗中的打斗流程。
  人物类,保存动画切割类切割好的所有动作序列,根据动画控制类发送的各种通知控制人物中各种动画的播放和变换,动画控制类中的通知是由数据判定类触发的,控制流向大致为:数据判定类<—>动画控制类—>人物类。
  游戏流程控制类:用于控制整个游戏的流程:开始—>选择人物—>格斗<—>选择人物—>结束。包含设置游戏参数等流程。

3、细分
  动作状态:0 正常、1 出招(播放招式动画)、2 收招(不接受输入)、3 无敌(躲避、放必杀、炸星瞬间、开场pose)、4 被打(播放对应的人物被打动画)、5 晕厥(晕厥点达到后进入此状态)、6 破防(达到防御极限后进入此状态)、7 连击(对方处于破防、破绽状态时我方会进入此状态)、8 破绽(出招未中,被对手反击进入此状态)、9 倒地,接受输入时启动输入判定并计时,在判定计时完成前每次按下按键都启动按键计时,超过按键计时后就把收集到的按键序列与招式表对比,发现吻合的,就通知人物类对象播放正确的动画,否则就继续格斗流程。
  接受输入的状态包括:0 正常、1 出招(出现短暂输入判定计时的时候)、3 无敌、7 连击。
  不接受输入的状态包括:2 收招、4 被打、5 晕厥、6 破防、8 破绽、9 倒地。

  高度标记:0 蹲下、1 站立、3 低空、4 高空。招式中也有高度标记,用来标识这个招式的高度类型,如“下+脚”的高度标记为0,属于蹲下的高度。

  动画队列:用于实现连技,如果当前动画未播放完,此动画是重拳、轻拳等在命中对手后能启动短暂的输入判定计时的招式,则在此输入判定计时结束前,能完成一个正确的招式输入,则刚完成输入的招式的动画索引会存入队列中,等播放完当前动画,就会继续播放已加入队列的那个招式动画,直到队列为空时为止。连技结束。
  
  以上是目前想到的构思,也是个人的观察和思考的结果,很不全面,有很多不到位的地方,如果大家有新想法或修改意见欢迎跟帖讨论,会在整理中逐步融合进来,争取得到一个能满足开发条件的构思出来。

一些想法的实验:
格斗按键输入:[url]http://www.eb163.com/club/thread-16702-1-1.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值