Unity 3.x游戏开发实例

978-7-115-32771-0
作者: 【加】Ryan Henson Creighton
译者: 师蓉
编辑: 陈冀康

图书目录:

详情

本书清晰地、按部就班地介绍如何构建一个小的、简单的游戏项目。本书并不介绍软件的所有细枝末节,而是关注实用技能,使得读者在较短的时间内能够使用Unity游戏引擎来完成游戏构建。非常适合初学者学习。本书教给你如何制作可以在不同的游戏中重复使用的关键游戏元素。它通过使用Unity 3D和简单易懂的代码,教给你如何制作简单易懂的游戏,将你带入独立游戏文化。

图书摘要

版权信息

书名:Unity 3.x游戏开发实例

ISBN:978-7-115-32771-0

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

• 著    [加]Ryan Henson Creighton

  译    师 蓉

  责任编辑 陈冀康

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410

  反盗版热线:(010)81055315


Copyright ©2011 Packt Publishing. First published in the English language under the title

Unity 3.x Game Development by Example

All Rights Reserved.

本书由英国Packt Publishing公司授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。

版权所有,侵权必究。


Unity是一款商业化的专业游戏引擎,可以帮助用户创建诸如3D视频效果、建筑可视化、实时3D动画等内容。Unity可以用来制作在iPhone、iPod、iPad、Android等多种平台上运行的游戏。很多商业游戏采用Unity 3D引擎进行开发。

本书是通过典型开发实例来介绍Unity游戏开发的初学者指南。全书共12章,分别介绍了Unity基础知识和安装、游戏机制和主题、Unity物理引擎、脚本编程、Unity GUI系统、游戏倒计时、3D建模和材质制作、粒子系统、音效、动画系统等核心话题。这些都是通过贯穿全书的4款游戏的制作来介绍和讲解的。

本书适合游戏开发初学者、对Unity感兴趣的读者,以及专职游戏设计和开发人员阅读学习。阅读完本书,读者将具备使用Unity进行游戏开发的实用技能。


Ryan Henson Creighton是资深游戏开发人员,也是Untold Entertainment 公司(http://www.untoldentertainment.com/blog)的创始人,他在这个网站中创建游戏和应用程序。Untold Entertainment专注于制作儿童、青少年、8~12岁儿童和学龄前儿童可以玩的游戏。在创建Untold Entertainment公司之前,Ryan在加拿大媒体集团Corus Entertainment担任高级游戏开发员,他使用Falsh为YTV和Treehouse TV制作广告游戏和原始特性。Ryan在努力开发一套Untold Entertainment的原始产品,包括他和他5岁的女儿Cassie共同创作完成的Sissy’s Magical Ponycorn Adventure(茜茜的神奇冒险)。Ryan的博客是行业中最活跃、最有趣的博客之一。他同时也是本书的作者。

当Ryan不开发游戏时,他会和他的两个女儿和妻子在多伦多商业区消磨时间。

非常感谢Cheryl、Cassandra和Isabel对我的爱和支持,以及美味的肉桂面包卷。感谢Niquet将我带入Unity世界;感谢Jim McGinley帮助我制定大纲和内容;感谢技术审阅者和Packt工作人员允许我在书中穿插一些笑话;感谢David Barnes如此伟大的幽默感。特别感谢在Freenode的#Unity 3D频道上的Michael Garforth和其他朋友。我也要感谢妈妈、上帝和所有帮助过我的人。


Clifford Peters是计算机科学专业的一名在校大学生。他热爱编程,在过去的4年一直都在编写程序。他喜欢使用Unity,希望将来能更多地使用它。

Clifford还帮助审阅了《Unity Game Development Essentials》和《Unity 3D Game Development Hotshot》。


游戏开发新手都非常乐观、有激情、野心勃勃。但是这种野心通常都是危险的。初出茅庐的独立开发人员和业余爱好者常常好高骛远。近期的一些最受欢迎的游戏(《涂鸦跳跃》(Doodle Jump)、《愤怒的小鸟》(Angry Birds)和《屋顶狂奔》(Canakalt)等)都是非常简单有趣的游戏,它们既给玩家带来了乐趣,也给开发人员带来了巨大的利润。使用Unity制作简单的游戏更容易让游戏开发新手获得成功。

本书让你一开始就处于有利地位,强调你确实可以完成的小而简单的游戏创意和可玩的项目。随着章节的推进不断增加游戏的复杂性。我挑选的示例可以帮助你学习各种各样的游戏开发技术。对Unity和编程有了基本了解后,你就可以通过完成简单有趣的游戏,在游戏行业占有一席之地。

本书使用出众的(和免费的)Unity 3D游戏引擎,教给你如何制作可以在不同的游戏中重复使用的关键游戏元素。通过使用Unity 3D和简单易懂的代码,教给你如何制作简单易懂的游戏,将你带入独立的游戏文化。它帮助你将初级颠球游戏转变成通过医院走道,将一颗仍在跳动的心脏紧急送往移植病房的疯狂赛跑;将一个具有戏剧性的爱情故事包装到一个简单的投掷游戏上,并将它转变为拥有壮观爆炸和“pew”音效的经典太空射击游戏。看完书后,你就可以学会开发制作你自己游戏的重要功能,这些功能关注的是组成游戏的有趣机制。

第1章将你带入神奇的游戏引擎Unity 3D——该引擎允许你制作游戏,并把它们部署到不同的设备上,这些设备包括(在本书编写时)Web、PC、iOS平台、Android设备和目前市场上的所有游戏设备。你可以玩一些基于浏览器的Unity 3D游戏(从大型的多人在线游戏到简单的卡丁赛车游戏),来了解引擎可以处理的内容。你可以下载并安装自己的Unity 3D副本,以及该软件中自带的激动人心的Angry Bots演示程序。

第2章讨论游戏机制和主题的不同之处。使用电子游戏历史中的示例(包括《百战天虫》(Worms)、《马里奥网球》(Mario Tennis)和《焦土》(Scorched Earth)),我们将揭露这些更加复杂和令人印象深刻的游戏背后的趣味性。通过关注这些电子游戏的构件,我们将学习如何将一个很大的游戏概念分解成可处理的起始项目。

第3章将你带入 Unity 3D游戏项目。我们将探讨Unity环境,学习如何创建并放置图元、添加物理材质和刚体这类组件,并使用Unity内置的物理引擎让球在球拍上反弹。

第4章通过逐步引入脚本来继续制作颠球游戏。只需编写简单的代码,就可以让球拍随着鼠标在屏幕中移动,为游戏添加一些互动性。该章是一堂关于游戏脚本的速成课,可以重新点燃你在高中计算机课程中被浇灭的热情。

第5章包括游戏开发中经常被忽略的方面:通用的用户界面设计(游戏中的按钮、Logo、画面和滑块等)本身就是一个完整的学科。Unity 3D包括很丰富的GUI(Graphical User Interface,图形用户界面)系统,它允许你创建引导玩家进入游戏的按钮等。我们将探讨这个系统,并使用它制作一个全二维游戏。当本章结束时,《机械修复手游戏》(Robvt Repair)(一款多彩的配对游戏)就完成一半了。

第6章从第5章遗留下来的问题开始。将为我们基于GUI的游戏添加交互性,并在我们的游戏开发工具带中添加重要的工具,包括生成随机数和限制玩家控件。该章结束后,你就拥有一个只使用Unity GUI系统制作的完整游戏了,而且你也拥有了自己探索该系统的基础知识,可以在游戏中创建新的控件方案了。

第7章是独立的一章,教你如何制作3种不同的游戏倒计时:数字倒计时、图形倒计时、饼图倒计时,这些倒计时使用的是同一段基本代码。你可以把这些倒计时添加到本书的任意一款游戏中,或者在你自己的游戏中重用该代码。

第8章回顾前面制作的颠球游戏,并用3D模型代替简单的图元。你将学习如何制作材质,并把它们应用在从外部工具包中导入的模型中。你还将学习如何检测游戏对象之间的碰撞,如何在屏幕中输出得分结果。本章结束时,《Ticker Taker》就完全制作好了——让一颗仍在跳动的心脏在医院的午餐托盘上不断反弹,并把它紧急送往移植病房!

第9章介绍Unity内置的粒子系统(Particle System),使用该系统可以创建烟、火、水、爆炸和魔术等效果。我们将学习如何在3D炸弹模型中创建火花和爆炸,如何使用脚本在3D角色上播放和停止动画。你需要知道《The Break-Up》游戏的玩法——抓住抛弃你的女朋友扔出窗外的啤酒杯,躲避爆炸物。

第10章完成第9章的《The Break-Up》游戏。你将学习如何在多个游戏对象上重用脚本,如何制作预制(Prefab)(只需要一次点击就可以修改一堆对象)。你还将学习在游戏中添加音效,让玩家有更加完美的体验。

第11章履行第2章的承诺,重新包装《The Break-Up》。通过交换模型、修改背景、添加射击机制,将在陆地上抓取啤酒杯的游戏转换成动感十足的太空射击游戏。你将在本章中学习如何创建双摄像头组合镜头,如何使用代码为游戏对象添加动画,如何修改代码,以节约时间和精力。

第12章将你带回《Ticker Taker》:用Unity内置的动画系统创建摄像头绑定,它将穿过医院内部模型。通过使用《The Break-Up》中的双摄像头组合,创建玩家正在穿过医院走道的假象。该章以项目绑定和将它部署到Web中结束,这样你的追随者就能体验你的杰作了。

附录 A 列出与 Unity 相关的网站、资源以及免费的游戏开发工具等。千万不要错过!

阅读本书并不需要特殊的准备。只要按前面几章介绍的方法下载和安装Unity 3D(http://unity3d.com/unity/download/)即可(附录A列出需要的软件资源和链接)。

如果你想开发游戏,又觉得自己不能处理复杂的编程,本书就很适合你。本书也适用于学习过其他软件(如Flash、Unreal Engine、Game Maker Pro)的开发人员。

本书中有几个经常出现的小标题。

为了给过程或任务的完成更明确的指示,我们使用如下所示的小标题。

实践时刻——标题

1)动作1

2)动作2

