❶ 如何在游戏机制中使用AI/剧情脚本
首先要说的是,并不是说AI,剧情逻辑必须非脚本语言不可,用C++也可以写,甚至更习惯一些。但是脚本语言有脚本语言的长处,动态类型以及相当人性化的数据构造方式,特别是LUA中的表类型,似乎比较擅长描述这种复杂的AI/剧情结构。当然,为了验证自己的想法,我也写了4K的LUA代码,结果觉得该脚本语言相当不容易构造简洁的内容。AI从高自低的分别是计划,状态机,模式。我不知道这种划分是基于何种角度,但是我个人的理解是状态机最高,模式作为某个状态下的某个决策所预定义的动作序列,而计划,是为了实现某个目标的一组步骤的组合。那么硬编码的游戏循环何时调用脚本?答案是,游戏循环执行到调度NPC的AI函数的时候,该AI函数就不再做任何硬编码,而只是简单的dostring("gameEntitys[npc](/"update/")")。就是这么简单,将所有的AI/剧情放置到脚本中。那么,LUA中 gameEntitys[npc]("update")是什么意思?简单的说,gameEntitys是一个存储所有NPC的注册表,gameEntitys[npc]将取得该npc的FMS函数,然后给该函数发送update消息告知npc当前的状态进行例行更新。FMS函数对于每一个对象是唯一的,那么比如某一类对象有共同的AI/剧情,那么该类的每一个对象同用同样的FMS函数的话,成员变量如何维持?要知道在LUA中模拟类还是比较麻烦的。答案是upvalue,也就是所有的对象使用同样的函数来生成自身的FMS,该函数就是FMS_Creator(all_state, init_state)。在C++编码中,NPC对象完成构造之后,就调用LUA载入对应的状态机/剧情脚本,然后调用FMS_Creator为自己创建FMS函数:dofile("npc_ai.lua") –引入all_state,init_stategameEntitys[npc]=FMS_Creator(all_state, init_state)当然,NPC析构之后,你也要释放LUA为你分配的资源gameEntitys[npc]=nil已经大概说明了如何在C++中启动NPC的LUA逻辑代码了,那么如何在LUA中编写状态机呢?答案是表。每个表代表一个状态,该表下的key表示该状态接受的消息,key对应的值表示该状态接受到key所表示的消息后要执行的决策,包括相应的动作和可能的状态变迁。看代码吧,最直观的表述:state = { name = "attack", –状态名 enter = { –进入该状态要执行,属于状态的消息 –func是函数,param是参数,sucess,unsucess是func执行结果所对应的状态转移 {func=print, param="open fire"}, {func=IsEnemyDie, sucess="cure"}, } update={} –同enter,不过用于状态在每一帧的更新 exit = {} –同enter,不过用于状态在每一帧的更新 other_msg = {} –同enter,用于表示该状态所接受的其他消息,可以有多个}在LUA中就是可以如此直观的表示每一个状态,其响应的消息以及函数。然后构造该npc接受的状态集合:all_state = {}all_state[state.name]=stateinit_state=state这样子,就能传递到FMS_Creator中创建出自己独一无二的状态机函数了。那么剧情脚本呢?其实描述了状态机,剧情脚本是否已经有点眉头了呢?剧情,即为计划,每一个计划由一系列步骤所组成。类似的,对应每个计划的执行会有一个plan()函数,且为了达到独立效果,该函数将会由plan_creator(all_step, first_step)生成。看参数,显然计划的步骤step就是类似于状态的表,不过key方面略有不同,看代码就明白:step = { name="find bill", cond = { –执行该步骤的前提条件 –func是判断条件的函数,param是判断参数 {func=IsXXX, param="xxx"}, {func=IsStepFinished, param=some_step}, }, finish = { –条件判断成功要执行的动作 {func
❷ 战棋游戏的AI设计思路是怎样的
先申明下我是个局外汉,业务知识水平,有出入或者错误欢迎探讨及纠正。占坑先…逻辑图待会用电脑做好比较易懂。至于难度,复杂点的可以考虑顺序的影响和技能效果。还有遇到过最简单粗暴的难度设定…就是数据的更改。
❸ 如何设计出优秀的游戏AI
游戏发展这么多年,并不是没有狡猾的AI,只是市面上主流的游戏没有使用到狡猾的AI而已,举个最简单的例子,我相信很多人下象棋都下不过大师难度的电脑或者机器人吧,这就是狡猾的AI,再联想下围棋界的阿尔法狗,游戏AI其实并不是没有发展,相反有些ai发展的有点可怕那么为什么主流游戏,比如RPG、SLG游戏的AI会给很多玩家AI还是很蠢的感觉呢,为什么他们不狡猾一点呢,简单的来说就是——他们不蠢怎么衬托玩家的聪明呢游戏AI,作为游戏内的设计元素之一,他所最终服务的对象是玩家,一个游戏AI是好是坏不是根据AI的聪明程度来判定的,而是根据他能给玩家带来什么样的反馈来判定的,这个才是游戏AI的最终设计目的游戏AI服务于玩家的体验,设计目的决定了他的设计方式,想要设计一个好游戏AI,并不是越聪明越好
❹ 游戏里的AI是如何实现的
游戏里面的AI是通过建立数学模型来实现的。 比如赛车游戏的AI,和你一起跑得赛车根据不同等级的AI表现出不同能力。它基本的设计思想是,通过对地图场景进行数学建模然后结合模型中的应变量结合赛车本身的参数进行数学结合。最后特出了带有系数的近似等式。AI的等级就是近等式的系数。然后通过数学变换(比如三角变换<AI出错或者攻击变现的比较有周期性>,等比变化,随即变换等)使得AI变的非常具备“人”的思维。 还有一种AI是通过行为库来实现的,在行为库中,定义了大量的行为,这些行为可能是预先定义好的,可能是游戏者在平时游戏的时候被系统录入的。然后AI通过类似责任链(不同等级的责任者对应不同等级的责任行为,你可以去网络搜索一下)的形式获取到某一个时候的行为,从而表现的比较有"智能".
❺ Unity养成类游戏AI怎么做啊
以下采用c代码,可能有大小写或者单词拼写的问题,但是功能不会错。将该脚本附加到怪物上,怪物将笔直的按照你给定的速度超目标移动。注意,在编辑器中一定要设置PlayerGo和Speed这2个属性public class AI:monobehivour{public GameObject PlayerGo;//追击的目标public float Speed;//移动速度internal void Update(){var dir=(PlayerGo.transform.postion-transform.position).normalize;//追击方向transform.translate(dir*Speed*Time.deltaTime);//不停地移动}}
❻ 如何设计一个回合制游戏中的AI
最终幻想13,你看 巫师2,古剑采用回合制 是十多年来 一直的习惯了,仙三外,如 最终幻想13。喜欢 回合制的 大多数应该是女生了,更为精彩 ·夸张的打斗画面,或许会有点错误的。具体 你可以自己去体验仙剑3的玩法。以上3种。你发出 仙术攻击,刺激的打斗效果。 【以上纯属个人的认知,肯定是 即时制。今后 游戏的发展,如古剑,其他角色 有电脑AI控制,可能在你发出仙术攻击时,即时制 对她们而言 或许会很有难度,即时制 可以拥有比前两者 更为 爽快,就是你一下,要求的程序更为多与复杂,你的仙术就打不到他。半即时制RPG 的模式 其实没有具体的分类。】仙剑,而又要准备发出仙术的时间,技术难度更高:回合制。因为 你一次只能控制一个人。回合制 做起来 很简单,例如仙三,就比较麻烦了,外国大作 早就抛弃了 无聊的回合制,敌人已经先打你了;即时制,毕竟 想在短时间内 有所突破 既有难度,我一下的互砍,但大体应该是对的,女生大多是为了看剧情;半即时制。即时制。如果一定要分得话,但是,或许可分为,它们哪款还是 无聊的回合制啊,而即时制 会加入很多的 动作元素。回合制 就不必多说了吧,如 仙剑三,就是加入时间的概念,也有资金的限制,波斯王子5这些游戏
❼ 如何给动作游戏的敌人设计人工智能
游戏中的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会学习(比如彩虹6号),是怎么做到的。
就是ai会记录玩家的行为,玩家的操作在电脑看来就是一系列的指令的组合。他们可以照样记录这条组合,然后轻松的山寨玩家。设计ai的时候也是模仿高手来编程的。通过对高手的习惯做分析,来模仿。采纳哦