当前位置:主页 > 科技论文 > AI论文 >

基于人工智能的RTS和FPS分层游戏AI系统研究

发布时间:2014-10-12 19:10

【摘要】 随着现代游戏工业蓬勃发展,包括实时图形渲染、真实感交互、游戏人工智能等相关技术也在不断迈进。其中游戏人工智能技术受到理论人工智能发展和实时系统的计算时间的双重限制,使得它的发展相对落后于图形和交互技术。另外,因为不同的游戏对人工智能的需求差异很大,所以人工智能模块在游戏开发中并不能完全依赖游戏引擎,也并不存在集成完善的人工智能模块的游戏引擎。在游戏领域中,休闲娱乐游戏对人工智能的要求较低,棋牌类游戏的人工智能比较固定和完备。而即时战略游戏(Real-Time Strategy,本文简称RTS)和第一人称射击游戏(First-Person Shooter,本文简称FPS)由于其题材往往是模拟真实或虚拟战争,对人工智能的要求比较苛刻,这些要求体现在:(1)RTS和FPS游戏中,非玩家控制角色(Non-Player-Controlled Character,本文简称NPC)数量巨大。此类游戏NPC数量往往可以达到几十甚至数百,如此众多NPC的人工智能完全由计算机托管的同时要保证游戏帧率,就对人工智能数学模型的复杂程度提出限制。(2)RTS游戏中,虚拟场景中摄像机处在高处向下俯瞰,可以纵观战场,玩家可观测到群体NPC的宏观行为,对NPC的群体智能提出较高要求。而FPS游戏中,画面模拟人的真实视野,对NPC行为提出更高的要求,NPC做出合理行为的同时又要保证移动和动画播放衔接流畅,给游戏玩家较好的用户体验。本文针对RTS和FPS游戏对人工智能的需求,设计了一套较为完整的战场人工智能系统,既包含一些底层人工智能技术如移动、感知、动画控制等,又着重研究了控制多个群体战斗行为的人工智能架构,最终借助Unity3D游戏引擎予以实现。本论文的主要研究内容包括:(1)设计实现了底层的移动-动画控制系统。改进传统的Flock群聚移动技术,并使用A*寻路算法实现多个NPC群体的移动,使得NPC可以在地图中沿最优路径到达任意位置,并规避动态障碍物。同时将动画管理子系统和移动子系统结合起来,用移动信息来驱动动画播放。(2)设计实现了NPC感知记忆模型,为NPC提供虚拟环境信息输入。结合Unity3D中内置的物理引擎实现NPC的视觉和记忆,并设计一种消息路由机制使得视觉和记忆信息可以在NPC之间共享,以模拟真实战场的士兵相互通信。(3)设计实现了一个地图分析系统。利用视觉和记忆信息进行实时地图分析,NPC可以根据敌人信息对地图的各个区域形势进行判断,并决策生成目标移动地点。(4)设计一个分层控制的人工智能架构。包括指挥官-分队队长-分队成员三个控制层级,运用消息系统实现信息汇报和指令分发。在各控制层添加可执行指令队列的指令机,并为不同控制层分别设计相应的指令内容。不同层级的决策系统将指令压入对应的指令队列,指令即可在各个层级顺序执行,最终以NPC的战场行为表现出来。 

【关键词】 游戏编程; FPS; RTS; 群体移动; 分层游戏AI系统; Unity3D; 


第一章 绪论

 

1.1 研究背景和意义
自从计算机游戏诞生开始,人工智能(Artificial Intelligence)就伴随着它的发展,自从古老的Pong(打砖块游戏)和Pac-Man(吃豆游戏)开始,一直到近来发布的BattleField 3(战地3射击游戏),人工智能一直是游戏的一个不可分割的组成部分。在计算机计算能力有限的1970-1980年代,人工智能并不受游戏开发者的重视[1]2-3,因为当时的计算机无法承受过于复杂的数学模型计算和游戏逻辑计算,早期的计算机游戏一般逻辑简单,题材单一,多为休闲娱乐性质,即使如此,人工智能仍然是决定游戏成功的重要因素,因为游戏逻辑是通过简单的游戏人工智能表现出来,很大程度上决定了游戏的玩法和用户体验 。近十几年来,计算机硬件计算速度大幅提升,推动相关计算技术创新,带动游戏产业的迅猛发展,游戏销售额逐年上升,吸引越来越多的资金投入游戏产业中,一些大制作游戏的开发成本高达数亿美元。现代游戏中的图形、音效、交互方式等方面都达到了前所未有的水平,各大游戏公司分别推出自己的游戏引擎,提供可重用的代码、库和编辑器,极大缩短游戏的开发周期。同时游戏题材也越来越广泛,包括战争、生活模拟(life-simulation)、策略、休闲益智、棋牌等等,游戏人工智能的一个重要特点是它和游戏内容关系密切,不同内容的游戏需要人工智能提供的功能也不同,例如战争题材游戏需要战场上的作战智能,而棋牌类游戏需要强大的博弈能力。观察游戏市场上的各种游戏,可以发现不同的游戏题材、游戏情节、游戏玩法各需要不同的人工智能支持,游戏引擎却只能提供一些游戏人工智能的中间件或者底层库,无法涵盖所有的人工智能需求,而图形、声音、交互等模块通用性很强,游戏引擎可以大大简化这些模块的开发工作,所以在现代游戏开发中,游戏的人工智能模块的开发就处于开发工作中的中心位置。

