为了在第一人称射击(FPS)游戏中显示智能行为,人工智能(AI)控制的角色需要有对环境的空间和时间意识。在游戏过程中获得这种意识的实时环境采样在当今的高细节游戏中特别昂贵。

此外,在PC游戏领域仍然非常普遍的单CPU /核心系统中,仅为AI分配了一小部分CPU空间。因此,需要尽可能多地使用预先计算的数据结构,以便AI快速分析环境并做出明智的决策。 

id Software的新游戏,Enemy Territory QUAKE Wars由革命性的id Tech 4游戏引擎提供动力,该引擎具有一个系统,允许人工玩家(又称机器人)快速获得所需的空间和时间意识,以便在游戏中表现良好。

在该系统的预先计算阶段期间,以一个或多个双流形三角形网格的形式计算配置空间(C空间)的边界表示(b-rep)。这是一个复杂且耗时的过程,其中对数百万个三角形执行几何运算。

为了显着加快这一过程,工作分为许多独立的小块,通过IncrediBuild的分布式构建技术的Xoreax Grid Engine(XGE)可以利用最大的并行性。计算机游戏中人工智能的预先计算是XGE在缩短编译时间方面非常有效的一个领域,因此可以减少开发过程中的周转时间。

人工智能预计算

空间和时间意识都是在FPS游戏中表现良好的关键。 人类大脑非常善于识别和预测,人类玩家利用这些技能快速了解FPS游戏中的环境。在玩FPS游戏之后,人们可以轻松地识别他们在环境中的位置,并快速预测将要发生的事情,这使他们能够决定去哪里以及他们需要做什么。

在任何给定时间,用于FPS游戏的人工智能(AI)控制角色还需要能够快速获得所需的空间和时间意识,以便做出关于去哪里和需要做什么的智能决策。

尽管多核系统正在迅速占领PC游戏领域,但仍然存在大量单CPU /核心系统。在这些系统上,为AI分配的CPU时间通常仍然不超过10%。与此同时,游戏环境变得更加复杂和动态。多年来,环境的多边形复杂性显着增加,在今天的游戏中,有许多动态对象通过复杂的实时物理模拟在环境中移动。

为了在尽可能少地使用CPU时处理这种增加的复杂性,预先计算可以预先计算的AI的内容是关键。需要考虑在环境中不变和静态的所有事物进行预先计算,以生成数据结构,使AI控制的角色更容易理解其在环境中的位置和状况。

此外,重要的是预先计算数据结构,以便更快地实时处理动态对象。

可以通过编程或手动将AI的“预先计算的”数据添加到游戏中。人工智能的某些提示似乎很容易被关卡设计师放置在一个关卡中,例如航点,路径,露营地,封面位置等。

但是,放置最佳航点并创建良好路径,以便AI可以轻松到达所有位置在一个级别是一个非平凡的任务。此外,随着策略变得越来越复杂,需要将提示放在一个级别中。关卡设计师通常需要手动放置大量提示以覆盖整个环境。

在提出提示之前,关卡设计师需要接受教育,这些提示需要花费时间。关卡设计师也会犯错误,特别是当需要放置的提示很复杂和/或没有很好地定义最佳放置时。手动放置的航路点,路径和提示需要连续测试以捕获任何错误,并且通常确保AI能够按预期使用提示。

为AI提供所需信息的算法解决方案最初可能由于实现中的错误而出现问题。 但是,当修复错误时,它通常不会返回,而使用手动解决方案,可以在开发期间的任何时候引入人为错误。

算法解决方案可实现可扩展性,可重复性和一致性, 此外,缩放更便宜。 招聘,教育和雇用另一个级别的设计师是昂贵的。 算法解决方案最初可能需要一些程序员的时间,但最终要便宜得多,因为通过简单地使用更多计算能力可以在更短的时间内编译更多等级。

区域意识系统

Enemy Territory QUAKE Wars(ETQW)中的机器人使用区域感知系统(AAS)来理解,导航并快速了解环境。在离线编译过程中,该区域系统自动从级别几何中导出。 AAS编译过程的第一步涉及构造配置空间(C-Space)的边界表示(b-rep)。

C-Space的b-rep由一个或多个双流形网格组成,描述世界几何的Minkowsky和以及机器人(或玩家)所在的边界体积。在下一步中,AAS编译器识别C-Space的b-rep上的可行走表面。可行走的表面被细分为最少数量的可行走区域,使得机器人或玩家可以在区域中的任何两个点之间以直线移动。

这需要大量的过滤,以忽略不应被视为玩家导航障碍的小细节。接下来计算所谓的“可达性”,其指定机器人如何从一个区域导航到另一个区域。

AAS实现了分层路由系统,以实时查找环境中的路由。该系统包括缓存路由的缓存管理器,因此避免频繁重新计算路由。路由系统的分层特性使得计算路由非常快并且最小化高速缓存大小。

一旦计算出路线,就会使用路径优化器绘制沿路径穿过环境的直线和弯曲路径。路径优化器沿着地板追踪以测试AI是否可以走到某个点或沿某个方向行走。

这些地板轨迹非常快,因为AAS过滤掉了所有小的细节,这些细节不是玩家导航的障碍,而是通过常规的碰撞检测查询返回。一旦计算出优化路径,就使用系统来计算动态障碍物的任意复杂配置周围的路径。

如果路上有动态障碍物,该系统会修改优化路径。在计算新路径时,避障系统还考虑环境的静态边界以防止AI进入静态世界几何体。 AAS设置为快速提供所有当地世界的边界,如墙壁和壁架,在避开障碍物时需要考虑这些边界。

