基于android平台的塔防游戏设计论文内容摘要:

物理引擎一般分为两个重要部分,即碰撞检测和物理学世界。 如图 22 所示。 图 22 物理引擎基本架构 碰撞检测模块是物理引擎的核心模块,建立在物理学世界的基础上的。 其由初步碰撞检测、精确碰撞检测和精确求交三个基本模块组成,各模块的执行顺序。 如图 23所示。 图 23 碰撞检测模块流程图 在初始化阶段,碰撞检测模块给虚拟世界每个物体建立包围盒,比较常用的包围盒算法有 AABB(Axisaligned bounding box)、包围球、胶囊体等。 逐步求精阶段将整个虚拟世界进行空间划分,主要用到数据结构有八叉树、 kd树和 BSP树等。 最后再精确求交第 2 章 3D 游戏的技术知识 5 模块中使用凸体算 法和射线检测算法得到精确的碰撞信息。 Unity3D Unity3D简介 Unity3D是由 Unity Technologies开发的一款全面整合的专业 游戏引擎 ,其具有的功能使得开发人员可专注于游戏的设计而忽略底层的技术实现,达到快速开发的目的。 Unity类似于 Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的 软件 其编辑器运行在 Windows 和 Mac OS X下。 其主要的特色有: 图形动力:内部封装了 DirectX和 OpenGL图形渲染库,并附带一些常用的渲染组件及着色器脚本。 物理仿真: Unity3d不但整合了 Nvidia PhysX物理引擎,并在其基础上封装了游戏中常会用到的物理组件,如碰撞体、连接体等。 跨平台性:可发布游戏至 Windows、 Mac、 iOS、 Android、 Xbox、 Wii或 PS3平台,也可以利用 Unity web player或者 Flash插件发布网页游戏,支持 Mac和 Windows的网页浏览。 资源商城:开发人员可在资源商城中购买其他人开发的资源(代码、模型等),进行高效复用。 资源服务器: Unity资源服务器是一个附加的 版本控制 的产品,但比起 SVN更适合游戏团队中不同职位的人员共同 使用(程序、策划、美术)。 性能分析器:引擎中自带一个 Profiler分析器,开发人员可在编辑器或者设备连线进行性能分析 CPU和 GPU不同阶段的效率。 Unity3D基本概念 一个完整的 Unity3d程序是由若干个场景( Scene)组合起来的,每个场景中又包含有许多游戏对象( GameObject),每个对象可以具有若干组件( Component),其中的继承自 MonoBehavior的脚本组件进行初始化、更新等操作,而我们在场景所看到的内容是由摄像头( Camera)来呈现并控制的。 场景( Scene):场景是 Unity3D程序的基本组成单位,任何一个 Unity3D程序都是由若干场景组合而成,程序通过脚本在这些场景之间跳转。 场景通过场景图的形式组织,场景图实际上是一种树形结构,其中每个节点就是一个游戏对象。 对象与对象之间存在父子关系,即当父级对象移动、旋转、缩放时,子级对象也跟着一起变换,如图 24所示。 第 2 章 3D 游戏的技术知识 6 图 24 旋转一个父节点同时它的子节点也跟着旋转 游戏对象( GameObject):在场景中按照场景图形式组织,场景图实际上是一种树形结构,树形层次结构中的节点,加入的特定组件后就成了有实际功 能的对象,如可渲染网格、摄像机、光源等,游戏对象可以打包成 .prefab格式的文件方便复用。 组件( Component):组件可以是网格( Mesh)、光源( Light)、摄像机( Camera)、粒子系统( Particle)、物理碰撞体( Collider)、布料( Cloth)、连接体( Joint)、声音( Audio)、动画( Animation)以及最重要的脚本( Script)。 Unity3D的设计是以面向对象理论为基础, Unity3D支持 C、 JavaScript和 Boo三种脚本语言,如果对象继承自 MonoBehavior脚本对象,生命周期将交给 Unity3D来管理,如图 25所示。 图 25 MonoBehavior的生命周期 第 3 章 游戏设计 7 第 3章 游戏设计 游戏创意 随着移动硬件设备的日益强大,并且移动平台技术在这几年得到迅猛发展,移动平台上的游戏也出现了惊人的增长,轻量级、微创新、时间碎片化一直是移动游戏的发展趋势。 笔者按照这些思路产生了制作一款新的 3D塔防游戏 的想法,游戏同样遵从以上三个特点,下面是简单的游戏策划: 游戏名称:《五岳乾坤》 游戏类型: 3D塔防益智类游戏 游戏平台: PC、 Android 游戏模式:过关模式 游戏玩法:玩家有初始经济 10,可以在开始建立两个防御塔,怪物进入路线后,一旦进入防御塔的攻击范围,会被防御塔攻击,直到怪物血量减少到 0,每死亡一个怪物,经济会加 2,这样,可以继续建造防御塔。 每一波结束后,下一波怪物会比上一波怪物的血量更多,这就需要建造更多防御塔。 游戏操作:鼠标前后拖动来查看地图各个地点,点击防御塔建造按钮然后点击空地可以建造防御塔。 游戏框架结构设计 如前文所述,一个游戏包含多个场景,玩家根据当前的游戏进度和选项进入不同场景。 而游戏模块为游戏提供了一些必须用 到的功能,这些功能,都是完全独立与所有的场景存在的,它们并不知道到底有多少关卡,关卡的内容是什么,它们的主要工作,就是与游戏的控制单元进行信息的交换,从而支持游戏的进行。 塔防游戏没有复杂的游戏系统,更加侧重于游戏可玩性的设计,并且由于使用Unity3D引擎,省去了许多底层模块的设计,其中核心的模块为:图形渲染、物理仿真。 游戏层次结构设计 前文提到 Unity3D中每个场景按照树形层次结构组织游戏对象,并且每个游戏对象可以拥有若干组件。 所以整个游戏系统的实现必须遵守这种规范,在这种规范下为了符合软件 设计的高内聚、低耦合的原则,使用 MVC模型设计了一套游戏的层次结构,这样的好处是使游戏的结构清晰简单,三层之间互相隔离、互不影响,日后功能的扩展方便。 如图 31所示。 第 3 章 游戏设计 8 c m p s e q u e n c e逻辑层视图层M a i n C a m e r a G a m e O b j e c t 2 G a m e O b j e c t 3H i e r a r ch y:……C o m p o n e n t 1 C o m p o n e n t 2 C o m p o n e n t 3 C o m p o n e n t 4 C o m p o n e n t 5C o m p o n e n t :……控制层N e t w o r k M a n a g e rU I M a n a g e rC o m p o n e n t :……171。 u s e 187。 图 31 游戏层次结构图 游戏系统分为三个层来设计,分别是: 视图层:主要为加入到场景层次结构的游戏对象,这些对象常常是渲染对象或摄像机。 控制层:在主摄像机或者空对象中加入的管理脚本组件,这些脚本主要是针对对应的功能模块的进行控制及与其他功能模块进行通信,如界面管理类、网络联机管理类。 模型层:主要是在渲染对象中加入的逻辑脚本组件 ,这些脚本对游戏对象进行逻辑处理。 第 4 章 游戏实现 9 第 4章 游戏实现 场景渲染实现 考虑到游戏的需求,整个场景主要包括几类渲染对象,如天空盒、水面、地形、外部导入的 3D模型、投影、粒子系统等,如图 41所示。 图形渲染天空盒 地形水面 3D 模型 投影 粒子系统 图 41 游戏场景中的渲染对象 下面主要介绍一些重要渲染模块的具体实现。 地形 塔防游戏的场景通常比较简单,就像一个棋盘格,可以在上面摆放防守单位,专门留给敌人一条通道。 在这个实例中,我们使用二维数组来点示场放中的格子, 每个格只有两种状态,允许摆放防守单位或不允许。 在 Unity3D中通过高度图来实现地形,高度图实际上是一张矩形的灰度图,在灰度模式中,颜色通过 0~255来表示, 0代表黑色, 255代表白色,像素越亮代表地势越高, 255的像素代表此次顶点最高,反之亦然,所以像素灰度值和顶点的高度可以用公式 (1) 表示。 其中 L为像素的灰度值, heighty 、 miny 分别为 Unity3D中定义的地形高度和地形最低点,求得网格顶点的 高度 y. min255 yyLy h eig h t  (1) 程序在需要渲染地形时通过读取这张图片,并按照灰度生成顶点高度不一的矩形网格。 这样大大减少了游戏模型体积。 Unity3D中的地形模块不但可以导入高度图,还可以用笔刷为绘制地形纹理、树、草和岩石,所见即所得,大大减少了开发人员的工作量。 在新建了一个 Project之后,我习惯于先创建几个文件夹,用来存放做游戏所需要的所有素材,如: Gizmos,Materials,Scene,Script等,其中 Gizmos用来存放贴图, Materials用来存放材质, Scene用来存放场景, Script用来存放脚本。 第 4 章 游戏实现 10 保存第一个场景,放在 Scene中,命名为 demo,此时场景中为空,在 GameObject中Create Other一个地形 Terrain,如图 42所示。 图 42 创建地形 在旁边的组建面板就可看到如下工具,如图 43所示。 图 43 组建面板 通过组建面板的 Terrain组建,可以用地面升降,地面模糊,地图画笔等等工具对地图进行编辑。 进行一系列的修饰后 ,原本空白的地图上就会有塔防游戏的基本地图样式,如图 44所示。 第 4 章 游戏实现 11 图 44 地图 光照和场景元素 在创建好地图之后会发现地图灰暗,当点击运行时候,会显示地图区域为黑色,这是因为场景中没有光源,此时我在场景中按添加地形的方式添加一个平行光源,如图 45所示。 图 45 平行光源 同样可通过调整光源组建面板中的 Intensity来调整光的强弱,可从图 45中看出,添加光源过后明显使得地图光亮了。 接下来添加场景中的元素,例如树,终点,装饰等等,通过 Assets中的 Import Package选项来。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。