3)动作3

要理解这些指示的含义,还需要一些解释,所以它们后面通常跟着“刚刚发生了什么”。

该标题用于解释你刚刚完成的任务或指令。

你还可以发现一些其他的学习辅助,包括“临时测验”和“试一下”。

临时测验——标题

这些是一些简短的多项选择题,旨在帮助你测试一下是否真正理解了。

试一下——标题

这些设置了一些实际挑战,为你提供一些想法来体验你学到的知识。

你还能发现一些不同风格的文本,它们用于区分不同种类的信息。下面就是这些风格的示例,以及它们含义的解释。

正文中的代码如下所示:“其结果是,第一次调用Update函数时,球拍会沿着x轴移动2个单位。”

代码块如下设置:

function Update () { 
renderer.enabled = false; 
}

当我们要提醒你注意某个代码块时,会将相关的行用黑体字标注:

GUI.BeginGroup (new Rect (Screen.width - clockBG.width - gap, gap, clockBG.width,  
clockBG.height)); 
GUI.DrawTexture (Rect (0,0, clockBG.width, clockBG.height), clockBG); 
GUI.EndGroup (); 

新术语和重要的词以黑体字标注。在屏幕上看到的单词,在示例的菜单或对话框中出现的文本如下所示:“在Project面板中添加一个新脚本。将它命名为Mouse Follow”。


这样显示出现在对话框中的警告或注意。


这样显示提示和技巧。

我们一直欢迎读者的反馈。让我知道你们如何评价本书——你喜欢或者不喜欢的内容是什么。读者反馈有助于我们出版能最大限度帮助你的书。

要给我们发送一般反馈,只需要给feedback@packtpub.com发送一份邮件即可,要在你邮件的主题中标注书名。

如果你需要一本书,希望我们能出版,就在www.packtpub.com上,以SUGGEST A TITLE的形式发送便条,或者给suggest@packtpub.com发送邮件。

如果你有某个主题的专门知识,并且对写书感兴趣,可以看看www.packtpub.com/authors上的作者指南。

如果你购买了Packt出版社的一本书,我们可以最大限度地提供帮助,让你的购买更有价值。

如果你对本书有任何疑问,都可以通过questions@packtpub.com联系我们,我们会尽全力解答。


技术是一种工具。它可以帮助我们更快速、简单地完成不可思议的事情。在我们发明新型蒸汽动力的气锤之前,我们只能用锤子。而在我们发明了锤子之前,只能忍受赤手空拳地将钉子敲进木板的痛苦过程。是技术让我们少些辛劳,让我们生活得更美好舒适。

Unity 3D是一种相对较新的技术,它致力于让游戏开发者生活得更美好舒适。Unity是一款游戏引擎或游戏制作工具,它用于让你这种有创意的人制作电子游戏。

使用Unity可以更加快速轻松地开发电子游戏。以前开发游戏需要一大堆穿孔卡片、占据了整个房间的电脑和供奉给称为Fortran的“远古之神”的“贡品”。现在你拥有了Unity,再也不需要徒手敲钉子了。把它作为你的工具——你的创作工具包中的新技术。

在本书中,我们会把我们的游戏开发梦分解成很小的部分,而不是任何庞大史诗般的开放世界的游戏。这里的关键是把重点放在你确实可以完成的项目上,而不是把精力耗费在不可能实现的野心之作。本书将教你打造4款游戏,它们关注的都是小而简单的游戏机制。你会学习如何创建可以应用于所有项目的不同功能,填补游戏让它们提供完整的体验。完成后,就可以把这些游戏发布到互联网、Mac或PC上了。

Unity 3D团队一直致力于其他平台的打包和导出选项。在编写本书时,Unity已经可以制作在iPhone、iPod、iPad、Android设备、Xbox Live Arcade、PS3和任天堂WiiWare服务中运行的游戏了。这些工具都是Unity核心包的附加功能,需要额外支付费用。因为我们关注的是轻松就能实现的功能,所以本书使用的是Unity核心3D程序。

学会了书中的入门技能后,就可以扩展你的知识,开始制作越来越复杂的项目。关键是从一些可以完成的项目开始,然后在制作的每个新项目中添加可以自我挑战并增长知识的小功能。任何统治世界的宏伟计划都要从在后院划分一块领土开始;将本书当成你家的后院吧。

Unity最令人惊叹的是它可以让你在Web浏览器中体验全3D游戏。它通过Unity网络播放器来实现这个功能——一款嵌入到互联网、运行Unity内容的免费插件。

在你沉醉在Unity游戏世界前,先下载Unity网络播放器。和Flash播放器运行Flash创建内容的方式一样,Unity网络播放器是在Web浏览器上运行Unity创建内容的免费插件。

(1)打开http://unity3D.com

(2)点击主页上的按钮安装Unity网络播放器(见图1.1)。

图1.1

(3)按照屏幕上的提示操作,直到网络播放器安装完成(见图1.2)。

图1.2

(4)只有在Mac上执行这个过程有点复杂。你需要下载并运行一个.dmg文件,然后输入管理员密码来安装该插件,但它相对来说比较快速,而且也不费力。

安装好网络播放器后,就可以在浏览器中查看通过Unity 3D制作工具创建的内容了。

