Python AI游戏编程入门:基于Pygame和PyTorch
上QQ阅读APP看书,第一时间看更新

1.4.4 游戏AI

AI能给予游戏更多的乐趣。从工程角度来看,游戏AI并不是越复杂越好,而是能满足游戏的需要。AI领域有一个黄金原则——搜索和知识是相互关联的,当你拥有更多的知识,你就需要更少的搜索;当你拥有更少的知识,你就需要更多的搜索。一个职业围棋选手拥有相当丰富的对弈知识,通常只需针对几个落子选项进行少量的计算。而初版的AlphaGo,在没有足够丰富的对弈知识的背景下,只能反复在海量选项中进行最优落子方案的搜索。

最早的《吃豆人》游戏中,有4个追逐玩家的幽灵角色,其AI设置相当简单。它们追逐玩家的路线都是通过硬编码的规则确定好的,有的是直接追逐玩家,有的是占领某个交通要道,有的是随机选择某条通道。这套游戏AI编写得很简单,但整体的配合却让玩家感觉很智能,因为简单的规则中包含相当丰富的游戏对抗的知识。因此,需要视情况采用复杂程度不同的游戏AI。有时候,简单的随机方法或者贪心算法就可以模拟出一个不错的NPC。

本书将主要介绍游戏中会用到的3种AI算法,分别是深度强化学习、遗传算法和蒙特卡罗树搜索。深度强化学习(deep reinforcement learning)是深度学习与强化学习相结合的产物,它集成了深度学习在函数拟合上的强大能力,以及强化学习基于环境反馈进行试错和决策的能力。深度强化学习可用来解决现实场景中的复杂问题。遗传算法(genetic algorithm)是计算数学中用于解决最优化问题的搜索算法,是进化算法的一种。进化算法是借鉴进化生物学中的一些原理而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。蒙特卡罗树搜索(Monte Carlo tree search)是一种用于决策过程的启发式搜索算法,它最引人注目的使用场景之一是被用在AlphaGo中。它也用于其他棋牌类等即时电子游戏和不确定性游戏。