当前位置:文档之家› 基于Unity3D的虚拟机器人宠物游戏设计

基于Unity3D的虚拟机器人宠物游戏设计

基于Unity3D的虚拟机器人宠物游戏设计
基于Unity3D的虚拟机器人宠物游戏设计

基于Unity3D的虚拟机器人宠物游戏设计

【摘要】:近年来电子游戏随着移动电子设备的不断更新换代,渐渐为人们熟知。游戏也不像早年被人们所排斥,在当下,空闲时玩玩电子游戏成为很多人的不二选择。电子游戏经过多年发展,其形式也越来越丰富,不仅涵盖2D,3D,而且在电脑,掌机,手机,平板,电视盒等平台上得到了充分的普及。相比2D游戏,3D游戏有着天然的优势,其精美的画面,超强的带入感,逼真的游戏效果都让玩家如同身临游戏中一样,更为让玩家喜爱。遗憾的是我国自主研发的3D游戏其质量与国外优秀作品有着明显差距,为了促进我国优秀3D游戏的发展,很有必要对这一类型的游戏制作流程进行研究。

本文以基于Unity3D软件的游戏制作为主体,详细的介绍了一款游戏从设计伊始到最终实现的完整过程。首先了解3D游戏基本的设计思路,为了让游戏有科幻感,选择了机器人作为游戏的主题。之后要熟悉Unity3D的基本操作方法及其他辅助软件的使用,如Photoshop,NGUI等。最为主要的是使用C#语言,进行相关脚本的编写。最后导入到相关移动设备上调试。本文末段将对本次研究进行总结,并且提前改进意见及展望。

【关键词】:电子游戏,C#,Unity3D,移动设备,NGUI,3D

Abstract

In recent years, electronic games with the continuous upgrading of mobile electronic devices, gradually been known.Unlike the early games was rejected by the people, in the moment, when you play free video games become the choice for many people.After years of development of electronic games in the form of more and more abundant, not only covers 2D, 3D, and on the computer, handheld, mobile phone, tablet, TV boxes and other platforms have been fully spread. Compared to 2D games, 3D games has a natural advantage, its beautiful screen, super into a sense of realism of the game allows players as proximity effects are the same as the game, the more so that players love it. Unfortunately, our self-developed 3D game quality and good works abroad have significant gaps, in order to promote the development of outstanding 3D game, it is necessary to conduct research on this type of game production process.

In this paper, based on the Unity3D game production as the main software, a detailed description of the complete process of designing a game from the beginning to the final implementation. Learn basic first 3D game design ideas, in order to make the game have a sci-fi feel, choose a robot as the theme of the game. Then they have to be familiar with the basic operation methods Unity3D and other assistive software to use, such as Photoshop, NGUI so on. The most critical is the use of C # language, be written in the relevant programs. The last game in the relevant debugging mobile devices. The last paragraph of this article will summarize this research, and advance improvements and prospects.

[Key words]: electronic games, C #, Unity3D,mobile devices,3D,NGUI

目录

一、绪论 (1)

(一)课题研究背景及目的 (1)

(二)中国与外国游戏发展对比 (1)

(三)论文结构 (2)

二、基于Unity3D的游戏设计相关技术知识 (3)

(一) Unity3D引擎 (3)

1. Unity3D引擎介绍 (3)

(1)Unity3D基础界面介绍 (3)

(2)Unity3D特色功能介绍 (4)

(二) 游戏物理引擎 (5)

1. 游戏物理引擎介绍 (5)

2. Unity3D中的物理引擎 (6)

三、机器人宠物游戏的设计 (8)

(一)游戏创意 (8)

(二)游戏策划 (8)

(三)游戏层次结构介绍 (9)

四、机器人宠物游戏的实现 (11)

(一)场景搭建 (11)

1. 游戏地形 (11)

2. 天空盒 (13)

3. 湖面 (15)

4. 外部3D模型导入 (15)

(二)游戏登陆界面的实现 (16)

(三)游戏主角制作 (18)

(四)显示小地图 (21)

(五)创建怪物 (24)

五、游戏性能测试和游戏展示 (26)

