


免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
厦门大学软件学院毕业设计(论文)开题报告学生姓名班级 学号指导教师姓 名职称所在单位厦门大学软件学院毕业设计(论文)题 目基于虚拟机和解释器的游戏脚本系统解释器模块设计与实现一毕业设计目标:1. 背景介绍:随着游戏项目规模的不断扩大,游戏内容越来越丰富,需要编辑的东西越来越多,对数据驱动的要求也越来越高,传统的编译型语言C/C+已无法满足游戏开发者对于语言灵活性,易用性,动态编译的需求。游戏开发趋向于将脚本语言和C/C+等语言结合起来。作为底层的游戏引擎大部分使用汇编语言,C/C+等语言开发,而游戏本身却用动态脚本语言来编写。动态脚本语言在网络游戏开发中的主要优势:1) 语法简单,易懂。脚本语言中抽象符号和古怪的语法和缩写词相对较少,编写和维护容易,其结果是测试,调试和修改也变得容易2) 动态的数据类型。变量不需要预先定义其类型,系统会在运行时自动检查变量的类型。3) 自动垃圾收集和内存分配。据CERT报告称,软件中80%的漏洞都是由缓冲区溢出产生的2。脚本语言没有指针,在运行时自动处理垃圾收集和内存分配,这样就使得缓冲区溢出难以发生。4) 可移植性强。脚本语言与处理器,操作系统的平台无关,当脚本语言编写的程序移植到不同的平台时,只要改变它的解释器,其他任何事情都不需要做。5) 扩展性强。脚本语言都、非常容易地与C/C+, Java整合。脚本语言提供了与外界联系的接口,其他语言的组件或库可以扩展脚本语言或被脚本语言整合到一起。6) 模块化,可重用性高。脚本语言支持模块化设计,代码可以被制作成容易使用的小组件。它也可以很轻松地重用到未来的项目中去。2. 研究现状:目前的网络游戏编程过程中大量使用游戏脚本,例如著名的网络游戏魔兽世界中就使用Lua脚本。由于游戏脚本语言在GUI控制,人工智能,数据管理等方面的强大能力,所以经常使用脚本语言来运行AI,处理游戏中玩家的属性等数据。如此,编写游戏引擎的编码人员就可以专注于游戏引擎的代码上,从而实现游戏引擎和游戏本身进行严格分离。这样非常有利于大型游戏的开发,管理,维护和升级。游戏开发中常用脚本语言 Python语言Python是一种面向对象的脚本语言。Python具有非常好的可移植性,几乎可以运行在任何平台和操作系统上。因此,游戏开发人员可以利用 python语言创建具有自己特色的游戏。Python通过扩展和嵌入等方式与其它语言相结合来增强它的开发能力。在 Python语言中,只有极少数内置的将它与其它语言结合起来的方法。为了利用其它语言,开发人员需要开发一个包装程序,这个包装程序将 Python中的功能参数转化到另一个语言中,同时将返回的结果以一种 Python能理解方式传给 Python。Python语言的主要优点包括:(1)与 Lua等相比,它有更多的扩展模块。(2)语法简单、易读在线学习资料、案例和相关书藉相对较多。(3)与它相关的工具相对较多。Python语言的主要缺点包括:(1)它的调试器比较古怪且速度慢,它的执行速度慢。(2)很难将 Python与其它语言捆绑。(3)很多开发人员不太喜欢它对空格符敏感这一语言特点 Lua语言Lua是一个小巧简单、功能强大的语言,这使得 Lua非常容易学习,它的完全发布版可用一张软件装下来。Lua有很高的执行效率,统计表明在众多脚本语言中,Lua是平均效率最高的脚本语言 。Lua被设计为易于扩展的,Lua很容易与 C/C+、Java,以及其它语言接口,可用其它语言代码来扩展功能,实际上它的很多功能都是通过外部库来扩展的。鉴于它卓越的扩展性,可以把它作为搭建领域语言的工具(如:游戏脚本)。Lua不是通过使用条件编译来实现平台无关的,而是完全使用 ANSI(ISO)C,这样只要是有 ANSIC编译器的系统都可以使用 Lua。Lua也存在一些不足,例如学习材料和文档非常少,自带的功能模块较少等。Lua在复杂游戏用户界面控制、人工智能等方面的强大功能,使得它在游戏开发中得到重用。例如魔兽世界的自定义界面系统就采用了 Lua,网易经典“西游系列”也使用了 Lua。在游戏的开发过程中,开发人员一般将游戏引擎交由 C/C+等语言完成。而在用户界面、人工智能、游戏逻辑、动态行为等游戏中经常变动的部分交予 Lua来完成。 其它语言Ruby是一种用于迅速和简便的面向对象编程的解释性脚本语言。RGSS(RubyGameScriptingSystem)是它的一个脚本性质的游戏编程系统。RPGMakerXP(RMXP)这款制作角色扮演类游戏开发软件所使用的脚本语言就是 Ruby。RGSS的功能有限,并不能用它完成一个完整的游戏,但随着游戏行业对网页游戏的看好和 RoR,即一个用于编写网络应用程序的框架,它基于计算机脚本语言 Ruby)的流行,Ruby越来越受到重视。Erlang是用户相对很少,但它非常适合分布式的 MMOG的开发。3. 存在的问题:虽然动态脚本语言有许多优势,但它也存在许多不足,主要表现在:1) 与编译型的静态语言相比,脚本语言边解释边执行,这样虽然减少了程序人员的编码时间和调试难度,但它的执行速度慢,所以它不适合开发系统的底层部分,例如游戏引擎。2) 使用游戏脚本语言写的源代码解释后的字节码容易受到攻击。3) 游戏脚本语言缺乏对底层资源的控制和管理。4) 英文和中文文档极度缺乏,与其他语言相比,在游戏方面所作的工作和实例都比较少。4. 设计目标系统整体目标:1) 设计一个简单,高效,便于扩展的基于堆栈的虚拟机,实现基本逻辑,堆栈,函数,对象装载,异常处理,并重点关注使用垃圾收集机制实现自动内存管理。2) 实现解释器,它将动态语言翻译成能直接在虚拟机上运行的字节码,这个解释器应该是高效的,能够识别程序中的语法错误,并且能够对源程序进行适当优化。3) 定义一种运行于虚拟机和解释器的简洁的动态脚本语言,它针对游戏领域领域的特殊应用需求,提供高效的数据类型,例如散列表,并提供必要的库函数,以支持游戏开发中最常用的功能。4) 使用动态脚本语言开发一个小游戏,例如贪吃蛇,五子棋等。以演示系统效果,包括系统稳定性,效率等各个方面。解释器模块设计目标:1) 解释器把源程序作为输入,输出虚拟机可以理解的字节码文件。经历如下阶段:词法分析,语法分析,语义分析,代码优化和字节码代码生成。2) 解释执行过程灵活,正确,可方便地插入修改和调试措施,并确保执行效率。二实现方法1. 基本环境开发工具:vim, gcc, gdb 开发语言:C/C+开发平台:Linux2. 系统模块划分系统的总体架构:源程序文 件源程序解 释 器过程字节码文件字节码文件虚 拟 机数据栈寄存器内存管理解释器视其底层的虚拟机为目标机器,生成能够直接在虚拟机上运行的字节码文件解释器模块的设计主要包括以下几个部分:源程序词 法 分 析 器语 法 分 析 器语 义 分 析 器代 码 优 化 器错误处理器符号表字节码文件代 码 生 成 3. 主要实现方法1) 构建词法分析器有两种方法:自己编码实现语法分析器和向专门的词法分析器生成工具描述出词素的模式,然后将这些模式编译为具有词法分析器功能的代码。我们将优先选择用C语言自己编码实现词法分析器,在需要的情况下,研究或使用词法分析生成工具Flex,实现其词法分析接口yylex()函数6。2) 语法分析是解释器的核心部分,它的任务是在词法分析识别出的词法单元的基础上,分析并判断程序的语法结构是否符合语法规则。语法分析的结果应该是构建语法树。此阶段根据词法分析模块产生的词法单元,在移进,规约的过程中形成抽象语法树1。3) 语义分析是审查源程序有无语义错误,语法结构是否符合语法规则,为代码生成阶段收集类型信息。当不符合语言规范时,解释程序应该报告错误。4) 为了进一步提高目标代码的质量,我们采用一种简单而有效的优化技术窥孔优化。它通过考查一小段目标指令并把这些指令替换为更短更快的一段指令,从而提高目标代码的质量3。而且窥孔优化的一个特点是,优化后所产生的结果可能会给后面的优化提供进一步的机会。我们将运用常用的窥优化技术,例如冗余存取,不可达代码,控制流优化,强度削弱,删除无用操作,并借鉴GCC编译器的优化模块。5) 符号表的主要操作有插入,查找以及删除等。考虑到符号表对插入删除的性能以及解决冲突的方式,我们选择哈希函数来解决。分为全局符号表和函数的符号表,全局符号表用于存储全局变量,对于每一个函数单独建立一个符号表。4. 测试方法 在编码的每一个阶段,我们都严格执行单元测试,确保程序每一部分功能的正确性。 在系统集成阶段,逐一测试个模块之间的接口,避免接口不一致而导致错误。最后开发一个小型的游戏,考察其稳定性,运行效果,通过与其它编译型的静态语言的横向比较和当前主流的动态脚本语言的横向比较,得出系统的优势和不足。5. 开发前的准备了解正则表达式,自动机,编译原理相关基础知识和算法。学习垃圾收集,哈希函数相关算法,了解系统的性能测试。GCC编译器的系统构架,各个模块使用的主要算法。Java虚拟机的类装载技术,垃圾收集算法等。时间进度安排阶段起讫时间主要完成内容12008年11月17日-2009年1月15日理解毕业设计,收集,阅读相关资料,熟悉开发环境,完成开题报告22009年1月16日-2009年1月15日学习相关资料,提出系统的总体是设计框架32009年1月16日-2009年2月5日约定虚拟机提供的指令集,并形成文档42009年2月6日-2009年2月25日约定脚本语言的语法规则,并形成文档52009年2月26日-2009年3月5日解释器的详细设计,形成文档62009年3月6日-2009年3月25日完成词法分析器编码,测试,并提交毕业设计中期报告72009年3月26日-2009年4月10日完成语法,语义分析器编码,测试82009年4月11日-2009年4月25日进行解释器优化模块设计与编码,测试92009年4月26日-2009年5月5日完成解释器模块的集成测试102009年5月6日-2009年5月25日完成系统的集成测试,并编写演示程序112009年5月26日-2009年5月31日整理文档,形成论文,准备答辩主 要 参 考 文 献1Alfred V.Aho;Monica S.Lam;Ravi Sethi;Jeffrey D.Ullman.CompilerPrinciples, Techniques and Tools, Sec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 县贯彻实施行政许可法进展情况汇报材料
- mrp 闭环mrp教学课件
- 用车知识基础知识培训班课件
- 做个 开心果 教学课件
- 四川省雅安市2024-2025学年高二下学期期末考试化学试题(含答案)
- 2024-2025学年辽宁省鞍山市海城四中八年级(下)第一次质检数学试卷(含答案)
- 乔装打扮教学课件
- 新解读《GB-T 35994-2018粮油机械 面团拉伸仪》
- 用电和雷电安全知识培训课件
- 生鲜柜安全知识培训课件记录
- 德州市星邦日用品有限公司年产300吨PVA塑料胶棉项目环境影响报告表
- 电气检测维保合同协议
- 石墨烯材料企业数字化转型与智慧升级战略研究报告
- 车间标签标识管理制度
- 平面向量及其应用 章末题型归纳总结(基础篇)(10大题型)原卷版-2024-2025学年高一数学(人教A版必修第二册)
- 企业管理:集团企业财务共享中心的构建与实施策略
- 金氏五行升降中医方集
- 血液透析中出血的原因及预防
- 珠宝品牌价值构建-深度研究
- 预备役退出申请书
- 三农村集体经济组织内部审计操作手册
评论
0/150
提交评论