游戏中的AI可以简单的理解为计算机控制的智能角色,这些智能角色能够通过周遭环境或者事件的变化进行逻辑判断,从而同玩家进行产生特定的行为交互。

组成AI的三个基本元素: AI的基本逻辑,AI的基本能力,AI的基本属性。

1、AI的基本逻辑

a,感知(Perception)

感知是指AI在所处环境或世界中,侦测周遭环境或者事件变化的能力,这种能力是由游戏设计者决定的并且赋予的。比如潜行游戏中,敌人的视野只有他前面90度角的扇形范围,如果游戏设定这个AI只具有视野这唯一的感知能力,也就是说玩家只有进入敌人视野才会被发现,那么,玩家不管是在AI的周围大声的开枪,还是用枪去顶AI的菊花,甚至开枪打伤它,AI都不会感知玩家就近在咫尺。当然作为游戏设计者需要全面的考虑游戏中AI的应该侦测哪些,赋予AI完美生动的感知能力。

b,行动(Action)

行动是指AI自己决定去做一系列行为, 游戏设计者通过一系列的规则和逻辑次序的设定来控制这些AI的行动。例如,WOW中有个NPC,白天时守着一个熄灭的火堆面前,来回的巡逻,而夜晚降临时则会去点燃火堆,静静的坐着不动。如果游戏设计者想制作一个热闹的城市,可以制作很多不同的AI角色,有的沿着街道从一个地方跑到另外一个地方,有的小贩站在原地不动吆喝,甚至可以让两个NPC在走路的过程中相遇然后聊上一会天。我想一个有着丰富的AI角色的世界,一定会让玩家很容易的融入这个游戏世界。

c,反应(Reaction)

反应是指AI在感知到玩家的行为所引发的刺激信息时所触发的行为。比如,Left 4 dead(生存之旅)里面的Hunter,在探测到玩家的位置之后hunter会伺机从远距离扑到玩家,如果玩家朝hunter开枪的话,hunter会尝试在远处使用天花板跳、三级跳等技能躲避玩家的射击,如果玩家并不射击hunter,他则会直接从远距离扑过来。这种反应又可以称之为怪物攻击策略,有趣而生动的AI反应会让玩家觉得挑战的乐趣。

大多数游戏AI主要能做到上面三点,就算是能满足游戏设计者的基本需要了。

d,学习(Learning)

比较复杂的游戏AI会记录玩家的行为变化,比如策略游戏的AI可能会根据玩家的策略变化,不停的分析玩家的行为,从而做出更为复杂的行为,是同玩家结盟,还是联合其他国家来攻击玩家;例如很多国外RPG游戏中的NPC会根据玩家在游戏中的善恶变化,而对玩家表现完全不同的态度;例如射击游戏中玩家开的是坦克,AI用的是步枪,当两者遭遇时,AI一开始还拿着步枪攻击了一阵,发现步枪完全没有用,于是就去寻找反坦克导弹来摧毁坦克。

高级AI的学习,需要随时记录玩家的行为变化,并把这些信息放到一个专门的分析系统中逐一分析,从而得到最有利于自己的反应。会学习的AI相当的聪明,但是更聪明的游戏设计者则需要设计一个完善的分析系统,这样的系统通常会用来控制一个游戏的难度,当玩家尝试很多次失败之后,我们的高级AI则会分析得到玩家的优缺点,比如玩家的射击能力实在太差了,于是便略微的降低自己的移动反应速度,让玩家更容易击中自己。

搞清楚了基本逻辑,我们就可以构建逻辑流程,从而设计出不一样的逻辑类型。例如,WOW里面,石像鬼和亡灵的HP和攻击力完全一样,但是在AI逻辑上仅仅只有两处不同。

石像鬼:原地石化->侦查->进攻->逃跑->死

亡灵:四处巡逻->侦查->进攻->逃跑->死

2、AI的基本能力

作为游戏AI设计者首先要分析并且归纳出自己这款游戏AI的基本能力,定义好这些基本能帮助游戏设计者很方便的制作更多更有趣的AI。

大多数游戏中AI能力大致上可以有以下几种:

检测潜在威胁 确认对方身份(敌人还是朋友)

确认威胁级别(专注于威胁最大的目标)

与敌对者交战(战斗技能)

特殊行为(根据游戏需要特意设计的AI行为)

而我们可以在这些基本能力作为可调整的嵌入参数来获得更多类型的AI, 例如,10级的石像鬼和5级的精英石像鬼的HP和攻击力完全一样,但是在AI能力上却有两处不同。