(一)游戏演示 (26)

1. 游戏开始界面 (26)

2. 游戏登录界面 (26)

3. 正式游戏场景 (26)

(二)游戏性能分析 (28)

六、总结与展望 (30)

(一)项目总结 (30)

(二)未来展望 (30)

参考文献 (31)

致谢....................................................... 错误!未定义书签。附件....................................................... 错误!未定义书签。

一、绪论

(一)课题研究背景及目的

伴随着人们经济收入的增长,人们的消费需求逐步从物质层面向文化层面进行转变,电子游戏作为一种轻松的文化娱乐方式和兴起的文化消费方式受到了人们广泛的关注。电子游戏已然成为一种新型消费,其收入规模远超电影票房,电视节目和音像发行三大传统的娱乐支柱产业,其产生的GDP由2008年的0.06%上升至2012年的0.12%,预计在2017年中国游戏市场的实际销售收入将达到1352.2亿元人民币[1],在我国经济增长整体放缓背景下,大力发展游戏行业无疑是国内经济新的一大拉动点,因此深入研究游戏的制作和发展过程是十分具有意义的。

2014被誉为移动游戏元年,在这一年,手游快速崛起,手机游戏成为移动设备上必备的应用,诸如《植物大战僵尸2》,《海岛奇兵》,《乱斗西游》等手游大作相继涌现。手游的出现同时也对游戏的跨平台性提出了更多的要求,一款成功的游戏必须有能力在不同的平台上运行,这些平台包括手机,平板,电脑等移动设备及其对应的操作系统。跨平台最大意义是实现数据在各个平台上的复用,这不仅让广大平台使用者拥有全面的游戏形式选择性,加强游戏的社交功能,还可以使不同类型的玩家体验到跨平台娱乐的便利性。既可以有效的维持现有玩家的粘性,也有利于吸引新的玩家,达到积累玩家资源的目的。而Unity3D最大的特点就是其优秀的跨平台性,论文通过一款简单的宠物游戏既能了解3D游戏在Unity3D的制作过程及相关技术,也能验证其跨平台的功能,希望能对未来中国电子游戏的创作提供相关参考。

(二)中国与外国游戏发展对比

国外游戏因为整体行业稳定得到了快速发展,其掌机,街机,电视机,PC端游戏的发展远远领先于国内游戏市场。中国游戏由于整体环境不太稳定,只在PC端有所发展,而且起步落后于国外一些顶尖公司,在很长一段时间中国的PC端游戏都只在单机方向有所发展,网络端游处于严重滞后状态[2]。而此时,国外网络端游已经进入成熟阶段,《传奇》,《反恐精英》,《星际争霸》等游戏已然成为国内游戏学习的榜样。国内的首款3D游戏于2003年出现,经过这些年来的发展,也涌现出了一些优秀作品,如《剑侠情缘3》,《天龙八部》等,但与暴雪,拳头等国外知名游戏厂商出品的极具市场统治力游戏还有极大差距。而当下国内几款火爆网游大多来自于国外,由国内厂商代理,其获得的代理收入是相当可观的,这不仅导致了资金的外流,还限制了中国本土游戏的发展。

好在随着智能手机的普及,手机游戏数量大量喷发,而在这一领域,中国的手游在于国外游戏的较量中并未处于下峰,这可以说是中国游戏迎来爆发的最好时间。通过手游的发展,可以进一步带动中国游戏行业的进步,争取早日追上国外领先水平。同时,主机游戏的开发,将让游戏市场更加火爆,不同类型的游戏得以在不同平台上运行,让玩家体会到游戏的丰富多样性。而基于unity3d的研究可以让我们更加了解其跨平台的实现方法,熟悉其操作和理解其工作原理依然有其一定的意义。

(三)论文结构

本文共分为六章,各章节安排如下:

第一部分:绪论,阐述了论文的研究背景和意义、国内外研究现状以及本文主要研究内容;

第二部分:介绍了进行游戏开发的相关技术,重点介绍了Unity3D游戏引擎及其搭载的物理引擎。

第三部分:机器人宠物游戏的创意来源及其游戏层次的整体设计。

