怪物AI应该说是这是一个程序问题,如果从策划的角度来说,作为设计者,则需要了解怪物AI整体的设计流程,这样才能提出自己的需求,从而让游戏战斗的整体体验符合设计预期,毕竟怪物AI也是属于战斗和体验的重要部分。

AI的设计,如果从程序口中说,可能会跳出诸如“行为树”“ 决策树”“有限状态机”之类的程序名词,听起来很专业有木有?但是策划没学过肿么办?不要急,我们先抛开这些程序名词,仅仅从策划设计角度来梳理一下怪物AI的策划设计。当然,如果理解有错误,希望大家指出,共同学习进步。

1、什么是怪物AI?

在策划意义上来说,怪物的AI实际上是一种交互体验,换句话说就是怪物或NPC等虚拟角色在面对玩家操纵的角色的时能够给出合适恰当反应。实际上,在游戏实际的设计中并不是一味地需求怪物的AI越高越好越真实越好。在游戏中,我们的目的是让玩家和怪物或NPC的交互能够产生一种近似真实的可对抗性,这种接近真实的对抗才是怪物AI设计的目的,这样才能吸引玩家去继续战斗,甚至不断的提示自己的装备属性和能力,引入进一步的对抗。

怪物的弱小和强大,聪明和愚蠢其实都是设计的需求。

所以说,怪物的AI设计目的是期望和玩家的交互中可控的,平衡的以及具有诱导性的。

2、怪物的ai包括什么?

怪物的AI说白了就是多种状态之间的转换,这种转换是基于逻辑的,符合常理的逾期。

在怪物的状态则是基于怪物的特色本身来设定的。

我们以《暗黑破坏神2》的骷髅怪AI为例:

在暗黑2中,在MonStats.txt这个文件中有aip1~aip8中这几列设定怪物的ai行为参数,暗黑2的检定方式为随机数,即是以随机取一个0到100的数字来和表中的参数数字比较,如果小于或者等于该数值则视为检定成功,否则失败。

Skeleton (骷髅)

描述:骷髅战士是一个迟钝的AI,它发现敌人后会试图接近,有敌人在攻击范围内时则持续攻击,但是它经常会毫无理由的停止动作一段时间,站着发呆。

1.当肉搏范围内没有敌人时,继续接近敌人的几率

2. par1,par3检定失败后等待的时间(单位:帧)

3. 当肉搏范围内有敌人时,攻击敌人的几率

4. 攻击时,以A2代替A1的几率

5. n/a

6. n/a

7. n/a

8. n/a

通过这几条我们可以看到在暗黑2中骷髅的行为方式实际上比较简单,只有接近敌人,失败等待以及攻击等几种简单的状态,一旦随机数进行判定,也只会从这几种状态中进行反应交互。

实际上来说暗黑2的ai设计思路主要还是以随机数判断加上条件行为为主,这个实际上也是目前绝大部分游戏采用的方式。

这种思路来说,虽然比较原始和传统,但是优点在于简单好维护,理解和调试比较简单, 当然缺点也比较明显,就是容易出现怪物行为单调,千人一面,因此也对怪物设计和条件的设定提高了要求。

如果来拆解暗黑3的AI,我们可以看到有这么几条是必需的。

1、怪物AI的判定方式。一般采用随机数,也就是掷骰子的方式,这是比较常见的手法。用来判断ai是否开始执行。

2、怪物的范围设定。

怪物的范围简单来说就是怪物的战斗范围,实际上也可以精确的说是怪物的听觉视觉,如果要说细一点,那还会分为战斗前和战斗中两个阶段,在战斗前会有游荡范围,听觉警戒范围和视觉警戒范围,而在战斗中会区分为追击范围,近战攻击范围、魔法攻击范围和呼喊范围。

听觉警戒范围为360度,视觉警戒范围为120到180度不等,二者可以共享半径,也可以让半径不同。

具体拆分如图所示:

设置这些范围有什么用处呢?这些范围实际就是处理各种不同的AI行为条件的基础了。

3、AI行为条目

