前 言
2017年5月,在中国乌镇围棋峰会上,由谷歌(Google)旗下DeepMind公司戴密斯·哈萨比斯领衔的团队开发的围棋AI(Artificial Intelligence,人工智能)程序AlphaGo与当时世界排名第一的中国棋手柯洁对战,并以3比0的总比分完胜。至此,围棋AI的棋力超越人类围棋的最高水平成为不争的事实。
实际上,AI创造的辉煌并不是从那一天开始的。1997年,IBM的深蓝计算机首次战胜国际象棋棋王卡斯帕罗夫也同样成为佳话。2014年10月,浪潮天梭击败了5位中国象棋特级大师。从那时起,普通玩家使用家用个人计算机,通过象棋软件击败国家特级大师已不是什么新鲜事,目前的中国象棋第一人王天一就经常在与普通“棋友”的直播对弈中折戟沉沙。
象棋游戏AI的设计依赖于极小极大化算法、AB修剪、负值侦察、置换表和开局库等技术,本书第8章对此有详细介绍。象棋很早就被计算机AI攻克,因为它的变化相对围棋而言较少,并且有大量的棋谱可用,而围棋的状态空间复杂度是10172,博弈树复杂度是10300,曾经被认为是计算机AI无法翻越的高山。但是,凭借着机器学习和神经网络的利器,计算机AI实现了历史性的突破。本书第7章介绍了机器学习技术。
除了在棋盘游戏中发威,AI技术在其他类型的游戏中也给玩家留下了深刻的印象,例如,有限状态机、路径发现(这是“寻路术”技术的代名词,本书第3章有详细介绍)、转向行为、自动编队、行为树决策、模糊逻辑决策、航点和战术分析等。这些技术都关联着大量算法,本书对这些算法都进行了详细的分析,并提供了伪代码(方便开发人员在不同的编程语言中实现)、实现说明和性能分析等。
此外,本书还提供了许多技术和算法在游戏中的应用思路,包括在游戏中实现AI的中间件思想、执行管理和调度方法、游戏世界的表示方式和接口、工具链创建和脚本的开发、各种游戏类型及其AI实现技巧等。这些内容可以为开发人员实现自己的游戏AI提供很好的启发。
为了更好地帮助读者理解和学习,本书以中英文对照的形式保留了大量的术语,这样的安排不但方便读者理解书中的伪代码,而且有助于读者查找和利用网络资源。