第四部分:讨论游戏中各模块的技术研究和实现过程,主要的核心模块是场景搭建和角色创建;

第五部分:展示当前的游戏并对游戏在相关设备上的运行情况做一定分析;

第六部分:结论,对该设计进行总结并指出其中的不足,提出下一步展望。

二、基于Unity3D的游戏设计相关技术知识

(一)Unity3D引擎

1.Unity3D引擎介绍

在公众认识看来,游戏引擎对于电子游戏的最大意义就如同跑车的发动机一样,是游戏整体表现力的核心。而当前世面上的引擎可谓多种多样,如虚幻,暴雪公司的魔兽引擎,CryEngine,其各自有着不同的画面表现和性能特点,但在当下最为火爆的游戏引擎却是Unity3D。

Unity3D是Unity Technologies公司开发的一款3D跨平台次世代商业游戏引擎,它以强大的跨平台性和出色的3D渲染效果而闻名于世。Unity3D为了保护开发者的知识产权,同时出于对编程代码安全层面的思考,采取了封闭码源地做法。Unity3D类似于Director,Blender game engine,Virtools或Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows和Mac OS X下[3]。Unity3D引擎是以面向对象为基础,支持C#和Javascript语言进行编程[4],同时提供了一个对于代码运行效率和资源开销的分析工具,能使引擎使用者清楚的了解各类资源在游戏中的耗损。

(1)Unity3D基础界面介绍

Unity3D的操作界面具有简单明了的特性,几个显示窗口就可以实现对一款游戏

的基础编辑和设计。其主界面如图2-1下:

图2-1 Unity3D界面

场景面板(Scene window):该面板作为游戏在Unity3D中的编辑面板,可将游

戏中的模型,灯光,以及其他美术资源托进该面板进行编辑,通过相应操作即可构建出你想在游戏中呈现的景物。

动画面板(Game Preview):在改面板中可对场景面板中的景物进行渲染,使游

戏效果更加逼真。在动画面板中不能进行编辑,但能将完整的动画效果展现出来,其展示的游戏内容取决于场景摄像机的位置设置。此外,还能控制其游戏画面的显示大小。

层次清单栏(Hierarchy Panel):此面板的主要作用是呈现存在于场景面板中的具

体游戏对象,例如:摄像机,平面贴图,3D贴图,光源,地形等。

项目文件栏(Project Panel):此面板的主要作用是呈现该游戏项目文件中包括脚

本,场景文件,特效资源,材质,字体,预设动画等所有游戏资源。

对象属性栏(Object Inspector):此面板会展示出所选中对象的固有属性,包括三

维坐标、旋转变量、缩放比例、所加脚本和对象信息等等。

菜单栏:菜单栏位于界面最上方,拥有7个菜单选项,分别为:File(文件)、Edit (编辑)、Assets(资源)、GameObject(游戏对象)、Component(组件)、Window(窗口)、Help(帮助)。文件(File)选项主要用于场景的关闭开启,项目工程的存储。

场景调整工具:场景调整工具位于菜单栏下方,如图2-2所示:

图2-2 场景调整工具

从左到右依次为:拖动工具,移动工具,旋转工具,缩放工具[5]。可以实现在游

戏场景编辑过程中的场景的整体拖动,场景视角的改变、物体本地位置和世界位置的置换,物体自身进行旋转和缩放。

(2)Unity3D特色功能介绍

图形动力:Unity3D中装载了DirectX和OpenGL图形渲染库,并且带有许多常

用的渲染模组。,

物理仿真:Unity3D不仅融合了Nvidia PhysX物理引擎,而且还搭载了游戏中

经常使用到的物理模组,如碰撞盒、连接体等。

跨平台:在Unity3D引擎上开发的游戏可发布至Windows、Mac、iOS、Android、Xbox360、Wii、PS3平台,也能使用Unity web player或者Flash播放插件发布到网页上,还支持Mac、Windows网页浏览功能。

平台资源:从事Unity3D游戏开发的人员能在基于该平台上的商城中,购买其他

开发者的游戏材料,如模型,场景,原画,代码等,提高了资源的复用性。

