|

楼主 |
发表于 2006-10-22 20:04:00
|
显示全部楼层
Re:请教一下传统格斗游戏的AI设计思路
Thanks aear!
我设想一种可以方便添加招式的方法。
用一套程序来解决每个角色的AI而不是每个 角色配一套程序。然后根据level来决定攻击力的高低、防御几率的高低从而决定level所对应的难度。
每一个招式,不管它是哪个人物的,都具有招式自身的属性:
比如:
动作方式:(普通动作、元素攻击、气功、必杀)[curAtt.nMode]
动作时间:一个动作12帧,电脑可以知道玩家动作执行到8帧的时候是最好的还击时间[curAtt.nTime]
攻击距离:还包括攻击最小距离[curAtt.nMinDis]和攻击最大距离[curAtt.nMaxDis]
攻击高度:[curAtt.nHeight]
杀伤力:[curAtt.nDamage]
然后,不管玩家现在是什么角色,动或不动,电脑都能做相对反应。
电脑先检测自己和玩家之间的距离[curDis],
一个过程:
玩家使出下蹲重腿(扫堂腿?);
电脑接受到信息--
curAtt.nMode=element元素攻击不带任何气功
curAtt.nTime=2 我这个动作结束的时候,玩家执行到第二帧了
curATT.nMaxDis= 200,最长的时候,玩家的腿伸出到它的坐标200单位外
curAtt.nHeight=20 ,嗯?这么低的高度,看来是下方攻击过来的
curAtt.nDamage=78, 晕,这么大攻击力,看来是非常狠的重招。
curAtt.nTime/curAtt.nMaxTime<一半,刚刚开始攻击的,目前难度是4,玩家前面已经干掉了3个人了,我不能傻呼呼被打,
curDis: 我目前跟玩家的距离是150单位,完全在攻击范围内
nLifePlayer=509: 玩家的血还有一半
我目前是怒的状态,最大攻击力只有499
nLifeCom=21, 我目前的血只有21,被玩家碰一下就完蛋了
result: 电脑蹲下去挡了一下。
如果此时电脑的血>curAtt.nDamage,并且玩家的血在电脑最大攻击力499之下,电脑会拼了命出必杀干掉玩家,几率由当前level决定。
而如果目前跟玩家的距离curDis超过了200,在攻击范围之外,电脑会随着level来random一下下一步要做的事情。越高的level电脑攻击模式越趋于变态。
这样的好处是每个角色添加新的招式或动作的时候,不需要很大改动程序,而只要给出新招式的属性,招式只是作为一个object存在
还未想的仔细,可行性也不知道。
P吧~ |
|