描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121311215
想要成为一名优秀的游戏设计师?
你需要具备丰富的设计与实践经验,并且掌握功能强大的优秀设计工具。
游戏设计之路没有捷径,幸运的是,这本书能够成为你追梦路上的良师益友。
本书特色:
Unity C#游戏开发详解,独立游戏开发的优选组合。
全面解读新游戏设计与开发概念,设计理念快速转化为数字原型。
解密8个不同类型的完整游戏原型,讲解深入,可参考价值超高。
通过代码调试、快速迭代改进游戏设计,实现优秀的“游戏平衡”与“游戏体验”。
传授如何在竞争激烈、瞬息万变的游戏行业中生存并获取成功的秘诀!
海报
第1章 像设计师一样思考 2
1.1 你是一名游戏设计师 2
1.2 Bartok:游戏练习 2
1.3 游戏的定义 7
1.4 小结 12
第2章 游戏分析框架 14
2.1 游戏学的常用框架 14
2.2 MDA:机制,动态和美学 14
2.3 规则,戏剧和动态元素 17
2.4 四元法 19
2.5 小结 21
第3章 分层四元法 22
3.1 内嵌层 22
3.2 动态层 23
3.3 文化层 24
3.4 设计师的责任 25
3.5 小结 25
第4章 内嵌层 27
4.1 内嵌机制 27
4.2 美学内嵌 31
4.3 叙事内嵌 33
4.4 技术内嵌 39
4.5 小结 40
第5章 动态层 41
5.1 玩家的角色 41
5.2 涌现 42
5.3 动态机制 42
5.4 动态美学 46
5.5 动态叙事 50
5.6 涌现叙事 51
5.7 动态技术 52
5.8 小结 52
第6章 文化层 53
6.1 游戏之外 53
6.2 文化机制 54
6.3 美学文化 55
6.4 叙事文化 55
6.5 技术文化 56
6.6 授权的跨媒体不属于文化层 57
6.7 游戏的文化影响 57
6.8 小结 58
第7章 像一个设计师一样工作 59
7.1 迭代设计 59
7.2 创新 65
7.3 头脑风暴与构思 66
7.4 改变你的想法 68
7.5 规划作品的范围大小 70
7.6 小结 71
第8章 设计目标 72
8.1 设计目标:一个不完整的清单 72
8.2 以设计为中心的目标 73
8.3 以玩家为中心的目标 75
8.4 小结 87
第9章 纸面原型 88
9.1 纸面原型的优势 88
9.2 纸面原型工具 89
9.3 一个纸面原型的例子 90
9.4 纸面原型的优点 97
9.5 纸面原型的缺点 98
9.6 小结 98
第10章 游戏测试 100
10.1 为什么要测试游戏 100
10.2 成为出色的试玩者 101
10.3 试玩者圈子 101
10.4 测试方法 103
10.5 其他重要的测试办法 108
10.6 小结 109
第11章 数学和游戏平衡 110
11.1 游戏平衡的意义 110
11.2 安装Apache OpenOffice Calc 110
11.3 用Calc检查骰子 111
11.4 概率 118
11.5 桌游中的乱数产生技术 121
11.6 加权分布 123
11.7 排列 125
11.8 正负反馈 126
11.9 使用Calc调整武器平衡 127
11.10 小结 132
第12章 谜题设计 133
12.1 谜题无处不在 133
12.2 Scott Kim与谜题设计 133
12.3 动作解谜游戏的几种类型 139
12.4 小结 140
第13章 引导玩家 142
13.1 直接指引 142
13.2 间接指引 144
13.3 介绍新技能和新概念 149
13.4 小结 151
第14章 数字游戏产业 152
14.1 关于游戏产业 152
14.2 游戏教育 155
14.3 走进行业中去 157
14.4 等不及开始做游戏了 160
14.5 小结 161
第II部分 数字原型
第15章 数字化系统中的思维 164
15.1 棋类游戏中的系统思维 164
15.2 简单命令练习 165
15.3 游戏分析:《拾苹果》(Apple Picker) 167
15.4 小结 171
第16章 Unity开发环境简介 172
16.1 下载Unity软件 172
16.2 开发环境简介 173
16.3 首次运行Unity软件 176
16.4 设置Unity的窗口布局 181
16.5 熟悉Unity界面 184
16.6 小结 185
第17章 C#编程语言简介 186
17.1 理解C#的特性 186
17.2 阅读和理解C#语法 190
17.3 小结 193
第18章 HELLO WORLD:你的首个程序 194
18.1 创建新项目 194
18.2 新建C#脚本 196
18.3 让事情更有趣 200
18.4 小结 208
第19章 变量和组件 209
19.1 变量 209
19.2 C#中的强类型变量 209
19.3 重要的C#变量类型 210
19.4 变量的作用域 213
19.5 命名惯例 213
19.6 Unity中的重要变量类型 215
19.7 Unity游戏对象和组件 220
19.8 小结 222
第20章 布尔运算和比较运算符 223
20.1 布尔值 223
20.2 比较运算符 226
20.3 条件语句 229
20.4 小结 234
第21章 循环语句 235
21.1 循环语句的种类 235
21.2 创建项目 235
21.3 while循环 236
21.4 死循环的危害 236
21.5 更实用的while循环 237
21.6 do……while循环 238
21.7 for循环 239
21.8 foreach循环 240
21.9 循环中的跳转语句 241
21.10 小结 243
第22章 List和数组 244
22.1 C#中的集合 244
22.2 List 245
22.3 数组 249
22.4 多维数组 252
22.5 交错数组 255
22.6 应该使用数组还是List 259
22.7 小结 259
第23章 函数与参数 263
23.1 创建函数示例的项目 263
23.2 函数的定义 263
23.3 函数的形式参数和实际参数 266
23.4 函数的返回值 267
23.5 使用合适的函数名称 269
23.6 什么情况下应该使用函数 269
23.7 函数重载 270
23.8 可选参数 271
23.9 params关键字 272
23.10 递归函数 273
23.11 小结 274
第24章 代码调试 276
24.1 如何开始调试 276
24.2 绑定或移除脚本时出现的错误 278
24.3 使用调试器逐语句运行代码 281
24.5 小结 287
第25章 类 289
25.1 理解类 289
25.2 创建Enemy类示例的项目 290
25.3 类的继承 295
25.4 小结 298
第26章 面向对象思维 299
26.1 面向对象的比喻 299
26.2 面向对象的Boids实现方法 301
26.3 小结 310
第27章 敏捷思维 311
27.1 敏捷软件开发宣言 311
27.2 Scrum方法论 312
27.3 小结 319
第III部分 游戏原型示例和教程
第28章 游戏原型1:《拾苹果》 322
28.1 数字化原型的目的 322
28.2 准备工作 323
28.3 开始工作:绘图资源 323
28.4 编写《拾苹果》游戏原型的代码 329
28.5 图形用户界面(GUI)和游戏管理 340
28.6 小结 346
第29章 游戏原型2:《爆破任务》 348
29.1 准备工作:原型2 348
29.2 游戏原型概念 348
29.3 绘图资源 349
29.4 编写游戏原型的代码 354
29.5 小结 380
第30章 游戏原型3:《太空射击》 382
30.1 准备工作:原型3 382
30.2 设置场景 384
30.3 创建主角飞船 385
30.4 添加敌机 397
30.5 随机生成敌机 401
30.6 设置标签、图层和物理规则 403
30.7 使敌机可以消灭主角飞船 405
30.8 重新开始游戏 409
30.9 射击 410
30.10 添加升级道具 421
30.11 解决代码中的竞态条件 428
30.12 让敌机可以掉落升级道具 430
30.13 为其他敌机编程 432
30.14 添加粒子效果和背景 444
30.15 小结 446
第31章 游戏原型4:《矿工接龙》 449
31.1 准备工作:原型4 449
31.2 项目Build设置 450
31.3 将图片导入为Sprite 451
31.4 用Sprite制作纸牌 453
31.5 《矿工接龙》游戏 469
31.6 在代码中实现《矿工接龙》游戏 471
31.7 为游戏添加得分机制 489
31.8 总结 504
第32章 游戏原型5:Bartok 505
32.1 准备工作:原型5 505
32.2 编译设置 507
32.3 Bartok编程 508
32.4 小结 536
第33章 游戏原型6:Word Game 537
33.1 准备工作:Word Game原型 537
33.2 关于Word Game 538
33.3 解析Word List 539
33.4 创建游戏 544
33.5 屏幕布局 549
33.6 添加交互 557
33.7 添加计分 561
33.8 添加动画 564
33.9 添加色彩 567
33.10 小结 569
第34章 游戏原型7:QuickSnap 571
34.1 准备工作:QuickSnap原型 571
34.2 构建场景 572
34.3 游戏编程 579
34.4 小结 598
第35章 游戏原型8:Omega Mage 600
35.1 准备工作:Omega Mage原型 600
35.2 构建场景 602
35.3 法师角色 607
35.4 鼠标交互 609
35.5 移动 613
35.6 物品栏和选择道具 618
35.7 施展火场法术 625
35.8 切换房间 634
35.9 补充敌人 638
35.10 攻击法师 646
35.11 抽象敌人接口 651
35.12 创建EnemyFactory 653
35.13 小结 657
第 IV 部分 附录
附录 A 项目创建标准流程 ………………………………………………………………………………………… 660
A.1 建立新项目 …………………………………………………………………………………………… 660
A.2 场景编码就绪 ……………………………………………………………………………………….. 662
附录 B 实用概念 ………………………………………………………………………………………………………. 665
B.1 C#和 Unity 代码概念 …………………………………………………………………………….. 665
B.2 数学概念 ………………………………………………………………………………………………. 684
B.3 插值 ……………………………………………………………………………………………………… 693
B.4 角色扮演游戏 ……………………………………………………………………………………….. 706
B.5 用户接口概念 ……………………………………………………………………………………….. 707
欢迎阅读本书。笔者有多年游戏设计方面的经验,并在多所大学担任过游戏设计课程的教授,其中包括南加州大学的互动媒体和游戏专业、密歇根大学安娜堡分校的电气工程与计算机科学专业等,本书便是基于本人多年的专业经验编写而成的。
本前言主要介绍本书写作的目的、内容以及本书的使用方法。
本书的写作目的
本书的写作目的非常明确:提供读者成为成功游戏设计师和原型设计师所需要的工具和知识,我尽可能地将所有的相关技能和知识都纳入了本书。与其他教程类的书籍不同的是,本书结合了游戏设计的原则与数字开发(也就是计算机编程)内容,并将两者融入互动原型中。随着性能先进同时又简便易用的游戏开发引擎的出现(比如Unity),原型构建正变得前所未有的简单。而且,学会原型开发也有助于你成为一名更优秀的游戏设计师。
第Ⅰ部分:游戏设计和纸面原型
本书的第Ⅰ部分介绍了游戏设计的不同理论和分析框架,这些内容在早年出版的一些书籍里均有涉及。本部分介绍了一种将这些理论结合并拓展延伸的方法——四元分层法。四元分层法探究了与互动体验设计相关的决策内容。本部分同时含纳了不同游戏设计原则的挑战难度,阐述了纸面原型的设计过程、游戏测试和迭代设计。这些具体的信息和知识将有助于读者成为合格的设计师。
第Ⅱ部分:数字原型
本书的第Ⅱ部分介绍了编程的内容。该部分的编写基于我作为教授多年为零基础的学生授课的经验,我在课堂上也使用这些内容教导学生如何利用数字编程表达自己游戏设计的理念。如果你此前没有学过任何编程或开发的相关知识,也没有任何经验的话,那么本书第Ⅱ部分的内容就是为你量身定做的。如果你此前有过一定的编程经验的话,那么你也可以学到几个编程的小窍门,了解到一些不同的编程方法。
第Ⅲ部分:游戏原型实例和教程
本书的第Ⅲ部分围绕多种迥异的原型教程展开,你能学习到不同类型游戏的开发方法。该部分内容的主要目的是:通过展示不同类型游戏的开发方式,借此展现开发游戏原型的最佳办法,并且这些知识将为你将来的工作打下良好的基础。市场上其他图书的教程多数只介绍一种类型的教程,篇幅长达上百页。相比之下,本书的教程种类繁多,短小精悍。虽然没有那些书籍的单个教程内容详尽,但是我认为学习不同类型的教程更有助于读者将来自己准备项目开发。
第Ⅳ部分:附录
本书包含了一些很重要的附录内容,值得在这里提一下。我将书中多次提及的信息,以及我认为读者阅读后有可能想要再次查阅的内容放在了附录内,因此本书的附录并不是通篇重复的内容,也不需要读者翻阅不同章节寻找。附录A是运用Unity创建游戏项目的步骤。附录B“有用的概念”是篇幅最长的附录,虽然该附录的名字十分平庸,但是我认为你以后会经常来查阅这部分的知识。“有用的概念”里集合了我个人在游戏原型开发上经常使用的技术和策略。附录C囊括了所有有用的网站参考链接。在互联网上想要找到自己需要的信息总是很难,本附录列出的网站则是我经常使用的。
数字原型:Unity
本书提到的所有数字游戏实例均基于游戏引擎Unity 和C#语言。我在讲授数字游戏开发和互动体验课程上有十多年的经验,在我看来,目前为止Unity是学习游戏开发的最佳工具,C#语言则最适合原型设计师学习。虽然现在也有一些开发工具不需要使用者具备任何编程技术(比如Game Maker和Game Salad),但是Unity的资源包更灵活多变,并且基本上都是免费的(Unity的免费版本包含付费版本的大多数内容,本书通篇用到的Unity也都是免费版本的)。如果你真的想学习游戏编程,那么Unity是你的最佳选择。
同样,有一些编程语言要比C#语言更容易使用。过去我教过学生ActionScript和 JavaScript,但这么长时间以来C#的灵活性和强大的功能一直让我印象深刻。学习C#不仅是学习简单的编程,更是学习编程的方法。JavaScript对使用者在编程时的严谨性要求不高,可我发现这实际上会减慢开发的速度。C#在这方面则要严格得多(通过强类型变量等内容),这不仅有助于使用者成为更出色的程序员,同时也会提升编程速度(比如强类型提供代码自动完成的提示,让使用者更快速、准确的编程)。
本书面向的受众群体
市面上有很多关于游戏设计书籍,也有很多关于编程的图书。本书的宗旨就是填补游戏设计和编程之间的缺口,将两者联系起来。随着像Unity的游戏开发技术趋于成熟,游戏设计师把自己的想法转换为数字原型就变得极为重要。本书能帮助你:
如果你有兴趣致力于游戏设计领域,但是从未学过编程,那么本书是你的最佳选择。第Ⅰ部分介绍了几种不同的游戏设计理论,以及探索设计理念的办法。第Ⅱ部分教授零基础读者学习编程,了解面向对象的类体系。自从我担任大学教授以来,我的课程主要都是教授没有编程学习背景的学生学习游戏编程。我将自己的所有教学经验提炼浓缩至第Ⅱ部分内容中。第Ⅲ部分阐述了不同游戏类型的八种游戏原型开发方法。每一种方法都能快速地把概念转变成数字原型。第Ⅳ部分的附录列举了游戏开发和编程的概念,提供了扩展学习的资源。附录B“有用的概念”里有很多深入探究的内容,接下来的很多年里你也会经常用到这部分内容。
如果你有过编程经验,同时对游戏设计感兴趣,那么本书的第Ⅰ部分和第Ⅲ部分对你最有用。第Ⅰ部分介绍了不同的游戏设计理论和探索设计理念的办法。第二部分介绍了C#语言,以及如何在Unity环境中运用C#,你可以跳过这部分内容。如果你熟悉其他编程语言,那么你就会发现C#和C 很相似,同时带有Java的一些高级功能。第Ⅲ部分阐述了不同游戏类型的八种游戏原型开发方法。用Unity开发游戏和用其他游戏引擎开发截然不同,因为许多元素都是在编程外进行设计的。本书中举出的每一种原型实例都最适合用在Unity上,并且开发速度都很快。你也应该仔细阅读附录B,该附录含纳了不同开发概念的详细信息和内容,值得你翻阅查看。
译者序
让我直截了当地告诉你,你是否需要这本书,以及为什么需要它吧。
在你手中的这本书,前半部分为关于游戏的理论框架和实用技巧,后半部分为 Unity开发实践。本书作者的思路根植于当今欧美游戏教学的主流体系,并且更注重实践。如果你与作者一样,把游戏看作一门手艺,或者看成一门武功,那么前者是内功心经,后者则是武学招式。至于学游戏的最好途径,很多游戏设计书中都提过要亲手做游戏,这恰恰是体现本书价值的地方。
如果你已经是一名富有经验的游戏设计师,本书有些入门,也许会与你已有的经验相悖,难以接受。但是如果你对游戏开发有兴趣,刚要入门或者打算入门,我可以说这本书是绝好的入口,其不仅手把手带你走过“万事开头难”的部分,还能防止你误入歧途。
游戏制作称得上是这世界上最复杂的事情之一,当你站在它的门口手足无措时,本书可以从理论和实践两方面帮你打下牢固的基础。就像做音乐的要用小样展示自己的水平,设计师也需要通过游戏原型表达自己的想法。而本书明智地采用了 Unity,是目前在专业性和易上手之间极其平衡的选择。
以本书为基础,你可以继续在游戏理论框架里深入探索各个细分领域,或者试试其他游戏引擎和编程语言,找到自己心仪的那一款,甚至爱上编程,最后以程序员的身份步入游戏开发这条路。总而言之,你可以把本书看作游戏设计师的自我修养,或是进入游戏行业的敲门砖。
参与本书翻译工作的有:刘晓晗、刘思嘉、文静、张一淼、王薇、张一鸣、姚待艳、杨如利、龙成、李嘉明、夏骏、姚守理、李毅、姚居济、王德贞。由于水平有限,疏漏之处在所难免,还请广大读者和专家指正。
最后,作为行业中的一员,我很欣慰地看到国内的游戏业就要结束野蛮生长,进入以质取胜的阶段。学习欧美同行这些年“真金白银”的积累,在我看来是在这条路上需要踏出的第一步。
刘思嘉
2017年 3月
序
我认为尽管游戏设计师和教师的外在不尽相同,但其内在是一样的,许多优秀游戏设计师拥有的技能,优秀教师也具备。你可能遇到过这样的教师,用谜题和故事让全班同学着迷;或是展示一些容易入门,但又难以精通的技能;或在不知不觉中巧妙地梳理你脑中零散的信息碎片,直到有一天可以在旁边看着你做出自己都意想不到的杰作。
我们电子游戏设计师花费大量的时间教人们玩游戏的技巧,还要让他们乐在其中。不过我们并不想让人感觉是在教他们,通常最好的游戏教学看起来像是惊奇冒险的开始。我曾有幸在屡获殊荣的顽皮狗( Naughty Dog)工作室工作了八年,以主 /副设计师的身份参与制作了《神秘海域》(Uncharted)系列的三部 PS3游戏。工作室的所有人都非常喜欢《神秘海域 2:纵横四海》(Uncharted 2: Among Thieves)的开场。在玩家精神紧绷的同时,有效地教会了他们游戏的基础操作,当时我们的主角内森·德雷克正在悬崖边摇摇欲坠的火车上命悬一线。
游戏设计师在创造虚拟冒险时不断重复这个过程。比如开发类似《神秘海域》系列之类的续作游戏时,设计师要格外留意玩家刚刚学会的内容。需要以好玩的方式呈现出来,让玩家能将新技巧派上用场,同时又不会难度过高,还要足够有挑战性,能让他们全神贯注。通过游戏场景、人物和物体的描绘、游戏发出的声音和游戏进行交互操作,让纯粹的新玩家做这些事情,难度可想而知。
现在我作为一名教授在大学里讲授游戏设计,真切体会到了许多游戏设计技巧对我的教学非常有帮助。另外,我还发现,教学就像设计游戏一样让人满足。所以毫不意外的,我发现本书的作者 Jeremy Gibson也在游戏设计和教学方面都有天赋,不久你就会发现。
大约在十年前,我在南加州的年度游戏开发者大会上与 Jeremy相识,并一见如故。在游戏开发方面已经颇有建树的他,因为对游戏设计的热爱与我一拍即合。如你将在书中所见,他喜欢把游戏设计当作一门手艺、一种设计实践和新兴艺术。随后 Jeremy回到了卡内基梅隆大学出色的娱乐科技中心继续研究生课程,师从 Randy Pausch博士和 Jesse Schell等梦想家。数年来,Jeremy一直和我保持联系。最终,我得知其成为 USC的游戏分部——电影艺术学院互动媒体游戏部的一名教授,也是我现在任教的地方。
事实上,他在 USC任教的时候,我作为他的学生得以深入地了解他。为了取得在 USC游戏创新实验室进行研究的必要技能,我上了 Jeremy的一门课程,他让我从一个只有编程基础的 Unity新手成为熟练的 C#程序员,得以充分利用 Unity——世界上最强大、易用和广泛适应性的游戏引擎之一。Jeremy的每节课程不仅有 C#和 Unity的内容,还有游戏设计和开发方面的真知灼见,从构思创意、时间管理和任务优先级,到游戏设计师利用电子表格优化游戏。修完 Jeremy的课程后我甚至希望能再来一次,我知道还能从中学到很多。
所以,听到 Jeremy在写这本书时我非常高兴,当我真正读到这本书时更是喜出望外。好消息是,Jeremy已经将所有你我想了解的内容都写在了书中。我从游戏业中的优秀游戏设计、制作和开发范例中学到了许多,并且很开心地告诉你,Jeremy已经将这些最有用的制作游戏方法汇总在了这本书中。你会读到手把手的教程及代码范例,并帮助你成为更优秀的游戏设计师和开发者。虽然书中的练习有点复杂——游戏设计难度非常之高,不过 Jeremy会在一旁用浅显易懂的语言一路指引着你。
你还会在书中读到游戏历史和理论。 Jeremy不仅对游戏设计颇有研究,而且博览群书。在本书的第Ⅰ部分,你会读到他对最先进的游戏设计方法广泛深刻的分析,并且还有他从游戏设计经验中总结出的心得体会。Jeremy借助人类历史上与游戏相关的逸闻轶事支持自己的理论。他不断地让你质问自己对游戏的理解,超越主机、手柄、屏幕和音响,催生出新一代的游戏创新者。
Jeremy Gibson已离开了 USC,现任教于密歇根大学安娜堡分校。我为密歇根大学的同学们感到庆幸,他们能够在他的引领下对游戏设计进行新的诠释。那一年春天,当 Jeremy参加 USC游戏专业举办的年度 GDC校友晚宴时,满屋同学们的惊呼声变成了热烈的掌声。Jeremy Gibson为人师表的成绩可见一斑。多亏了这本书,你也有幸成为他的学生之一。
游戏设计和开发的世界瞬息万变。我全身心地爱着独一无二的它,你可以成为这个奇妙世界的一员。借助在本书中学到的知识,你可以开发各种新颖的游戏原型,也许能创立全新的游戏类型、表现风格、细分市场。全世界游戏设计的明日之星,正在家中或学校学习设计和编程。如果你好好利用这本书,跟随这里的建议并且多做练习,也许创造下一个经典游戏的就是你。
祝你好运,玩得开心!
Richard Lemarchand
USC游戏专业副教授
评论
还没有评论。