延迟渲染效果:在Unity3D中拥有顶尖的延迟照明系统。你只需要提供极低的性能

损失,就能在你所需的游戏场景中,创建多个点光源。

源代码级调试器:在Unity3D中开通了脚本调试功能,你能在游戏运行时中断游戏,进行

逐行执行来调试脚本。

性能分析器:Unity3D拥有Profiler分析器,使用者能通过它查看游戏在PC端和

在其他移动设备上运行时的相关数据,用来分析游戏对相关设备的CPU或GPU的产生的影响,如图2-3。

图2-3 Profiler分析器

(二)游戏物理引擎

1.游戏物理引擎介绍

在游戏这种高集合体工程里,不仅要精美的美术支持,还要求在游戏中体现一些基本的物理定律,这样才能使游戏里的虚拟行为更加符合人们地认知。开发者可以通过编写程序或者调用脚本,来实现简单的物体运动轨迹,比如实现简单的加速和减速,下落和抛物等牛顿物理运动。大部分著名的物理引擎能够额外实现许多复杂的物理模拟,例如滚动、球形变化、链子等,有些物理引擎还可以实现非刚性体的物理表现,比如液体、布料。

物理引擎接受的输入是由外界调用模块传递过来的场景信息以及场景中物体的位置信息。根据调用模块的不同,可能输出三种计算结果:场景与物体以及物体之间是否发生碰撞、碰撞发生的具体位置以及发生碰撞后物体的具体位置,并将计算结果传送给调用模块[6]。如图2-4所示:

图2-4 物理引擎功能示意图

2.Unity3D中的物理引擎

目前市场上有许多物理引擎,著名的有Havok,Bullet、PhysX、ODE和Box2D等,它们的基本信息如表2-1。而Unity3D引擎中搭载了NVIDIA的PhysX物理引擎,它与Havok、Bullet并称为世界三大物理运算引擎,开发者可以通过该物理引擎高效、逼真地进行各种物理模拟,如模拟刚体碰撞、车辆行驶、布料、重力等,能使在该游戏引擎中开发的项目更加真实和生动。Physx不仅可以由CPU计算,而且其自身程序在设计允许使用独立的浮点处理器来计算。

表2-1 著名物理引擎基本信息

物理引擎名称Havok PhysX Bullet Box2D ODE

持有公司/人员Intel Nvidia AMD Erin catto Russell smith

是否开源否否是是是

是否支持C/C++ 是是是是是

游戏引擎集成寒霜Unity3D

PC

主要游戏平台Wii、Xbox 360、

PS3

PhysX物理引擎是由AGEIA公司开发,由于PhysX物理引擎在设计上就并不适合用CPU去计算,因此AGEIA公司还为PhysX引擎设计了专门的运算硬件,PhysX物理加速卡,其中的运算核心被称为PPU(Physics processing Unit)[7]。该引擎可以在Windows,Linux,Xbox360,Playstation,Mac等多种平台上运行。目前,在X86—PC平台上,采用

PhysX的电子游戏大约有222种,其中包括《雪域危机》,《虚幻竞技场3》等游戏。

三、机器人宠物游戏的设计

(一)游戏创意

在当今社会,生活节奏日趋加快,人们需要面对各种各样的压力,各种亚健康问题开始突显出来,此时人们迫切需要找到一个放松方式和倾诉的对象。而另一方面,随着手机,平板电脑等移动设备的日渐普及,和其硬件性能的快速提升,在移动端开始出现电子游戏爆发的趋势。像《天天酷跑》,《Flappy bird》、《2048》等创意加休闲的游戏都获得了极大的成功。仔细观察这些游戏,可以看出一些如下通性:

1.游戏难度不大,操作简单易上手。不论是经验丰富的玩家还是无经验的小白的玩家,都能很快掌握游戏的玩法,迅速理解到游戏的核心内容。例如《天天酷跑》只要左右手操作控制主角的蹲与跳动作,就可以躲避陷阱和障碍物。《2048》只要用一只手指通过滑动屏幕来实现方块的移动,进而消除相同数字的方块。

