level 1
三国志英杰传,看到玩家20+99级的玩法,我非常不解:难道电脑恶意放水,导致游戏太简单,而被玩家暴虐?
于是我尝试设计AI算法,目标是让玩家打不过第一关。
开发这个AI后发现草帅了。早就应该知道,战棋游戏AI没那么简单。
状态数量是多少呢? 假设我方队伍人数为A,敌方为B, 那么来回一个回合,由于行动次序是自由的,每个棋子有10-40种走法。骑兵在平原上有40+走法。
所以状态数为 A!*B!*40^(A+B) -- n!为阶乘,比指数更可怕的增长率。所以要考虑行动先后的搜索一般都难。
不可能穷举,穷举一点边都不行。
所以最后做了一个单方秒杀的穷举(7个单位,秒杀敌方3个单位,10秒以内)。其他方面还是用专家规则。看几步还是想多了。
一些事实
1。华雄和李肃可以秒掉关羽或张飞
如果用张飞做诱饵,引出华雄,让关羽单挑...
2。况且还有其他步兵,只要团住,不主动出击。甚至保持队形,大军压上。也能取胜。
3。这样玩家胜是无聊。AI如果有一些不知所为的行动,也能给人带来一些乐趣。
结论: 看上去弱智的战棋游戏数学上难度等同于象棋类游戏。
让人类过不了第一关还是可以的(这个版本不接受单挑,避开关羽单挑华雄算法上再要复杂一点,但是兵力在那边,第一关还是能守住的)。
2022年08月02日 05点08分