为了能充分体会Unity的神奇,我们先来看其他人用Unity制作的一些项目。虽然我们目前还达不到这种境界,但可以先看一下游戏开发者是如何将这个神奇的工具发挥到极致的。

《FusionFall》

Unity之旅的第一站是《FusionFall》——一款大型多人在线角色扮演游戏(Massively Multiplayer Online Role-Playing Game,MMORPG),游戏界面见图1.3。你可以在fusionfall.com上体验它。可能需要注册后才能进入该游戏,但它绝对值得你这么做!

图1.3

《FusionFall》是由Cartoon Network电视频道委托制作的,发生在一个重新想象的、动画风格的世界,那些家喻户晓的Cartoon Network角色都在这里长大。这里有更老练的飞天小女警、德克斯特、福斯特和他想象中的朋友,以及小孩大联盟里的孩子,他们会和邪恶的绿色外星人战斗。

《FusionFall》是一款大型的、非常引人注目的游戏,这款游戏的推出为当时默默无闻的Unity游戏引擎吸引了很多目光。作为技术演示,它是你的新型技术工具功能的最好展示之一!《FusionFall》拥有实时的多玩家网络、聊天、探险、战斗、物品列表、NPC(非玩家角色)、基本AI(人工智能)、角色命名、形象定制和换装。这只是这款游戏功能集的一大亮点。这款游戏还包括很多内容。

现在你可能在想:“太好了!《FusionFall》就是我想用Unity制作的游戏,本书就要教我如何实现了!”

遗憾的是,制作《FusionFall》这种大规模游戏的详细说明可能洋洋洒洒、长篇累牍,而且需要几个朋友一起翻开它巨大的页面。它需要用你的余生来阅读,在你弥留之际,你终于意识到,当初在线订购它是多么愚蠢的决定,虽然当时标明了:包邮哦,亲!

这就是原因:看一下http://fusionfall.cartoonnetwork.com/game/credits.php上的致谢名单链接。

该页列出了所有参与制作这款游戏的人员。Cartoon Network聘请了经验丰富的韩国MMO开发商Grigon娱乐公司。这个致谢名单上有80多个名字!显然,你只有两条路可选。

(1)发明一个克隆机,然后克隆出79个自己。将这些克隆人送到学校学习各种专业,包括市场营销、服务器端编程和3D动画。然后和你的克隆体一起花一年时间制作这款游戏。记得给每个人戴上袖标来区分谁是谁。

(2)现在就放弃,因为你永远不可能做出你梦想的游戏。

在你草率地决定放弃游戏开发而跑去种地前,让我们换个角度来看待这个问题。《FusionFall》确实非常优秀,它看起来就像是你一直梦想制作的游戏。本书并不是要粉碎你的梦想。它只是降低你的期望,把这些梦想先放在密封罐里,一步步来。老子说:“千里之行,始于足下。”我并不了解某人的爱好,但是如果他对电子游戏感兴趣,他可能就会说一些类似的话——从功能单一的游戏开始制作功能丰富的游戏。

所以,我们先把《FusionFall》梦想放在密封罐里,当我们做好准备后再把它取出来。让我们先看一些比较小的Unity 3D游戏示例,并讨论一下如何制作它们。

1.《越野狩猎迅猛龙》(Off-Road Velociraptor Safari)

要是没有到Blurst.com看看,Unity 3D游戏之旅就是不完整的——这是一个由独立游戏开发者Flashbang工作室拥有并经营的游戏门户网站。Blurst上除了托管其他独立游戏开发者的游戏外,到处都是Flashbang自己制作的新奇游戏,其中就包括《越野狩猎迅猛龙》,见图1.4。

图1.4

在《越野狩猎迅猛龙》中,你扮演一只戴着太阳帽和单片眼镜的恐龙,驾驶着一辆装备了致命链球的吉普车(就像在考古教科书中那样)。你的目标是控制吉普车做出各种动作,甩动链球杀死你的恐龙同胞(很显然)。

对于很多独立游戏开发者和评论员来说,《越野狩猎迅猛龙》是他们接触的第一个Unity游戏。有些评论员说,当看到可以在浏览器中运行全3D游戏时,他们都惊呆了。而其他评论员则有些失望,因为这款游戏在速度较慢的电脑上跑起来有些吃力。我们稍后会介绍优化问题,但从开始就应该时刻想着保持性能。

2.更少功能,更多希望

体验了《越野狩猎迅猛龙》和Blurst网站的其他游戏后,你会更好地意识到,在没有经验丰富的韩国MMO开发者团队的情况下,可以用Unity制作什么。这款游戏包括3D模型、物理学(控制物体逼真移动的代码)、碰撞(检测物体相互碰撞的代码)、音乐和音效。和《FusionFall》一样,使用Unity网络播放器插件就可以在浏览器中运行这款游戏。Flashbang工作室还销售这些游戏的可下载版本,这说明Unity还可以制作独立的可执行游戏文件。

3.我们是否应该制作《越野狩猎迅猛龙》

我们现在还不能制作《FutionFall》,但我们一定能制作《越野狩猎迅猛龙》这样的小游戏,对吧?答案是否定的。再次声明,本书并不是要粉碎你的游戏开发梦想。事实上,《越野狩猎迅猛龙》是5个非常有天分的、经验丰富的技术人员花了8周时间才完成的,到现在他们还在持续调整、改善。对于《FusionFall》这类成熟的MMO游戏来说,这种游戏很小,但是对独立开发者也是巨大的挑战。把它放在架子上的罐子里,先来看一些成功率更高的东西。

Wooglie.com是由荷兰的M2H游戏工作室经营的Unity游戏门户网站。看首页的第一眼就能知道,这是一个和Blurst.com完全不同的门户网站。Wooglie上的大多数游戏都不是精心打造的,跟Blurst的游戏比起来显得不够精致,也不够专业。但这才是我们开始学习Unity的地方。这正是一个新的游戏开发者,或Unity这类新技术初学者的起点。

试着玩玩Wooglie上的游戏。我会标出一些你可能感兴趣的游戏。

1.《欢乐赛车》(Big Fun Racing)

欢乐赛车是一款简单但效果出众的游戏,你需要驾驶一辆玩具车一边飙车一边收集硬币,见图1.5。它的特色是拥有不同关卡和可以解锁的车辆。这款游戏花了设计者几个月的业余时间;他将车辆模型的制作工作外包了出去。

图1.5

2.《Diceworks》

《Diceworks》是一款在iPhone平台上运行的非常简单的、精心打造的Unity 3D游戏,见图1.6。我们不会介绍关于iPhone开发的任何内容,但了解你的Unity内容可以部署到一些其他的设备和平台也是不错的,包括Apple iOS、Android和任天堂Wii。这款软件的这些附加版本需要另付费用,但你可以使用Unity独立版本,免费将你的游戏部署到Web、Mac和PC上。

图1.6

《Diceworks》是由一个美工和一名程序员合作开发的。很难找到同时拥有编程和艺术才能的人;科学家说,这两门学科由大脑的不同叶分管,通常我们只擅长其中之一。制作《Diceworks》的美工—程序员搭档是游戏开发中的常见配置。听听你的大脑在跟你说什么?你更擅长视觉效果还是逻辑思维?艺术还是编程?找到答案后,就可以找个人来组成大脑的另一半,这样就可以制作出在两个领域都发挥出色的游戏。

无论如何,《Diceworks》肯定是和我们所能管理的规模相当接近的Unity项目。

