人工智能在游戏设计中的应用

人工智能游戏的快速发展,为计算机游戏产业提供了新的机遇,目前人工智能技术已经成为优秀计算机游戏开发中不可缺少的部分。

这里首先介绍人工智能游戏的概念以及基本的游戏人工智能技术,然后介绍游戏角色的指导与运动、追逐与躲避、群聚、路径搜索等智能游戏角色设计的基本技术。介绍智能游戏开发方法与开发工具,最后简单介绍扫雷机智能游戏开发。


人工智能游戏

计算机游戏(Computer Game)始于1958年的游戏“两人网球” 。
人工智能游戏(AI Game)为计算机游戏业提供了新机遇,目前已经形成了数十亿美圆的产业。
人工智能技术已经是优秀电脑游戏开发中不可缺少的部分,是游戏产品畅销与否的一个决定性因素。
应用人工智能技术设计的游戏称为人工智能游戏(AI Game),或简称为智能游戏。

几种游戏的智能性的观点:

正如经典游戏“小精灵” 里的魔鬼、“Unreal”第一人称射击游戏(FPS)里的虚拟战友,以及其他游戏角色,看起来都是具有智慧的生命,这种游戏可以认为是有智能的。
有人将游戏中的路径搜索、碰撞检测等,也列入游戏智能的范畴。
在游戏中包括角色从简单的追逐、闪躲、移动到复杂的神经网络和遗传算法应用等,体现角色行动的“自主性”,则说明游戏具有智能性。

游戏中的活动对象分两类:

一类是在背景中,如云、鸟等。这类对象的行为在游戏中无须人工干预,变化也不多,控制的逻辑不复杂。
另一类是各种角色,如虚拟的人、兽、怪物、机器人等。这些对象的活动方式必须变化多端才行,否则游戏就不好玩,所以控制逻辑就比较复杂。
不是所有的游戏都需要人工智能。接龙和挖地雷等游戏就不需要人工智能。网上提供的两人对弈的象棋、围棋、军棋类游戏也不需要人工智能。但一旦要求机器与人对弈,那就需要很高的智能了。


游戏人工智能

游戏中的人工智能简称为游戏人工智能(Game AI)
游戏人工智能算法不一定要满足通用性,只要能够使角色的行为在某些场合内合理就行了。

▎游戏人工智能的分类

游戏人工智能分为定性和非定性两类。
定性技术是游戏AI的基础。
用这些技术设计的角色行为是特定的、可预测的。
这种技术实现容易,理解方便,也便于游戏软件的调试和测试。在设计游戏时,游戏开发者必须考虑所有的可预测行为,而且无法帮助非玩家角色的学习或演化。
在这种游戏中,玩家只要重复玩几次游戏,便可知道NPC的定性行为,这样,玩家就会失去游戏的兴趣,从而影响游戏软件的“生命”。
非定性技术是定性技术的一种提高。
用这些技术设计的角色行为具有某种程序的不确定性和不可预测性。
在这种游戏中,NPC能够学习到玩家的作战行为,并推出新行为,甚至引发突现行为,也就是没有明确指示而出现的行为。
由于非定性的不可预测性,会给游戏软件的调试和测试带来一定的难度,但也增加玩家对游戏的兴趣,延长游戏软件的“生命”。
未来的游戏AI越来越注重非定性技术的研究与应用。非玩家角色的行为从玩家那里学习,使玩家难以预测游戏行为,使游戏更具挑战性。几个主流游戏如Creatures,Black&White,Battlecruiser3000AD,Dirt Track Racing,Fields of Battle,Heavy Gear等,都采用了非定性技术,并具有一定的学习功能。

成功的游戏软件采用定性和非定性技术相结合的方法。
使用定性技术,解决软件的一部分调试和测试问题;
使用非定性技术,增强软件的智能性,赋予软件更强的生命力和挑战性。
在使用非定性技术时,恰当的运用定性技术,对软件开发的周期、软件质量等环节都是非常有益的。
目前,在人工智能技术中,采用神经网络、贝叶斯技术、遗传算法、有限状态机等用来实现游戏中的非定性行为。

