原文地址有待补充……
 

id软件

 

利用   并行化  来减少  AI(人工智能) 预算的  编译时间,缩短 周转 时间。

 

 

网格计算人工智能

 

 

2007年7月20日 - JMP van Waveren,id软件
 
 

抽象

 

为了在第一人称射击游戏(FPS)游戏中显示智能行为,

 

人工智能(AI)控制角色需要对环境的空间和时间意识。

 

在游戏中获取这种意识的实时环境抽样在今天的高细节游戏中特别昂贵。

 

此外,在单个CPU /核心系统上,这在PC游戏领域仍然很常见,

 

只有一小部分CPU时间分配给AI。

 

 

 

由于需要尽可能多地使用这些预先计算的数据结构,

 

以便AI能够快速分析环境并做出明智的决策。

 

 

 

Id的新标题,(应该是 新游戏 )深入敌方领土 QUAKE战争 由革命性的 ID Tech 4游戏引擎驱动,

 

该引擎具有允许人工玩家(也称为“ 机器人)快速 获得所需的空间和时间意识,

 

以便在  游戏中  表现良好。

 

 

在该系统的   预计算阶段,

 

以一个或多个两歧管三角形网格的 形式计算配置空间(C-Space)的边界表示(b-rep)。

 

这是一个复杂而耗时的过程,

 

其中对数百万个三角形执行几何运算。

 

 

 

 

 

 

为了显着加速这个过程, 整个 job 分为许多独立的较小块,

 

通过 IncrediBuild分布式构建技术的 Xoreax Grid Engine(XGE),

 

 

可以最大限度地实现并行化。

 

 

 

计算机游戏中 AI的预计是XGE在减少编译时间方面非常有效的方面,

 

 

因此在减少  开发过程中的转折时间。

 

 

 

在该系统的预计算阶段,

 

以一个或多个两歧管三角形网格的形式计算配置空间(C-Space)的 边界表示(b-rep)。

 

这是一个复杂而耗时的过程,

 

其中对数百万个三角形执行几何运算。

 

 

 

为了显着加速这个过程,

 

工作分为许多独立的较小块,

 

通过IncrediBuild分布式构建技术的Xoreax Grid Engine(XGE),

 

可以最大限度地实现并行化。

 

 

计算机游戏中AI的预计是XGE在减少编译时间方面非常有效的方面,

 

因此在减少开发过程中的转折时间。

 

 

 

在该系统的预计算阶段,

 

以一个或多个两歧管三角形网格的形式计算配置空间(C-Space)的边界表示(b-rep)。

 

 

这是一个复杂而耗时的过程,

 

其中对数百万个三角形执行几何运算。

 

 

为了显着加速这个过程,

 

工作分为许多独立的较小块,

 

 

通过IncrediBuild分布式构建技术的Xoreax Grid Engine(XGE),

 

可以最大限度地实现并行化。

 

 

计算机游戏中AI的预计是XGE在减少编译时间方面非常有效的方面,

 

因此在减少开发过程中的转折时间。

 

 

以一个或多个两歧管三角形网格的形式计算配置空间(C-Space)的边界表示(b-rep)。

 

 

 

这是一个复杂而耗时的过程,

 

其中对数百万个三角形执行几何运算。

 

为了显着加速这个过程,工作分为许多独立的较小块,

 

通过IncrediBuild分布式构建技术的Xoreax Grid Engine(XGE),

 

可以最大限度地实现并行化。

 

 

计算机游戏中AI的预计是XGE在减少编译时间方面非常有效的方面,

 

 

因此在减少开发过程中的转折时间。

 

 

以一个或多个两歧管三角形网格的形式计算配置空间(C-Space)的边界表示(b-rep)。

 

这是一个复杂而耗时的过程,

 

其中对数百万个三角形执行几何运算。

 

 

为了显着加速这个过程,工作分为许多独立的较小块,

 

 

通过IncrediBuild分布式构建技术的Xoreax Grid Engine(XGE),

 

 

可以最大限度地实现并行化。

 

 

计算机游戏中AI的预计是XGE在减少编译时间方面非常有效的方面,

 

 

因此在减少开发过程中的转折时间。

 

 

为了显着加速这个过程,

 

工作分为许多独立的较小块,

 

通过IncrediBuild分布式构建技术的Xoreax Grid Engine(XGE),

 

 

可以最大限度地实现并行化。

 

计算机游戏中AI的预计是XGE在减少编译时间方面非常有效的方面,

 

因此在减少开发过程中的转折时间。

 

为了显着加速这个过程,

 

工作分为许多独立的较小块,

 

通过IncrediBuild分布式构建技术的Xoreax Grid Engine(XGE),

 

可以最大限度地实现并行化。

 

计算机游戏中AI的预计是XGE在减少编译时间方面非常有效的方面,

 

因此在减少开发过程中的转折时间。

 

内容

 

AI的预计算

 

空间和时间意识都是在FPS游戏中表现良好的关键。

 

 