2.轻松娱乐是这些游戏的主基调,同时又不乏有趣的创意。如《Flappy bird》中通过不同高度的管道通洞及相应的速度变化就让人产生挑战下去的感觉。《2048》中巧妙的把数学知识融合到游戏中来,不仅让人玩的轻松,还可以让人学到基础的数学知识。

结合多方面的综合考虑,机器人宠物游戏应运而生。之所以选择这一题材一是因为在现有的游戏市场中这一类型的游戏占比较少,且有过成功的游戏实例《汤姆猫》。二是现实中宠物已经广为人们所喜爱,其陪伴特性和成长性与电子游戏有着天然的吻合,使这一游戏题材不会让人觉得突兀,脱离现实生活。三是宠物题材适用群体广泛,几乎涵盖了所有年龄段的玩家,老少皆宜。

(二)游戏策划

一款成功的游戏少不了前期细致的游戏策划,下面将简单的策划案描述出来:

游戏名称:《Wolf》

游戏平台:Android、PC

游戏类型:3D休闲养成类游戏

游戏模式:单人冒险模式

游戏界面:游戏中主要有登陆界面和游戏场景界面。在游戏登陆界面玩家可以选择3种宠物中的一种进行游戏,还可以为宠物取名。在游戏场景界面,玩家可以移动宠物进行冒险。

游戏操作方式:在PC端使用鼠标点控操作控制其上,下,左,右移动,在移动端可采用点击或长按触摸屏来实现移动。

游戏主要玩法:玩家通过操作宠物,在游戏场景中寻找相应的NPC,找到NPC后进行点击将使宠物形态发生变化,并且可以攻击与宠物同类的敌人。

游戏趣味性:多宠物选择,玩家根据自己的兴趣,来选择宠物进行游戏。多样的场景元素,如房屋,树木,湖面,木桥,山坡等,让你体验纯粹的自然之美。真实,多样的移动,每个宠物都有着其特有的移动动作。

(三)游戏层次结构介绍

在Unity3D中,一个完整项目是由多个场景组合起来的,每个场景又按照树形层次结构,来组织游戏的对象。同时每一个游戏对象都是若干组件,或子对象组成的,如图3-1。在游戏开发中,除了直接使用在Unity3D中的预定义对象,程序员还可以创建一个空的带有位置,旋转,缩放信息的游戏对象,然后添加脚本或其他组件到这个对象中。

图3-1 场景树形层次图

场景(Scene):场景是Unity3D程序的基本组成单位,任何一个Unity3D程序都是由若干场景组合而成,程序通过脚本在这些场景之间跳转。场景通过场景图的形式组织,场景图实际上是一种树形结构,其中每个节点就是一个游戏对象。对象与对象之间存在父子关系,即当父级对象移动、旋转、缩放时,子级对象也跟着一起变换[8]。

游戏对象(GameObject):为了便于同类型的游戏对象管理,Unity3D能提供预设,这是一个如同模版的技术。一个预设可以同时包含对象和游戏资源,例如3D模型。当需要创建同一类型的游戏对象时,预设就可以被使用。当预设改变时,所有的游戏对象将同时进行更新,上述的预设机制将大大提高游戏的维护效率。

组件(Component):组件可以是网格(Mesh)、光源(Light)、摄像机(Camera)、

粒子系统(Particle)、物理碰撞体(Collider)、布料(Cloth)、连接体(Joint)、声音(Audio)、动画(Animation)以及最重要的脚本(Script)。

四、机器人宠物游戏的实现

(一)场景搭建

一个游戏最基础的画面就是场景,场景的渲染风格不仅要与游戏风格契合,还应具备烘托某种特定氛围的功能。结合游戏的具体需求,整个游戏场景的搭建包含了以下几个主要模块,如:天空盒,游戏地形,3D模型,湖面等,如图4-1所示:

图4-1 游戏场景搭建示意图

下面将具体介绍各个场景模块的实现:

1.游戏地形

为了节省外部资源的占比,游戏地形使用了Unity3D中的自带地形来创作。在Unity3D 基本界面中点击GameObject选中Create Other下的Terrain,如图4-2。这样我们就创建了一个Unity3D自带的地形,如图4-3所示。

