文 / Donald Kehoe

在过去的几十年中,游戏行业取得了巨大发展。 从 Pong* 和Pac-Man*等让游戏玩家短暂逃离现实的简单游戏发展为魔兽世界* 和使命召唤 4*这样让游戏玩家真正喜爱的复杂游戏。 娱乐软件协会 (ESA) 曾指出,如今的游戏玩家平均有 13 年的游戏经验,已经习惯于看到每款新游戏变得越来越复杂、吸引人且智能。 如今,游戏开发人员的挑战在于如何不断突破极限,开发出越来越引人注目的游戏。 计算机控制的人工智能 (AI) 已经发生了多种形式的演变,以满足测试要求。 然而,为游戏玩家设计符合其动作并促进玩家数量增长的自适应对手并非易事。

第一部分: 设计和实施

对于游戏行业而言,人工智能是什么?

从最基本的层面而言,“人工智能”包括模仿其他玩家或玩家所代表实体(即可以响应或付诸实践的所有游戏元素——从玩家、飞弹到健康皮卡)的行为。 关键概念是模仿行为。 也就是说,游戏行业的人工智能更加人工化,而智能程度较低。 系统既可以是基于规则的简单系统,也可以是旨在挑战玩家作为对立军队指挥官的复杂系统。

游戏行业的人工智能与传统的人工智能观点有何不同

对人工智能的传统研究旨在创建真正的智能——尽管是通过人工手段。 有些项目,如麻省理工学院 (MIT) 的Kismet* 项目,正在尝试创建一种能够进行学习、社交互动并表现情感的人工智能。 在本文撰写之时,麻省理工学院正在创建一种有幼儿教师和可喜成果的人工智能。

对于如今的游戏而言,真正的人工智能已经超出了一款娱乐软件的要求。 游戏人工智能不需要具备感受力或自我感知能力(事实上没有最好);它不需要了解除游戏之外的任何信息。 游戏人工智能的真正目标是模仿智能行为,为玩家提供一种可信的挑战——即玩家可以克服的挑战。

游戏人工智能的目标

人工智能可以在游戏中扮演多种角色。 它可以是一套用于管理游戏世界中实体行为的一般规则。 您也可以考虑实体遵循一类人工智能的预制脚本事件。 例如在游戏 F.E.A.R* 中, 用于恐吓玩家和预示未来事件的令人毛骨悚然的小女孩就是一个预制脚本事件。 提到人工智能和游戏时,大多数人都会想到多人游戏中由电脑控制的玩家。 不过,所有这些都是人工智能能够实现的不同角色。

F.E.A.R.(Vivendi Universal)在一类人工智能中使用脚本事件

游戏人工智能的基本要素

根据人工智能要实现的角色的性质,系统需求可能非常少。 系统越复杂,人工智能的要求就越多。 基本需求无非是运行 AI 所需的处理时间。 更复杂的系统需要一些感知人工智能环境的手段,玩家行为记录和一些评估先前决策成功度的手段。

决策

人工智能背后的核心概念是决策。 为了执行这些选择,智能系统需要能够使用人工智能系统影响实体。 您可以通过“人工智能推送”或“实体推送”战略管理这一执行。

人工智能推送系统通常将人工智能系统隔离为游戏架构的独立元素。 此类战略通常采取独立线程或线程的形式,线程中的人工智能花时间计算给出游戏选项的最佳选择。 卖二手QQ当人工智能制定决策时,这一决策将随后传播至涉及的实体。 这一方法在实时战略游戏中最有效,因为在这种游戏中,人工智能关注大局。

实体推送系统最适合包含简单实体的游戏。 在这些游戏中,实体会在其“思考”或自我更新时调用人工智能系统。 这种方法非常适合于包含大量不需要经常思考的实体的系统,如射手系统。 这一系统还可以从多线程技术中受益,但需要一些额外的计划(详情请见Orion Granatir 的多线程人工智能上的文章)。

基本感知

为了使人工智能作出有意义的决策,它需要感知周围环境的某种方式。 在较简单的系统中,这种感知可能只是对玩家实体的位置进行简单的检查。 随着系统的要求越来越苛刻,实体需要找出游戏世界的主要特点,如可行的穿行路径、提供掩护的地形和冲突地区。