人类的大脑非常擅长识别和预测,

 

人类玩家利用这些技能可以快速了解FPS游戏中的环境。

 

 

在玩FPS游戏几次之后,人们很容易就认识到他们在环境中的位置,

 

并快速预测会发生什么,这样他们可以决定去哪里以及他们需要做什么。

 

在任何给定的时间,

 

FPS游戏的人工智能(AI)控制角色还需要能够快速获取对于要去哪里

 

以及需要做什么的明智决定所需的空间和时间意识。

 

 

 

尽管多核系统正在快速接管PC游戏领域,

 

但仍然存在大量单CPU /核心系统。

 

 

在这些系统上,分配给AI的CPU时间通常仍然不超过10%。

 

同时,游戏环境变得越来越复杂和动态。

 

 

多年来环境的多边形复杂性大大增加,

 

 

而在今天的游戏中,通过使用复杂的实时物理模拟,

 

 

还有更多的动态物体正在通过环境。

 

 

 

为了在尽可能少地使用CPU时处理这种增加的复杂性,

 

关键是预先计算可以预先计算的AI的任何内容。

 

 

一切都没有 需要考虑在环境中进行静态变化以进行预先计算,

 

以生成数据结构,使AI控制角色更容易地快速了解其在环境中的位置和情况。

 

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

 

AI的“预先计算”数据可以通过编程方式或手动方式添加到游戏中。

 

 

AI的某些提示似乎很容易被一个层次的设计师置于一个层次上,

 

例如路点,路径,营地,封面等等。

 

 

然而,放置最佳路点并创建良好的路径,

 

以便人工智能可以轻松到达所有位置在一个级别是一个不平凡的任务。

 

 

此外,随着战略变得越来越复杂,

 

 

所以提示需要放在一个层次上。

 

 

水平设计师通常需要手动放置大量提示来覆盖整个环境。

 

 

在设置提示之前,需要对级别的设计者进行教育,

 

 

以放置这些需要时间的提示。

 

 

一个级别的设计师也可能犯错误,

 

特别是当需要放置的提示是复杂的和/或最佳位置没有明确定义的时候。

 

 

 

为AI提供所需信息的算法解决方案  最初可能由于实现中的错误  而出现  问题。

 

 

然而,当一个错误被修复时,它通常不会回来,

 

 

而手动解决方案可能会在开发过程中随时引入人为错误。

 

 

算法解决方案导致可扩展性,重复性和一致性。

 

此外,缩放比较便宜。雇用,教育和雇用其他级别的设计师是昂贵的。

 

 

算法解决方案最初可能需要一些程序员时间,

 

 

但最终要便宜得多,

 

因为只需使用更多的计算能力,可以在更短的时间内编译更多的级别。

 

区域意识系统

 

敌方领土QUAKE战争(ETQW)中的机器人使用区域意识系统(AAS)来了解,

 

导航并快速了解环境。

 

 

在离线编译过程中,该区域系统自动从级别几何派生。

 

 

AAS编译过程的第一步涉及构造配置空间(C-Space)的边界表示(b-rep)。

 

 

C-Space的b-rep由一个或多个描述世界几何的Minkowsky

 

和和一个机器人(或玩家)所在的边界体积的两个歧管网格组成。

 

在下一步中,AAS编译器识别C-Space的b-rep上的步行曲面。

 

 

步行表面被细分为最少数量的可步行区域,

 

 

 

使得机器人或玩家可以在区域中的 任何 两个点  之间的  直线上  移动。

 

 

这需要大量的过滤,

 

以忽略不应被视为玩家导航障碍的小细节。

 

 

 

 

接下来,计算出   所谓的“可达性”,

 

指定机器人如何从一个 区域  导航到  另一个  区域。

 

 

AAS实现分层路由系统,实时查找环境中的路由。

 

 

该系统包括缓存管理器来缓存路由,因此避免频繁重新计算路由。

 

路由系统的层次性质使得计算路由非常快速并且使缓存大小最小化。

 

一旦计算了一条路径,

 

路径优化器就用于沿着路线绘制通过环境的直线和弯曲路径。

 

 

路径优化器沿着地面追踪,

 

以测试AI是否可以走到某一点或沿某个方向行走。

 

这些地板轨迹非常快,

 

因为AAS过滤出所有不是玩家导航障碍的小细节,

 

而是通过常规的碰撞检测查询返回。

 

一旦计算了优化的路径,

 

就可以使用一个系统来计算动态障碍物的任意复杂配置周围的路径。

 

如果存在动态障碍,该系统将修改优化的路径。

 

 

 

在计算新路径时,障碍物回避系统还考虑了环境的静态边界,

 

 

以保持AI不会进入静态世界几何。

 

AAS的设立是为了快速提供所有当地世界边界,

 

如墙壁和壁架,需要考虑到同时避免障碍。

 

在计算新路径时,障碍物回避系统还考虑了环境的静态边界,

 

 

以保持AI不会进入静态世界几何。

 

