游戏basic设计规划

上传人:kms****20 文档编号:40335225 上传时间:2018-05-25 格式:DOC 页数:13 大小:139.50KB
返回 下载 相关 举报
游戏basic设计规划_第1页
第1页 / 共13页
游戏basic设计规划_第2页
第2页 / 共13页
游戏basic设计规划_第3页
第3页 / 共13页
游戏basic设计规划_第4页
第4页 / 共13页
游戏basic设计规划_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《游戏basic设计规划》由会员分享,可在线阅读,更多相关《游戏basic设计规划(13页珍藏版)》请在金锄头文库上搜索。

1、游戏语言 VmBasic 设计规划林伟 第 1 页2018-3-18Game-Basic 系统设计规划与技术手册设计规划与技术手册Linwei 2002电子科技大学通讯工程学院20013080 班林伟二二年九月二年九月游戏语言 VmBasic 设计规划林伟 第 2 页2018-3-18总总 体体 说说 明明 (一) 主要思想: 1、 内容紧扣名称,内容围绕“VirtualMachine(虚拟机系统)”与“游戏” (针对 Windows/Unix 不同平台独立性)展开。 2、 本软件不再以 Game 或 Basic 或 VirtualMachine 的名义进行宣传和版权说明等, 用“VmBasi

2、c”取而代之。这样才能把“VmBasic”的品牌创出来,体现出 3、 软件由一年前完成的虚拟机系统 VmBeta 和游戏编程语言 VmBasic 完美的结合起来, 利用虚拟机的与平台无关性,容错性,高效性,安全性。使得 VmBasic 编译出来 的软件能基于虚拟机的技术,在不同的平台上面发挥出最大的功效。 4、 实现类似消息机制的灵活扩展接口,使得 VmBasic 可以与你的软件完美的结合起 来,成为一套灵活的脚本引擎,使你的软件具有运行脚本的能力。同时对于语言 本身,实现了预连接技术,也可以使用户方便的为语言增加功能。 5、 全部核心代码用标准 C+写成,分别在 Windows/Unix 下

3、数款 C+编译器上面调试 通过,充分保证了软件的与平台无关性。从 2002 年 9 月开始,对外提供 VmBeta 与 VmBasic 引擎,如有需要者请 mail 一份到 (二) 制作时间: 2001 年 11 月-2002 年 1 月制作虚拟机系统:VmBeta 2002 年 4 月-2002 年 8 月制作游戏编程语言:VmBasic(三) 系统发展概况: 1、 起初,我由于平时编程常常居于不同的平台,而且在所设计的几个软件中都迫切 的需要与平台无关的脚本机制的支持来提高软件的灵活性与可维护性。著名的 Autocad/ Animator/ 3D Max 以及金蝶财务软件中都提供脚本功能来

4、让用户更灵活 地操作软件,但是他们的脚本机制采用的都是相对独立封闭的技术,要让它们扩 充一项脚本功能则需要每个软件都改写大量代码,而且效率安全方面也不健全。2、 初期,我开始意识到要解决这些问题,使得今后的系统中采用统一的脚本引擎并 且统一维护,灵活扩展只有采用 VirtualMachine(虚拟机)技术,于是在去年年底, 我花了大量的时间研制成功了一套新的虚拟机系统 VmBeta,它参照了一款小型栈 式 CPU,制定了自身一系列 32 位寄存器和指令集合实现了与平台无关性。历经三 个月 VmBeta 系统的研制成功对我后来的开发工作起到了制关重要的作用。3、 中期,在 VmBeta 的设计成

5、果之上,软件的脚本支持问题得到了初步的解决,但是 脚本的编写都是基于 VmBeta 的汇编指令上面来完成的,编程效率极其低下。我意 识到要使它真正起作用的话,必须为 VmBeta 编写一款高级语言编译器。就象 Java 和 Javac 一般,这是项艰巨的工程,凭着以前我写过几个脚本引擎,研究了大量 的编译方面知识终于写出了一款编译器 VmBasic。本来编译器想选择 Pascal 为蓝 本,可是我觉得 Basic 更能让人接受,仅仅写成传统的 Basic 很不够,于是我陆游戏语言 VmBasic 设计规划林伟 第 3 页2018-3-18续为其增加了许多灵活的功能,整个虚拟机-脚本引擎完成。4