设计人员和开发人员面临的挑战在于找出一种方法,以确定对智能系统至关重要的主要特点。 例如,掩护可以由关卡设计师预先确定,或可以在加载或编译地图时进行预先计算。 有些元素可以动态评估,如冲突地图和紧迫威胁。

基于规则的系统

智能系统采用的最基本形式是基于规则的系统。 这一系统延伸了“人工智能”这一术语。 一组预设行为用于确定游戏实体的行为。 对于各种行为,总体结果可以是一个虽然涉及的实际智能很少但并不明显的行为系统。

在基于规则的系统方面,Black Jack 庄家就是一个很好的例子(无论是视频 Black Jack 还是真正的 Black Jack)。 庄家遵循一个简单规则: 当牌点数为 17 或不到 17 时必须要牌。 一般玩家的看法是庄家有竞争力。 玩家会设想一个比其当前敌手更有能力的对手(除非赌场经营者公布庄家遵守的规则)。

Pac-Man 是这一系统的典型应用。 四个鬼纠缠着玩家。 每个鬼都遵循一个简单的规则集。 一个鬼一直左转,另一个一直右转,一个以随机方向转弯,最后一个转向玩家。 每个鬼的移动方向很容易弄清楚,玩家能够轻松避开他们。 但作为一个集体,这些鬼的移动方式看起来就复杂的多,相互协调配合共同寻找玩家。 事实上,检查玩家位置的只有最后一个鬼。

控制Pac-Man 鬼的规则集的直观图,其中的箭头代表将作出的“决策”。

正如本例所示,规则不需要硬编码: 规则可以基于感知到的状态(如最后一只鬼)或实体的可编辑参数。 进攻、勇气、视线范围和思考速度等变量均可以产生更多样化的实体行为,即使是在基于规则的系统中。 基于规则的系统是最简单的人工智能结构。 更复杂的智能系统基于一系列条件规则构建并由这些规则管理。 在战术游戏中,规则控制着要使用的策略。 在策略游戏中,规则控制着建造顺序和应对冲突的方式。 基于规则的系统是人工智能的基础。

有限状态机作为人工智能

有限状态机 (FMS) 是一种概念化和实施在整个生命周期中拥有不同状态的实体的方式。 “状态”可以代表实体所处的物理状态,或者也可以代表实体展示出的情感状态。 在本例中,情感状态并不是真正人工智能的情感状态,而是融入游戏环境的预定行为模型。

下面是一个人工智能系统的常见状态示例,针对一个包含隐性元素的游戏:

典型 FSM 中的状态布局,其中的箭头表示可能的状态变化

闲置。在这种状态下,实体会被动地站着或沿固定路线走动。 感知水平低。 不常检查游戏玩家的声音。 只有这一实体受到攻击或“看到”玩家直接在其前面时,它的状态才会更改为较高的认知水平。

感知。这一实体主动寻找入侵者。 它会经常检查游戏玩家的声音,比闲置实体看得更远更宽泛。 如果这一实体注意到碍事的某物(在其检查范围之内),如打开的门、无意识的尸体和用过的弹壳等,它将变为好奇状态。

好奇。这一实体意识到发生了不寻常的事情。 为了证实这一行为,该实体将放弃其正常岗位或路线,移动到感兴趣的区域,如前面提到的打开的门或尸体。 如果玩家被发现,实体将变为警戒状态。

警戒。在这种状态下,实体已经注意到玩家并将开展追捕玩家的行动:移入攻击范围、提醒其他警卫、发出警报并寻找掩护。 当实体在敌人范围内时,它将切换到攻击状态。

攻击。在这种状态下,敌人已经参与到与玩家的战斗中来。 实体会在可能时攻击玩家,并在不同的攻击回合之间寻找掩护(根据攻击缓和时间或装弹时间)。 只有在消灭敌人后(恢复正常)、敌人移动到射程之外(回到警戒阶段)或实体死亡(进入死亡状态)时,实体才会离开这个状态。 如果实体的生命值很低,它可以切换为逃跑状态,这取决于特定实体的胆量。