AAS的设立是为了快速提供所有当地世界边界,如墙壁和壁架,

 

 

需要考虑到同时避免障碍。

 

 

在计算新路径时,障碍物回避系统还考虑了环境的静态边界,

 

以保持AI不会进入静态世界几何。

 

 

AAS的设立是为了快速提供所有当地世界边界,

 

 

如墙壁和壁架,需要考虑到同时避免障碍。

 

人工智能需要做的最基本和最根本的事情之一就是意识到当前在环境中的位置,

 

并了解周围环境。

 

AI的许多其他系统使用空间 - 时间相干性,

 

其中理解AI的当前位置是从先前已知的位置导出的。

 

 

然而,在高度动态的游戏环境中,事件可能会发生,不能总是被预料到,

 

并且AI可能会在远离任何先前已知位置的位置结束。

 

例如,人工智能可能已经靠近台架走过并被推开,

 

爆炸可能会导致AI飞行,

 

或AI被车辆拖动等。

 

 

AAS允许AI随时了解其在世界上的当前位置,

 

计算只有10到20个点产品,

 

而不必缓存先前已知的位置。

 

 

当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-Space的b-rep的并行性的几种不同的方法。

 

 

该算法通常首先在单线程应用程序中实现。

 

 

自然的进步是使用多个线程。

 

 

而不是使用多个线程,也可以产生多个进程,

 

 

每个进程都执行部分工作。

 

 

这与XGE非常相似,

 

只是使用一台电脑。

 

 

下一个选项显然是使用XGE并将工作分布在  许多 计算机上。

 

已经使用这四种方法  编制 了几个ETQW级别,

 

并且已经测量了  编译时间。

 

 

使用的一些统计数据如下。

 

 

对于每个级别,列出了用于播放器碰撞检测的三角形数量。

 

 

 

此外,列出了 具有  几何的 块 的数量,

 

其中每个   块  都存储  在  单独的  文件  中。

 

下面列出了  磁盘  上所有   块文件 的   总大小,

 

 

列出了用于  描述C-Space的b-rep的三角形数量。

 

 

下面的图表显示了使用不同方法的级别的编译时间。

 

 

单线程方法在系统上使用两个Intel 2.8 GHz双核至强CPU

 

 

(“Paxville”90nm NetBurst微架构,禁用超线程)的 核心。

 

 

 

多线程方法使用四个线程,

 

每个线程消耗同一系统上的四个核心之一。

 

多进程方法使用四个进程,

 

 

每个进程也在同一系统上同时消耗四个内核之一。

 

 

Xoreax Grid Engine方法在27个核心中 使用14个 计算机  总共78.6 GHz的网络,

 

其中9个内核基于Intel NetBurst 微架构,

 

18个内核基于Intel Core 2微架构。

 

计算机都参与了1 Gb网络,

 

即使启动新流程涉及到一些开销,使用多个 进程  比  多线程  更快。

 

线程   不使用自己的  独立内存池,

 

 

因此存在   内存争用。这会使   多线程 解决方案  陷入 僵局,

 

 

而多进程解决方案中的每个进程都有自己的  地址空间。

 

 

XGE解决方案与可用的CPU /内核数量  呈  线性关系。

 

 

在上述示例中,由于基于  Core 2架构  的  内核  比 Paxville  内核 更快,

 

 

所以与单线程相比,

 

XGE甚至可以超过线性可用的GHz。

 

 

向前走

 

随着可用CPU功率的快速增长,

 

内存和IO带宽不会以相同的速率增加,

 

压缩变得越来越重要。

 

 

将使用越来越多的CPU功率来降低存储和带宽要求。

 

 

从网格计算的角度来看,非对称压缩是特别有趣的,

 

 

其中游戏过程中的  实时解压缩  真的很快,

 

而在  最高压缩比 下  获得最佳可能质量的离线压缩  可能非常计算上  昂贵。

 

 

 

网格计算本身非常适合这种离线压缩。

 

 

XGE对于声音压缩和纹理压缩特别有用。

 

关于id软件

 

id由弗洛伊德定义为人类心灵的原始部分; id软件位于德克萨斯州梅斯基特,

 

 

成立于1991年。

 

从一开始至今,id Software一直以独立的游戏开发商和技术提供商的身份,

 

 

不懈地提供技术,设计和艺术领导。

 

 

超越游戏行业,

 

ID的标志性品牌如Wolfenstein,DOOM,QUAKE和Enemy Territory

 

已经成为世代游戏玩家的热门文化的主角。

 

有关id软件的更多信息,

 

请访问www.idsoftware.com。

 

 

关于作者

 

JMP van Waveren在荷兰代尔夫特理工大学学习计算机科学。

 

他一直在为计算机游戏开发技术十多年,

 

并参与了三种A类游戏的研究和开发,

 

如:Quake III Arena,Return to Castle Wolfenstein,DOOM III,Quake 4

 

and Enemy Territory   雷神  战争 他目前正在使用id Software进行下一代游戏技术。

 

 

 

更多推荐