AI系统需求及解决方案(v0.2)_第1页
AI系统需求及解决方案(v0.2)_第2页
AI系统需求及解决方案(v0.2)_第3页
AI系统需求及解决方案(v0.2)_第4页
AI系统需求及解决方案(v0.2)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内部资料目录目录2第一部 需求目标及要求概述2第一节 策划设计需求2第二节 程序对自身设计和制作过程的需求和要求5第三节 先期制作内容7第二部 需求分析7第一节:数据列表需求7第二节:决策规则8第三节:D3阶段具体制作内容8第三部 解决方案9第一节 NPC状态机组织关系10第二节 NPC智能切换关系12第三节 决策系统对状态机的影响13第四节 决策系统的构成13第五节 数据项描述16第六节 类描述16片外编:其它系统17第一部 需求目标及要求概述第一节 策划设计需求一、单个NPC的需求单个NPC的行为是重点功能,群组行为则是在这个基础上增加群组的管理和指挥。对怪物的基本描述如下:1. 主动攻击类型:有敌对状况存在的对象进入警戒范围便对其发起进攻,直到战斗结束,返回攻击前位置。包括:Boss、凶狠的怪物、警卫、炮台等。主动攻击开关关闭时,对在警戒范围内的敌对对象不主动攻击,直到该对象首先发起了攻击,才进行攻击,直到战斗结束。包括:初级怪物、敌对状态的功能NPC等。2.受害不攻击类型:即使玩家攻击怪物,怪物也不会予以还击。(如:新手试炼怪)3.同类支持类型:(以被攻击为触发点)1:攻击性支持:当怪物发现有与自己为同种族的同伴受到攻击时,即会主动帮助同伴攻击敌人。怪物会支持所设定的“侦测范围”内被攻击的同伴。2:辅助性支持当怪物发现有与自己为同种族的同伴受到攻击时,即会主动帮助同伴加血(怪物本身必须有加血技能)。怪物会根据所设定的侦测范围支持其范围内被攻击的同伴。如果同伴死亡,则攻击刚才同伴的目标。4.受害即逃跑:不会产生反击,当怪物受到攻击时,立即会逃跑。怪物依据所设定的“逃跑速度”进行逃跑,并依据所设定的“逃跑距离”判断逃离距离。在逃到不能再逃的时候,随机在原地移动,直到战斗结束返回或则死亡。5.条件转换AI:例如:血量低于20%则逃跑;受到致命一击3次,引发狂暴;发现敌人就召唤宝宝;每少10%的血,投掷毒气弹;定时释放群伤魔法等。6.不死类型:此类怪物永远不会被打死。(如:新手试炼怪)A 战斗行为的选择 :攻击、追击、逃跑、召唤、呼唤、投降、巡逻(攻击前进)、定制寻路、目标寻路等B 触发条件:进入视野、受到攻击、受伤C 可使用技能列表(初始化/定制)暂定为8种技能。战斗宠物的技能列表可能会多些。D 武器选择和切换:根据距离选择近远战武器;根据自身条件切换武器和魔法的使用。E 攻击对象的选择 :仇恨系统:攻击固定仇恨 技能附带仇恨,为固定值,普通攻击则是由公式计算出仇恨值,无治疗转换仇恨。根据策划的某项规则获得合适的对象。如获得:仇恨最高的对象,仇恨最低的对象,治疗最高的对象,伤害最高的对象等。F 攻击技能的选择 :1 简单战术选择条件:距离:在较近距离内选择近战攻击,在较远范围选择远程攻击;主技能类型:战斗NPC分为:战士型、法师型、术士型、牧师型基础功能:具有近远程攻击切换功能战士型:主要是近战攻击,远程攻击较弱。法师型:主要是远程攻击,近战攻击较弱。术士型:主要是远程攻击,近战攻击较弱,召唤宠物、图腾、炸弹、毒雾、火云等其他物品辅助战斗。牧师型:近远程攻击都较弱,但会给自身或者同伴治疗。2 不同情况下技能的细节选择:如自身HP、范围内的目标数量、自身方向与目标方向的夹角计算等;目标的类型、HP、MP等,可检测的目标的属性;Buff的检测、宠物数量类型的检测等。3 特殊逻辑:提供策划对于技能选择条件的可控制的接口。例如:能获得目标是否正在吟唱过程中,来决定是否释放类似打断或者沉默这样的技能。G 变身切换:魔兽中德鲁伊、祖尔格拉布的一些祭祀、通灵的食尸鬼等。H 生活行为的选择 :固定特殊行为(要求在配置文件或者脚本中完成)和 通用行为 行走、休息、普通表情(笑、哭、敬礼、羞辱等)I 感情表述的选择 :表述条件(任务、声望、当前状态、其他趣味性设计),实现机制(先期服务器传输,后期标志传输,客户端翻译代号转文字+多国语言)J 高级指挥系统:兵员组织,行动路线,目标,达成效果评估(地标性建筑的击毁、屠杀数量等),攻击撤退的选择(伤亡统计范围、速度等),防御策略决策K 其他逻辑需求:操作地物、NPC之间的通信及识别二、群组形式NPC的行为需求A范围通知方式 :描述:当一个怪物受到攻击以后,可能在某种情况下,会呼唤旁边的怪物,来攻击玩家。包括:刚受到攻击、攻击过程中、某个条件下、逃跑过程中都可以呼唤周围相同类型的怪物,攻击目标玩家。这种范围缩小可为以NPC为中心,几米的范围内;也可扩大,如整个场景、整个副本、或者地图的一个逻辑区域,如:巨人旷野、十字路口这样的小区域。B头领方式 :如果头领消亡(注意不是死亡),整个群组消亡,生成则是由头领创建描述:一个Boss有8个跟班,把8个跟班杀了,这个Boss就投降了;怪物术士,当主人死亡,BB就消失;但是怪物猎人就不同,BB战死或者脱离战斗状态才会消失,原因是要合乎背景设计,因为术士的BB是要靠术士的“法力”维持,术士死亡也就是法力消失,法力消失BB就没有生存的依据了,合乎西方魔幻系统的情理。C定制方式 :情景NPC相互触发。三、队伍NPC的移动行为需求A宠物行为:1.跟随功能:移动的时候跟随主人;主人停止后,以主人为中心在规定范围内随机移动。2.具有功能:原地待命;取消原地待命,返回主人身边;3.类型:攻击型:主动攻击周围可攻击目标;防御型:在主人遭到攻击,攻击那个攻击主人的对象,目标死亡或者无效后,返回主人身边,再攻击下个攻击主人的对象。跟随型:只是跟随主人,在没有接到主人攻击命令之前不进行攻击;或者不具备攻击功能,仅为装饰性。4.可操作战斗功能(包括客户端界面),技能学习功能B队列组织:队形 包括:围攻队形+行进队形+队形整理四、NPC的关卡行为需求对地物的发现和操作能区别进入视野范围内的对象的类型:操作一个门、按钮、某种装置等情况,在关卡设计和任务中应用较多。第二节 程序对自身设计和制作过程的需求和要求程序基础功能需求:1 数据录入系统:统一的XML数据录入系统。客户端服务器都需要使用,并且在D3阶段要进行详细的功能性设计和测试,这些是必需的。2 通用性表格系统:在进行技能、目标、队伍、物品、工会、临时数据等方面都将大规模的应用,该表格系统需具有:命名、存储、添加行列、删除行列、关键字/条件查找、条件排序、插入行列、表列定义及排错、表行长度定义及操作等功能。3 计时系统:主要是获得时间差,来完成诸如:冷却、各种逻辑周期等,BW中的timer()因必需为实体才可操作,故我们需要一个不产生实体能在程序虚拟体上运行的计时系统。还有个原因就是entity发生迁移的时候,是否引起timer()函数的重置或被取消。一、行为状态机行为状态机的行为选择的名字规则,以及使用名字进行行为状态的操作。目的为方便调用和转换二、AI系统的突发变异。在决策系统中加入可变因素模糊逻辑参数(高级)三、关卡相关的具体设计需求。根据策划需求,一般为定制四、脚本接口的易用要求。命名规则及参数设置尽量的简单明了。获得场景的相关信息。获得目标的相关信息。消息事件的定义、分类、格式。五、地编中路线设定的修改。在地编中进行固定式寻路的设定,但是来回往复运动其格式为:B4.7762F591.BC3519BC48. 0. 63.C91C1EA8.4EE6AEBC.A5.DF707AFAD2.4642ADC0.5B3C219E.A9D51CBDtrueDDE13F4F.4B4FD2FD.82B6D8BC.001A687Dtrue无法区别点的方向,必须进行修改,才可在多点双方向情况下,让编辑变得简单。六、工具需求参考关于峥嵘天下项目人工智能及NPC行为系统设计总纲中第二章第三节工具需求 的内容第三节 先期制作内容一、单个NPC的A 战斗行为的选择 B 触发条件:进入视野、受到攻击、受伤C 可使用技能列表(初始化/定制)暂定为8种技能。战斗宠物的技能列表可能会多些。E 攻击对象的选择 :仇恨系统 F 攻击技能的选择 :1 简单战术选择条件H 生活行为的选择二、群组形式NPC的行为需求半径范围内通知其他怪物三、队伍NPC的移动行为需求A宠物行为:跟随功能第二部 需求分析第一节:数据列表需求1在NPC身上建立对象列表,包括仇恨数据2 技能列表 可配置3 武器列表 可配置4 法术状态表 与玩家的相同5 状态机名称列表 可配置第二节:决策规则1 当前目标的选择规则:主要根据仇恨系统的结果进行,但是根据不同的情况选择其中不同的对象。2 技能选择规则:在不同的自身的情况和外界情况下所影响的技能选择规则3 武器切换规则:根据不同的自身和外界条件下,选择切换当前的主要使用的武器进行攻击,因为要发生外观的变化。4 行为状态切换的规则:此规则一般直接使用脚本实现,完成FSM机,并配属在相应的NPC身上。运算规则:1 仇恨数值的运算规则,将各种因素的仇恨转换为可比较的统一性质的仇恨值方法:原始仇恨值(可能存在类型不同,也可将来便于调整),通过系数转换的方式,转换成同一性质的仇恨点数,方便各个不同事件进行比较。仇恨系数规则。仇恨列表项的添加和删除规则。以及各种情况的处理规则。例如:牧师的渐隐术,战士的强制攻击等技能对仇恨列表的影响。2状态及转换机制:解决如何在不同状态机之间进行切换,并达到切换的流畅性,数据流通的简单性。第三节:D3阶段具体制作内容1. 战斗触发的接口。怪物的主、被动攻击触发。主动攻击怪物的触发:在玩家进入他的境界范围后,进入攻击行为流程。被动攻击怪物的触发:在受到伤害以后,确定目标进入攻击行为流程。2. 任务交互功能。与任务模块交互的接口。在AI组切换方面要给因任务触发转换AI组预留接口。制定切换关键变量的相关信息和格式。3. 定制自有生活行为。(打断后能继续进行活动,或者重置)。三套生活模版: 怪物出生后,无论是主动攻击还是被动攻击,在指定的范围内随机移动,带有偶尔性的速度变化。 按照指定的路线来回行走巡逻。例如警卫NPC、巡逻的怪物。 一个旅行商人的活动。会在某点驻留,可交互任务或者物品的功能。主要是添加相关驻留控制的流程。4. 定制战术策略主要是受害不攻击类型(新手试炼怪)、战士型、法师型、骑士型。新手试炼怪:受到攻击不会逃跑,也不会攻击,站在原地不动,直到自身死亡;如果在15秒内不受到攻击,则恢复普通生活状态。战士型:分为主动攻击和被动攻击两种;攻击的方式就是近战攻击,追逐玩家进行战斗,不会逃跑,不会呼唤同伴,没有任何法术技能;如果过于靠近目标,转身后退,然后再转过身来攻击目标;基本配置能力为高防,中等攻击能力。法师型:分为主动攻击和被动攻击两种;攻击的方式为远程法术攻击;进入可攻击的范围,进行法术攻击;超出攻击范围,进行追击;具有HP20%的时候,进行逃跑或者呼唤同伴的能力。基本配置能力为低防,高等攻击能力。骑士型:分为主动攻击和被动攻击两种;采用近战攻击方式,基本与战士相同;具有治疗自身的能力;不会逃跑,不会呼唤同伴;基本配置能力为高防,低等攻击能力。5技能选择决策的接口。并实现简单的技能选择决策规则。因NPC会配置有同类多种技能。所以在攻击、治疗的时候,需要进行技能选择。6. NPC战斗结束的处理: 如果超出进入战斗状态时的位置50米,则无敌返回那个位置,血量恢复满,继续其生活状态; 死亡的时候掉落物品;暂时不进行物品归属的处理。 死亡后5秒尸体消失; 通知生成器/生成器自行检测,按照配置时间间隔,生成新的NPC。 第三部 解决方案第一节 NPC状态机组织关系在每个NPC的配置当中,考虑它可能的状态转换。并进行分类,存在的不同的状态机组的数量控制在2个以内。如果出现非常复杂情况,建议将在第二状态机组内完成。对状态机组进行大的归类:InitiativeMonster 主动攻击怪物PassiveMonster 被动攻击怪物Patrolman 巡警WanderingTrader 游走商人Plebeian 平民CommonPet普通宠物 CombatPet战斗宠物 StoryNPC剧情NPC ProtectedNPC被护送NPC 例如一个主动攻击的祭司:那么它的默认状态机组是 剧情NPC, 但是当他发现你进入他的警觉范围的时候,就会切换成主动攻击怪物,当其结束战斗状态以后,又会变成一个剧情NPC,不停的在那里祭祀和来回走动。又例如一个可攻击动物的游走商人:当他在路上行走的时候,他的默认状态机组是游走商人,你点他它会停下来和你交易;而当他发现了一个动物的时候,结束和你的交易状态,他会切换为主动攻击怪物(而玩家是否可以攻击这个商人则是由声望阵营等其他因素来决定,商人是否主动攻击玩家也是由其他外界因素决定),去攻击这个动物,结束之后返回刚才的所在地,等待你和他继续进行交易,如果等待时间结束,则继续游走商人的其他行为。 再例如一个可被护送的任务NPC:任务触发前他是个平民,没有攻击与被攻击的可能,但是在任务触发以后,他会切换为剧情NPC,按照路线行走、召唤怪物、战斗并结束自己的剧情。例如:NPC的配置中:Live = WanderingTrader / Patrolman Combat = InitiativeMonster / PassiveMonster Task = TaskNPC这些相当于通用的AI模版,在NPC的InitAI()中,去添加相应的这样一组人工智能:例如:def Init_AIs(self): AI“Live” = WanderingTrader(self) / Patrolman(self)AI“Combat” = InitiativeMonster(self) / PassiveMonster(self) AI“Task” = TaskNPC(self)#状态机管理器class PassiveMonster: def _init_(self, owner): self.addstate_fsm(combat_fsm) self.addstate_fsm(dead_fsm) self.addstate_fsm(comeback_fsm) self.addstate_fsm(runaway_fsm) self.addstate_fsm(tracetarget_fsm) def think_all(self):if :self.changestate()else :self.changestae()def on_msg(self, msg):if msg = stop:self.changestate(comeback_fsm)对于以下三种不同情况的处理:1 AI的组成和运行方式相同,而外界条件数据不同的处理:例如:一个是血少于20%,逃跑;一个是血少于15%,逃跑;解决:在设计每个状态的时候,提取这个状态的可变量决定属性,放置到NPC配置属性当中。2 AI的组成和运行方式相同,所作的行为选择不同的处理:例如:都是血少于20%, 一个为逃跑,一个为呼唤同伴;3 AI的组成和运行方式相同,存在多种选择:例如:血少于20%, 选择逃跑或者呼唤同伴;解决2、3问题:为每种行为状态设定选择成功机率,当条件成熟后,根据行为的选择机率进行选择,如果是唯一选择,则几率为100%;如果为1-100之间的几率,都没有选中的话,则默认选择并列行为中的第一个(也就是看后面的行为是否被选中,替换第一位的那个并列行为,这样可以不用进行第二次循环选择)。第二节 NPC智能切换关系关键的数据表现就是有没有进入战斗状态,来转换人工智能组,也就是相当给NPC换了一个脑袋。那么例如被护送的NPC,如果要求它在任务没有触发前还可以攻击的话,那么实际上它身上存在三个AI组,第一个为生活AI,第二个为普通战斗AI,第三个则是护送任务AI。那么这里就有很明显的区分标志,在没有发现敌人的情况下,且触发了护送任务,实际上它进入的另外一种生活状态,当遇到敌人的时候,进入战斗AI。第三节 决策系统对状态机的影响决策系统是通过调用当前状态的消息响应函数进行工作。例如:当一个战斗状态正在进行的时候,发生了沉默事件,当前正在执行的状态我们是知道的,存放在NPC.current_fsm中,通过调用NPC.current_fsm.on_msg(“event”)的方式,向这个状态发送消息(实际上一个调用),如果这个状态是一个战斗状态,那么就要相应这个沉默消息,正在进行的施法就要被中断,返回上级的决策系统;至于下次选择技能的时候,则是技能选择系统通过对自身状态的监测(在状态列表中是否存在不能释放法术的标志),来进行判断是否可以进行法术技能的选择;如果当前的状态与是否造成技能中断没有直接关系,那么可以空运行一次响应函数。第四节 决策系统的构成一、对象选择系统:主要根据仇恨规则来选择当前的攻击对象。对象的添加和删除:对象死亡、消失、对象错误;警觉范围、造成伤害、为仇恨列表中的对象治疗;队伍规则、团队规则;仇恨值的计算:技能本身携带的仇恨值累计;普通攻击转换仇恨值累计;临时仇恨的增减累计;选择规则:仇恨最高;职业中仇恨最高;二、战术选择系统:主要根据自身属性、逻辑定制选择当前的使用战术。1 战术列表的建立:战术列表主要牵扯的问题是:该NPC具有哪些战术类型,具体的战术动作则是由战术选择、技能选择和武器选择的共同决定的结果。为每种战术指定技能组。例如:一个战斗NPC具有:战斗-治疗-逃跑-呼唤战斗这个环节使用什么武器或者技能则是由技能选择和武器选择的结果决定使用哪个攻击技能或者武器。治疗环节则是由技能选择的结果决定使用哪个治疗技能或者物品。逃跑环节基本上是属于公用环节,但是也可以定制,例如:必须沿着指定的路逃跑;也可以在某个范围内随机移动。呼唤环节则使用定制广播器进行广播,使周围的NPC协同攻击。那么我们就确定了有些什么可以用。然后决定怎么用和怎么组织。2 选择规则:首先要确定一个默认进入战斗之后的第一战术。例如:默认的进入战斗以后的第一个战术一般都是为战斗,也可以默认为呼唤,弱小的NPC可以默认为逃跑(至于怎么逃,则是逃跑这个行为本身的逻辑)。3 类型划分: 这种选择规则基本都是定制的,那么为了减少定制的数量,我们进行分类整理,具体数据采用外界配置的方式,来减少定制的数量;当然Boss级的多战斗阶段需要定制:总结下: 战士型:一般没有逃跑行为,使用单一武器/技能攻击。 法师型:具有逃跑行为,近身使用武器攻击,远程使用法术攻击,逃跑后具有呼唤同伴的能力。其中包括创建新对象的能力,直接或者间接的参加战斗。 骑士型:除战斗本身外具有自我治疗和辅助治疗功能。 猎人型:具有宠物,指使宠物攻击,并在限制对手移动方面具有很高能力,然后撤出相对远的距离进行远程攻击。三、武器选择系统:主要根据距离、自身属性、战术要求来选择当前武器。1 武器列表的建立:建立武器列表;只有武器编号一项。(现在武器是直接做在NPC身上的,建议分开制作,绑点连接武器,只有两种情况,一种是持有武器,一种是不持有武器,不建议制作一个NPC可以更换多种武器)在没有可更换和可拆卸武器的情况下:当前版本情况下,直接将攻击数据配置在NPC身上,如果将来使用挂接武器方式,则直接从武器本身获得数据。(就是空手攻击数据,也就是一项最简的攻击技能。)2 武器更换:暂不考虑3 选择规则:暂不考虑四、技能选择系统:主要根据本身技能配备

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论