




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Flash Builder的3D魔方游戏开发摘 要:手机游戏是未来游戏行业的主要发展方向,手机游戏的3D化也会逐渐成为游戏开发者的追求目标。本论文使用Adobe Flash Builder作为开发环境,以ActionScript3.0为基础,借助PaperVision3D开源3D引擎实现对3D魔方游戏的开发,并使其能在手机上流畅运行。关键词:手机游戏;Adobe Flash Builder;Papervision3D;3D;魔方全套设计加扣 3012250582Abstract:Mobile games are the major development direction of the game industry in the future. 3D graphical mobile games will gradually become the target which the game developers try to chase. In this paper, using Adobe Flash Builder as the development environment, based in ActionScript3.0, with PaperVision3D open source 3D engine to achieve the 3D Rubiks Cube game development, and it can run smoothly on the phone.Key words:Mobile game; Adobe Flash Builder; Papervision3D; 3D graphics; Rubiks Cube游戏在人们的生活中扮演着非常重要的角色,它不仅是人们获得快乐的有效途径,同时也在文化和社会中起到了重要作用1。关于游戏的理论也有许多,比如本能说,剩余能量说,练习理论说等等。但不管怎样,游戏的确让人们的生活变得更加的美好。最早的电子游戏于1952年面世。由于近年来电子技术的飞速发展,电子游戏也有了惊人的进步。随着Java虚拟机开启的第一次热潮,许多手机公司都出产了特别针对游戏应用的手机系列,iPhone等智能手机的出现,更是挑战了传统的掌上游戏机,同时也让游戏玩家有了更加丰富和生动的游戏体验。Flash游戏是一种新兴起的游戏形式,以游戏简单,操作方便,绿色,无需安装,文件体积小等优点迅速被广大网友喜爱2。PaperVision3D是一款免费开源的3D引擎,它出现的目的在于实现更加绚丽美观、功能强大的Flash 3D应用程序。基于ActionScript3.0的PaperVision3D无论是在效率、功能上都有了很大幅度的提高。随着现在web休闲游戏以及手机游戏的发展,Flash和PaperVision3D将会得到更加广泛的应用。本文就将以魔方游戏为例,展示如何利用开源的3D引擎包PV3D在Flash Builder环境下开发手机3D魔方游戏。1 背景介绍1.1 Flash BuilderAdobe Flash Builder的前身是Adobe Flex Builder,是一个由Eclipse平台扩展而成的集成开发环境,是用以创建RIA(富互联网应用程序)的ActionScript框架。Flash Builder包含了一个交互式的调试器,允许开发人员调试、检测变量和表达式,解决了脚本类语言不方便调试的问题。同时Flash Builder添加了性能分析功能,能够显示程序的内存使用和函数运行的时间等重要信息,为开发人员在开发应用程序时提供了便利和支持。1.2 ActionScriptActionScript是Adobe为其Flash开发的一款基于ECMAScript的脚本语言,可用于编写Adobe Flash动画和应用程序。最初的ActionScript只是一种简单的脚本语言,能够实现的功能和效果都比较局限。随着Adobe Flash的发展,现今的ActionScript最新版本3.0已经蜕变成了一种完全面向对象的编程语言。其功能强大、类库丰富,多用于Flash的互动性、娱乐性、实用性开发,网页开发和RIA应用程序的开发3。1.3 PaperVision3DPaperVision3D是一款为Flash开发的3D引擎,它是用ActionScript3.0写成并遵循MIT协议的开源插件。PaperVision3D为开发人员提供了大量的类库,用以实现3D场景的搭建和3D动画的渲染显示,并提供了相应的3D响应事件,能让用户方便地与应用程序进行交互。PaperVision3D为Flash 3D应用的开发提供了支持,降低了使用Flash开发3D应用的难度。1.4 魔方魔方又叫魔术方块,是匈牙利布达佩斯建筑学院的厄尔诺鲁比克教授在1974年发明的。魔方与中国人发明的“华容道”,法国人发明的“独立钻石”一块被称为智力游戏界的三大不可思议。目前流行的魔方有三阶魔方、二阶魔方等,本文将以三阶魔方为例,利用Flash Builder和PaperVision3D实现对三阶魔方游戏的开发。2 手机游戏现状和发展前景随着手机等移动设备性能的飞速发展以及智能操作系统的普及,玩手机游戏已经成为一种生活习惯。在这样的大趋势下,手机行业如雨后春笋般拔地而起,成为电子游戏市场中最丰盛的蛋糕之一。3G、4G网络的开通和覆盖,更是让手机游戏摆脱了单机游戏的身影,跻身网游行列。2.1 国外手机游戏现状目前正是国外手机游戏发展的黄金时期。从设备上来说,Android系统的不断更新以及iPhone的进步,让手机游戏有了更大的发展空间和探索空间。苹果的App Store为手机游戏的开发者提供了一个方便又高效的销售平台,在为手机游戏提供良好推广机会的同时,也带动了整个手机游戏行业的发展。同时,从开发环境来讲,国外推出的优良游戏开发引擎(比如cocos2d和unity3D等),降低了手机游戏开发难度的同时,也增加了手机游戏的画面显示效果,提升了手机游戏的操作性。而且近段时期国外的游戏公司也推出了众多了优质手机游戏,比如Tiny Thief,The Fall以及备受争议但仍旧无法让玩家释手的Flappy Bird等。2.2 国内手机游戏现状近两年来,随着3G、4G网络的覆盖,以及在电信运营商和手机游戏开发商的大力推动下,国内手机游戏行业得到了迅速的发展,手机游戏也从以前的纯单机游戏逐渐升级成为手机网络游戏。但是,客观来说,目前国内的手机游戏普遍存在质量简陋、创意陈旧的问题,特别是许多手机游戏都是从网页游戏转变而来,缺乏专门对应于手机游戏的玩法策划和游戏规则。同时,手机游戏开发行业专业人才的缺乏也限制了国内手机游戏的质量,小游戏公司的急功近利更是降低了国内手机游戏市场的产品量级。2.3 手机游戏的发展前景目前制约手机游戏发展的主要因素还是在于设备的性能,硬件设备的弱势限制了手机游戏的效果和游戏体验。所以今后手机游戏的发展将主要依赖于两个方面:一方面是移动设备性能的提高以及网络服务质量的提高;另一方面是手机游戏制作技术的提升。当然,一款手机游戏优劣不仅仅在于游戏的表现效果,同时也要求游戏模式的创新以及游戏内容的丰富。在将来,手机游戏开发定会给行业人员带来不亚于端游的回报。3 系统分析3.1 需求分析随着手机等移动设备的发展,电子游戏从游戏机和电脑的世界,快速地蔓延到手机平台上,融入到人们的生活中,带给人们快乐,丰富人们的生活。一款好的手机游戏不仅能让人们放松心情,体验乐趣,更能活跃人们的思维。好的游戏不仅要在界面和交互方式上做到友好和人性化,更要有可玩性,值得人们在闲暇的时候去玩。魔方是一款益智类游戏。目前在网页游戏中有许多关于魔方的游戏,但应用于手机的却是很少,并且这些魔方游戏大多制作粗糙,无法满足现今游戏玩家的体验需要。制作一款画面精致,交互友好的手机3D魔方手游,不仅是市场的需要,更是游戏玩家的期待。3.2 可行性分析PaperVision3D为开发者提供用于3D场景搭建的类库,无论是3D对象的渲染和显示,还是场景的交互,都能在PaperVision3D现有的类库下很好的完成。使用PaperVision3D可以很轻松地实现3D魔方游戏的开发。4 系统设计4.1 开发工具本论文使用Adobe Flash Builder 4.6版本作为开发环境,借助PaperVision3D开源3D引擎实现场景的搭建和3D对象的渲染显示,完成论文程序的开发设计。本论文具体使用到的工具如表4.1所示。表4.1 使用工具一览表工具名称版本用途Adobe Flash Builder4.6程序开发,工程管理PaperVision3D1.73D渲染Adobe Photoshopcs6图片、图标制作Microsoft visio2007论文设计4.2 游戏逻辑设计本游戏主要有四个模块:菜单模块,教程模块,游戏介绍模块以及游戏模块。程序具体流程如图4-1所示:开始魔方教程游戏介绍菜单进入游戏是返回?结束图4-1 游戏模块流程示意图为了方便玩家对魔方的操控,本设计不与魔方直接交互,而是通过触动屏幕实现对魔方的控制,这样增加了操作空间的同时也降低了操作的难度4。游戏开始L面旋转F面旋转B面旋转R面旋转魔方旋转屏幕中间右上角左上角右下角左下角U面旋转下中间选择操作位置D面旋转上中间返回选择返回结束图4-2 游戏流程示意图5 游戏的具体设计和实现5.1 3D场景的搭建和渲染 Flash本身并不支持3D物体的显示,可以使用Flash其他的一些资源包解决这一问题,PaperVision3D就是其中的一种。PaperVision3D为开发人员提供了用于在Flash舞台上显示3D对象的类库,以实现在Flash中进行3D场景的搭建和渲染。 PaperVision3D用ActionScript3.0写成。想要实现3D物体的渲染和显示,首先需要PaperVision3D的几个基本工具5。5.1.1 Scene3D Scene3D就是3D场景,是在3D空间中由3D对象组成的一个整体,用来承载所有将要被渲染的3D物体,就好像Flash中的stage一样,起着奠基的作用。5.1.2 Viewport3DViewport就是观察口,是一个舞台上的sprite容器,用以输出相机记录下来的对象。5.1.3 Camera3D它是3D空间里的摄像机,在3D空间中不断扫描和记录3D对象的活动。摄像机确定了查看场景的查看点。5.1.4BasicRendererEngine渲染引擎,它将摄像机记录下来的信息传输给观察口,然后观察口再对这些信息进行显示。当停止渲染时观察口便不会有任何更新的操作。渲染是计算机中最为繁重的操作,它需要重复计算场景内部的对象并输出他们到观察口去。3D场景搭建的实现代码如下:viewport = new Viewport3D();camera = new Camera3D();scene = new Scene3D();renderer = new BasicRenderEngine();addChild(viewport);renderer.renderScene(scene, camera, viewport);5.2 创建魔方体5.2.1 Cube类Cube类是PaperVision3D提供的基本几何体类中的一个,创建Cube的时候需要指定材质列表和立方体的大小,以及立方体各面的宽度段数。图5-1 立方体的面宽度数如图5-1所示,指定的立方体面宽度段数越多,计算机绘制的面数就越多。面数增加的情况下会让3D对象的显示更加细腻,变化更加流畅,但同时也会增加计算机的运算负担。PaperVision3D提供了多种渲染材质,包括线框材质、颜色材质、位图材质、以及影片剪辑和视频流等材质。本文采用的是颜色材质。var cube:Cube = new Cube(materialList, 150,150,150,4,4,4);5.2.2 颜色材质ColorMaterial类和材质列表MaterialsList类使用ColorMaterial类可以创建出颜色材质,再将颜色材质实例加入到材质列表MaterialsList中,并指定相应的位置(front、back等),就可以用材质列表创建出立方体Cube了。var materialList:MaterialsList = new MaterialsList();materialList.addMaterial(whiteMaterial,top);materialList.addMaterial(yellowMaterial, bottom);materialList.addMaterial(greenMaterial,back);materialList.addMaterial(blueMaterial,front);materialList.addMaterial(redMaterial,left);materialList.addMaterial(orangeMaterial,right);5.2.3 组合魔方使用循环生成27个小立方体,设定好小立方体的位置,使它们按照一定的顺序排列组合成为魔方,并用一个DisplayObiect3D容器装下这些小立方体。最后生成的魔方如图5-2所示(详细代码见附件2)。图5-2 生成的魔方体5.3 游戏的事件魔方要转动起来,就需要添加各种事件加以控制,也就是玩家与游戏的交互。本程序设计之初设想的是以PaperVision3D里面的3D物体点击事件为基础,利用拖动魔方的方式来实现游戏的交互。但在实际使用时发现很难在手机屏幕上精确地选中魔方中的某一个小立方快,因此本程序最后改为使用Flash中的舞台点击事件来处理游戏的交互,并根据舞台鼠标点击的位置与舞台中心的距离来确定是魔方整体的旋转还是魔方单面的旋转6。具体的流程如图5-3所示(详细代码见附件1)。图5-3 转动控制N-S图5.3.1 PaperVision3D坐标系PV3D中,3D场景使用的是左手笛卡尔坐标系,即屏幕右侧为x正方向,上侧为y正方向,z轴指向屏幕内侧。如图5-4所示。图5-4 PV3D坐标系5.3.2 魔方整体转动魔方整体的转动有三种基本情况:绕x轴旋转,绕y轴旋转和绕z轴旋转。PaperVision3D中所有的3D对象都有关于转动方法,比如RotationX(绕对象自身的x轴转动)、LocalRotationX(绕局部空间的x轴转动)等。但是无论是那种,都会让魔方的转动变得难以控制。比如如果现在如果魔方体已经绕y轴逆时针旋转了90,再想让魔方体从我们观看的角度前后翻转,却发现魔方体实际上会是在平面上旋转。如图5-5所示: (1) (2) (3)图5-5 魔方转动效果其中,图(1)表示魔方体旋转90后的效果,图(2)为期望得到的转动效果,图(3)为实际转动的效果。5.3.3 四元数和Transform方法的使用。在三维空间中,旋转是最基本的变换类型之一,有多种描述方式,如Euler角、旋转矩阵、旋转轴/旋转角度以及四元数等。四元数描述了一个旋转轴和一个旋转角度,可以表示为q=w,v,其中w是标量,v为矢量。四元数用复数来表示平面向量,用复数的加、乘运算表示平面向量的合成、伸缩和旋转变换7。var q:Quaternion = Quaternion.createFromEuler(-ray.x, 0, -ray.y, true);container.transform.calculateMultiply3x3(q.matrix, container.transform);但是,使用这种旋转后,无法再去获取到3D对象的预想坐标,会为游戏的后续开发带来不便。因此,本文决定使用另外一种方式,来实现魔方体的转动。5.3.4 转动的实现为了能够顺利实现魔方的旋转,同时又能够及时获取到魔方各部分(即小立方体)在空间中的位置信息,因此本文决定用控制小立方体在空间中的坐标的方法来实现魔方的转动效果。利用三角函数,计算出立方体转动一定角度后的3D空间坐标位置,通过更新这个位置,来实现魔方的转动效果(具体代码见附件2)。本游戏采用滑动屏幕的方式实现魔方体的转动。当在屏幕左侧上下滑动时,魔方将绕z轴旋转(绕z轴顺时针旋转90记为Z,逆时针旋转90记为Z),在屏幕右侧上下滑动时,魔方绕x轴旋转(绕x轴顺时针旋转90记为X,逆时针旋转90记为X),当做出左右滑动的动作时,魔方绕y轴旋转(绕y轴顺时针旋转90记为Y,逆时针旋转90记为Y)。此部分逻辑流程如图5-6所示(具体代码见附件1)。图5-6 魔方翻转整体翻转示意图5.3.5 魔方单面转动魔方的单面转动有6种基本情况:U、D、F、B、L、R。分别表示为:魔方的上面顺时针旋转90,魔方的下面顺时针旋转90,魔方的前面顺时针旋转90,魔方的后面顺时针旋转90,魔方的左面顺时针旋转90,魔方的右面顺时针旋转90。在这些基本旋转的基础上,还可以有其他的旋转表示,如U表示魔方的上面逆时针旋转90,F2表示魔方的前面顺时针旋转180等。考虑到在手机上玩魔方无法精确地选中魔方需要旋转的面,因此本程序采触碰手机屏幕周边位置来控制魔方的单面旋转(具体代码见附件1)。图5-7 魔方面翻转示意图在左下角的位置做出向左上侧或向右下侧的滑动动作时,魔方的左面将顺时针或者逆时针转动,其他位置以此类推,这样就能完成对魔方每个面的转动控制。5.4 魔方还原操作本程序设计了魔方还原的模块,在界面的上方增添一个还原的按键,用户在点击了此按键后,魔方会自动旋转到复原状态。5.4.1 魔方还原算法现在网络上有一些关于魔方的算法,但大多数都是采用的递归搜索的方式来解魔方。而递归搜索的劣势在于计算量庞大,搜索次数繁多8。private function DFS(step:uint, path:Array)if(stepN) return 0; if(CheckIsFinish() trace(path); return 1;for(var i:uint = 0; i 6; i+) rotateMagic(i); path.push(i); if(DFS(step+1, path) return 1; for(var j:uint = 0; j 3; j+) rotateMagic(i);return 0;5.4.2 本设计使用的方法当然目前也有一些比较优秀而且成熟的解魔方的算法,比如Thistlethwaites algorithm。但考虑到手机CPU的性能不如电脑,因此本程序采用的是简单地将用户的操作压栈的方式来存数用户的操作步骤。在需要还原时,只需要将操作数据依次弹出栈即可(具体代码见附件2)。6 程序调试和优化6.1 程序调试程序运行之后,会进入菜单界面。菜单界面有3个选项,分别是魔方攻略、玩法介绍和开始游戏。游戏效果如图6-1所示: (1) 菜单界面 (2) 魔方攻略 (3) 游戏介绍 图6-1 游戏界面图6-1中的三个模块,均使用2D场景。魔方攻略和游戏介绍模块中,均可通过滑动手机屏幕实现滑动文字图片的效果,从而浏览整个攻略。同时,在这两个模块的界面右上角有返回的按钮,可以通过点击这个按钮回到主菜单界面。游戏模块使用PV3D引擎搭建3D场景,实现3D魔方的渲染和显示。游戏效果如图6-2所示:图6-2 游戏模块游戏界面四周有界限划分,用以粗略标识滑动操作的操作位置,方便玩家明确自己的操作。在本模块中,游戏界面右上角除了一个用于返回主菜单的返回键以外,还有一个用于还原魔方的按键,点击此按键后,系统会根据玩家的操作记录来自动控制魔方,并使其恢复到初始状态。6.2 系统优化6.2.1 界面优化游戏系统初期成形时界面比较粗糙,没有游戏的代入感。通过优化界面以后改良了所有模块的界面显示,包括按钮、图片以及提示框体等,使得游戏界面显得更加和谐友好,增强了玩家的游戏体验。 (1) 优化前 (2) 优化后图6-3 游戏界面优化前后对比6.2.2 游戏节奏优化游戏节奏优化主要是针对魔方旋转速度的优化。为了给游戏玩家提供一个良好的游戏体验,通过不断的尝试,最终确定下来了游戏中魔方的翻转速度以及魔方恢复时的动画速度。6.2.3 性能优化本设计性能上的优化主要目的在于能够让游戏在手机上流畅地运行起来。初期时候,游戏能在电脑上流畅地运行,可安装到手机上以后,游戏的运行速度明显下降了许多,游戏的响应时间相比于电脑也滞后了0.8s左右。为了解决这个问题,我在创建魔方的时候,改变了小立方体的面宽度段数,且本设计使用的是颜色材质,改变立方体的面宽度段数并不会影响魔方的显示效果。通过优化,最终使得本程序能够在手机上流畅地运行。 7 总结手机设备性能的提高以及智能操作系统的普及使得手机游戏的发展得到了巨大的进步,在人们娱乐方式多样化的今天,手机游戏已经成为了人们生活中的一种习惯。根据中国互联网络信息中心CNNIC第33次中国互联网络发展状况统计报告显示,截止2013年12月,中国网民规模达6.18亿,其中手机网民规模达5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电商平台售后服务流程再造与创新策略研究
- 2026届云南省化学高二上期末考试试题含答案
- 2026届黑龙江省齐齐哈尔市八中化学高二第一学期期中考试模拟试题含解析
- 2025年注册电气工程师考试 电气工程基础知识押题试卷
- 2025年考研英语(一)阅读理解长难句解析 模拟试卷汇编
- 玩具消毒知识培训总结课件
- 王玲老师月嫂培训知识课件
- 岩土面试题目及答案解析
- 吉林省吉林市吉化一中2026届高三上化学期中教学质量检测试题含解析
- 行业技术规范与市场趋势
- 2025云南文山州融资担保有限责任公司人员招聘6人笔试参考题库附答案解析
- 2025-2026学年济南版(2024)初中生物八年级上册教学计划及进度表
- 2025山西运城市临猗县招聘社区工作者32人(一)考试备考试题及答案解析
- 2025年鞍山市铁西区教育局面向师范类院校应届毕业生校园招聘45人笔试参考题库附答案解析
- 空调与制冷操作考试试题(含答案)
- (2025年)河南省信阳市辅警协警笔试笔试真题(含答案)
- 网络直播带货讲解
- 2025江西九江都昌县公安局招聘警务辅助人员14人笔试备考题库及答案解析
- 肿瘤药物配制注意事项
- GB/T 22126-2025物流中心作业通用规范
- 工管人才面试宝典:高级管理面试题目及答案解析
评论
0/150
提交评论