石像鬼:侦查->进攻->逃跑->死

精英石像鬼:侦查->横扫技能->进攻->逃跑->死

也就是说,我们可以保证基本逻辑流程的一致,也就是写一套基本的AI逻辑:侦查->进攻->逃跑->死,在其中嵌入多样化的能力,从而达到AI类型的多样化。

3、AI的基本属性

设计好AI的基本属性极其重要

大多数游戏中AI基本属性大致可以分为:

身份(阵营)

战斗参数(生命值,攻击力,防御力)

交互范围(追击距离,仇恨侦测距离,攻击交互距离)

侵略性(攻击技能使用频率)

仇恨(主要攻击目标查找)

游戏设计者可以通过调整基本属性设计出“个性”不一的AI,例如,WOW里面,我想要塑造一个二手交易平台凶猛的兽兵,那最先想到的属性可能是:血厚,攻击力高,防御力低,速度快。 而我想要塑造一个坚毅的人兵,属性则可能是:血中等,攻击力中等,防御力高,速度缓慢。 两者不同点仅仅是外形、动画、HP、攻击力。但两者的AI逻辑却是完全一样的,只是简单的侦查->进攻->逃跑->死亡。

如何利用以上的基本元素设计游戏中的AI?

第一步,定义游戏中AI的基本挑战。单个的AI挑战往往需要结合关卡设计的挑战组成一个基本的挑战模式(Challenge Pattern )。在游戏设计者拿到怪物详细概念设计之前,首先必须清楚本款游戏中最重要的游戏挑战在哪里(Where is the main GamePlay in my game?),也就是玩家玩游戏的乐趣是什么,以及我们所设计的游戏AI会出现在游戏的哪个部分,扮演着什么样的角色。例如,超级玛丽中,玩家需要利用跳跃来躲避怪物的直接接触(一碰即死),或者准确的跳到怪物头上从而消灭怪物,游戏中最简单的怪物AI表现为在两个点之间保持匀速的来回巡逻,这个就可以成为一个基本的挑战模式(Challenge Pattern)。越往后的关卡中的怪物AI则略微复杂,比如有的怪物会使用技能主动攻击玩家,则需要玩家即要躲避怪物的直接接触,又要躲避怪物不断发出的攻击子弹,这个就又是难度更高的挑战模式了。

第二步,设计挑战中的AI基本能力和基本属性。同样以超级玛丽为例,怪物的基本能力、基本属性和挑战模式如下表。从标上我们可以看出通过多样化的能力和属性的组合,我们可以得到更多样化的挑战。

第三步,设计AI的逻辑图。这一步往往是由游戏设计师和游戏程序员共同商讨来完成,如果游戏设计师能提供一个结构清晰的游戏AI运行流程,那将帮助程序员能够更好的理解游戏中怪物的行为,而且有的时候可能会需要设计者自己动手去制作AI(比如我。。。) 如下图是一个简单的RPG游戏中怪物的AI运行流程,也可以叫AI逻辑转换结构图。

AI的状态

也可以理解为程序员经常说的状态机。AI会在一个状态里面完成一个指定的行为,当指定的条件达成时,AI会从一个状态转到另外一个状态。如上图绿色方框,出生、待命、战斗判定、技能、追击....

AI的逻辑 AI的逻辑也就是AI状态之间来回转换的条件。如上图灰色菱形,出生状态是否完成,是否巡逻,玩家是否在仇恨范围内...

第四步,测试游戏中的AI。没人能保证自己的设计从一开始就是完美的,作为游戏设计者更要常常抱着玩家的心态去不断的测试体验自己的设计。

