
2008年1月14日Alex J. Champandard查看已发布的标题的AI源代码是从渠道中学习技巧的好方法。这个新专栏可以帮助您学习各种游戏背后的代码例如上周的 FEAR SDK。Quake3雷神之锤3竞技场 是一个有趣的例子因为它是完全开源的工具除外这是一个世纪之交的AI引擎设计的一个很好的例子虽然严重代码中包含一个功能完善的DT 机器人AI写在普通的老C ^ ;当您了解语言的语法时这是非常容易的。除了一个简单的目标架构您还可以在区域意识系统AAS和 寻路解决方案也称为路由中找到一些坚实的技术。下载并安装源代码2005年Quake 3是开源的所以只要遵守GPL许可证中的条件您就可以自由下载代码库。但是如果要运行游戏则需要一些不包含的资源。您的第一个选择是转向Id Software的代码和资产从Id的FTP服务器下载完整的Quake 3 源代码。当前版本是1.32b它与最新的补丁一起使用。要获得游戏并运行所有必要的资源您可以使用完整版本的游戏。黄金版本是将这两款基于Q3的游戏捆绑在一起的好价值。您也可以根据您编译的引擎版本获得演示级别并运行。转到Id的下载页面获取演示文件并将您的可执行文件放在正确的目录中。或者您还可以转到社区的来源和资产从ioquake3下载源码ioquake3是独立mod场景后面的当前活动代码库。如果要进一步使用您会发现代码中的错误修复和改进。对于资产请转到OpenArena游戏。基于Quake 3引擎它将自己称为完全免费的游戏。您也可以从ioquake3的网站上找到更多的型号。一旦安装完成并且所有的文件都已解压缩你将有一个。\ code \目录 - 通常在你的游戏文件夹中。截图1在Quake 3中构成AI源代码的文件示例。了解代码库在游戏的基本目录中您会找到一个名为quake3.sln的Visual Studio解决方案文件。您可以使用免费版本的VS.NET 2008 Express。该游戏还建立在许多其他* nix平台上并具有标准Makefile。AI代码的大部分位于./botlib/目录中56个文件和大约1.1 Mb的代码。AI有自己的图书馆但主要解决方案包含在内。还有./game/文件夹中也有一些游戏特定的AI逻辑。在雷神之锤 3中有关AI的注意事项该代码是普通的ANSI C而不是C 。然而它是用相对结构化的方法编写的所以对于熟悉C风格语法的大多数面向对象的开发人员来说应该是可以访问的。其实呢代码看起来相对无噪音相比之下许多C 引擎呢引擎代码本身的架构已经成为一种标准的方法基本上是从客户端和服务器上分割游戏逻辑。但是这里特别有用的是整个引擎设计为支持机器人作为多人角色这需要良好的代码分层。来自Quake 3的AI可以追溯到当有一个专门的AI程序员是罕见的。这意味着您应该能够更容易地了解AI代码的结构而不是更现代化的引擎。对于这些文件有几件事要注意名为be_aas _ *的文件[hc]包含导航代码也称为区域 意识 系统。这占整个AI的50以上的代码行。单个文件be_ea.c提供了机器人可以执行的所有基本操作的包装器。然而这些动作的实现是在引擎本身完成的因为玩家执行与机器人相同的动作。文件be_ai *。[hc]包含AI逻辑本身但实现分为./code/botlib/和./code/game/目录。该支持库代码似乎是在指定的文件升_ * [HC] 这是整个引擎使用的约定。特别是您将找到用于序列化数据结构和从脚本加载简单设置的代码。截图2在Quake 3 Arena中 快速 Death 的动作。基本要点浏览代码时尤其要注意以下几个部分。区域意识系统Quake 3的机器人以其AAS导航系统而闻名。基本上分析了水平的结构用于提取可导航的空间例如可步行的表面游泳区域的体积。一个过程然后通过模拟它们中的每一个的 潜在运动 来分析 这些 区域 以 进行 连接然后将这些区域聚集在一起以允许分层路径寻找。缓存路由Quake 3使用AAS图中的一种寻路方式在be_aas_route。[hc]中它依赖于各个区域。在这些群集中预先计算 并存储 到常用目的地的路径供以后使用。基于堆栈的目标架构在文件be_ai_goal。[hc]中您将 发现 使用 堆栈 来 实现 动态目标。特别地每个目标 具有模糊激活值可以使用 遗传算法 来优化。该堆栈 用于 跟踪要做的事情这允许人工智能解决简单的谜题并轻松地优先考虑其行为。主要AI例程在系统的顶层有一个传统的状态机建立在基于目标的堆栈上。您将在文件名ai_dmq3。[hc]的项目的游戏部分找到此逻辑。当您习惯于面向对象的C 方法时令人惊奇的是一切都非常简单明了;有一个bot_state_t数据结构和一系列实现状态机的不同部分的全局函数。总而言之Quake 3 是 开发商 想要查看商业AI的好地方。这当然不是一个微不足道的实现但它可能很简单你可以制作一个全功能的AI引擎并在游戏中发货翻译可能有误 。保持关注以AiGameDev.com为雷神之锤3机器人的设计 进行更深入的分析。事实上有一个关于这个主题的整篇论文你可以在论坛的这个主题中找到需要注册和介绍。