另一个有趣的发现是,《Diceworks》是一款使用3D引擎制作的2D游戏。第三个“D”基本上是不存在的,所有的游戏元素都在同一个平面上。起步时忽略一个维度并不是什么坏主意。增加游戏的维度会让你的设计变得更加困难,开始使用Unity时只关注X轴和Y轴会更简单,先把Z轴封到那些梦想罐里吧!有一些切实可行的游戏示例后,过不了多久就可以从罐子里取出Z轴,并打开它。我们在本书中制作的游戏都是2D平面的,不过使用的仍是三维模型。尽管如此,还是有一些游戏成功地贯彻了这个理念。比如,《新超级马里奥兄弟》(New Super Morio Bros)。Wii将它的3D角色锁定在2D平面,并实现了极其复杂且令人满意的平台效果。

新游戏开发者常犯的错误是“贪多嚼不烂”。即使是有经验的开发者,当他们沉醉在一个新项目或当他们接触到一个新技术并希望能立刻熟练使用它时,也会犯同样的错误。真正危险的是,你坐下来尝试编织你的梦想,比如,这是一款结合了《暗黑破坏神》、《啾啾火箭》和Microsoft Excel所有精华的剑与魔法RPG(Role Playing Game,角色扮演类游戏)巨作。时间一点点过去了,可它看起来和你预期的游戏一点都不沾边,于是你放弃了。你会意识到一旦你在制作梦想游戏时遇到挫折,那你的游戏开发者之路就很难起步了。

你应该从小的东西开始!“罗马不是一天建成的”,你梦想中的卡丁车赛车游戏也不是。步子小一点,你就能体验到成功。然后吸收你学到的知识,慢慢建立你的专业知识,直到你有实力打开架子上的梦想游戏罐。

现在先把我们的梦想架放在一边,把注意力放到那些小的、可实现的游戏上。读完本书后,你就会拥有一些可运行的游戏,这些游戏会随着你经验的积累变得越来越复杂。我希望你读完这本书后,就能够具备追寻梦想的实力,可以为你的游戏增添新特性,可以为新知识搜索所需要的资源。

第2章详细介绍了,当你决定制作游戏时要从哪里入手。我们还可以看到现实中的一些游戏示例,看看它们如何从简单有效的想法慢慢发展为极其复杂、功能强大的游戏。从小橡树果,成长为强大的多人橡树游戏。

整本书都贯穿了迭代思想。一些游戏开发者每天都在不变介质上制作内容,如游戏光盘和用来制作黄金正式版(游戏的最终发行版)的磁带。在Web上部署游戏的乐趣之一是它们永远不会有真正完成的一天。你可以持续调整你的Web游戏并修改它们,直到它最终变得比开始发布时有趣得多为止。

直到《越野狩猎迅猛龙》“完成”数年(实际上是3年)后的今天,Flashbang工作室仍然在修改和完善它!该团队通过不断修改游戏并提升其性能的方式,解决最初关于其低迷表现的批判。

同样,我们首先也会制作一些相当粗糙的半成品。但是当我们了解了更多关于如何编写很多游戏中常见的关键模块后,我们会回到早期不成熟的作品,添加这些模块并提高它们的性能。

你已经看到了Unity可以做些什么,现在是时候下载这个应用程序尝尝鲜了!可以从Unity 3D网站上免费(编写本书时)下载Unity独立版本。

(1)打开http://unity3D.com

(2)单击Download Now按钮。

(3)下载适合你所用平台(Mac或PC)的、最新版本的Unity 3D创作工具。如果有选项提示,记得下载包括示例项目的程序。

(4)按照屏幕上的提示操作,直到Unity创作工具安装完成。

(5)启动Unity。

探索Bootcamp

经过快速注册过程后,Unity就准备好了。如果一切顺利的话,AngryBots演示会自动打开。如果它没有自动打开,就会出现一个对话框询问你是否打开一个项目,默认情况下,可以在下面的位置中找到AngryBots演示。

Max OS:

Windows XP:

Windows 7/Vista:

如果你不按常理出牌,在下载Unity时没有选择示例项目选项框,就需要重新下载Unity来获取AngryBots演示。也可以选择从Unity网站中下载其他类似于AngryBots演示的示例学习项目:

http://unity3d.com/support/resources/example-projects/


由于Unity技术团队不断升级软件,因此他们推出了新的、更加优秀的演示程序来演示Unity的功能。如果你在阅读本书时,Unity 3D启动了一个不同的演示项目,不要害怕——大多数演示程序都提供了我们要讨论的内容。

第一次打开AngryBots演示程序时,你应该会看到一个启动画面,能帮助你跳转到不同的教程资源和语言指南。这真是帮了大忙了!现在先关掉它(不要担心。下次它还会出现,除非你取消勾选Show at Startup复选框)。如果你取消勾选该复选框,但是想再次看到欢迎画面,只需要单击Help | Welcome Screen即可。

单击Window | Layouts | 2 by 3菜单,就可以看到我们将要介绍的面板(见图1.7)。

图1.7

点击屏幕顶端中心的Play按钮即可开始测试演示程序(见图1.8)。

图1.8

使用键盘上的WASD键可以控制在AngryBots演示中的移动。按住鼠标左键可以自动开火(见图1.9)。完成探索后,按住Esc键暂停游戏,并重新获得鼠标控制。然后再次单击Play按钮结束演示。

图1.9

Unity提供了可以在软件中对关卡建模的地形工具。它提供了一个现成的第一人称控制器预制(First Person Controller Prefab)对象,让你的世界自动接受WASD键盘控制,这样可以探明地形,或者也可以用你自己的角色取代AngryBots英雄,创建一个第三人称游戏。Unity会自动处理渲染(绘制)、碰撞、物理和音效。它是一个神奇的工具!


坚持开放世界

如果你想学习如何在Unity中塑造你自己的地形,并添加3D模型、声音和交互来制作一款简单实用的3D开放世界游戏,可以看看Will Goldstone编写的《Unity 3.x Game Development Essentials》(Packt出版社出版)。

在AngryBots演示中看到的大多数内容都不能直接用Unity制作。大部分素材都是用其他软件制作的;Unity是用来将所有这些内容组合起来,并使它们可交互的程序。演示包括特殊的模型,如从3D Studio Max、Maya或Blender这些3D软件包中导入的气闸。某些元素,如机器人敌人,是有脚本连接的。脚本是游戏世界中物体的行为指南。我们将在本书中学习如何导入3D模型,以及如何编写控制它们的脚本。

我们先来快速浏览一下Unity的界面和几个需要注意的地方。

Scene(场景)窗口是定位游戏对象并移动它们的地方(见图1.10)。这个窗口有多种可以改变其细节层次的控件。使用这些控件来切换照明,显示带有纹理、线框或纹理线框的窗口内容。可以使用右上角的彩色小工具(Gizmo)约束XYZ轴的视角,以便观察场景的顶部和侧面。点击Gizmo中间的白色方形返回透视视图。该窗口还设有搜索栏。试着单击绿色的Y锥形,从上面观察AngryBots演示,然后在搜索栏中输入rock。所有名称中含有“rock”的对象都会亮起来,而场景中的其他对象则会变灰。单击小的x按钮清除搜索栏。

图1.10

Game(游戏)窗口显示的是玩家们看到的内容,见图1.11。当点击Play按钮测试游戏时(就像刚才在AngryBots演示中所做的那样),制作的成果就会显示在该窗口中。切换到Maximize on Play按钮,可以用全屏模式测试游戏。

图1.11

Hierarchy(层次结构)面板列出了场景中的所有游戏对象,见图1.12。游戏对象(摄像机、光源、模型和预制(prefab))组成了游戏。它们可以是“有形的”,如AngryBots演示中的气闸门和金属罐。它们也可以是“无形的”,只有游戏开发者才能操作,如摄像机、光源和碰撞器,这些是特殊的不可见形状,告知游戏引擎两个游戏对象相互接触的时间。