6、、 现在,处于我自己的兴趣爱好,我喜欢编写游戏,而且是从 DOS 下直接操作 VGA 显存作图,操作声卡发声一直到现在 Windows 下利用 DirectX 和 OpenGL 编写游戏, 我深感游戏设计之困难程度非凡,许多朋友渴望自己制作游戏却被一道道高高的 门槛隔与局外,于是我利用 VmBeta 的扩充性将 VmBasic 扩充了一系列多媒体操作 指令以及游戏常用指令,使得刚入门的朋友们只需掌握简单的 Basic 语句就可以 编写一定规模的游戏。5、 今后,由于现在 VmBeta 是一款高效的虚拟机而 VmBasic 且用途是一个脚本引擎。 所以将继续从简单性和可扩充性着手。一来基于 Vm

7、Beta 的框架做扩充可以变为某 种 CPU 的模拟器备将来研究开发之用,二来现在的由于其自身特点,在许多领域 都可以发挥重要用途。(四) 联系方式: 林伟:电子科技大学通讯工程学院 20013080 班 电话:83200790, 191-8094070 信箱: 游戏语言 VmBasic 设计规划林伟 第 4 页2018-3-18GameBasicGameBasic 规规 划划 说说 明明 (一) 构架方案:脚本流错误VmBeta 指令 互相调用其基本运行模式如上图所示,按照面向性对象的思想,不同层次之间的通讯采用消息 机制最为灵活,比如 Windows 的消息机制。所以 VmBeta 对外部

8、的扩展选择了消息机制,就 是那个“互相调用”箭头所表示的含义。在厂家制定了一系列扩展模块以适应自身软件需 要的同时,这些功能在 VmBasic 脚本里面并没有体现出来,因此还要为 VmBasic 来编写预 连接库,来定义一些关于新功能的函数、过程、常量、变量等等,才算完成。脚本调用预 连接库时也就实现了新功能的调用。(二) 游戏 Basic 的具体规则: 首先游戏 Basic 为 VmBeta 提供了一系列 Windows 多媒体功能,键盘鼠标控制功能,本 来打算使用 DirectX 来控制作图,但是考虑到 DirectDraw 于界面程序不好配合,且当时研 究 GDI32 作图甚有心得,于是

9、图形全面采用 GDI 来控制。 接着编写了预连接库 StdLib.VBL 为上述功能提供了脚本编写接口,于是整个扩展得以 完成,实际上游戏 Basic 也就是 VmBeta 与 VmBasic 的一个具体应用实例。 整个游戏 Basic 的组成文件如下:文文 件件 名名功功 能能 说说 明明VmBeta.exe虚拟机运行文件(For Windows)VmBIDE.exe游戏 Basic 开发环境(集成了 VmBasic)StdLib.VBL预连接库(可以用文本编辑器查看)(三) 系统的性能比较: 虽然 VmBasic 编译器并没有做代码优化,而且经常生成一些机械多余的代码影响了速 度,但是经过

10、和 DOS 下自带的 QBASIC 进行测试,同样的几个算法程序,这套系统要比 QBASIC 快的多,达到了 3/4 的程度,这也得归功于虚拟机系统的高效性。虚拟机 VmBeta 系统(运行指令)应用程序 (厂家所设计软件)VmBasic 编译器预连接库用 户脚本来源用户编写厂家升级游戏语言 VmBasic 设计规划林伟 第 5 页2018-3-18VmBetaVmBeta 规规 划划 说说 明明 (一) 虚拟机 Beta 的指令集及 I/O 说明: 1 虚拟机模拟栈式 CPU 一共有八个寄存器: RP:指令寻址寄存RF:标志寄存器 R0,R1,R2,R3:通用寄存器 RS:栈寄存器 RB:辅

