游戏开发中的人工智能_第1页
游戏开发中的人工智能_第2页
游戏开发中的人工智能_第3页
游戏开发中的人工智能_第4页
游戏开发中的人工智能_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

游戏开发中的人工智能--------脚本AI及脚本引擎脚本概述脚本引擎实例AI脚本语言的危险开发脚本语言的注意事项脚本AI及脚本引擎脚本概述脚本概述概述开发脚本语言的动机脚本语言剖析编译器脚本是为了简化某种特定程序的复杂任务而设计的一种编程语言。因此,脚本是根据程序的特点定制的,它的使用范围在很大程度上取决于所需要解决的问题。脚本机制可以说是游戏开发过程中不可或缺的一部分,它可以让游戏设计师而不是游戏程序员撰写出游戏的巧妙之处,并予以精细化。玩家也可以利用脚本语言,建立或修改其所处的游戏世界或等级。脚本系统怎样及如何操作,主要取决于该系统的使用者。开发脚本系统时还应该考虑其他因素,例如:加密、开发描述编译器等,使得最后的结果难以让人阅读。脚本概述并行开发:脚本语言可以允许设计人员在独立于程序开发人员的情况下构造很多新的特性并做修改。易于使用:脚本语言提供了一种比专业编程语言更简单,开发环境更受保护的工具。数据驱动的设计开发速度快安全性:脚本语言在一个受保护的环境中运行,可以保证脚本内的致命错误不会使游戏崩溃,最坏的情况就是脚本被停止执行。可扩展性:允许游戏使用者扩展AI开发脚本语言的动机一个脚本语言通常由两部分组成:语言和引擎脚本语言与任何一种编程语言一样,规定了一组特定的语法,脚本语言可以通过转化或编译变换为引擎可以处理的格式。脚本引擎也称为解释器,用来执行经过编译的脚本。经过编译的脚本称为字节码流(bytecodestream),它包含了脚本需要解释器所执行的所有内容。脚本语言的剖析编译器概述词法分析器语法分析器代码生成器语法分析树编译器概述编译器负责把开发人员编写的源文件转化为计算机可以执行的代码。脚本语言的编译器与传统的编译器直接产生可执行代码不同,它生成字节码流,字节码流包含了脚本需要解释器所执行的所有内容。编译器转换步骤:词法分析器首先用来处理词组,读入源代码,然后把它们分解为一些基本的单元,即脚本语言中任何一个单独的结构(construct),称为Token。例如:-,*,=,if,void,MyFunction。Token被传送给语法分析器。语法分析器负责定义语言的合理结构,确保当前的脚本是一段合理的程序,负责把脚本源代码转换为编译器可以理解的结构,即语法分析树。语法分析树被交给代码生成器生成字节码流。代码生成器递归地遍历整个语法分析树以处理其中每一个节点,并生成相应的可以执行的命令。语法分析树语法分析树是程序员所写的脚本源代码的另一种表现形式,它能被编译器所理解。由于绝大多数编程语言都是高度结构化的,所以它们能被表示为一种树状结构。树上的每一个节点都对应了语言中的一种结构类型(例如,条件语句,函数调用,表达式等),这些节点的子节点是相应的语言结构所需要的操作数。语法分分析树树脚本引引擎堆栈机机堆栈机机的执执行控制代代码流流脚本引引擎——堆栈机机任何一一种脚脚本语语言都都需要要一个个用来来执行行程序序员所所编写写脚本本的引引擎,,即翻翻译器器,负负责脚脚本执执行的的各个个方面面的工工作。。由于翻翻译器器执行行的指指令集集并不不是特特定的的汇编编代码码,因因此称称之为为虚拟拟机((VM),负负责执执行编编译器器所生生成的的字节节码流流。堆栈机机是脚脚本语语言虚虚拟机机技术术中普普遍采采用的的一种种基本本形式式。堆堆栈机机的操操作码码首先先从堆堆栈中中弹出出将被被操作作的数数据,,然后后把得得到的的答案案压入入同一一个堆堆栈中中。不不断重重复该该过程程,直直到整整个字字节码码流都都被执执行后后结束束。由由此可可知,,操作作仅需需要堆堆栈和和指令令指针针(用用来指指向字字节码码流中中将被被执行行的下下一条条指令令)。。实现堆堆栈机机最直直接的的方法法就是是构造造一个个类,,包括括堆栈栈数据据,指指令指指针以以及用用来处处理各各种操操作码码的逻逻辑过过程((操作作码处处理器器)。。操作码码处理理器是是构造造堆栈栈机的的关键键,它它负责责处理理每一一个操操作码码所需需要的的工作作。由由于每每一个个操作作码处处理器器是类类中唯唯一的的一个个成员员函数数,可可以通通过一一个函函数指指针表表来正正确地地调用用。操作码码的值值由堆堆栈机机定义义,它它需要要定义义从0开始的的连续续的整整数,,来作作为函函数指指针表表的索索引。。每个操操作码码处理理器都都返回回一个个布尔尔变量量来表表明操操作码码所定定义的的操作作是否否成功功,若若操作作失败败则停停止对对字节节码流流的执执行,,调用用错误误恢复复程序序后清清空。。脚本引引擎——堆栈机机堆栈机机例如::ClassVM{boolHandlePush(Opeodeop)//...typedefbool(VM::*OpcodeHandler)(opcode);OpcodeHandlerm_opHandlers[Nnm_opcode];}每个函函数处处理器器被OpcodeHandler定义,,都以以一个个操作作码为为参数数。通通过把把当前前指令令的操操作码码传递递给处处理器器,对对应不不同操操作就就分别别调用用某个个固定定的处处理器器来执执行。。堆栈机机中还还包括括一个个堆栈栈数据据成员员,用用来存存放各各种操操作所所需的的操作作数。。由于于STL容器向向量提提供了了常数数时间间的插插入和和删除除操作作,而而且对对于每每一个个数据据项的的随机机访问问操作作都是是常数数时间间的,,所以以非常常适合合用来来构造造这种种堆栈栈。堆栈机机中还还包括括一个个指令令指针针,指指令指指针始始终指指向所所需执执行的的下一一条指指令,,表现现为指指向字字节码码流的的操作作码指指针。。脚本引引擎——堆栈机机初始化化,即即清空空堆栈栈、将将指令令指针针指向向字节节码流流的起起始位位置。。进入循循环,,依次次执行行每条条指令令。首首先,,指令令指针针所指指向的的操作作码被被获得得,作作为索索引传传递给给操作作码处处理器器用来来调用用正确确的操操作处处理函函数。。循环环直到到整个个字节节流码码被执执行完完毕后后结束束。操作码码处理理器完完成堆堆栈操操作的的所有有细节节,例例如::出栈栈、入入栈、、相加加操作作等。。堆栈机机的执执行控制代代码流流——条件语语句对于简简单条条件语语句,,即只只具有有条件件为真真时所所执行行的程程序块块。首首先得得到条条件表表达式式的取取值,,然后后把它它压入入堆栈栈的顶顶部,,接着着执行行“为为0时跳转转”操操作,,即首首先把把堆栈栈顶部部的操操作数数弹出出,若若值为为假,,则按按照字字节流流码中中给出出的偏偏移量量进行行跳转转(跳跳到条条件语语句后后的第第一条条语句句);;若值值为真真,则则执行行条件件语句句中的的程序序块。。对于具有条条件为真和和为假的程程序块而言言,偏移量量指向条件件表达式为为假时所需需执行的程程序块的第第一句。编编译器会在在条件表达达式为真时时,所需执执行的程序序块结束的的地方,生生成一条相相对跳转语语句,用来来跳过紧跟跟在后面的的条件为假假时所需执执行的程序序块。控制代码流流——循环语句循环语句执执行时混合合使用条件件转移和相相对转移指指令。例如如:C风格的for循环会生成成以下伪汇汇编代码::Performpreloopexpression.A:Performloopconditionalexpression.JumptolabelBiftop-stackelementiszero.Performloopbodystatements.Performloopincrementalexpression.JumptolabelA.B:Firststatementafterthefor-loop.控制代码流流——函数由于当函数数执行完毕毕时需要返返回到调用用它的代码码所在的位位置,所以以虚拟机需需要通过维维护一个指指令指针的的地址堆栈栈来对函数数调用的状状态进行跟跟踪,以便便当函数返返回时对指指令指针的的值进行更更新。即当当函数被调调用时,当当前指令指指针的值被被压入这个个堆栈的顶顶部,然后后函数中第第一条指令令的地址值值被赋给指指令指针。。当函数执执行完毕时时,函数堆堆栈顶部的的数据被用用来重置指指令指针的的值,以便便程序执行行回到函数数调用的地地方。虚拟机用堆堆栈帧(stackframes)来存放函函数的返回回值、参数数和局部变变量。通过过帧指针((framepointer)指向第一一个局部变变量来访问问堆栈帧中中的任何参参数和局部部变量。处处于激活状状态的堆栈栈帧都维护护在一个链链表中,并并且被保存存在调用堆堆栈(callstack)中,调用用堆栈中包包含每个堆堆栈帧的指指针和指令令指针。实例指定对手属属性:决定定因素是游游戏类型脚本的基本本分析影响对手行行为增加预先定定义好的全全局变量,,并由游戏戏引擎赋值值,以评估估游戏世界界里的特殊殊情况。AI角色的移动动口语互动口语嘲讽辅助暗示触发事件及及增加气氛氛AI脚本语言的的缺陷语言的成熟熟性:改进进、开发工工具、参考考手册缺乏具有完完全特性的的开发、调调试和统计计工具脚本都是在在运行时进进行解释的的,因此具具有更大的的性能负担担固定性的AI脚本会使得得游戏重玩玩性大大降降低设计正确的的界面(编编辑器)——设计者与AI交互决定AI实体的初始始位置、提提供附加AI实体参数、、指定运动动路径、指指定AI实体之间或或AI实体和游

温馨提示

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

评论

0/150

提交评论