上一次讲了坦克大战的移动和转向的思路,这次来给大家简单讲一下AI的设计思路。

大家在FC上玩坦克大战的时候有没有觉得敌人的战术毫无根据,几乎可以说是随机移动和攻击。所以就算地方坦克数量很多,移动速度很快,防御又高,但还是一直被玩家虐。

 

1、快速攻击大本营的思路

主要策略就是,出生后寻找最短路径(包括攻击砖块制造一条路径),直接抵达玩家的大本营并攻击之。

本人数据结构水平有限,对于这种找最短路的算法,经常用的是广度优先搜索算法,当然大家也可以用更有效的方法来找这条最短路径,其实结果是一样的,只是好的算法时间和空间复杂度更低点。具体的实现我不谈,实现之后的结果会是这样,同一地点的坦克(假设是同一类型的坦克)刚出生就会都走同一条路,为什么要强调同一类型?因为有的高攻击的坦克,打砖块制造道路会更快到达目的地。所以同一类型的坦克走的都是同一条道路,那么玩家很容易就有办法克制,就是打通一条道路,使得很多坦克从这条路走都能够最快达到玩家大本营,那么玩家只要在路口守着就能瓮中之鳖了。

 

2、攻击玩家坦克

这个思路跟上面那个有点不一样,移动的算法可以适当灵活调整,但主要思路是,尽量不要与玩家坦克面对面攻击,这样的AI显然太过鲁莽。防御高的坦克优先与玩家对射,速度高的坦克优先要绕道到玩家侧面或身后,偷袭之。毕竟电脑是以多打少,玩家只有一辆坦克,如果电脑的AI智力稍微高一点,那么围攻玩家应该还是很容易的。但是玩家也是有一些优势的,比如用定时,用炸弹等道具,针对道具这种情况,AI就需要提供一些战斗力来保护道具啦,像炸弹这种清场的道具更是拼了命也要保住。

坦克大战设计(二)——AI的进攻策略

这两个策略结合起来的效果应该会比较不错,当然算法不能这么死,需要适当优化,可以考虑加入一些变异因子,用来适当调整坦克的行动,比如选择非最短路径的几率,选择对射的几率,选择绕道偷袭的几率,对于环境的不同,坦克种类的不同,出生点不同,这些参数都需要不断的调整,但玩家自己很难调整好这个参数,因为周围环境因素不定,所以需要坦克不断学习,不断改变参数,这样才能适应战场,打出比较灵活的战术。