11、助栈寄存器 标志寄存器 RF 的第 0 位到第 3 位分别为 FZ(零标志) FB(小于标志) FA(大于)当 用 CMP 指令比较两个变量时比较的结果会更改三个标志,在用条件跳转指令 JPC 进行跳转时会根据 JPC 所给的条件查询三个标志进行条件跳转 2 虚拟机指令有 JMP(无条件跳转)JPC(条件跳转)CALL(调用)RET(返回)LD(数据装载) CAL(数据运算)CMP(数据比较)PUSH(压栈)POP(弹栈)NOOP(空指令)IN(输入指令) OUT(输出指令)EXIT(推出指令)等 13 条指令支持类型有 DWORD(32bit) / WORD(16b) /BYTE(8b) /

12、 INT(32b) / FLOAT(32b)。 3 基本 I/O: 输入:INPUT 00.转化 FLOAT 类型的 R3 数据到 INT 类型 01.转化 INT 类型的 R3 数据到 FLOAT 类型 02.分配字符串,返回句柄 03.转化 R3 的字符串到 INT 类型并且返回 04.将 R3 的 INT 数字转化成 R2 所指字符串 05.将 R3 的字符串设置成 R2 的字符串 06.将 R3 的字符串末尾添加 R2 的字符串 07.求 R3 字符串的长度 08.释放 R3 的字符串 09.比较 R3,R2 两个字符串 0A.将 R3 的 FLOAT 类型转换成 R2 所指字符串 0

13、B.将 R3 字符串转换成 FLOAT 类型并返回 0C.返回 R3 字符串的第 R2 个字符 0D.设置 R3 字符串第 R2 个字符成 R1 0E.返回版本号前 16 个字节是主版本号,后 16 个字节是附版本号 0F.返回一个 1KHz 的时钟值,这个时钟从程序开始运行便启动 10.返回 sin(float)R3) 11.返回 cos(float)R3) 12.返回 tan(float)R3) 13.返回 sqrt(float)R3) 14.返回 abs(int)R3) 15.返回 abs(float)R3) 输出:OUTPUT 00.输出带n的整数 01.输出带n的字符串 02.输出不

14、带n的字符串 03.输出不带n的整数 04.输出单个字符游戏语言 VmBasic 设计规划林伟 第 6 页2018-3-1805.输出不带n的浮点 0A.输入整数到 R3 0B.输入字符串到 R3 0C.输入浮点数到 R3(二) 虚拟机的设计和工作原理: 1 本工作原理:虚拟机的基本工作原理很简单,从内存中顺序取出虚拟机指令的字 节码然后作出相应的操作 2.基本的框架设定 IVMInstance 虚拟机的定义是在 ivms.h 里面,虚拟机概念被定 义为实例 HINSTANCE 叫做 IVMInstance,这个类是纯虚类,没有任何实现,只是 提供了基本接口。类 IVMInstance 里面定

15、义了虚拟机的寄存器,内存空间,空间 大小,还有就是虚函数的接口:Process,VmIn,VmOut,VmError 这四个成员函数是 虚拟机实现之关键,Process 是从虚拟机空间的当前位置解释执行一条虚拟机命 令,然后返回,这样以一条语句为单位的基本定义是为了方便你在派生类中加入 跟踪调试,断点等其他功能。VmIn 是虚拟机的输入函数,VmOut 是输出函数, VmError 是错误处理函数。 3.具体的实现类 IVMBeta,IVMInstance 被设计成纯虚函数,起一个框架作用。具 体实现的一个虚拟机被命名为 VmBeta 在 ivmsbeta.h 里面得到了定义,通过对 IVMInstance 的继承,重载并且实现了 Process/VmIn/VmOut/VmError 并且加入了 大量其他功能。所以说真正的指令解释是在 IVMBeta 得到实现的。具体的解释方 法也并没有什么特殊的地方,可以参考 ivmsbeta.cpp 里面的实现。虚拟机的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号