........

 

1.2 研究内容
本文的研究目标是设计一个战争题材游戏的人工智能模块,该模块的智能模型可以同时满足 FPS 游戏和 RTS 游戏的智能需求。该模块实现的功能有:
(1)NPC 基本行为动作,例如攻击、卧倒、下蹲等。
(2)NPC 可以组队在地图上自由移动,绕开静态和动态障碍物。
(3)NPC 可以组队完成高级的任务,该任务可由若干基本行为组成。
(4)NPC 分队之间可以相互配合,共同完成某一任务。
本文设计的模块应支持多个群体的多人对战,同时在地图上存在的数量应当在40-50 人左右,而要保证游戏流畅程度,平均帧率应大于 30 帧/秒。该智能模块包括的核心技术有群体移动、动画控制、感知系统、分层决策等。本文设计了一个扩展性较高的战斗游戏人工智能模型和架构,将以上各种技术相结合,并结合 Unity3D 引擎作为实验平台进行实验(Unity3D 引擎不包含任何人工智能库),该系统支持类似 RTS游戏的用户输入,有完整的运行时调试模块。本文的设计主要包括以下内容:
(1)设计底层的移动系统与动画控制系统。其中移动系统将支持多个 NPC 群体以较高效率进行群体移动,该系统在算法设计上将改进传统的 Flock 群聚移动算法,并借助A*寻路算法实现路径规划,使群体NPC可以在地图中沿最优路径到达任意位置,并规避动态障碍物。同时将分层动画管理子系统和移动子系统结合起来,用移动信息来驱动动画播放,实现真实感群体移动。
(2)设计实现一个 NPC 感知记忆模型,并支持不同 NPC 之间的信息交流。结合Unity3D 中内置的 PhysX 物理引擎实现 NPC 的视觉和记忆,并设计一个信息路由机制使得视觉和记忆信息可以在 NPC 之间共享,以模拟真实战场的士兵相互通信。PhysX 引擎在 Nvidia 显卡上可以将大量碰撞检测计算交给 GPU 处理,提高计算速度,减少 CPU 使用率。
(3)设计实现一个地图分析系统。利用视觉和记忆信息进行实时地图分析,分析数据可供决策系统使用。该系统可由设计人员在地图上关键位置放置标识物体,在游戏运行时会对各物体所代表的区域评分,评分作为 NPC 决策的依据之一。
(4)设计一个分层控制的人工智能架构。包括指挥官-分队队长-分队成员三个控制层级,运用消息系统实现信息汇报和指令分发。为了使系统易于扩展和调试,在各控制层添加可执行指令队列的指令机。指令机由指令队列和指令操控逻辑组成,由决策系统生成的指令插入指令队列后即可按顺序被执行。

..........


第二章 移动-动画控制系统的设计实现游戏

 

人工智能的目标是使 NPC 产生合理的行为,在 3D 场景中,行为最终体现为 NPC 移动和动画播放。移动即 NPC 模型在场景中空间坐标的变化,动画播放为NPC 模型播放预置的骨骼动画。本章将设计一个可以支持多个 NPC 群体移动的模块,同时设计一个动画管理系统,并与移动系统相结合,用移动信息驱动动画播放,最终使 NPC 在场景中自由的移动到任何位置,并在移动中正确播放动画。

 

2.1 游戏人工智能中的移动技术简介

 

2.1.1 路径规划的概念
路径规划又称寻路,即给定地图上任意两个位置作为起点和终点,生成一条连接起点终点首尾相接的线段序列,NPC 或玩家控制角色发出路径规划请求,路径规划器收到请求后计算路径并将路径返回给请求角色,供该角色沿着路径移动。现代游戏工业对于 2D/3D 场景的寻路有较为成熟的解决方案。具体实现上,分以下几个步骤:

.......

 

2.2 移动子系统的详细设计

 

2.2.1 用力驱动 NPC 移动的 Motor 类
根据牛顿定律为 NPC 的移动进行建模,为了实现真实感的移动,有必要对 NPC的最大加速度和最大速度进行限制,这里假设 NPC 质量为 1,则只需限制作用在 NPC上的最大力和最大移动速度进行限制即可。Motor 类的主要成员如下图所示:

