第1章 Unity3D游戏开发简介 ●初识Unity3D。●了解Unity3D的诞生、发展及前景。●对游戏开发与游戏引擎具有一定理解。●初步了解Unity3D集成开发环境安装、调试和运行。游戏的本质是一种虚拟现实技术(Virtual Reality),是科技发展到相当高度后诞生的新的娱乐形式。游戏开发与设计过程是让计算机虚拟的游戏世界按照某种规则构建、人机交互的进程如何发生、游戏的故事如何讲述等进行。其核心是通过计算机系统实现人机互动,在这个虚拟的过程中使用户感受游戏带来的愉悦和快感。 11 游戏开发与游戏引擎游戏的开发工作一般分为策划、美术、音乐、程序几个模块,若把游戏比作一个人,则程序的开发是游戏的骨骼,美术和音乐是游戏美艳的外貌,策划决定游戏的灵魂。111䦃WingdingsXCp 游戏开发与设计游戏开发的全过程涵盖游戏策划、游戏概念及原型设计、游戏的背景设计、游戏的地图设计、游戏的场景设计、游戏的元素设计、任务与关卡设计、游戏规则的设计、界面与用户控制、游戏编辑工具以及编写游戏设计文档等。(1)游戏策划,即游戏设计的过程,是描述游戏所有相关内容的过程。在整个开发过程中,游戏策划起着非常关键的作用,从设定游戏的大纲,到规划所有的细节重点,再到整个开发过程的全程协调和监控,都属于游戏策划的工作范畴。游戏策划开发主要涵盖:立项阶段、前期准备、制作中期、制作后期等。①立项阶段要完成游戏的市场调查、项目开发可行性分析、开发所需资源的预估、游戏开发方案的确定、开发资金预算以及市场回报预估等工作。②前期准备主要完成确定游戏类型、确定游戏风格特点、确立游戏世界观、确立游戏背景、制定整体的游戏规则、制作游戏世界地图、确定游戏元素并定义元素属性、制定并统一开发规则、人员分工安排、规划开发进度等工作。③制作中期要完成细化区域地图及各片区的细节、按照属性定义设计游戏元素的内容、确定游戏流程、确定各元素初始属性数字、构建数值模型、按照大纲设计游戏各个系统所有细节的重点难点、设计所有相关界面、设计游戏的详细操作等工作。④制作后期要完成游戏测试、游戏机制、属性数值的调整、机制调优、版本更新方案、后续开发计划、市场宣传资料的制作。(2)在游戏策划之外,还要完成游戏概念及原型设计、游戏的背景设计、游戏的地图设计、游戏场景设计、游戏元素设计、任务与关卡设计、游戏规则设计、界面与用户控制、游戏编辑工具使用以及编写游戏设计文档等工作。112䦃WingdingsXCp 游戏引擎游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的工具,其目的在于让游戏设计者能容易和快速地设计出游戏程序而不用由零开始。游戏引擎大部分都支持多种操作平台,如Linux、Mac OS X、微软的Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。(1)游戏引擎的原理:游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合。它像一个发动机,控制着游戏的运行。一个游戏作品可以分为游戏引擎和游戏资源两大部分。游戏资源包括图像、声音、动画等部分,列一个公式就是:游戏=引擎(程序代码)+资源(图像、声音、动画等)。游戏引擎则是按游戏设计的要求顺序地调用这些资源。(2)游戏引擎的功能:无论是2D游戏还是3D游戏,无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1MB的小游戏,都有这样一段起控制作用的代码。经过不断的进化,如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节,以下就对引擎的一些关键部件作一个简单的介绍。①光影效果,即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。②动画,游戏所采用的动画系统可以分为两种:一是骨骼动画系统,一是模型动画系统;前者用内置的骨骼带动物体产生运动,比较常见,后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。③引擎的另一重要功能是提供物理系统,这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。④碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当角色撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据角色和墙之间的特性确定两者的位置和相互的作用关系。⑤渲染是引擎最重要的功能之一,当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。⑥引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其他外设的信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。通过上面这些枯燥的介绍我们至少可以了解到一点:引擎相当于游戏的框架,框架打好后,关卡设计师、建模师、动画师只要往里填充内容就可以了。因此,在3D游戏的开发过程中,引擎的制作往往会占用非常多的时间:《马克思·佩恩》的MAXFX引擎从最初的雏形Final Reality到最终的成品共花了四年多时间;LithTech引擎的开发共花了整整五年时间,耗资700万美元。Monolith公司(LithTech引擎的开发者)的老板詹森·霍尔甚至不无懊悔地说:“如果当初意识到制作自己的引擎要付出这么大的代价的话,我们根本就不可能去做这种傻事。没有人会预料得到五年后的市场究竟是怎样的。”正是出于节约成本、缩短周期和降低风险这三方面的考虑,越来越多的开发者倾向于使用第三方的现成引擎制作自己的游戏,一个庞大的引擎授权市场已经形成。其中最大的收益者是各大网络游戏公司,通过第三方引擎开发的网络游戏获益巨大。但随着市场急剧变化,用第三方引擎开发网络游戏的成本也越来越高。于是游戏引擎开发商们开始绞尽脑汁设计一种可以大量节约开发成本和周期的引擎。直到2010年zerodin引擎开发的巨作Dragona出品引起了各大游戏业巨头关注,因为此时他们才发现巨作也可以用这么少的成本、这么短的时间开发完成。现在游戏的开发工作量非常大,尤其是3D游戏,而且有大量专业的算法。不得不感谢约翰·卡马克,他带来了一种高效的游戏编程模式:游戏引擎。把一些复杂而且通用的模块封装成引擎,让游戏制作者有更多精力放在游戏规则上,而不是复杂的算法和细节上。这有点像把一个汽车发动机和整个汽车组装起来一样 。 你能够利用发动机, 新造另外一个外壳,造一辆全然不同的汽车。自从Doom游戏时代以来,已经出现了很多游戏引擎,有商业的也有开源的。113䦃WingdingsXCp 游戏引擎框架游戏引擎框架是支撑游戏引擎的核心支柱,各种各样的游戏引擎效果和功能各异,但主要框架都差不多,一般来说,引擎框架结构如图11所示。图11游戏引擎框架结构游戏引擎的最底层是由资源管理、网络引擎、I/O 库和图形数学库四部分组成的,主要用于处理与平台相关的组件。其中资源管理能够管理游戏资源,提供内存的分配和释放,在内存有限的情况下正确地调度资源;图形数学库提供有关3D 的数据结构,如向量、矩阵、四元数、直线、平面等,以及相应的操作,如矩阵的转置、求逆等;网络引擎,解决数据通信、用户并发、系统计费和道具管理等方面的问题;I/O 库提供键盘、鼠标、摇杆和其他外设输入设备的支持。游戏引擎的第二层是由物理引擎、渲染器合声音引擎三部分组成的。其中物理引擎一方面提供游戏世界中的物体之间、物体和场景之间的碰撞检测和力学模拟,另一方面提供物体的运动模拟;渲染器提供具有真实感的图像,包括图形、纹理、模型和动画的渲染、光照和材质处理、LOD 管理等,是游戏引擎的核心之一,很大程度上决定游戏的品质;声音引擎提供音效、语音和背景音乐的播放,音乐的流畅与和谐也是营造融入感非常重要的环节。游戏引擎的第三层是由实体模块、动画系统、场景管理和特效支持四部分组成的。其中实体模块将游戏世界中的物体抽象为通用的数据结构,提供相关的操作;动画系统提供渐变动画、蒙皮骨骼动画效果;场景管理组织游戏物体在室内、室外的位置和相关的特性;特效支持提供粒子系统和自然模拟,如水纹、雨、烟等,使游戏画面更为真实、自然与和谐。游戏引擎的第四层是由特定类型游戏有关的组件和人工智能两部分组成的,主要用于逻辑控制。其中特定类型游戏有关的组件针对特定应用提供专门的处理方法,如FPS、SLG、RPG 游戏组件;人工智能提供游戏运行的逻辑处理,运用智能技术提高游戏的可玩性。游戏引擎的第五层是由控制逻辑框架、游戏GUI 和游戏开发工具三部分组成的,主要用于游戏的辅助开发。其中控制逻辑框架是针对不同类型的游戏,提供相应的框架将游戏引擎的各个子模块整合起来,降低利用游戏引擎进行开发的复杂性。它通常支持某些脚本语言以提供良好的灵活性。游戏GUI 是提供用户可视化操作界面辅助设计;游戏开发工具包含关卡编辑、场景编辑、粒子编辑、材质编辑、脚本编辑器等辅助开发工具。114䦃WingdingsXCp Unity3D简介Unity3D是由Unity Technologies开发的一个让玩家轻松创建如三维视频游戏、建筑可视化、实时三维动画等互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity3D类似于Director、Blender、Game Engine、Virtools或Torque Game Builder等,以交互的图形化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、Windows Phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。Unity3D引擎是一款次世代游戏开发引擎,开发环境为Windows、Mac OS X操作系统。Unity3D引擎由完善的场景编辑器、脚本、特效以及网络组件构成,可以通过JavaScript、C++开发扩展组件,并且可以通过C#语言、JavaScript语言对游戏逻辑进行开发设计。开发的游戏程序具有跨平台发布性,可以把游戏发布为Mac OS X平台游戏,也可发布为iPhone手机游戏、Wii游戏机游戏、Windows平台游戏等,而且Unity3D的引擎本身设计得很稳定,结构性很强,代码可以用自带的编辑器进行编辑,也可以通过Eclipse编辑器进行编辑。Unity3D是一个轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏开发引擎。其特点如下。(1)良好的集成开发环境:通过Unity简单的用户界面,可以完成任何游戏开发工作,可节省大量的游戏开发时间。(2)图形化界面:Unity3D对DirectX和OpenGL拥有高度优化的图形渲染管道。(3)强大的资源导入系统:Unity3D支持所有主要的文件格式,并能和大部分相关应用程序协同工作。(4)一键部署功能:Unity3D可以让游戏作品在多平台运动及呈现。(5)Wii的发布功能:Unity3D让业界最流行的游戏平台软件更容易开发。(6)iPhone发布功能:Unity3D让革命性的游戏开发应用于手机设备。(7)着色器功能:Unity3D的着色器系统整合了易用性、灵活性和高性能。(8)强大的地形功能:低端硬件支持亦可流畅运行广阔茂盛的自然景观。(9)强大的网络功能:从单人游戏到全网实时多人游戏。(10)超强物理引擎特效:Unity3D内置的NVIDIA®PhysX®物理引擎带给游戏的特效与游戏的互动带来前所未有的动态感受。(11)影视媒体音频和视频系统:实时三维图形混合音频流、视频流。(12)强大游戏脚本功能支持:Unity3D支持3种脚本语言,即JavaScript、C#、Boo。Unity3D资源服务器是一个附加的包括版本控制的产品。(13)光影效果:Unity3D提供了具有柔和阴影与烘焙lightmaps的高度完善的光影渲染系统。(14)游戏文档系统:Unity3D为用户提供逐步的指导、文档和实例方案。115䦃WingdingsXCp Unity3D的诞生及发展Unity3D引擎的开发公司2004年诞生于丹麦的阿姆斯特丹,2005年将其总部设在了美国的旧金山,并发布了Unity 10版本。起初它只能应用于MAC平台,主要针对Web项目和VR(虚拟现实)的开发。这时的它并不起眼,直到2008年推出Windows版本,并开始支持iOS和Wii,才逐步从众多的游戏引擎中脱颖而出,并顺应移动游戏的潮流而变得炙手可热。2009年的时候,Unity的注册人数已经达到了35万,荣登2009年游戏引擎的前五名。2010年,Unity开始支持Android,继续扩散影响力。其在2011年开始支持PS3和XBox360,可看作全平台的构建完成。如此的跨平台能力,很难再让人挑剔,尤其是支持当今最火的Web、iOS和Android。另据国外媒体《游戏开发者》调查,Unity3D是开发者使用最广泛的移动游戏引擎,531%的开发者正在使用,同时在游戏引擎里哪种功能最重要的调查中,“快速的开发时间”排在了首位,很多Unity3D用户认为这款工具易学易用,一个月就能基本掌握其功能。而目前,这款引擎的注册人数已经井喷般增长到了80万,其中移动游戏支撑了Unity公司差不多一半的利润。iPhone App Store里有超过1500个基于Unity3D的游戏,其中最为热销的有Shadowgun(暗影之枪)、Battleheart(勇者之心)、Gears(幻想齿轮)、Snuggle Truck(动物卡车)等。Unity3D还提供了免费版本,虽然简化了一些功能,却打破了游戏引擎公司靠卖许可证(license)赚钱的常规,采用了更为流行的利益分成二八开的方式,为开发者提供了Union和Asset Store的销售平台,任何游戏制作者都可以把自己的作品放到Union上销售,而单个模型或是骨骼动画也可以放到Asset Store上。如此一站式的销售、开发平台,为广大游戏制作者称赞。不过如果是开发iOS和Android游戏,则必须支付400美元的额外费用,被称作引擎附加许可证。收费版本自然更为强大,尽管许可证需要1500美元,却可带来自定义的Splash Screen、代码优化、视频回放、音频滤波、光影工具、低级补偿、性能优化以及组件簇等一系列内容。所以如果试用了免费版以后觉得很好,并决心要发布精良的Unity3D应用,还是花钱购买收费版,版权是软件产品的生命线。Unity3D的发展趋势,除了各方面的开发者积极参与,还有大批的厂商也纷纷加入Unity3D阵营。在PC浏览器领域,已经有360这样的公司看好Unity3D,在自家的浏览器中无缝对接了Unity3D,为那些制作精良的Unity3D网页游戏提供了方便。玩家不必再因为安装插件不顺畅或是担心插件不安全而选择离开,更多的网页游戏开发厂商也可以放心地把更炫的效果带给玩家,毕竟Flash制约网页游戏的发展已经成为了业界的一大共识,虽然Unity3D插件还未能做到一统江湖,目前却有一家独大之势。相信除了360,未来会有更多的浏览器厂商开始内置Unity3D插件,方便了玩家也方便了自身的发展。网页游戏也一定会继续持续火爆,伴随着各样的社交网站,还有全三维的偷菜体验,全三维的宠物饲养系统,哪怕再简单的内容,经过Unity3D上的重新包装一定会焕发新的活力。由于Unity3D在移动平台普及率太高,倒是很少有会把使用了Unity3D引擎开发当作卖点的游戏作品,不过网页游戏倒是不少。据了解,国内一线的游戏厂商如盛大、完美世界、腾讯等已经纷纷设立了Unity3D项目组,目前采用该引擎的游戏没有大量问世,只是因为各方研究的还不够透彻而处于研发阶段。其中企鹅娘已经先行一步,限量删档测试中的《魔偶给我冲》有着不错的素质。《QQ乐团》尽管尚在封测阶段,我们也能看到一些期待。基于劲乐团,却在画面玩法上都有长足的进步,Unity3D除了帮助它实现无端以外,还使添加iPhone、iPad,Android设备作为交互媒介成为可能,而ACG、RPG、SNS的元素的引入虽有弄作一锅粥之嫌,但毕竟是音乐类游戏的小创新,当前的最大问题,可能还是硬件以及网速了。还有其他一些厂商,他们融合了模拟人生,英雄无敌或是一些传统的SNS以及RPG要素,开发出各种游戏作品,如《纵横无双》《蒸汽之城》《骑士的远征》《图腾王》等。还有国宝级的《仙剑》再一次要上线了,骏梦游戏得到了大宇的授权,已经在用Unity3D研发中,今年下半年将上线。相信玩家和其他Unity3D页游厂商,会同样期待她的到来,因为她不仅仅是一款游戏,更会使玩家装上Unity3D的网页插件。在国外,同样也有Unity3D大作即将发布,Capcom新作《鬼武者:魂》就是一款网页游戏,其中日本被划分为47个区域,400多位人物出场、三大阵营的乱斗让人浮想联翩。而借Unity3D可移植性的优势,今年秋季,它将推出智能手机版。倘若做到数据互通的话,Unity3D将为网页游戏和移动游戏玩家构建一个庞大的游戏世界。这是一次网页游戏与移动游戏联手新的契机,随着玩家人数的增加以及社区的形成,游戏会有更长的寿命和更多的运营空间。116䦃WingdingsXCp Unity3D的特色Unity3D引擎开发公司将迎来新的商机,因为作为市场上唯一的能够同时支持超过十数个主流平台(包括主机平台),2D&3D内容发布的开发引擎,Unity 在多平台支持的技术上拥有无可比拟的优势,能为Unity 的开发者提供多平台内容发布的技术支持,从而可以让开发者在不同的终端寻求到最大的盈利。Unity3D目前能够支持17个主流平台,包括Windows、Mac、Linux、Unity网络播放器、iOS、Android、Blackberry 10、Windows Phone 8、Windows Store应用程序以及即将实现支持的Tizen。在主机平台上,Unity可以支持Xbox 360、Xbox One、Wii和Wii U、PlayStation 3、PlayStation 4、PlayStation Vita、PlayStation Mobile等。根据荷兰市场研究公司Newzoo的最新游戏市场报告,2013年全球游戏设备份额,移动游戏占其中的25%(包含手机和平板电脑)。2014年全球游戏市场的总收入将达到814亿美元,移动游戏将贡献27%的收入,为217亿美元。足以见得,全球的移动游戏在日新月异的发展,移动游戏收入占全球游戏市场总收入的比例也越来越高。 但根据预测,到了2017年,全球游戏市场收入规模将达到1029亿美元,这时移动游戏也将只发展到占游戏总收入的1/3。所以,移动游戏虽然拥有被游戏市场看好的未来发展趋势,但这种趋势的发展也是需要时间的,主机游戏、电视游戏和PC游戏依然将带来庞大的市场收入。整个游戏市场从最初的主机游戏、PC游戏、网页游戏,发展到移动游戏时代。很多开发者跟从市场的发展,将宝贵的时间与巨额的投资花费在改变技术团队类型和开发方向上。使用Unity引擎的技术团队却自始至终不需要为此而烦恼。使用Unity3D引擎的开发者,可以将游戏轻松、便捷地发布成为PC游戏、移动游戏、网页游戏、甚至主机游戏和智能电视游戏17个主流平台等。这是Unity3D根据用户的