▎基本的游戏人工智能技术

搜索技术
搜索技术在游戏中应用非常广泛,特别是用于路径规划。
在追捕游戏中,只要追逐角色与任一非追逐角色相邻,所对应的状态就是目标状态。
对于简单的情况,广泛采用宽度优先和深度优先等非启发式搜索算法。但这需要指数级内存来存储游戏状态的实例。
在游戏设计中广泛应用A*算法,例如在追捕游戏中以两点间欧氏距离为启发函数。
搜索是游戏设计中重要的研究内容,例如,需要研究对抗搜索等方法。

遗传算法
这种技术广泛应用于智能游戏设计。
游戏设计中为角色寻找最优路径。采用遗传算法设计游戏时,可以定义一个考虑移动距离、地形坡度、地表属性等要素的适应度函数,从而达到较好的平衡,而不是仅仅找到距离最短的路径。
如果道路泥泞则该道路总的适应度就小,选择这条路的可能性就小。如果这条路短使适应度增加,选择这条路的可能性变大。对地形坡度的处理也是类似的。

模糊逻辑
在游戏设计中广泛应用模糊逻辑方法。
例如用模糊逻辑控制队友,或者其他非玩家角色,能够实现平滑运动,看上去更自然。
在战争游戏中,计算机军队可以根据敌军的距离以及规模等用模糊逻辑评估玩家对计算机军队的威胁。距离用很近、较近、较远和很远等表示;规模用零星、少量、中等、大量等表示;威胁程度分为无、小、中、大等。根据玩家或者非玩家角色的体力、武器熟练度、被击中次数、盔甲等级等因素,将玩家或者非玩家的战斗能力分为弱、较弱、一般、较强、很强等。

神经网络
神经网络是基于生物大脑和神经系统中的神经连接结构的一系列机器学习算法的总和。
在具体使用中,通过反复调节神经网络中互连结点之间的参数值(权重)来获得针对不同学习任务的最优和近似最优反馈值。
最后将介绍一个用神经网络控制扫雷机的实例。

一阶谓词逻辑
在游戏设计中,用一阶谓词逻辑描述变化世界的方法,称为情景演算(situation calculus)。
用一阶谓词逻辑来计算给定情况下智能主体的应有动作,用自动推理来决定达到最优状态所需采取的动作序列。正是由于需要智能角色去思考变化的世界,而情景演算正好适合描述变化的事物,因此得到较为广泛的应用。
但它不适用于对性能要求很高的实时游戏中,而且用逻辑语言来描述复杂游戏是比较困难的。

专家系统
智能游戏的知识库在表达上不像专家系统的知识库那样正式,但它们的效果是一致的,也就是模拟专业玩家的行为。游戏开发人员编写知识库控制角色的行为。
但随着游戏的日益复杂化,专家系统越来越难以建立。
现在有少数游戏专家系统中引入机器学习。机器学习将在未来智能游戏开发中得到越来越广泛的应用。

多智能体
通过多个彼此竞争和协作的智能主体描述角色之间的交互。游戏中存在的众多角色彼此既有竞争也有合作,因此可以用多智能体来自然地产生智能行为。

基于范例的推理
这种技术分析数据库中存放的(历史)输入数据和相应的最优输出结果,然后通过对比现有输入数据和历史数据来推知输出结果。
这种技术模拟了人们在处理新的情况时参考以前相似经历的做法。

人工生命 (artificial life)
由简单的个体行为组合成复杂模式的研究,称为人工生命。这是多智能体系统中的一种,着重研究如何为虚拟环境中的智能主体赋予某些生物体的共性。
游戏The Sims和SimCity的成功证明了人工生命技术的有效性和娱乐价值。例如用人工生命设计群聚,控制对象的智能化运动,协调多个智能主体的动作,使它们在整体上看起来像逼真的动物群。