人工智能需要做的最基本和最基本的事情之一就是要了解它在环境中的当前位置并了解周围的环境。 用于AI的许多其他系统使用时空一致性,其中对AI的当前位置的理解源自先前已知的位置。 

然而,在高度动态的游戏环境中,可能发生不能总是预期的事件,并且AI可能最终位于远离任何先前已知位置的位置。 例如,人工智能可能已经走近靠近窗台并被推开,爆炸可能导致人工智能飞行,或人工智能被车辆拖着等等。了解当前环境中的位置(例如 在今天的高细节游戏环境中,通过定期环境采样而不知道先前的位置,通过寻找最近的航路点是非常昂贵的。

AAS允许AI随时了解其在世界上的当前位置,仅计算10到20个点产品,而无需缓存先前已知的位置。 当AI知道其当前位置时,系统会立即提供AI所需的大量信息,以便明智地决定去哪里和需要做什么。 然后,系统允许AI快速执行其他查询以收集所需的任何其他信息,例如路线,路径,行程时间和环境的其他属性。

网格计算

C-Space的b-rep的构建是AAS编译过程中最昂贵的步骤。由于多种原因,AAS编译器被设置为将计算C-Space的b-rep所涉及的工作划分为许多独立的较小块。几何处理中涉及的数学运算并不复杂。

然而,通常难以预测几何处理的算法需要涵盖的所有不同情况。即使算法涵盖所有情况并且理论上完美无缺,但由于浮点舍入,算法可能无法产生期望的结果。用于几何处理的算法的实现通常涉及许多代码行来处理和处理浮点舍入。

为了避免大量浮点舍入误差并使舍入误差的处理更容易,使用明确定义的浮点值范围处理以原点为中心的较小块中的几何体是有用的。当工作被分成更小的块时,在算法开发期间分析和调试问题也更容易。可以快速重新计算小块并将问题定位,并且可以与几何的其余部分隔离进行分析。

由于工作已经分成许多独立的小块,因此可以通过使用网格计算解决方案轻松加快C-Space的b-rep的构建。IncrediBuild的分布式构建技术的Xoreax Grid Engine(XGE)对于网格计算解决方案而言非常宝贵,因为它涉及最小的集成时间并且非常易于使用。 XGE虚拟化文件系统并自动分发工作,包括执行工作所需的可执行文件。

换句话说,可以在本地修改级别几何,并且可以在本地重新编译可执行文件,而无需手动将工作和可执行文件重新分发到许多计算机。为了通过XGE获得最佳性能,需要一个精简,平均且负载非常快的可执行文件。

幸运的是,很容易将当前任务的绝对必要的源代码拆分为Win32控制台应用程序。排队XGE任务有三个接口,其中一个是XML接口。创建一个简单的XML文件,列出用于处理工作的工作和可执行文件。然后可以将XGE xgConsole.exe命令行应用程序生成为管道进程,以便可以将控制台输出重定向到游戏应用程序或等级编辑器。

结果

已经实施并测试了几种利用并行性来构造C空间的b-rep的不同方法。该算法通常首先在单线程应用程序中实现。 正常的拓展方向是使用多个线程,但它不是。而是一个选项,可以生成多个进程,其中每个进程都可以完成部分工作。 这与XGE非常相似,只是使用了一台计算机。 下一步显然是使用XGE并在许多计算机上分配工作。

单线程方法在具有两个Intel 2.8 GHz双核Xeon CPU的系统上使用一个核心(禁用超线程的“Paxville”90nm NetBurst微体系结构)。多线程方法使用四个线程,其中每个线程消耗同一系统上的四个核心之一。多进程方法使用四个进程,其中每个进程也在同一系统上使用四个核中的一个。 

Xoreax Grid Engine方法使用14台计算机的网络,在27个核心中共78.6 GHz,其中9个核心基于英特尔NetBurst微体系结构,18个核心基于英特尔酷睿2微体系结构。 计算机都参与1 Gb网络,因此由于高速网络基础设施和小文件大小,网络开销最小。

尽管启动新流程涉及一些开销,但使用多个流程比多线程更快。线程不使用自己独立的内存池,因此存在内存争用。这使多线程解决方案陷入困境,而多进程解决方案中的每个进程都有自己的地址空间。 XGE解决方案与可用的CPU /核心数量呈线性关系。

在上面的示例中,与单线程相比,XGE甚至比可用的GHz线性扩展,因为基于Core 2架构的内核比Paxville内核更快。

展望

随着可用CPU功率快速增加而内存和IO带宽不以相同速率增加,压缩变得越来越重要。 将使用越来越多的CPU功率来降低存储和带宽要求。从网格计算的角度来看,非对称压缩特别有趣,其中游戏过程中的实时解压缩非常快,而离线压缩可能在计算上非常昂贵,以便在最高压缩比下获得最佳质量。 

网格计算非常适合这种离线压缩。XGE对声音压缩和纹理压缩特别有用。通常有许多声音和纹理,在大声音和大纹理的情况下,它们可以细分为许多较小的块,以允许通过XGE利用大规模并行性。

关于ID SOFTWARE

id - 由弗洛伊德定义为人类心灵的原始部分;id Software位于德克萨斯州梅斯基特,成立于1991年。从成立到现在,id Software作为独立游戏开发商和技术提供商,不断提供技术,设计和艺术领导力。 

超越游戏产业,像Wolfenstein,DOOM,QUAKE和Enemy Territory等id的标志性品牌已成为几代游戏玩家的流行文化的主要内容。