图1.12

AngryBots演示的Hierarchy面板包括金属罐、桌子、气闸和电脑终端等的游戏对象。它还列出了玩家——一个非常复杂的游戏对象,用于控制英雄的移动以及与环境的碰撞。有一个追踪玩家角色的摄像机。该摄像机是我们在游戏世界的眼睛。该演示列出了称为Environment(sounds)的集合——一系列游戏对象,用来决定玩家行走在关卡的不同位置时听到的声音(如屋外的暴雨,以及他在室内移动时机器的嗡嗡声)。所以,游戏对象可能包括“有形的”对象,如金属罐和气闸,以及幕后无形的东西,如光源、摄像机和动作(脚本)。

单击Hierarchy面板中的一个游戏对象,然后将鼠标悬停在Scene窗口。按下键盘上的F键,Scene窗口就会自动平移并缩放到这个对象。或选择Edit | Frame Selected,这比使用键盘快捷键更可靠(我常常把F当作表示帮助我记住这个快捷方式功能的焦点)。

1.Project面板

Project(项目)面板列出了用来在项目中创建游戏对象的所有元素,如图1.13所示。例如,在Objects/Enemies文件夹中查找mech_bot。AngryBots演示的EnemyMech游戏对象是由一系列网格组成的,它们表示网格的形状、描述其“皮肤”或着色的材料,以及描述其运动的动画。所有这些内容都列在Project面板中。

图1.13

Project面板显示的是计算机的操作系统中Assets特殊文件夹的内容。当创建一个新项目时,Unity会自动创建Assets文件夹。如果把一个兼容的文件,如一个3D模型、一个音效或一张图片拖入Project面板中,Unity会将它复制到隐藏的Assets文件夹中,并把它显示在Project面板中。


不要乱动Assets文件夹

Unity存储的是该文件夹的元数据,通过操作系统移动或删除其内容,就可能会破坏你的项目。如果你需要进行更改,一定要确保它们在Unity的Project面板中。

2.Inspector面板

Inspector是上下文相关的面板,见图1.14,这意味着,它的变化取决于你在Unity中其他位置选择的对象。你可以在这里调整Hierarchy面板中所列游戏对象的位置、旋转和比例。Inspector面板还可以显示控件,以便配置可以向游戏对象中添加功能的组件。在Unity的三个主面板(Hierarchy、Project和Inspector)中,Inspector是最费时间的,因为这是调整组成游戏项目中元素每个环节的地方。

图1.14

上面所示的Inspector截图显示了AngryBots演示中属于Player游戏对象的组件:脚本(包括Free Movement Motor和Player Move Controller)、刚体组件、胶囊碰撞器等。要在电脑中查看这些内容,需要点击打开Hierarchy面板中的Player游戏对象。

3.注意

使用Inspector面板快速改变角色的方向。让英雄在演示开始时是倒立的(这一定可以让那些坏人更愤怒)。

我们可以使用Inspector面板来改变PLayer对象的方向。按照下面的步骤执行:

(1)在Hierarchy面板中,选择Player游戏对象(见图1.15)。

图1.15

(2)点击Rotate按钮,该按钮看起来是两个首尾相对的箭头(见图1.16)。

图1.16

Player游戏对象底部会出现一个球体。红色的x轴旋转手柄环绕着Player对象的身体。拖曳它旋转Player对象模型,好像它正站在一个非常危险的独木舟上。蓝色的z轴旋转手柄旋转该Player对象,好像用一个无形的别针贯穿他的脚踝。如果我们拖曳该手柄,该Player对象就会不是面朝地,就是背朝地进行旋转,就好像他得了宇宙病。绿色的y轴旋转手柄像呼啦圈一样环绕着该Player对象。

随意拖动该手柄会使Player对象面向不同的方向旋转。Player游戏对象可能会变得相当恐怖;为了将旋转控件隔离开,在Scene窗口的搜索栏中输入player来排除其他所有游戏对象,见图1.17(需要记住的是,当鼠标光标位于Scene视图时,按下F键可以使选取的游戏对象在眼前显现出来)。

图1.17

(3)拖动红色的x轴可以让Player对象倒立起来,但是更好的方法是在Inspector面板中改变x轴的rotation值。如果Inspector面板中Transform旁边的灰箭头尚未打开(见图1.18),就展开它,然后将Rotation下面的x值改成180。PLayer对象就会倒立起来了。

图1.18

(4)当点击Play按钮测试游戏时,演示程序中的Player对象就会以电动摇摆舞风格来移动。这些机器人被吓坏了,以“错误!不能计算!”的方式来保持他们机械的步伐。

4.Layers和Layout下拉菜单

可以在Inspector面板上方看到Layers(层)和Layout(布局)下拉菜单,见图1.19。和Photoshop或Flash类似,可以将游戏对象分层。在Layout下拉菜单中存储了一些常用的布局(我设置的是“2 by 3”配置)。你也可以保存并加载自己的自定义布局。

图1.19

5.播放控件

这三个按钮可以帮助你测试游戏,并控制播放。正如你所看到的,“播放”(Play)按钮用于开始和停止游戏。“暂停”(Pause)按钮按预期工作——它用于暂停游戏,这样你就可以立刻在运行中进行更改。第三个按钮是单步调试(Step-Through)控件;使用它一帧一帧地推进游戏,这样就可以更严格地控制发生了什么。

图1.20


测试时所做的修改无法保存

Unity更令人惊讶的一个功能是:当测试游戏时,也可以随时修改游戏对象和变量。但重要的是要知道,在测试过程中所做的修改并不会“保存”。一旦停止测试游戏,在测试过程中所做的修改就会恢复到点击“播放”按钮之前的状态。令人沮丧的是:对你的游戏做了一大堆修改后才发现一直处于“播放”状态,你的修改将丢失。避免这个问题的一种方法是切换到Game(游戏)窗口的Maximize on Play按钮,这样你才能更好地意识到你是否正在进行测试。

6.场景控件

在场景的左上角,有4个帮助你在场景中移动的控件,可以使用它来定位游戏对象。这些控件分别对应键盘上的Q、W、E和R键。从左到右依次是以下4个工具。

我们简单地浏览了一下Unity界面的关键元素,但是不要只满足于此。还有很多菜单选项、按钮和控件没有介绍。为什么不研究一下那些菜单,或者随机点击你还不了解的内容呢?是时候搞些无风险的破坏了。你并没有努力制作AngryBots演示程序,那为什么不摆弄一下它呢?

下面是可以尝试的内容。


调整者的天堂

把Unity 3D界面设计为可定制的。你不仅可以自定义窗口布局,而且可以编写自定义脚本,制作在Unity中出现的按钮和面板来加快工作流程。这些内容远远超出了本书的范围,但是如果你是乐于钻研的人,那么你会很乐意按你自己的喜好来调整Unity 3D——可能添加一些赛车条纹,安装一对巨大的低音喇叭。

第1章讲的是Unity能做什么,以及其界面能提供什么。下面就是我们学到的内容。

我希望你已经花时间彻底修改了Bootcamp演示程序。如果通过File | Save Project来保存文件,那么演示程序中的星际战士永远都是倒立的。如果想回到原始的AngryBots演示程序来做更多尝试,不要保存我们在本章所做的有趣(但无意义的)修改。

我们已经了解了Unity的基本内容,现在来看一些游戏设计理念吧。第2章会介绍一个独立的初学者真正应该处理的游戏规模。好好休整一下吧!因为你就要沉浸在一种绝佳的调味剂中了。