有限状态机(Finite State Machine, FSM)
这是一种简单的基于规则的系统,包含了有限个“状态”和状态之间的“转移”,彼此连成一个有向图。有限状态机每一时刻都只处于某一状态。例如追捕游戏中使用有限状态机。
有限状态机是游戏AI中最为流行和文献众多的一种技术。
优点是游戏中的非玩家角色常可以设计为含有单个状态变量,而变量值可以表达为有限状态机当前节点的形式。节点的输入和输出则驱动角色在那个状态下的行为。
缺点是有限状态机的不足是当状态数目和状态转移数目增加时复杂度大大增加。

决策树(Decision Tree)
决策树表达一系列产生式规则if…then形式的条件判断。
许多诸如国际象棋和西洋双陆棋等棋类游戏中成功采用了游戏树和树的搜索方法。
决策树很容易转化为一组产生式规则。它在计算机游戏中经常被用来表达控制器。决策树的编程容易实现。非程序人员可以通过图象用户界面方便地建立与维护决策树。
如果每个叶节点所对应的不是单一的行动选择,而是一个所有可能行动的概率分布函数,那么,就成为随机决策树,可用于表达随机化控制器。

置信网络
置信网络采用了概率理论来解决现实世界中的不确定性和不完全知识等问题,是描述不同现象之间内在因果关系的工具。
置信网络可以用于推导现实世界的状态和预测各种动作的可能结果。
置信网络技术特别适用于解决智能游戏中涉及的许多子问题。


游戏中的角色与分类

(1)根据运动方向与朝向的相关性可分为靠转向力改变的角色和自由运动的角色两种类型。
靠转向力改变运动方向的角色。例如汽车、飞机之类的物体,他们的速度矢量的方向必须与其朝向相同或完全相反,速度方向的改变只能靠施加在头部或尾部的转向力(Steering Force)。特别地,有的角色要求当速度大小不为0时,转向力的施加才有效,例如,停止中的汽车,对其方向盘的操作是毫无效果的。
(2)根据角色的属性可分为玩家和非玩家角色两种类型
(3)根据角色的智能性可分为智能性角色和无智能性角色两种类型。
角色运动结果主要是位置和朝向的变化,运动方式可有多种,玩家通过操控键盘、鼠标等实现玩家化身的运动;智能非玩家角色通过预置各种运动算法,当运动条件和环境符合时,自动产生运动方式;对无智能性非玩家角色,则不产生任何运动,只能靠场景切换或摄影机移动来隐藏或现身。

▎智能游戏角色设计基本技术

角色的智能性具体表现在指导与运动、追逐与躲避、群聚、路径搜索、智能搜索引擎等方面,下面做个简单介绍。

▎游戏角色的指导与运动

指导角色行动的方法:预定义行为和目标导向行为。
区分预定义行为和目标导向行为的依据是:角色是否唯一地选择行动。
预定义行为方法中,角色的所有行为都是动画师和程序设计人员预先设计的。这里讨论的主要是如何处理预先并不完全确定的角色行为的技术。
两种比较流行的方法是反应行为规则和分层有限状态机。
指导角色行动的预定义行为方法:反应行为规则
当角色行为仅取决于当前外部环境的感知,称为反应行为。
在反应行为中,角色不记忆以前经历的情景,没有自己内部情景的表达,因此无论角色收到的信号顺序如何,只要是同样的刺激信号,其反应行为就是一样的。
反应行为规则是第一种生成角色行为的方法,也是目前最普及的方法。用一些简单的产生式规则就能产生复杂的行为。例如,下面的简单的左转规则:
若 有障碍在前面 则 向左转 否则 直走
If blocked ahead then turn-left else go-straight
指导角色行动的预定义行为方法:反应行为规则
由于行为规则是预先确定的,所以一旦选定了行动,就不能再改变,角色只能按照当前情景预定义行为规则去行动。
分层有限状态机为角色保留了某些简单的内部状态信息,设计控制器就比较容易。
游戏设计中许多角色选择行动是非确定性的,有多个方案可以选择。当角色选择了某个行动方案后,如果认为这个方案不能达到期望的目标时,可以返回选择其他方案,直到选出合适的方案。
可非确定性选择行动的角色容易接受指导,通过给角色指定目标,使角色能够利用自己的领域知识,了解它选择的行动方案是否能够达到目标。
非确定性选择行动的响应速度比较慢,游戏设计时应该折中考虑。
指导角色的第三种方案是将预定义行为和目标导向行为结合起来。