AI的行为条目是只怪物所能够采取的行为策略,在实际上,怪物的一个完整的流程是指怪物的从出生到死亡的整个过程。

出生,是指怪物的创建生成情况,这个比较好理解,这时对应的战斗前范围。怪物的状态可能是游荡,巡逻,静止等各种行为条目,这些就属于第一类的AI行为。

而后的情况,则是怪物面对的战斗情况,即如何进入战斗?一般来说,游戏会设定一个“仇恨值”或者主被动的设定。

仇恨列表相当于另一个系统了,这里就不展开说了,而对于AI来说,有了仇恨值,则可以进行一系列基于仇恨的行为了,比如进行攻击,释放技能,是否追击,是否呼喊召唤支援等等。

最后就是怪物进入濒死阶段的一些特殊行为,这些是基于特定条件的比如HP血量下降到一定程度,怪物会有溃败逃跑、呼叫救兵或者使用特殊技能比如“自爆”等其他行为。

以上就是基于条件行为相关的一类基础的怪物AI行为的设计逻辑。QQ靓号买号属于比较基础的AI设计,当然也是比较好用的一类设计。

主要可以用表格或者文本来制作,当然具体的实现和调试则需要策划和程序大神一起共同完善了。

随着游戏制作技术的进步,关于怪物AI的制作也越来越工具化了,感谢程序大神们的提供的各类高端工具,这里也顺便介绍一下,希望后续能和大家交流。

一类是基于编辑器的怪物AI编辑。比如暴雪一般会提供一个功能相当强大的游戏编辑器,在编辑器中则会有专门关于怪物AI的编辑内容。

比如星际2中的编辑器,推荐大家学习使用,这里就不展开说了。

其次是怪物AI的行为树编辑。行为树这个概念也是比较久的一个工具,不少商业引擎都支持行为树的编辑,比如Spore(孢子),Crysis2(孤岛危机)都是采用行为树来制作对应的AI模型。

如图示意(示意图来源为网络,仅做示意)

上图所示为一个怪物的行为树,作为策划来说,需要关注的是上图中几类不同的颜色区分,代表了不同的行为,条件和控制节点。

在我看来,行为树最好的方面在于如何去控制AI携带者的行为的路从初始到最终实现是如何走的,在行为树上来有多个节点以及一系列控制条件帮助携带者的做出正确及时的选择,这种选择过程是充满乐趣的。

相比之前的在excel表上的写写画画,这无疑是打开了新的一扇门。

从根节点从左往右可以看,怪物的每一步选择以及判断都会有对应的行为分支来控制,犹如一颗树一样枝繁叶茂,每一条分叉都有对应的行为和条件,就这样多条分支的执行来搭建成一个完整的行为模型。

因为我们的最终展现的仍然是怪物所执行的行为结果,即为行为节点的内容,不同是执行行为节点的判断以及行为过程的控制力度,行为树可以增加任意多的节点选择分支,这就给怪物的行动判断加多了更多的可能性,制作人员在理解上也会方便很多,当然更重要的优点是程序上处理的优势,这里就不展开讨论了。

总而言之,怪物AI制作博大精深,这里只是粗浅描述,难入窥门子径,唯望可抱砖引玉,共飨同好。