你已经下载并获得了Unity的最新版本。你已经看到了其他人用该游戏引擎制作的一些示例,并快速地了解了界面。现在可以点击菜单上的File | New Project来清除AngryBots演示项目了。给新项目选择一个文件夹(可以把它称为“Intro”)后,Unity可能会完全关闭并重新启动。重启后就会出现一个3D平面。

点击Scene视图顶部中间的landscape按钮来查看该平面(见图2.1)。它向各个方向无限延伸——好像在你所有的方位(你的两边、你的前面、你的后面、深入地下、直往云霄)上都是无限的。是时候制作游戏了,对吧?但是怎么开始?从哪里开始呢?

图2.1

创意正是我们所需要的。每个游戏都是从创意开始的,当你拿起一本关于Unity的书,你至少会有一个游戏创意,你头脑中会突然闪过一个灵感,并让你精神为之一振。如果你和我一样,头脑中确实有10 000多个游戏创意,它们争先恐后地嚷着“制作我!制作我!”你会推进哪个创意呢?

一个游戏开发者是否成功并不取决于他拥有的创意数。拥有10个游戏创意的家伙和拥有500个创意的姑娘具有同等价值。他们都毫无价值!游戏开发者开发的是游戏。让你和成功失之交臂的并不是你拥有的创意数,也不是你中途放弃的项目数,而决定你是否成功的因素是你已经完成的游戏数。也就是说:完成的人才是赢家。不要担心现在还没完成;要担心的是要完成它。

不管怎么说,这些压力可以让你把第一个游戏做好吧?在执导《泰坦尼克号》和《阿凡达》之前,詹姆斯卡梅隆(James Cameron)在拍摄食人鱼的续集(一部关于食人鱼的零预算B级片)。总有一天你也会成为游戏界的卡梅隆。但是现在,我们应该从头做起。

对你来说,成为一名成功的Unity游戏开发者的最大障碍就是完成一个项目。突破这一障碍至关重要的是盯着3D平面的创意阶段。正确创意的选择会增大成功的几率。错误创意的选择会让你彻底失败。然后你可能会回到学校,学习如何成为一名会计。以游戏开发开始、以会计生涯结束是最糟糕的情况。这是我们无论如何都要避免的。

即使在你开始前,情况对你也是不利的。无尽的3D平面正在呼唤你、祈求你制作你无法完成的一个项目。你可能会开始想你玩过的其他3D游戏:完全开放的“沙盒”游戏,如《镇压》(Crackdown)或《侠盗车手》(Grand Theft Auto);拥有很多探险和有趣挑战的平台游戏,如《超级马里奥64》(Super Mario 64);大型角色扮演游戏,如《神鬼寓言》(Fable)或《辐射3》(Fallout 3)。所有的这些游戏都具有一些共同点:在一个基于物理的环境中移动的动画人物或第一人称摄像机;一个拥有地图、任务、非玩家角色和拾取道具的丰富多彩的3D世界(见图2.2);以及消耗数百万美元预算的百人团队。

图2.2

你可能不是和最愿意帮助你制作游戏的99个最亲密、最富有的朋友一起阅读本书的。你需要忽略无限3D平面包含的无尽范围,并培养出能够全方位处理问题的创意和智谋;也就是说,从创意到成品。

菜鸟游戏开发者会落入的另一个陷阱是:以证明项目仍然以不可能的方式来缩小他们的创意。例如,他们会说:“我不想把眼光放得太高,所以我要制作一款像《GT赛车》(Gran Turismo)这样的游戏,不过赛车的数量要少些”,或者“我想制作具有较少关卡的《暗黑破坏神》(Diablo)”,或者“我想制作具有较少种族和只有一半物品的《魔兽世界》(World of Warcraft)。”

要了解这种方法如此危险的原因,就要更理解游戏是如何整合起来的。这里的两个问题是功能和内容。正常情况下,50关的游戏比5关的游戏具有更多内容。50关游戏的内容是5关游戏的10倍,但它们具有相同的功能:关卡。12种角色种族的角色扮演游戏比3种角色种族的游戏拥有更多内容,但是它们具有相同的功能:角色类。

因此,虽然你可能会认识到为游戏创建附加内容、需要讨出更多努力,但是试着确认游戏要提供的功能数。游戏提供的每个功能都需要花费更多精力,有时创建20个不同的敌人比创建敌人功能更容易。

我们了解选择一款具有更多功能、更少内容的游戏是多么危险、多么具有自我毁灭性。而且,因为有些功能的开发需要耗费大量时间,所以选择一款功能齐全的游戏,并删除一些功能以减小项目的规模也是很危险的。

一个更好、更容易成功的方法是,从没有任何功能的游戏开始,一个个地添加功能。使用这种方法,你可以决定什么时候对玩家开放游戏,什么时候可以把你计划好的附加功能添加到后续版本中。这是一个可以让你拥有很多阶段性胜利和成果的好方法。

可以帮助你完成游戏的一个技巧是认识到机制和主题之间的区别。游戏机制是关于它是如何运作的。最好的游戏包含一个简单易学、难以掌握的简单机制,而且它们具有让玩家继续玩下去的足够吸引力。《俄罗斯方块》(Tetris)的机制是将落下的方块移动并旋转到指定的位置,使它们排成一行或多行。很多高尔夫游戏的机制是通过左右移动控制器的摇杆,或者当“力度”(Power)和“精度”(Accuracy)值达到合适的水平时按下按钮,来模拟挥动高尔夫球棒。《打砖块》(Breakout)游戏的机制是来回移动球板,将球反弹到易碎的砖墙上去。

游戏的主题是它的外观和声音。它是创建故事的动画场景。想象一款已经编写了追踪鼠标光标对象的游戏。屏幕上有你必须要避免的“坏”对象,也有你必须要收集的“好”对象。这就是游戏机制。游戏的主题实际上可以是任何东西。Player对象可以是收集“好”奶酪对象和避免“坏”老鼠对象的老鼠。或者它也可以是收集太空财富和避免黑洞的宇宙飞船。或者它也可以是收集动词和避免连接代词的钢笔。正如他们所说,“没有任何限制!”

从机制和主题分离获得的好处是可以摆脱电子游戏会议,开发你自己想要的任何内容。如果你认为,“我想制作一款空间主题的战略游戏”,并回想所有玩过的空间主题战略游戏,你可能就会想到4X游戏,如《人马座阿尔法星》(Alpha Centauri)或《猎户座之王》(Master of Orion)——它们都让你征服宇宙。它们都是你可能无法单独完成的大型游戏。所以出于理智,你开始缩小它们——“我只是要制作拥有较少星球的猎户座之王(Master of Orion)”,或“我只是要制作具有较少功能的人马座阿尔法星(Alpha Centauri)”。你现在已经在不知不觉中掉入了弄巧成拙的陷阱中。你的项目仍然很大。你最终放弃了所有的希望。几年后,你成了一名会计,常常会想如果当时成功了会怎么样呢。

不要走模仿之路,要开始问自己太空主题和战略机制方面的问题。它们的趣味是什么?《猎户座之王》这类游戏的哪些点激起了你的兴趣?你喜欢开采星球上的资源和购买新物品吗?你享受发现新星球的快感吗?或者创建一个太空飞船舰队来征服敌人会让你兴奋吗?

将你的游戏浓缩成一点——非凡的趣味性。为你的玩家创建一个快乐的体验,并坚持下去。这就是你的游戏。其他的都只是功能延伸而已。

互联网充满了小而简单的免费游戏,它们很容易为我们提供非凡的趣味性。分析一些游戏,看看能学到什么。我们将确定每个示例的:

这些游戏需要Flash Player插件(你可能已经安装好了)。如果因为一些奇怪的原因,尚未在电脑中安装该插件,就需要安装它,打开http://get.adobe.com/flashplayer/ ,按照提示完成安装。