Motor 类生成的对象附加在每个 NPC 对象上,在游戏循环的 Update 中,其他模块计算出的力通过调用 Motor 对象 AddForce 方法生成合力,Motor 对象在 LateUpdate函数中分别调用 UpdateSpeed 和 UpdatePosition 方法来计算这些力对速度和位移产生的效果。在游戏引擎中 Update 和 LateUpdate 的关系是这样的:游戏循环中,由于某些模块或对象的更新可能依赖其他模块在同一次循环中的计算数据,这就必须要求依赖者的更新函数在被依赖者的更新函数之后被调用,于是游戏引擎的设计者在通用基类上设计了 LateUpdate 函数,任意对象的 LateUpdate 函数都是在全体对象的 Update 函数之后才被执行,把被依赖者的计算在 Update 中执行,依赖者的计算在 LateUpdate 中执行,这就有效解决了更新依赖的问题。

......

 

第三章 虚拟角色的感知记忆系统..............15
3.1 3D 场景中的视觉............................. 15
3.2 视觉系统的设计实现................... 17
3.3 视觉系统的扩展-记忆系统.......................... 18
3.4 共享的视觉-记忆系统............. 19
3.5 完整的感知记忆系统............... 21
3.6 本章小结................................. 22
第四章 地图分析与分层决策................23
4.1 地图分析................................ 23
4.2 三层决策体系.......................... 26
4.3 指令机系统............................ 28

4.4 本章小结................................ 32

 

第五章 系统整合与实验分析

 

本章先简要介绍本文系统整合测试的具体实现,然后着重对实验结果和系统运行效率进行分析和讨论。

 

5.1 自定义调试工具
在开发游戏中的人工智能模块时,经常会发现 NPC 的行为和设计本意相差很大,而开发者在代码中逐行检查代码逻辑,效率较低,难以发现 bug 的真正原因。NPC的行为存在异常是不可避免并且经常发生的,一旦发生这种情况,就需要一种方法根据观察到的现象快速简单地解决问题[14]。由于游戏人工智能模块经常引入随机量来减少智能的可预测性,试图在下一次运行时在错误处中断的调试方法常常会失败,因为下一次运行时错误很难重现。既然开发平台的调试工具无法满足这种需求,有必要设计一个新的调试系统,可以直观的观察到智能架构中各个对象的变量,确定错误来源。本文设计的系统比较复杂,造成 NPC 行为异常的错误可能是任意模块的逻辑错误或者设计缺陷,例如 2.2.2 节的 FlockSphere 类的力计算错误,3.1.3 节的视觉系统的队列操作的逻辑错误。Unity3D 引擎在开发模式下可以随时暂停执行并实时观察各个对象的成员变量的值,对调试工作提供较大的帮助。

........

 

第六章 总结与展望

 

6.1 本文工作总结
近几年来游戏工业的快速发展催生出无数优秀的电子游戏,而战争一直是热门题材,国外大型游戏公司几乎每年都会推出几款制作精良的战争题材游戏。反观国内的游戏开发还主要集中在基本不需要人工智能的网络游戏上,至今为止还没有一款国产的 FPS 游戏上市。本文从游戏人工智能的一些底层技术出发,对适合 FPS 和 RTS 游戏的人工智能技术进行实验和探索,希望可以对游戏业界的程序员或者业余游戏开发爱好者提供一定的参考。本文主要研究工作包括:
(1) 设计移动系统实现群体移动,以及如何利用物理引擎实现 Flock 算法。该系统把 Flock 算法和 A*寻路相结合,可以同时支持数十人以上的群体在地图中自由移动。
(2) 利用物理引擎的触发器实现感知系统,该系统为智能模型提供输入。本文设计了多人共享视觉记忆系统,增加了感知的真实性。
(3) 设计了地图分析系统,运用可见性测试进行地图分析,地图分析结果可供决策系统使用。

(4) 为了模拟真实战场的组织结构,本文设计了三层的决策控制架构,并且设计了指令机系统与之配合,构成易调试、易插拔的智能架构。

 

6.2 进一步展望
本文最终系统的实验结果还存在着一些缺陷,本文的研究工作仅仅只是个开始,还有很多地方需要改进。
(1) 在移动方面,可以对寻路请求进行分时执行,降低同时移动时的峰值计算量,以稳定游戏帧率。
(2) 在 NPC 组织结构上,可以加入动态编组解组,增加群体行为的多样性。
(3) 本文的智能系统计算时间占游戏计算时间的 39.1%,说明部分设计仍然需要进行仅一步优化,减少计算冗余,提高游戏帧率。由于本文篇幅有限,系统的交互模块、消息系统等部分实现细节并没有详细说明,如读者存在部分内容理解困难,请联系作者索取工程文件源码,联系方式详见附录 D。

参考文献:


本文编号:9592

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/rengongzhinen/9592.html


Copyright(c)文论论文网All Rights Reserved | 网站地图

版权申明:资料由用户423ce***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com