▎游戏角色的追逐与躲避

1.随机移动
随机移动能够产生角色漫无目的地徘徊的感觉。
对于自由运动的角色,可以不断地产生随机的速度矢量。
对于靠转向力来改变速度方向的角色,可以不断产生随机的转向力。
若使用完全的随机数来控制角色的移动,行动看起来不稳定,所以应该保持随机过程的一致性,可采用噪声函数法、投射目标法,也可以记录从前走过的路,避免走回头路等来体现随机性。

2. 追踪与躲避
追踪与躲避是功能相反的两种运动模式。
例如,在太空战机射击游戏或角色扮演游戏,游戏中的非玩家角色都有机会试着追踪或躲避玩家角色;在角色扮演冒险游戏中,也想需要个巨人或某种可爱的生物,追着你的玩家角色跑;
在第一人称射击游戏和飞行模拟游戏中,需要算出导弹的轨迹,攻击玩家或玩家的飞行器等。对于任何一种情况,都需要一种逻辑手段,使角色进行追踪或躲避。

3.躲避障碍物
追踪与躲避是功能相反的两种运动模式。
游戏中玩家与非玩家角色都应符合现实场景的客观规律,即不能出现互相穿透现象,如玩家穿过非玩家角色、玩家走出虚拟场景、玩家穿越地面等。
对于这些现象,在设计过程中,可以理解为是追踪与躲避的一种特例。
躲避障碍物可采用传感器等方法,自动检测玩家与物体的距离,当达到测定距离时,自动实现玩家不靠近障碍物。
使用传感器来判断障碍物,即利用传感器从当前位置沿当前速度向前方一段距离作投射,传感器的末端表示按照当前的速度将要到达的位置,若在这个投射上发生了碰撞,则表示按当前速度行进将会发生碰撞,以此要求角色改变速度。
传感器的长度可以与角色的速率成正比。转向力的方向为障碍物表面的碰撞点的法矢量的方向,转向力的大小可以与传感器的末端穿进障碍物的深浅成正比。

▎游戏角色的群聚

群聚(flocking)行为是基于Craig Reynolds提出的Boids算法,由三个简单的规则组成的算法。
聚合(cohesion):每个成员移向它的邻居成员的平均位置;
对齐(alignment):每个成员朝向它的邻居成员的平均朝向;
分离(separation):每个成员与邻居保持一定的距离,以免相撞。
团队中的一个成员所考虑的邻居成员的数量可以通过该成员的视角和视野来控制,只有在视角和视野范围内的成员才予以计算。
大的视角会使队形向横向铺开来,而小的视角会使队形纵向排开,形成细长的队列。
可以为不同的规则制定不同的视角和视野,这些需要在游戏的实现过程中进行调整。
一个成员的行为结果是三个规则计算出的转向力的组合。
有如下几种组合方法:
(1)将所有转向力加权。缺点是权值难以设定和调整,例如障碍物躲避是必须的,应该保证角色不与障碍物相撞。
(2)在(1)基础上为每个转向力增加一个优先级。
(3)为每个转向力增加一个概率和一个优先级。每一次更新只有一个转向力起作用。
这种方法由于每一次更新只计算一个转向力,减少了计算量,但降低了精度。

▎游戏角色的路径搜索

A算法虽然不是当今游戏软件开发中最常用的路径搜索算法,但它能保证在任何起点与终点之间找到最佳路径。
由于路径的类型很多,寻求路径的方法应与路径的类型、寻径的需求有关,所以它不一定适合所有场合,例如,如果起点和终点之间没有障碍物,有明确的视线,就没有必要使用算法;
如果CPU功能不太强,则A算法不是最佳选择,尤其是多角色游戏的路径选择问题,因为算法要求CPU做大量的计算,会影响游戏效果。

▎智能搜索引擎