XGen工作室(http://www.xgenstudios.com/play/motherload)制作的《太空采矿机》(Motherload)把一个复杂的4X游戏(如猎户座之王)分解成两个任务:资源开采和物品购买(见图2.3)。

图2.3

核心机制:在有限的燃料下,使用箭头键(挖掘、飞行、避免长时间降落)来驾驶你的采矿车。游戏中只有一个“关卡”,它会在很长一段时间内占据你的屏幕。你的采矿车只能向下挖出矿石后,再返回地面卖掉这些货物并清理货仓。关键是要挖出并出售足够多的矿石来升级你的装备,这样才能挖得更深,携带更多战利品,在更长的降落中存活。初期的目标是积累可观的资金,但最终会发展成使你的战利品更有意义。该机制类似于一款更简单的游戏:《月球着陆器》(Lunar Lander),玩家必须在有限燃料的情况下,将宇宙飞船轻轻地降落在一个非滚动屏上。你既可以将《太空采矿机》看成是非常低调的《猎户座之王》(Master of Orion),也可以将它看成编造的《月球着陆器》(Lunar Lander)。

主题:一个类似卡通的太空矿,上面覆盖着一层砂砾和污垢。玩家角色是一辆领先时代的采矿车。唯一的非玩家角色是人(或是他?)。

功能集如下:


通用

稍后我们会讨论一下通用的游戏封装器。它们包括标题画面、说明画面、暂停画面、胜利或失败画面,这些都是游戏的重要组成部分。最好的部分在于,如果制作良好的话,你可以在新制作的游戏中重复利用它们。

可能的附加功能:《太空采矿机》(Motherload)的后续功能可以包括以下几个。

续集也可以只添加新内容:更多装备升级、更多矿石类型、更大的游戏场地、更多情节序列、更多音效和音乐曲目等。游戏评论员将它戏称为MOTS(more-of-the-same)续集。你现在可以将它称为“扩展包”来发布。


扩展你的技能

我们正在寻找方法,但是如果你制作了游戏的续集,至少要保证添加一个新功能。因为你仍然在学习Unity,要确保新功能的开发需要你还没有掌握的技巧。因此,你制作的每款游戏都能不断提高你的能力,直到你成为Unity大神为止。

要特别注意游戏的平视显示器(Head-Up Display,HUD)。电子游戏HUD包括在游戏世界的上下文中通常没有意义的图形元素,但是它们给玩家提供了至关重要的信息。一个极好的例子是所有《塞尔达》(Zelda)游戏中的心脏,或所有格斗类游戏中的能量棒。《太空采矿机》(Motherload)HUD包括燃料消耗和钻头磨损棒形图。它可以显示动态钱币和深度记录。三个可点击的元素把玩家带入库存、选项和说明画面。最后,会出现一段文字,让玩家了解可以在可视游戏区边缘找到更多商店。

Unity拥有创建游戏HUD的强大功能。在《太空采矿机》中看到的所有HUD项目类型(图形条、动态(可变)文字、可点击图标和闪光的帮助文字)都可以在Unity游戏引擎中创建。如果你想尝试一下,可以跳到第4章。

《Artillery Live! 》(http://www.gamebrew.com/game/artillery-live/play)是标准的炮术游戏机制的一种迭代(见图2.4),从电子游戏出现起就存在这种游戏机制了。可以在Flash中制作它,但是没有任何理由不使用Unity内置的3D坦克模型和一些超炫的爆炸粒子效果来制作。

图2.4

核心机制:炮术游戏的共同机制是,玩家设置射击的轨迹和力度来摧毁敌人的坦克。该版本也有影响坦克炮弹在风中轨迹的风速功能。随着时间的推移,该游戏机制演变成了模仿弹弓的拉回和打出体验。其他版本拥有根据鼠标自动调整角度的炮塔,玩家按住鼠标按钮即可增大射击的能量。

主题:《Gamebrew是一款标准的坦克山游戏,是20世纪70年代的游戏开发先驱设计的第一款炮术游戏。这些游戏从纯文本标题转化为拥有像素化坦克的原始说明游戏。一个明显的备选主题是将坦克换成持弓箭的战士(参考《弓箭手》(Bowman)在线游戏系列)。

近些年最有意思的炮术主题是《百战天虫》(Worms)系列和在线多人游戏:《坦克宝贝》(GunBound)。《百战天虫》中用全副武装、一心想搞破坏的蠕虫代替坦克,《坦克宝贝》中则是玩家驾驶着大型车辆投入战斗。除了坦克之外,《坦克宝贝》还将动物和神秘生物投入混战中(见图2.5)。

图2.5

功能集:除了核心机制、通用功能和电脑控制的玩家外,《Gamebrew》炮术游戏还提供了回合制多人游戏。多人游戏是一个很大的主题,值得单独说明。Unity确实可以制作多人游戏。Unity可以使用SmartFoxServer或ElectroServer这类开箱即用的套接字服务器解决方案,也可以使用自己编写的服务器。但是多人游戏超出了本书的范围。如果你从来没有编写过多人游戏,那么你只需要知道它们会带来很多让人头疼的问题就行了!如果你才刚开始,那么最好先解决单机游戏。

多人游戏的真相:越来越多的游戏从个人的业余爱好变成人们团体(无论是在真实还是网络环境下)的消遣。一旦你跨出单机游戏体验,游戏的制作就需要花费更多的时间、金钱和脑力。下面是以高成本到低成本、最复杂到最简单的顺序排列的多人游戏功能列表。

可能的附加功能:《百战天虫》系列通过一系列附加功能的添加,为炮术概念做了很多迭代工作。

《百战天虫》系列就是一个非常好的例子,它说明了如何选取一个简单有趣的机制、创造性地设置主题,并为其卓越的功能而发狂。但是,最重要的是从制作炮术,而不是《百战天虫》开始。


低成本,高效益

到目前为止,功能开发的终极目标是找到快速、低成本制作,却能给玩家带来巨大快乐的功能。为你的《百战天虫》团队命名提供了无限乐趣。我还记得花了很长时间制作其中一个版本的蠕虫爆破时的自定义音效。没有开发人员不能制作的功能,我花在定制团队上的时间,远多于玩这款游戏的时间。


制作一款游戏,买一栋房子?

如果你认为玩家只会注意到那些百人团队制作的大制作游戏,那么炮术游戏就会给你一个教训。iPhone开发者Ethan Nicholas发布了一款用于iPhone平台的炮术游戏,到目前为止,已经赚了$600 000。小游戏也很有可能会成功。

正经点,《Pong》?是的,《Pong》。英国电影和电视艺术学院(The British Academy of Film and Television Arts)拥有这款经典游戏的在线版本(http://www.bafta.org/awards/video-games/play-pong-online,678,BA.html)。原始的《Pong》被认为是我们现在所知的商业性电子游戏产业的先驱。

机制:《Pong》名字的来源是ping pong——现实世界中的运动,两个运动员站在一张带网的桌子两侧,用球拍在两人之间打来打去。乒乓球源于网球,因为人们后来发现跑来跑去太费劲了,所以发明了乒乓球运动。

现实世界中的一些运动非常适合电子游戏机制。电子游戏产业仍然属于起步阶段。现在世界中有很多有趣的东西(如打乒乓球或炸毁坦克),有待于改编成精彩的电子游戏机制。你能够找到其中一种还没有发现的机制,并制作出下一个《Pong》吗?

主题:和很多早期的游戏一样,《Pong》显然有很多需要改进的地方。网球和乒乓球电子游戏主题已经存在很长时间了,而且从根本上是不同的。如图2.6和图2.7所示,比较一下《实况桌球》(Rockstar Game Presents Table Tennis)中对乒乓球的超现实处理和任天堂的《马里奥网球》(Mario Tennis)游戏,《马里奥网球》在比赛场地中加入了旋转星和肉食植物。

图2.6

图2.7

要注意这两个示例中的HUD因素。这三款游戏(《Pong》、《实况桌球》和《马里奥网球》)都在屏幕上显示了一段动态(可变)文字来显示得分数据。《实况桌球》还拥有球员名字、活动距离和显示每个球员赢得场数的小圆圈。看一下这些因素的位置。这三款游戏和《太空采矿机》示例中的HUD元素都显示在屏幕顶端。

功能集:随着《Pong》的不断改进,功能集也变得越来越丰富。已确知来回击打虚拟球的机制已经足以支撑一款游戏,Rockstar Games和任天堂都在《Pong》游戏中添加了丰富的功能集,几乎都无法辨认它们来源于《Pong》。通过实现网球风格的计分,使这两款游戏更像是网球游戏。两款游戏都添加了锦标赛、排名和拥有不同技能集的玩家角色。《马里奥网球》添加了包括蘑菇在内的30种新功能。《Pong》是一款简单、强大的游戏机制可以期望的复杂程度的证明。但是,再次声明,如果你想制作《实况桌球》或《马里奥网球》这种功能齐全的游戏,关键就是从《Pong》这种简单的游戏开始。

《Pong》游戏机制如此简单、高效,其影响力非常深远,贯穿了整个电子游戏历史。

从《Pong》中得到了《打砖块》游戏(Breakout)。这里的迭代是将《Pong》转化为单机游戏,例如现实世界中的手球或壁球,并外加了一堵易碎的砖墙。《打砖块》在《Pong》理念中引入了阶段或关卡,每一关都配置了不同的砖块。

《Arkanoid》通过将主题修改为科幻主题来迭代《打砖块》。球拍变成了宇宙飞船。《Arkanoid》添加了一些新功能,尤为重要的是,当球撞到砖块上,以胶囊形式释放的物品。当玩家用飞船抓住胶囊时,游戏规则就会改变。飞船可以变得更长。它会变得发粘,这样玩家就可以抓住球,并计划下一次射击。我最喜欢的《Arkanoid》物品是标有“L”的红色胶囊;它允许飞船发射激光来毁坏砖块!

《Pong》和宝开游戏(PopCap Games)的《幻幻球》(Peggle)引领我们进入今天。如图2.8所示,《幻幻球》结合了一些不同的游戏机制:《打砖块》的撞击障碍和球的反弹,《舞王》(Bust-A-Move)或《泡泡龙》(Puzzle Bobble)的瞄准器,以及现实世界中柏青哥游戏的随机性。为了增加主题的趣味性,宝开增加了卡通独角兽和地鼠,而且在电子游戏历史中一个最值得称道的回报中,当奏响贝多芬第九交响曲的高潮时,《幻幻球》奖励给玩家一个超级慢动作的决胜球。

图2.8

《幻幻球》给了我们一些重要启示。

试一下——重新设计你最喜欢的游戏

如果让你负责制作一些知名游戏的续集会怎么样呢?《食豆小子》(Pacman)的续集添加了3D迷宫、跳跃和头上带着红色蝴蝶结的主要角色。这会是你要做的吗?看一看下面的流行游戏列表,考虑一下如果你负责续集的话,会添加哪些游戏功能呢:

我们在最初的想法阶段采取的方法不是自然而然形成的方法。和写书一样,游戏开发者通常要从设置、故事情节和角色开始制作新游戏。我们被教导这样开始一个有创意的项目。虽然通常会与书、电影和电视节目的叙事形式有很多重叠的部分,但是从这里开始还是很有诱惑力的。“我的游戏是关于一个名为Kane Glorg的超级战士,他不知道他的父母是谁,所以他手持双斧在一片荒芜的风景中游历,为了和撒旦当面较量而不断劈开挡在前面的邪恶妖魔。”

本章的结论是所有的这些都是装饰门面。当你刚刚开始(而且除非你制作了一款明确的叙事游戏,如图形冒险类游戏或文字冒险类游戏)时,故事、设置或角色是终点,而不是起点。有太多游戏开发者被束缚在其故事设计能否带来的深远影响,而不是担心最最重要的:我的游戏机制简单有趣吗?玩家会喜欢吗?

设计游戏并不是创建故事。你是在制作玩具,它们像夹在好听的故事、变化的角色和逆转式的结尾中的香肠卷中,但是你必须要开始制作。你需要从能让玩家发笑开始。正如创造了《马里奥》(Mario)、《大金刚》(Donkey Kong)、《塞尔达》(Zelda)的Shigeru Miyamoto在2007年游戏开发者大会(Game Developers Conference,GDC)所说,先想象你的玩家玩游戏玩得开心,然后再慢慢向后推进。


购买创意

寻找游戏灵感的好地方是当地的玩具商店。忽视玩具主题,如《乐高亡灵海盗》(Lego Pirate)系列的公海冒险,专注于机制:制作。忽视《风火轮》(Hot Wheels)轨道装置上巨大的喷火蝎子头,考虑一下机制:趣味性,小车飞过坡道时的科学方法。一定要研究一下在最后过道、镍箱,以及巧克力蛋和焦糖爆米花中的小而简单的玩具。你一定能找到其游戏机制创意。

考一下自己——寻找非凡的趣味性

下面是电子游戏列表,它们都是基于现实世界中的物理游戏机制。某些情况下,它们基于物理游戏,其他情况下则是瞎捣乱。你能分辨出这些游戏采取的是哪种非凡的趣味性吗?我把答案折起来,藏在你椅子下了。

天空无限宽广,Unity就是以无尽的天空开始的。但是,我们在本章中已经看到,无尽的天空确实会诱导我们进入不可能完成的概念。所以,需要重新定义一下天空。不要想你的游戏会有多大、多复杂,考虑一下我们世界中所包含的简单交互和快乐时光。将球投出去再捡回来,打翻一堆东西,喂养动物,种植植物——这个世界充满了简单有效的交互,这些交互能点亮我们最原始、最基本的快乐皮层,这是我刚刚发明的神经学术语。

如果你想发现现实世界中制造快乐的时刻,学一下孩子。因为游戏就是玩,所以能够吸引孩童的事情就是可以获奖的游戏。如果合金装备不是复杂的捉迷藏游戏会怎么样呢?《摇滚乐队》(Rock Band)和《吉他英雄》(Guitar Hero)就是谈空气吉他和假装自己是摇滚巨星的电子版本。你堆过雪人吗?块魂就是制造快乐活动的电子游戏表达。

如果你需要回答关于本章内容的多项选择题测验,下面是关于我们所学内容的简要总结。

在本书的剩余部分,我们会忽略Unity的Scene视图中无尽3D平面的巨大影响。我们会专注于小的、简单的、有趣的游戏机制。当合上本书时,你可以采取这些简单的理念并迭代它们,甚至制作出功能齐全的游戏,如《猎户座之王》或《马里奥网球》。但是,坚持让你成功的战略——从零开始,发现非凡的趣味性,然后不断迭代,直到游戏制作完成。


相关图书

树莓派开发实战(第3版)
树莓派开发实战(第3版)
React Native移动开发实战 第3版
React Native移动开发实战 第3版
深入浅出React Native
深入浅出React Native
Flutter App开发:从入门到实战
Flutter App开发:从入门到实战
React Native移动开发实战 第2版
React Native移动开发实战 第2版
App自动化测试与框架实战
App自动化测试与框架实战

相关文章

相关课程