逃跑。在这种状况下,实体会试图逃离战斗。 根据游戏的不同,可能会有寻找生命值或离开游戏区域的次级目标。 当实体找到生命值后,它可能会返回到警戒状态并恢复战斗力。 “离开”的实体只是删除了而已。

死亡。在有些游戏中,死亡状态可能不是完全闲置。 死亡或濒死的实体可能会“大声呼叫”,从而提醒附近的实体,或进入神志不清的状态,医师可使其复活(并返回到警戒状态)。

在实体系统中实施 FMS 至少有两种简单方法。 第一种是让每种状态成为一种可以检查的变量(通常通过大量的开关语句)。 第二种方法是使用函数指针(C 语言)或虚拟函数(C++ 和其他面向对象的语言)。

自适应人工智能

前面的章节讨论了如何设计融入游戏预定义事件的智能系统。 对于大多数游戏而言,只要设计缜密且对智能实体的目标有清晰的认识,这就足够了。 如果游戏需要更多的变化并为玩家提供更好、更有活力的对手,人工智能可能需要具备增长和独自适应的能力。

自适应人工智能通常用于格斗游戏和策略游戏,这些游戏具有深层次的机制和无数的游戏选项。 若要为玩家提供持续的挑战且避免玩家最终找出打败电脑的最佳策略,人工智能需要具备学习和适应的能力。

预测

有效预测对手下一步行动的能力对于自适应系统至关重要。 可以使用不同的方法,如过去模式识别(在未来的文章中介绍)或随机猜测,以确定要采取的下一步行动。

适应的一个基本方法是记录过去的决策并评估成功程度。 人工智能系统会记录一个游戏玩家在过去所做的选择。 过去的决策必须以某种方式进行评估。 (如在格斗游戏中,获得的优势或损失的生命值或时间优势可以作为成功的衡量指标。) 可以通过收集有关这种情况的更多信息来为决策提供一些背景,如相对生命值、以前的行为和关卡定位(当玩家走投无路时会采用不同的游戏方式)。

可以通过评估这些历史信息来确定以前行为的成功程度以及是否需要改变战术。 在构建过去行为列表之前,可以使用一般战术或随机行为来引导实体的行为。 这一系统可以与基于规则的系统和不同的状态相结合。

在战术游戏中,过去的历史可以决定用于对付玩家团队的最佳战术,如防守、进攻、狂暴或一些平衡的游戏方法。 在策略游戏中,可以基于玩家发现一个部队中最佳的分队组合。 在由人工智能控制玩家支持角色的游戏中,通过了解玩家的行为方式,自适应人工智能可以更好地补充玩家的自然风格。

总结

人工智能是一个复杂的研究领域。 根据游戏需求的不同,游戏行业的人工智能会采用不同的形式,从计算机控制器实体的简单规则集到更先进的自适应系统。 在游戏行业中应用人工智能概念对于提高电子娱乐产品中虚拟人物的可信度必不可少,但它并不是一个不可能的挑战。 这一系列的下一篇文章将讨论人工智能在感知和导航复杂环境方面所面临的挑战,以及如何应对这些挑战。

关于作者

Donald "DJ" Kehoe: 作为新泽西理工学院信息技术项目的导师,DJ 开拓了游戏开发领域的专业化之路,并教授该项目中有关游戏架构、编程和关卡设计的许多课程,以及集成 3D 显卡与游戏的课程。 目前他正在攻读生物医学工程博士学位,运用游戏和虚拟现实来增强神经肌肉康复的效果。

