游戏人工智能编程案例精粹

分類: 图书,计算机/网络,图形图像 多媒体,游戏开发/多媒体/课件设计,
作者: (美)巴克兰德著,罗岱等译
出 版 社: 人民邮电出版社
出版时间: 2008-6-1字数: 588000版次: 1页数: 368印刷时间: 2008/06/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787115178060包装: 平装内容简介
本书主要讲述如何使游戏中的角色具有智能的技术。书中首先介绍游戏角色的基本属性(包括速度、质量等物理属性)及常用数学方法。接着,深入探讨游戏智能体状态机的实现。通过简单足球游戏实例,本书给出用状态机实现游戏AI的例子。在图论部分,本书详细介绍图在游戏中的用途及各种不同的图搜索算法,并用一章的篇幅讨论了游戏中路径规划是如何完成的。此外,本书还对目标驱动的智能体的实现、触发器与模糊逻辑在游戏中的运用进行了讨论。为使智能体行为更加丰富、灵活、易于实现,本书还介绍了游戏脚本语言的优点,并以Lua脚本语言为例进行了说明。本书适合对游戏AI开发感兴趣的爱好者和游戏AI开发人员阅读和参考。
目录
第1章数学和物理学初探
1.1数学
1.2物理学
1.3总结
第2章状态驱动智能体设计
2.1什么是有限状态机
2.2有限状态机的实现
2.3West World项目
2.4使State基类可重用
2.5全局状态和状态翻转(State Blip)
2.6创建一个StateMachine类
2.7引入Elsa
2.8为你的FSM增加消息功能
第3章如何创建自治的可移动游戏智能体
3.1什么是自治智能体
3.2交通工具模型
3.3更新交通工具物理属性
3.4操控行为
3.5组行为(Group Behaviors)
3.6组合操控行为(Combining Steering Behaviors)
3.7确保无重叠
3.8应对大量交通工具:空间划分
3.9平滑
第4章体育模拟(简单足球)
4.1简单足球的环境和规则
4.2设计AI
4.3使用估算和假设
4.4总结
第5章图的秘密生命
5.1图
5.2实现一个图类
5.3图搜索算法
5.4总结
第6章用脚本,还是不用?这是一个问题
6.1什么是脚本语言
6.2脚本语言能为你做些什么
6.3在Lua中编写脚本
6.4创建一个脚本化的有限状态自动机
6.5有用的链接
6.6并不是一切都这么美妙
6.7总结
第7章概览《掠夺者》游戏
7.1关于这个游戏
7.2游戏体系结构概述
7.3触发器
7.4AI设计的考虑
7.5实现AI
7.6总结
第8章实用路径规划
8.1构建导航图
8.2《掠夺者》游戏导航图
8.3创建路径规划类
8.4节点式路径或边式路径
8.5走出困境状态
8.6总结
第9章目标驱动智能体行为
9.1勇士埃里克的归来
9.2实现
9.3《掠夺者》角色所使用的目标例子
9.4目标仲裁
9.5扩展
9.6总结
第10章模糊逻辑
10.1普通集合
10.2模糊集合
10.3模糊语言变量
10.4模糊规则
10.5从理论到应用:给一个模糊逻辑模块编码
10.6《掠夺者》中是如何使用模糊逻辑类的
10.7库博方法
10.8总结
拔
附录AC++模板
函数模板
类模板
连接器的困惑
附录BUML类图
类名、属性和操作
属性和操作的可见性
关系
批注
总结
附录C设置你的开发环境
下载演示的可执行程序
下载并安装源代码
参考文献
媒体评论
“本书不仅是一本适合游戏编程初学者的入门教材,对于高级程序员或专家也是一个不错的选择(复习一下学过的知识,没有什么坏处,不是么?)。本书简洁明了,内容几乎覆盖AI方面所有重要学科,从基础数学和物理到图论年和Lua脚本编写,再到为程序员们创建一些极为精妙的代理行为所需的工具,等等。本书在软件工程方面的内容同样也值得借鉴。演示游戏在代码实例中使用了我们极为熟悉的设计模式。我要将此书推荐给所有游戏程序员。这是一本很值得一读的书,它传播着奇思妙想!”
——Chris Keegan
英国Climax Studios公司技术总监,《恶灵骑士》开发者之一
“本书的问世,为许多难题提供了权威的专业解决方案,比如移动和朝向问题。Mat引导读者为真实的游戏构建坚实的基石。本书对于初涉AI领域的人来说是必备之选,对于经验丰富的专家,书中也提供了很多技巧。我要是在8年前就能读到这本书就好了。”
——Jeff Orkin
英国Monolith Productions公司AI架构师,《无人永生2》、《恐惧》开发者之一
“……将许多真正有用的信息以一种让我不感到头昏的方式美妙地组合在了一起。”
——Gareth Lewis
英国Lionhead Studios公司项目主管,《黑与自2》开发者之一
“本书的每个章节都是由浅入深地介绍一项游戏人工智能技术,并围绕该技术给出太量的代码和文字实例。本书通俗易懂,通过将理论知识应用于自己的系统开发,或者通过扩展并理解某环境下的代码实例,你可以加深对游戏人工智能编程的理解。本书把每个独立的技术点组合在一起,形成各种各样的完整游戏环境。在这些环境下,你可以很好地理解一个庞大的游戏架构下的各个互动系统之间的关系。”
——Mike Ducker
英国Lionhead Studios公司AI架构师,《神鬼寓言》开发者之一
“通过一些容易模仿且描述得很好的实例,Mat向我们展示了如何使用大部分只有专业AI程序员才会使用的技术。对于初学者来说,这正是一本很棒的导论;而如果你是经验丰富的程序员,它同样也是一本极佳的参考手册。
——Eric Martel
法国育碧游戏公司AI程序师,《孤岛惊魂》(XBox)开发者之一
书摘插图
第1章数学和物理学初探
1.1数学
们将从数学开始,因为没有数学知识就学习物理学就如同没有翅膀却要学习飞翔一样。
1.1.1笛卡尔坐标系
你可能对笛卡尔坐标系统已经非常熟悉了。如果你曾经写过可以在屏幕上画图像的程序,那么你肯定必然使用过笛卡尔坐标系统来描述构成图像的点、线、位图的位置。
在二维空间中,笛卡尔坐标系被定义成两个坐标轴成直角相交并且用单位长度标出。水平轴称为X轴,而垂直轴称为Y轴,两个轴的交点称为原点,如图1.1所示。
如图1.1所示,每个坐标轴端点的箭头表示它们在每个方向上无限延伸。假想有一张无限大的纸,上面有X轴和Y轴,纸就表示xy平面,所有二维的笛卡尔坐标系中的点都可以绘制在这个平面上。在2D空间中的一个点可以用一对坐标(xy)表示。x和Y的值代表沿着各自的轴上的距离。如今,绘制在笛卡尔坐标系中的一系列的点或线常常作为一个图形,这样肯定会节省很多键入的工作量。
1.1.2函数和方程
函数的概念是数学的基础。函数表达了两个(或更多个)称为变量的项之间的关系,并且典型的写法是方程的形式(一个代数表达式等于另一个代数表达式)。正如名字所示,之所以称为变量是因为它们的值是可以变化的。变量常常用字母表中的字母表达。你将看到数学公式中应用最普通的两个变量是X和Y(虽然任何字母或符号也是可以的)。
如果X的每个值都可以与Y的一个值相关联,那么Y就是一个关于x的函数。Y称作因变量因为它的值依赖于X的值。
……
