游戏开发中的人工智能

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
FACULTY OF SOFTWARE
➢编译器转换步骤:词法分析器首先用来处理 词组,读入源代码,然后把它们分解为一些 基本的单元,即脚本语言中任何一个单独的 结构(construct),称为Token。例如:-, *,=,if,void,MyFunction。 Token被传送
给语法分析器。
➢ 语法分析器负责定义语言的合理结构,确保当前的 脚本是一段合理的程序,负责把脚本源代码转换为 编译器可以理解的结构,即语法分析树。
13
FACULTY OF SOFTWARE
脚本引擎——堆栈机
➢ 实现堆栈机最直接的方法就是构造一个类,包括堆 栈数据,指令指针以及用来处理各种操作码的逻辑 过程(操作码处理器)。
➢ 操作码处理器是构造堆栈机的关键,它负责处理每 一个操作码所需要的工作。由于每一个操作码处理 器是类中唯一的一个成员函数,可以通过一个函数 指针表来正确地调用。
➢ 操作码的值由堆栈机定义,它需要定义从0开始的 连续的整数,来作为函数指针表的索引。
➢ 每个操作码处理器都返回一个布尔变量来表明操作 码所定义的操作是否成功,若操作失败则停止对字 节码流的执行,调用错误恢复程序后清空。
14
堆栈机
FACULTY OF SOFTWARE
例如:
Class VM{
bwenku.baidu.comol HandlePush ( Opeode op )
➢ 脚本系统怎样及如何操作,主要取决于该系统的使 用者。
➢ 开发脚本系统时还应该考虑其他因素,例如:加密、 开发描述编译器等,使得最后的结果难以让人阅读。
4
FACULTY OF SOFTWARE
开发脚本语言的动机
➢ 并行开发:脚本语言可以允许设计人员在独立于程 序开发人员的情况下构造很多新的特性并做修改。
15
FACULTY OF SOFTWARE
脚本引擎——堆栈机
➢堆栈机中还包括一个堆栈数据成员,用来存 放各种操作所需的操作数。由于STL容器向 量提供了常数时间的插入和删除操作,而且 对于每一个数据项的随机访问操作都是常数 时间的,所以非常适合用来构造这种堆栈。
➢堆栈机中还包括一个指令指针,指令指针始 终指向所需执行的下一条指令,表现为指向 字节码流的操作码指针。
脚本引擎——堆栈机
➢ 任何一种脚本语言都需要一个用来执行程序员所编 写脚本的引擎,即翻译器,负责脚本执行的各个方 面的工作。
➢ 由于翻译器执行的指令集并不是特定的汇编代码, 因此称之为虚拟机(VM),负责执行编译器所生 成的字节码流。
➢ 堆栈机是脚本语言虚拟机技术中普遍采用的一种基 本形式。堆栈机的操作码首先从堆栈中弹出将被操 作的数据,然后把得到的答案压入同一个堆栈中。 不断重复该过程,直到整个字节码流都被执行后结 束。由此可知,操作仅需要堆栈和指令指针(用来 指向字节码流中将被执行的下一条指令)。
// ...
typedef bool( VM::*OpcodeHandler )(opcode );
OpcodeHandler m_opHandlers[Nnm_opcode];
} ➢ 每个函数处理器被OpcodeHandler定义,都以一个
操作码为参数。通过把当前指令的操作码传递给处 理器,对应不同操作就分别调用某个固定的处理器 来执行。
脚本语言的剖析
➢ 一个脚本语言通常由两部分组成:语言和引擎 ➢ 脚本语言与任何一种编程语言一样,规定了一组特
定的语法,脚本语言可以通过转化或编译变换为引 擎可以处理的格式。 ➢ 脚本引擎也称为解释器,用来执行经过编译的脚本。 ➢ 经过编译的脚本称为字节码流(bytecode stream), 它包含了脚本需要解释器所执行的所有内容。
➢ 语法分析树被交给代码生成器生成字节码流。代码 生成器递归地遍历整个语法分析树以处理其中每一 个节点,并生成相应的可以执行的命令。
9
FACULTY OF SOFTWARE
语法分析树
➢语法分析树是程序员所写的脚本源代码的另一 种表现形式,它能被编译器所理解。由于绝大 多数编程语言都是高度结构化的,所以它们能 被表示为一种树状结构。
➢树上的每一个节点都对应了语言中的一种结构 类型(例如,条件语句,函数调用,表达式 等),这些节点的子节点是相应的语言结构所 需要的操作数。
10
FACULTY OF SOFTWARE
语法分析树
11
FACULTY OF SOFTWARE
脚本引擎
➢堆栈机 ➢堆栈机的执行 ➢控制代码流
12
FACULTY OF SOFTWARE
3
FACULTY OF SOFTWARE
脚本概述
➢ 脚本是为了简化某种特定程序的复杂任务而设计的 一种编程语言。因此,脚本是根据程序的特点定制 的,它的使用范围在很大程度上取决于所需要解决 的问题。
➢ 脚本机制可以说是游戏开发过程中不可或缺的一部 分,它可以让游戏设计师而不是游戏程序员撰写出 游戏的巧妙之处,并予以精细化。玩家也可以利用 脚本语言,建立或修改其所处的游戏世界或等级。
6
➢概述 ➢词法分析器 ➢语法分析器 ➢代码生成器 ➢语法分析树
FACULTY OF SOFTWARE
编译器
7
FACULTY OF SOFTWARE
编译器概述
➢ 编译器负责把开发人员编写的源文件转化为计算机 可以执行的代码。脚本语言的编译器与传统的编译 器直接产生可执行代码不同,它生成字节码流,字 节码流包含了脚本需要解释器所执行的所有内容。
➢ 易于使用:脚本语言提供了一种比专业编程语言更 简单,开发环境更受保护的工具。
➢ 数据驱动的设计 ➢ 开发速度快 ➢ 安全性:脚本语言在一个受保护的环境中运行,可
以保证脚本内的致命错误不会使游戏崩溃,最坏的 情况就是脚本被停止执行。 ➢ 可扩展性:允许游戏使用者扩展AI
5
FACULTY OF SOFTWARE
FACULTY OF SOFTWARE
游戏开发中的人工智能
--------脚本AI及脚本引擎
1
FACULTY OF SOFTWARE
脚本AI及脚本引擎
➢脚本概述 ➢脚本引擎 ➢实例 ➢AI脚本语言的危险 ➢开发脚本语言的注意事项
2
FACULTY OF SOFTWARE
脚本概述
➢脚本概述
• 概述 • 开发脚本语言的动机 • 脚本语言剖析 • 编译器
相关文档
最新文档