AI设计:如何给动作游戏的敌人设计人工智能?相关推荐

  1. 游戏设计之我见 —— 动作游戏中敌人的受击设计

    这篇博客结合一些游戏案例,介绍了3D动作游戏中敌人的受击设计. 在动作游戏中,由于玩家与敌人在一直进行不停地攻防博弈,因此为了给予玩家正切且适当的攻防反馈,需要着重设计敌人受伤以及死亡的设计. 受伤反 ...

  2. 设计一款免费游戏的关键设计原则

    设计一款免费游戏的关键设计原则 来自:cocoachina   17小时前  |阅读原文 我们谈论免费(free-to-play)游戏,谈的并非是一种新的类型,而是一场深刻的革命,这场革命影响到游戏产 ...

  3. 游戏设计之我见 —— 动作游戏中的敌人移动设计

    这篇博客结合了一些游戏案例,介绍了在3D动作游戏中常用的AI移动规律的设计. 移动方向 在3D游戏中,所有的物件都是以"横·纵·高"三个轴为基础进行移动. 但是对于动作游戏来讲,如 ...

  4. 游戏设计之我见 —— 动作游戏中的攻防设计

    这篇博客介绍了在近战攻击中的攻防设计,通过一些参考资料以及游戏案例来分析一个有趣味性的攻防设计需要注意的点,以一个半吊子的游戏策划的身份. 攻防设计与趣味性 以前体验过很多很多的动作游戏了,从街霸.无 ...

  5. 教师计算机课游戏教学设计,《有趣的游戏》教学设计5篇

    <有趣的游戏>教学设计5篇 作为一名老师,时常需要编写教学设计,教学设计是一个系统化规划教学系统的过程.那么应当如何写教学设计呢?下面是小编为大家整理的<有趣的游戏>教学设计, ...

  6. 2048java课程设计报告_2048小游戏-Java-课程设计报告书

    <2048小游戏-Java-课程设计报告书>由会员分享,可在线阅读,更多相关<2048小游戏-Java-课程设计报告书(31页珍藏版)>请在金锄头文库上搜索. 1.JAVA 语 ...

  7. 课程设计报告linux小游戏,嵌入式课程设计报告---贪吃蛇游戏.doc

    嵌入式课程设计报告---贪吃蛇游戏 嵌入式系统课程设计报告书 课题题目:贪吃蛇游戏 学 院:核自院 班 级:测控三班 学 号:9 姓 名: 马文铂 第一章 引言- 2 - 1.1关于题目- 2 - 1 ...

  8. [Python-Pygame]无中生有开发自己的2D动作游戏生成敌人

    一.构建父类 无论什么样的敌人,无论其行动.AI如何,能力强弱.大小各异,它们总会有一些共同的属性,例如无论什么样的敌人都具有生命值.攻击力等基本的属性. 从这里出发,我们可以使用类的继承来简化代码量 ...

  9. 【ThinkGame】我对动作游戏的思考,以及一个游戏程序能为动作游戏做什么?

    终于,我决定进入游戏行业,并踏进去了一只脚. 2019年的游戏<只狼>,让我看到了东方文化在动作游戏中的完美诠释,中国本应可以在以东方文化为卖点的电子游戏行业中大放光彩,却因为不可抗的力量 ...

最新文章

  1. tab in English
  2. 大学阶段总结——大一
  3. java html 生成 pdf_Java实现HTML代码生成PDF文档
  4. ZooKeeper学习笔记—配置管理
  5. unix c线程同步的三种方法:互斥量、读写锁以及条件变-xhb8413-ChinaUnix博客
  6. thinkphp 框架自动加载原理_这下你应该理解ThinkPHP的Loader自动加载了
  7. php下xmlwriter,PHP实现基于XMLWriter操作xml的方法
  8. 【docker】docker 实现 的基础
  9. DataTable数据存入指定路径Excel文件(套用Excel模板)
  10. ibm x3650 服务器安装系统安装,IBM服务器X3650安装操作系统步骤
  11. Hybrid App
  12. .mdf数据库恢复mysql_恢复mdf文件到数据库方法
  13. PostGreSQL安装压缩包格式
  14. 开源图像数据集管理工具fiftyone使用
  15. 安卓性能优化之启动优化
  16. python爬虫爬取实习僧岗位信息并存入excel数据表中
  17. JMeter—录制脚本
  18. 找工作前练手前端项目实战2
  19. 为什么PRD写的Low?你看图文、支付、数据、登录、按钮……藏了多少猫腻!(文末送44页淘宝PRD)...
  20. Python脚本制作exe程序超详细!

热门文章

  1. vue3 + video + canvas 人脸识别
  2. 用vue-awesome-swiper实现轮播图, 点击事件不生效
  3. 【GPT4】微软 GPT-4 测试报告(2)多模态与跨学科的组合
  4. keycloak php,Keycloak未知提供者错误
  5. Spring 线程池使用
  6. 主持人调度(二)-C++-牛客BM96
  7. 数据结构一 线性结构和非线性结构
  8. 100Hz加压电光调Q 参数及使用方法
  9. android虚拟机接收真实短信,Android 发送短信服务及其虚拟机测试
  10. (一)整合管理范围管理