在游戏开发中,核心技术是构架游戏引擎,它是决定游戏质量的关键。游戏引擎就像赛车的引擎。
玩家所体验到的剧情、关卡、美工、音乐、操作等内容都是由游戏引擎直接控制的。
引擎就是用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等。
游戏引擎朝着两个不同的方向分化。一是通过增加更多的叙事成分和角色扮演成分以及加强游戏的人工智能来提高游戏的可玩性;二是向着纯粹的网络模式方向发展。

▎智能游戏开发方法与开发工具

智能游戏开发方法
1.编程技术:使系统呈现智能的效果,而不考虑所用方法是否与人或者动物所用的方法相同。这种方法称为工程学方法。
2 .模拟法:它不仅要看效果,还要求实现方法和人类或动物机体所用方法类似。例如,遗传算法、神经网络等。
采用编程技术,需要人工详细规定程序逻辑。如果游戏复杂,角色数量和活动空间增加,相应的逻辑复杂度就会以指数增长,人工编程就会非常复杂,容易出错。
采用模拟法,设计者不需要详细规定程序逻辑,而是给每个角色设置一个能够学习的智能模块来进行控制。利用这种方法来实现游戏智能,无须对角色的活动规律作详细规定,应用于复杂问题时,通常会比前一种方法更省力。

智能游戏开发工具
游戏开发工具分为创作工具类和编程语言类两大类。
创作工具类是由软件开发商开发的集各种功能在内的专业软件,主要采用“拖、拉、放”的形式开发。如Virtools、PRG Maker XP、FPS Creator、Vega、Game Jackal Pro、ZD Soft Game Recorder、Game Editor等开发工具。
编程语言类主要利用各种高级语言,通过编程实现游戏的开发,如VC++、C、Java、J2ME、VC.NET、Delphi、VB等。
选择游戏开发工具应综合考虑各种因素,可以选择创作工具类,也可以选择编程语言类,或者是两者的结合。


扫雷机智能游戏开发

扫雷机能够自己演化去寻找随机散布的地雷。

人工智能在游戏设计中的应用

基本方法是用一个神经网络控制一个扫雷机,它的权值用遗传算法进行演化,使扫雷机更聪明。
可以通过改变左右两个轮轨的相对速度来控制扫雷机向前前进的速度以及向左或者向右转弯的角度。因此,选择左右两个履带轮的速度作为神经网络的两个输出。
控制扫雷机的输入信息是扫雷机的视线向量和从扫雷机到达其最近地雷的向量这4个参数。
选择几个(例如10个)神经元作为隐层,构成一个三层BP神经网络。神经元的非线性函数取S型函数。

人工智能在游戏设计中的应用


人工智能游戏的现状与未来

现阶段游戏中的人工智能的局限性主要有:

(1)游戏软件的实时性限制了计算量较大的AI的应用。
由于专家系统、模糊逻辑、人工神经网络等方法建模的复杂性,这些工具不能很好地求解游戏中的问题。

(2)游戏中角色不是真正的智能体。而骨架动画艺术创作的复杂度几乎是无限的,甚至是通过动作捕捉技术实现。现有的人工智能技术水平无法与之匹配。
游戏中实现人工智能的主要目的,是为了让玩家产生真实的环境的错觉,追求绝对正确。例如,游戏中一个按照路径规划算法寻路的对手,玩家可能认为它的寻路能力过于完美,不符合人类真实的情况。

计算机游戏不仅是人工智能的重要应用领域,而且是人工智能的高效研究平台。利用计算机游戏进行人工智能研究相对其他应用领域比较方便而又富有乐趣。
例如,在机器人等实际应用系统中研究人工智能,首先要解决复杂的底层的检测、识别与控制问题。但在虚拟的计算机游戏中,角色只要查询图象数据库,就可以解决象障碍识别等问题。计算机游戏中的“玩家”能够直接观察角色的行为,及时提供反馈信息,进行人机交互,发出控制指令。这些对于人工智能研究及应用都是很重要的。
游戏开发中的人工智能正处于一场革命之中,必将迅速得到发展并推动整个游戏产业的飞速发展。


版权声明:本文为CSDN博主「小段学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45962068/article/details/124686649

最新文章