博德之门3 怪物AI分析
本文作者:AI设计大师王梓铭
目录
1. AI设计方针
做到AI如真人般行动,AI之间能够相互配合、相互扶持,AI行为与角色本身形象匹配
2. AI设计0到1
2.1 准备工作
AI在开启他的回合时,需要“收集”那些信息作为行动的指导?
- 敌人在哪:寻找各个敌人的位置,要注意的是,为了让战斗更加拟真,AI是不会看到视角范围外的敌人,但是能听到视角范围外敌人的动作。如果听到敌人的动作,那么相当于AI知道敌人的方向,敌人在行动时就会尝试往敌人的方向移动。(当然如果怪物的有更高优先级的移动指令:比如要去拉响警报,或是逃跑,那么将不会如此执行。这部分是AI行为类型一节会展开讲的内容)
- 队友在哪:AI默认知晓所有队友的位置,这一点与玩家方式的信息是对等的。
- 我要去哪:与AI的行为类型有关,如果目标是击败敌人,则目标是敌人。如果目标是支援队友,则目标是某一个或多个队友。如果有其他的目标(警铃、开关、大门…)则目标变为此类。
- 我该干嘛、我怎么做:确定好本次行动的目标后,AI需要根据当前自身的状态,决定怎么做。**决定好怎么做后才判断需要怎么移动,而不是先移动再判断怎么做 ,这是让AI看起来更优秀、如真人般行动的最重要一点。**要讲清楚这件事情,就必须说说AI的“行动性价比”
2.2 AI的“行动性价比”
这里说下什么是“行动性价比”:指的是本回合,量化AI在本回合的所有行为所造成的影响之和。AI对所有的行为种类的影响大小进行判断,取最优秀的行为作为本回合的行为逻辑。
举个例子:AI是一个地精法师,他会3种法术:电弧、火球、奥术飞弹。对手只有一个人,且这个人站在油的地面上(油可以被火焰攻击、火焰法术点燃爆炸),AI的行动性价比是如此分析的:
- 电弧能造成4-8点伤害,需要移动10m(距离足够),命中率80%,命中后玩家回合会额外受到1-3点伤害
- 火球能造成3-6点伤害,击中玩家需要8m,击中油需要7m,油爆炸伤害固定为10,每回合持续燃烧2-4点伤害,持续3回合,命中玩家70%,命中油100%
- 奥术飞弹造成4*(1-5)伤害,击中玩家需要移动5m,命中率50%
AI有三种方式,那么根据判断,火球打油,让油爆炸会对敌人造成更多的伤害,奥术飞弹虽然伤害上限更高,但是命中率较低,性价比不高。
因此,在本例子中,怪物会选择移动7m,使用火球术攻击油,对敌人造成10点伤害。
再举个例子,还是上述的例子,但是在玩家的身旁有个地精战士,是地精法师的队友。如果点燃油,队友也会受到爆炸伤害。那么此时地精法师会怎么做?他会移动5m,释放奥术飞弹。因为此时,点燃油爆炸的行为性价比降低了,不利于战斗的大局。
但是值得注意的是,AI不需要像人类下围棋一样,当前回合想好后三回合、五回合的行为如此这般地顾全大局。设计师可以这么做,但这可能会带来糟糕的体验:你的玩家们很可能没有AI聪明,看不懂他为什么本回合不这么做。所以目前,AI只需要想到有利于下回合的行为,以此作为本回合的行为指导就足够了。
2.3 设计AI行为类型
在博德之门3这款游戏里,怪物的AI行为分为局外AI和局内AI:
局外AI:非战斗场景时的AI行为,通常为巡逻,待命,守卫,放松等常规行为。
局内AI:战斗场景里的AI行为,分为侵略(目标为击杀敌人),支援(为队友提供增益为最优先),任务(执行角色被赋予的任务为最优先)