游戏编程新手教程:怪物AI设计简述相关推荐

  1. 游戏编程技术贴:AI设计的若干规则阐述

    一般来讲,网络游戏的AI历来就是很简单的AI.相比之下,很多单机游戏的AI就要得复杂一些.而笔者并未从事过大型单机游戏的AI设计,所以也就不班门弄斧了.但至于网游的AI,还是略知一二. 目前游戏中的A ...

  2. 嵌入式编程入门教程,学习设计嵌入式工程师

    俗话说万事开头难(然后中间难,最后难?),刚开始的时候,你是否根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去看书也是找不到方向?又是arm,又是linux,又是uboot头都大了.不知道 ...

  3. 微信小游戏开发新手教程14-整合到一起,做出你的小游戏

    终于到了真正动手做游戏的时刻,在这一节里,我会带你从头开始将我们的"太空保卫者"按照设计方案制作出来.这一节里的内容会非常的多,一遍消化不了,可以多读几遍.别着急,慢慢来. 首先, ...

  4. 微信小游戏开发新手教程8-有事儿的话,记得@我

    这一节我们主要学习游戏开发中的一种常用的工具---通知,也称事件. 之前提到过,通知可以理解为给别人发信息,这个过程需要有两方的参与,一个发送方,一个接收方.发送方负责发送通知,而接收方决定收到通知后 ...

  5. Unix/Linux环境C编程新手教程(22) C/C++怎样获取程序的执行时间

    1.问:知道程序执行时间我们能够做什么? 在<C++应用程序性能优化>一书中,假设大家读过相信大家一定对性能优化这一块很上心,文中总是对优化前后的时间对照很直观给我们一个感受. 那么我们怎 ...

  6. 【LOSOL】怪物及AI设计

    LOSOL怪物及AI设计 引子 怪物设计理念 怪物类型列举 怪物AI简述 怪物AI包括范围 怪物AI设计 结语 引子 怪物在游戏中始终占据着一个极其重要的位置,一个游戏的趣味性很大一部分跟怪物的设计挂 ...

  7. 3D游戏编程与设计 PD(牧师与恶魔)过河游戏智能帮助实现

    3D游戏编程与设计 P&D(牧师与恶魔) 过河游戏智能帮助实现 文章目录 3D游戏编程与设计 P&D(牧师与恶魔) 过河游戏智能帮助实现 一.作业与练习 二.设计简述 1. 状态图基础 ...

  8. 3d游戏编程(转帖)

    3d游戏编程(转帖) 我先声明,我不是编程高手,我还只是个初学者,但我觉得我所知道的对刚入门3D游戏编程的新手,应该能让他们少走弯路,我也很想用朝语来写,但是朝语的词 汇库很久没有更新过了,有些专业的 ...

  9. 游戏编程资料合集(持续更新)

    [ 1 ][游戏设计编程电子书小合集].Game.Programming.with.Python,.Lua,.and.Ruby [ 2 ]Direct3D9初级教程 [ 3 ]Direct3D游戏编程 ...

最新文章

  1. 2018-2019-2 20165313 《网络对抗技术》Exp4 恶意代码分析
  2. ES6系列之小知识点
  3. 利用XShell上传、下载文件(使用sz与rz命令),超实用!
  4. Spring实战 MethodInvokingJobDetailFactoryBean使用与分析
  5. Visual Studio 2013 / 2015 完全卸载 - C语言零基础入门教程
  6. IntelliJ IDEA 中无法下载Maven仓库源代码jar包到本地
  7. zookeeper资料
  8. 5G协议流程-UE初始接入、F1启动小区激活
  9. Hive面试题汇总(2021)
  10. oppoa3android怎么升级,OPPO A3刷机教程_OPPO A3卡刷升级更新官方系统包
  11. 无线路由器与交换机配合使用,图解
  12. react实现关于文本框的双向绑定
  13. (转)SonicStage CP 4.3 中文迷你版和完整版下载
  14. Django项目(五):注册模块—登录注册
  15. table表格首列首行固定
  16. 基于Multisim的红路灯电路设计
  17. 为什么要用私钥加签,公钥加密
  18. windows解密bitlocker【2】密码读取
  19. 远距离蓝牙路由器产品:桂花网Cassia S2000介绍
  20. SuperMap轨迹点数据模拟数据生成

热门文章

  1. 计算机在机电一体化应用论文2000字,机电一体化论文3000字范文参考(5)
  2. python predict y和x是必须一致吗_数据科学python错误 - ValueError:x和y必须具有相同的第一维...
  3. 打包python程序
  4. Docker+Redis镜像的原理以及部署安装(超详解附截图)
  5. vue之父子组件通信
  6. 在ASP.NET MVC中加载部分视图的方法及差别
  7. filebeat相关registry文件内容解析
  8. Python 内嵌函数运用(探究模块)
  9. .net MVC4.0项目发布到阿里云虚拟主机中遇到的问题。
  10. Hibernate如何一个类映射两个表