游戏行业的人工智能设计:AI的设计和实施相关推荐

  1. 游戏行业的人工智能设计(二):路径搜寻和感知

    文 / Donald Kehoe 在上一篇文章(第一部分)中,我们讨论了如何管理智能代理可能作出的基本决策--因为人工智能 (AI) 研究涉及到使用人工智能的实体. 在本文中,我为游戏男主角(或怪物或 ...

  2. 【人工智能 Open AI】设计一个SQL Where DSL模型,使用 golang 代码来实现DSL的翻译成SQL。

    设计一个SQL Where DSL模型,使用 golang 代码来实现DSL的翻译成SQL. 下面是使用golang代码实现DSL模型的示例: package mainimport ("fm ...

  3. 【人工智能 Open AI】设计一套健身减脂方案,实现100天瘦40斤。

    设计一套健身减脂方案,实现100天瘦40斤. 一.营养方面 保持每日的饮食记录,控制自己的卡路里摄入量,每日摄入1800-2000卡路里,尽量减少油脂.糖类的摄入. 饮食结构调整,每日食物摄入:谷类5 ...

  4. 游戏中的人工智能(AI)和行为树科普

    什么是角色游戏中的AI? 玩游戏的人都知道,有些游戏中的AI实在是弱智的要死.即使是在WOW这样顶级的游戏中,AI也是有限得掉渣,绝大部分NPC都像一个木桩一样,哪怕是精心设计的BOSS也就只有一些战 ...

  5. 游戏中的人工智能AI设计

    因为在现在的项目中花了很大精力设计和制作怪物AI和技能,所以在这里也做个小总结. 什么叫做游戏中的AI        游戏中的AI可以简单的理解为计算机控制的智能角色,这些智能角色能够通过周遭环境或者 ...

  6. 女性学ai人工智能_为什么我们迫切需要女性来设计AI

    女性学ai人工智能 by Kate Brodock 凯特·布罗多克(Kate Brodock) 为什么我们迫切需要女性来设计AI (Why we desperately need women to d ...

  7. 三星下一代手机芯片由AI来设计,EDA行业老大提供技术

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 刚刚发布新款折叠屏手机的三星,又搞了个大新闻: 下一代手机芯片将使用AI来设计. 据外媒<连线>的报道,三星将使用新思科技(Sy ...

  8. 如何进入游戏行业_进入设计行业

    如何进入游戏行业 We're living in some weird-ass times. One of the unfortunate results of a global pandemic i ...

  9. 大数据系列之知识点总结和企业级游戏行业架构设计

    文章目录 导言 1 游戏行业数据分析流程以及分析指标 1.1 数据来源 1.2 数据收集和落地 1.3 离线分析 1.4 实时数据分析 1.5 用户肖像 2 大数据相关知识 2.1 离线数据统计技能相 ...

最新文章

  1. 指纹浏览器 开源 linux,浏览器指纹--Canvas指纹
  2. 脚本语言和工程语言_语言工程中有趣的事情
  3. Delphi 与 DirectX 之 DelphiX(80): TDIB.BlendPixel();
  4. oracle提升,Oracle特权提升
  5. 彻底解决springboot修改页面和代码会自动重启
  6. 修复VMware 下Ubuntu启动不了问题
  7. 敏捷开发般若敏捷系列之三:什么是敏捷(下)(无住,不住于空,破空执,非法,非非法)...
  8. Centos6.3下rsync+sersync安装配置
  9. anroid 滑动浏览
  10. 恐龙机器人钢索恐龙形态_恐龙有的四脚行走有的两脚行走,有的会飞有的会游,差别咋这么大...
  11. 关于silverlight打印功能
  12. 服务器主板s2600cp2配置Raid5全过程
  13. DenseBox Unifying Landmark Localization with End to End Object Detection
  14. Redis_数据类型(常用)
  15. PAKDD 2019 中国企业深兰科技夺冠:AutoML 如何推动 AI 应用落地?
  16. Python测试三角函数的正交性
  17. linux-pam 编译,PAM后门编译安装
  18. 贷款买二手房 这4笔钱你都准备好了么?
  19. ES 查询示例 搜索 分组 去重 分页 排序
  20. wx is not defined

热门文章

  1. linux 操作mysql 数据库命令_在Linux上用命令怎么连接数据库
  2. 一款java游戏伐木建造_伐木建造模拟器
  3. java中如何检查字符串都是数字_如何在Java中检查字符串是否为数字?
  4. left join 后边的on条件 小记
  5. 打印Java数组最优雅的方式
  6. springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)
  7. sql server 2008安装需要一直重启。但重启后又没有达到效果。
  8. [Cypress] install, configure, and script Cypress for JavaScript web applications -- part3
  9. HDU 1520 Anniversary party(树形dp)
  10. python安装第三方库