图4-2 创建Terrain选项

图4-3 Unity3D自带地形

在Unity3D的自带地形中,其地形高低变化,是通过高度图来实现的。高度图实际上是一张矩形的灰度图,在灰度模式中,颜色通过0~255来表示,0代表黑色,255代表白色,地势越高的地方其像素也越亮,255的像素代表此地势的最高点。反之,地势越低的地方其像素也越暗,0的像素代表此地势的最低点,因此像素灰度值和顶点的高度值可以用公式4-1表示,其中L为像素的灰度值,错误!未找到引用源。、错误!未找到引用源。分别为Unity3D中定义的地形高度和地形最低点,求得网格顶点的高度y[9]。

(公式4-1)

作为程序只需在进行地形渲染时,通过读取Unity自带地形图,并且按灰度生成高低不一的顶点矩形网格,这样就可以模拟出各种地形,而不需要导入其它模型资源,极大的减少了游戏模型的体积。

开发者可以通过该地形编辑器进行地形的编辑,如图4-4。通过选择Terrain(script)中不同的选项,不仅能实现地形高低的变化,如图4-5。在这个编辑器里提供了笔刷工具,通过使用这些笔刷工具,使用者可以快速的给地形填上绿草,树木,特定纹理等,节省了宝贵的开发时间。

图4-4 地形编辑器

图4-5 地形高低变化

2.天空盒

在游戏中,天空盒是用来为游戏场景增添相应氛围的立体贴图。该立体分为六个面,即前后,左右,上下,分别为这六个面加入合适的贴图,一个简易的天空盒就制作出来了。

在本游戏中,创建了一个简单的天空盒,具体步骤如下:

(1)创建一个材质命名为Sunny2。

(2)将Sunny2的shader设置为RenderFX/Skybox模式,并为改天空盒的前后,左右,

上下,6个面选择相应的贴图,如图4-6所示。

图4-6 天空盒制作

(3)最后在Edit中选择Render Setting,将天空材质设置为Sunny2名称的材质,如图4-7。最后完成的天空盒效果如图4-8

图4-7 设置天空盒

图4-8 天空盒效果

3.湖面

为了让湖面的水体效果更加逼真,游戏在Unity3D中原有的水体效果上,加入了波纹

效果,如图4-9。

图4-9 湖面波纹效果

4.外部3D模型导入

在Uunity3D游戏工程中将做好的外部3D模型资源直接拖入Assets文件夹中。导入完

成后,在做好的地形上将模型进行调整,合理排布,最后场景效果如图4-10:

图4-10 游戏场景

(二)游戏登陆界面的实现

GUI是图形用户界面的简称,是游戏与玩家直接交互的界面。GUI在整个游戏工程中占有着极其重要的地位,一个游戏的GUI是否友好,使用是否便捷,在很大程度上决定了玩家对游戏的认可程度,和体验感觉。Unity3D中内置了一套完整的图形用户界面系统,拥有从控件、布局到图形的一整套GUI解决方案,可以做出多种风格和样式的GUI界面。在Unity3D中使用GUI来完成GUI的制作工程是比较麻烦的,因为当下的Unity3D没有提供内置的GUI可视化编辑器,其GUI界面的相关制作,全部都需要通过编写脚本代码来实现,倘若游戏有比较多的界面制作任务,可以使用编辑器脚本来制作符合自身游戏需求的GUI编辑器,此外还可以借用第三方GUI插件来完成GUI界面制作,如NGUI插件。为了更深入研究Unity3D游戏引擎的功能[10]。游戏的GUI界面制作上采用了Unity3D自带的GUI机制,其提供了丰富的界面控件,让开发者可以组合出多样化的界面,主要控件介绍如下:

Label:用于绘制文本和图片

Box:用于绘制图形框

Button:用于绘制按钮,响应单击事件

RepeatButton:用于绘制一个处理持续按下事件的按钮

TextField:用于绘制一个单行文本输入框

Toggle:用于绘制一个开关

Toolbar:用于绘制工具条

相关主题
文本预览
相关文档 最新文档