游戲設(shè)計、原型制作、開發(fā),這三方面的技術(shù)整合到一本書中,是很多專業(yè)游戲開發(fā)者的福音。這本書完全集成了游戲設(shè)計和計算機編程方面有價值的關(guān)鍵內(nèi)容。作為跨平臺的游戲開發(fā)的頂級游戲引擎,Unity可用于開發(fā)一個支持Windows,OS X和Linux的應(yīng)用程序,適用于網(wǎng)頁和所有最流行的移動平臺。而C則是一個優(yōu)秀的編程環(huán)境,是專業(yè)游戲開發(fā)者強大的工具。如果你想掌握有關(guān)游戲開發(fā)與制作的高端技能,你需要具備很強的開發(fā)技能和豐富的實踐經(jīng)驗,沒有捷徑,但是,這本書可以幫助你實現(xiàn)愿望。
歡迎閱讀本書。筆者有多年游戲設(shè)計方面的經(jīng)驗,并在多所大學擔任過游戲設(shè)計課程的教授,其中包括南加州大學的互動媒體和游戲?qū)I(yè)、密歇根大學安娜堡分校的電氣工程與計算機科學專業(yè)等,本書便是基于本人多年的專業(yè)經(jīng)驗編寫而成的。
本前言主要介紹本書寫作的目的、內(nèi)容以及本書的使用方法。
本書的寫作目的
本書的寫作目的非常明確:提供讀者成為成功游戲設(shè)計師和原型設(shè)計師所需要的工具和知識,我盡可能地將所有的相關(guān)技能和知識都納入了本書。與其他教程類的書籍不同的是,本書結(jié)合了游戲設(shè)計的原則與數(shù)字開發(fā)(也就是計算機編程)內(nèi)容,并將兩者融入互動原型中。隨著性能先進同時又簡便易用的游戲開發(fā)引擎的出現(xiàn)(比如Unity),原型構(gòu)建正變得前所未有的簡單。而且,學會原型開發(fā)也有助于你成為一名更優(yōu)秀的游戲設(shè)計師。
第Ⅰ部分:游戲設(shè)計和紙面原型
本書的第Ⅰ部分介紹了游戲設(shè)計的不同理論和分析框架,這些內(nèi)容在早年出版的一些書籍里均有涉及。本部分介紹了一種將這些理論結(jié)合并拓展延伸的方法——四元分層法。四元分層法探究了與互動體驗設(shè)計相關(guān)的決策內(nèi)容。本部分同時含納了不同游戲設(shè)計原則的挑戰(zhàn)難度,闡述了紙面原型的設(shè)計過程、游戲測試和迭代設(shè)計。這些具體的信息和知識將有助于讀者成為合格的設(shè)計師。
第Ⅱ部分:數(shù)字原型
本書的第Ⅱ部分介紹了編程的內(nèi)容。該部分的編寫基于我作為教授多年為零基礎(chǔ)的學生授課的經(jīng)驗,我在課堂上也使用這些內(nèi)容教導學生如何利用數(shù)字編程表達自己游戲設(shè)計的理念。如果你此前沒有學過任何編程或開發(fā)的相關(guān)知識,也沒有任何經(jīng)驗的話,那么本書第Ⅱ部分的內(nèi)容就是為你量身定做的。如果你此前有過一定的編程經(jīng)驗的話,那么你也可以學到幾個編程的小竅門,了解到一些不同的編程方法。
第Ⅲ部分:游戲原型實例和教程
本書的第Ⅲ部分圍繞多種迥異的原型教程展開,你能學習到不同類型游戲的開發(fā)方法。該部分內(nèi)容的主要目的是:通過展示不同類型游戲的開發(fā)方式,借此展現(xiàn)開發(fā)游戲原型的最佳辦法,并且這些知識將為你將來的工作打下良好的基礎(chǔ)。市場上其他圖書的教程多數(shù)只介紹一種類型的教程,篇幅長達上百頁。相比之下,本書的教程種類繁多,短小精悍。雖然沒有那些書籍的單個教程內(nèi)容詳盡,但是我認為學習不同類型的教程更有助于讀者將來自己準備項目開發(fā)。
第Ⅳ部分:附錄
本書包含了一些很重要的附錄內(nèi)容,值得在這里提一下。我將書中多次提及的信息,以及我認為讀者閱讀后有可能想要再次查閱的內(nèi)容放在了附錄內(nèi),因此本書的附錄并不是通篇重復的內(nèi)容,也不需要讀者翻閱不同章節(jié)尋找。附錄A是運用Unity創(chuàng)建游戲項目的步驟。附錄B“有用的概念”是篇幅最長的附錄,雖然該附錄的名字十分平庸,但是我認為你以后會經(jīng)常來查閱這部分的知識。“有用的概念”里集合了我個人在游戲原型開發(fā)上經(jīng)常使用的技術(shù)和策略。附錄C囊括了所有有用的網(wǎng)站參考鏈接。在互聯(lián)網(wǎng)上想要找到自己需要的信息總是很難,本附錄列出的網(wǎng)站則是我經(jīng)常使用的。
數(shù)字原型:Unity
本書提到的所有數(shù)字游戲?qū)嵗谟螒蛞鎁nity和C#語言。我在講授數(shù)字游戲開發(fā)和互動體驗課程上有十多年的經(jīng)驗,在我看來,目前為止Unity是學習游戲開發(fā)的最佳工具,C#語言則最適合原型設(shè)計師學習。雖然現(xiàn)在也有一些開發(fā)工具不需要使用者具備任何編程技術(shù)(比如GameMaker和GameSalad),但是Unity的資源包更靈活多變,并且基本上都是免費的(Unity的免費版本包含付費版本的大多數(shù)內(nèi)容,本書通篇用到的Unity也都是免費版本的)。如果你真的想學習游戲編程,那么Unity是你的最佳選擇。
同樣,有一些編程語言要比C#語言更容易使用。過去我教過學生ActionScript和JavaScript,但這么長時間以來C#的靈活性和強大的功能一直讓我印象深刻。學習C#不僅是學習簡單的編程,更是學習編程的方法。JavaScript對使用者在編程時的嚴謹性要求不高,可我發(fā)現(xiàn)這實際上會減慢開發(fā)的速度。C#在這方面則要嚴格得多(通過強類型變量等內(nèi)容),這不僅有助于使用者成為更出色的程序員,同時也會提升編程速度(比如強類型提供代碼自動完成的提示,讓使用者更快速、準確的編程)。
本書面向的受眾群體
市面上有很多關(guān)于游戲設(shè)計書籍,也有很多關(guān)于編程的圖書。本書的宗旨就是填補游戲設(shè)計和編程之間的缺口,將兩者聯(lián)系起來。隨著像Unity的游戲開發(fā)技術(shù)趨于成熟,游戲設(shè)計師把自己的想法轉(zhuǎn)換為數(shù)字原型就變得極為重要。本書能幫助你:
如果你有興趣致力于游戲設(shè)計領(lǐng)域,但是從未學過編程,那么本書是你的最佳選擇。第Ⅰ部分介紹了幾種不同的游戲設(shè)計理論,以及探索設(shè)計理念的辦法。第Ⅱ部分教授零基礎(chǔ)讀者學習編程,了解面向?qū)ο蟮念愺w系。自從我擔任大學教授以來,我的課程主要都是教授沒有編程學習背景的學生學習游戲編程。我將自己的所有教學經(jīng)驗提煉濃縮至第Ⅱ部分內(nèi)容中。第Ⅲ部分闡述了不同游戲類型的八種游戲原型開發(fā)方法。每一種方法都能快速地把概念轉(zhuǎn)變成數(shù)字原型。第Ⅳ部分的附錄列舉了游戲開發(fā)和編程的概念,提供了擴展學習的資源。附錄B“有用的概念”里有很多深入探究的內(nèi)容,接下來的很多年里你也會經(jīng)常用到這部分內(nèi)容。
如果你有過編程經(jīng)驗,同時對游戲設(shè)計感興趣,那么本書的第Ⅰ部分和第Ⅲ部分對你最有用。第Ⅰ部分介紹了不同的游戲設(shè)計理論和探索設(shè)計理念的辦法。第二部分介紹了C#語言,以及如何在Unity環(huán)境中運用C#,你可以跳過這部分內(nèi)容。如果你熟悉其他編程語言,那么你就會發(fā)現(xiàn)C#和C++很相似,同時帶有Java的一些高級功能。第Ⅲ部分闡述了不同游戲類型的八種游戲原型開發(fā)方法。用Unity開發(fā)游戲和用其他游戲引擎開發(fā)截然不同,因為許多元素都是在編程外進行設(shè)計的。本書中舉出的每一種原型實例都最適合用在Unity上,并且開發(fā)速度都很快。你也應(yīng)該仔細閱讀附錄B,該附錄含納了不同開發(fā)概念的詳細信息和內(nèi)容,值得你翻閱查看。
Jeremy Gibson在密歇根大學安娜堡分校的電氣工程與計算機科學專業(yè)任教,講授計算機游戲設(shè)計課程,同時也是 ExNinja Interactive有限責任公司的創(chuàng)始人之一。 2009年至 2013年間,擔任南加州大學電影藝術(shù)學院的互動媒體及游戲?qū)I(yè)的助理教授,講授游戲設(shè)計和原型開發(fā)課程。在他任職期間,該學院的游戲設(shè)計課程在北美地區(qū)首屈一指。Jeremy同時擔任 IndieCade獨立游戲展會的教育和發(fā)展主席,負責 IndieX-change和 GameU峰會。自 2009年開始,每年在游戲開發(fā)者大會上發(fā)表演講。
Jeremy于 1999年取得了得克薩斯大學奧斯汀分校的廣播、電視、電影專業(yè)的理學學士學位,于 2007年取得了卡內(nèi)基梅隆大學娛樂技術(shù)專業(yè)的碩士學位。 Jeremy曾在 Human Code和 frog design公司擔任程序員和原型設(shè)計師,曾在 Great Northern Way Campus(溫哥華,BC)、得克薩斯州立大學、匹茲堡藝術(shù)學院、奧斯汀社區(qū)學院、得克薩斯大學奧斯汀分校任教,并曾在迪士尼、Maxis、Electronic Arts和 Pogo.com等公司任職。在攻讀研究生期間,Jeremy的團隊開發(fā)了游戲產(chǎn)品 Skyrates,榮獲 2008年獨立游戲峰會的 Silver Gleemax獎項。同時 Jeremy也是*一位在哥斯達黎加講授游戲設(shè)計課程的教授。
第I部分 游戲設(shè)計和紙質(zhì)原型
第1章 像設(shè)計師一樣思考 2
1.1 你是一名游戲設(shè)計師 2
1.2 Bartok:游戲練習 2
1.3 游戲的定義 7
1.4 小結(jié) 12
第2章 游戲分析框架 14
2.1 游戲?qū)W的常用框架 14
2.2 MDA:機制,動態(tài)和美學 14
2.3 規(guī)則,戲劇和動態(tài)元素 17
2.4 四元法 19
2.5 小結(jié) 21
第3章 分層四元法 22
3.1 內(nèi)嵌層 22
3.2 動態(tài)層 23
3.3 文化層 24
3.4 設(shè)計師的責任 25
3.5 小結(jié) 25
第4章 內(nèi)嵌層 27
4.1 內(nèi)嵌機制 27
4.2 美學內(nèi)嵌 31
4.3 敘事內(nèi)嵌 33
4.4 技術(shù)內(nèi)嵌 39
4.5 小結(jié) 40
第5章 動態(tài)層 41
5.1 玩家的角色 41
5.2 涌現(xiàn) 42
5.3 動態(tài)機制 42
5.4 動態(tài)美學 46
5.5 動態(tài)敘事 50
5.6 涌現(xiàn)敘事 51
5.7 動態(tài)技術(shù) 52
5.8 小結(jié) 52
第6章 文化層 53
6.1 游戲之外 53
6.2 文化機制 54
6.3 美學文化 55
6.4 敘事文化 55
6.5 技術(shù)文化 56
6.6 授權(quán)的跨媒體不屬于文化層 57
6.7 游戲的文化影響 57
6.8 小結(jié) 58
第7章 像一個設(shè)計師一樣工作 59
7.1 迭代設(shè)計 59
7.2 創(chuàng)新 65
7.3 頭腦風暴與構(gòu)思 66
7.4 改變你的想法 68
7.5 規(guī)劃作品的范圍大小 70
7.6 小結(jié) 71
第8章 設(shè)計目標 72
8.1 設(shè)計目標:一個不完整的清單 72
8.2 以設(shè)計為中心的目標 73
8.3 以玩家為中心的目標 75
8.4 小結(jié) 87
第9章 紙面原型 88
9.1 紙面原型的優(yōu)勢 88
9.2 紙面原型工具 89
9.3 一個紙面原型的例子 90
9.4 紙面原型的優(yōu)點 97
9.5 紙面原型的缺點 98
9.6 小結(jié) 98
第10章 游戲測試 100
10.1 為什么要測試游戲 100
10.2 成為出色的試玩者 101
10.3 試玩者圈子 101
10.4 測試方法 103
10.5 其他重要的測試辦法 108
10.6 小結(jié) 109
第11章 數(shù)學和游戲平衡 110
11.1 游戲平衡的意義 110
11.2 安裝Apache OpenOffice Calc 110
11.3 用Calc檢查骰子 111
11.4 概率 118
11.5 桌游中的亂數(shù)產(chǎn)生技術(shù) 121
11.6 加權(quán)分布 123
11.7 排列 125
11.8 正負反饋 126
11.9 使用Calc調(diào)整武器平衡 127
11.10 小結(jié) 132
第12章 謎題設(shè)計 133
12.1 謎題無處不在 133
12.2 Scott Kim與謎題設(shè)計 133
12.3 動作解謎游戲的幾種類型 139
12.4 小結(jié) 140
第13章 引導玩家 142
13.1 直接指引 142
13.2 間接指引 144
13.3 介紹新技能和新概念 149
13.4 小結(jié) 151
第14章 數(shù)字游戲產(chǎn)業(yè) 152
14.1 關(guān)于游戲產(chǎn)業(yè) 152
14.2 游戲教育 155
14.3 走進行業(yè)中去 157
14.4 等不及開始做游戲了 160
14.5 小結(jié) 161
第II部分 數(shù)字原型
第15章 數(shù)字化系統(tǒng)中的思維 164
15.1 棋類游戲中的系統(tǒng)思維 164
15.2 簡單命令練習 165
15.3 游戲分析:《拾蘋果》(Apple Picker) 167
15.4 小結(jié) 171
第16章 Unity開發(fā)環(huán)境簡介 172
16.1 下載Unity軟件 172
16.2 開發(fā)環(huán)境簡介 173
16.3 首次運行Unity軟件 176
16.4 設(shè)置Unity的窗口布局 181
16.5 熟悉Unity界面 184
16.6 小結(jié) 185
第17章 C#編程語言簡介 186
17.1 理解C#的特性 186
17.2 閱讀和理解C#語法 190
17.3 小結(jié) 193
第18章 HELLO WORLD:你的首個程序 194
18.1 創(chuàng)建新項目 194
18.2 新建C#腳本 196
18.3 讓事情更有趣 200
18.4 小結(jié) 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游戲?qū)ο蠛徒M件 220
19.8 小結(jié) 222
第20章 布爾運算和比較運算符 223
20.1 布爾值 223
20.2 比較運算符 226
20.3 條件語句 229
20.4 小結(jié) 234
第21章 循環(huán)語句 235
21.1 循環(huán)語句的種類 235
21.2 創(chuàng)建項目 235
21.3 while循環(huán) 236
21.4 死循環(huán)的危害 236
21.5 更實用的while循環(huán) 237
21.6 do……while循環(huán) 238
21.7 for循環(huán) 239
21.8 foreach循環(huán) 240
21.9 循環(huán)中的跳轉(zhuǎn)語句 241
21.10 小結(jié) 243
第22章 List和數(shù)組 244
22.1 C#中的集合 244
22.2 List 245
22.3 數(shù)組 249
22.4 多維數(shù)組 252
22.5 交錯數(shù)組 255
22.6 應(yīng)該使用數(shù)組還是List 259
22.7 小結(jié) 259
第23章 函數(shù)與參數(shù) 263
23.1 創(chuàng)建函數(shù)示例的項目 263
23.2 函數(shù)的定義 263
23.3 函數(shù)的形式參數(shù)和實際參數(shù) 266
23.4 函數(shù)的返回值 267
23.5 使用合適的函數(shù)名稱 269
23.6 什么情況下應(yīng)該使用函數(shù) 269
23.7 函數(shù)重載 270
23.8 可選參數(shù) 271
23.9 params關(guān)鍵字 272
23.10 遞歸函數(shù) 273
23.11 小結(jié) 274
第24章 代碼調(diào)試 276
24.1 如何開始調(diào)試 276
24.2 綁定或移除腳本時出現(xiàn)的錯誤 278
24.3 使用調(diào)試器逐語句運行代碼 281
24.5 小結(jié) 287
第25章 類 289
25.1 理解類 289
25.2 創(chuàng)建Enemy類示例的項目 290
25.3 類的繼承 295
25.4 小結(jié) 298
第26章 面向?qū)ο笏季S 299
26.1 面向?qū)ο蟮谋扔?299
26.2 面向?qū)ο蟮腂oids實現(xiàn)方法 301
26.3 小結(jié) 310
第27章 敏捷思維 311
27.1 敏捷軟件開發(fā)宣言 311
27.2 Scrum方法論 312
27.3 小結(jié) 319
第III部分 游戲原型示例和教程
第28章 游戲原型1:《拾蘋果》 322
28.1 數(shù)字化原型的目的 322
28.2 準備工作 323
28.3 開始工作:繪圖資源 323
28.4 編寫《拾蘋果》游戲原型的代碼 329
28.5 圖形用戶界面(GUI)和游戲管理 340
28.6 小結(jié) 346
第29章 游戲原型2:《爆破任務(wù)》 348
29.1 準備工作:原型2 348
29.2 游戲原型概念 348
29.3 繪圖資源 349
29.4 編寫游戲原型的代碼 354
29.5 小結(jié) 380
第30章 游戲原型3:《太空射擊》 382
30.1 準備工作:原型3 382
30.2 設(shè)置場景 384
30.3 創(chuàng)建主角飛船 385
30.4 添加敵機 397
30.5 隨機生成敵機 401
30.6 設(shè)置標簽、圖層和物理規(guī)則 403
30.7 使敵機可以消滅主角飛船 405
30.8 重新開始游戲 409
30.9 射擊 410
30.10 添加升級道具 421
30.11 解決代碼中的競態(tài)條件 428
30.12 讓敵機可以掉落升級道具 430
30.13 為其他敵機編程 432
30.14 添加粒子效果和背景 444
30.15 小結(jié) 446
第31章 游戲原型4:《礦工接龍》 449
31.1 準備工作:原型4 449
31.2 項目Build設(shè)置 450
31.3 將圖片導入為Sprite 451
31.4 用Sprite制作紙牌 453
31.5 《礦工接龍》游戲 469
31.6 在代碼中實現(xiàn)《礦工接龍》游戲 471
31.7 為游戲添加得分機制 489
31.8 總結(jié) 504
第32章 游戲原型5:Bartok 505
32.1 準備工作:原型5 505
32.2 編譯設(shè)置 507
32.3 Bartok編程 508
32.4 小結(jié) 536
第33章 游戲原型6:Word Game 537
33.1 準備工作:Word Game原型 537
33.2 關(guān)于Word Game 538
33.3 解析Word List 539
33.4 創(chuàng)建游戲 544
33.5 屏幕布局 549
33.6 添加交互 557
33.7 添加計分 561
33.8 添加動畫 564
33.9 添加色彩 567
33.10 小結(jié) 569
第34章 游戲原型7:QuickSnap 571
34.1 準備工作:QuickSnap原型 571
34.2 構(gòu)建場景 572
34.3 游戲編程 579
34.4 小結(jié) 598
第35章 游戲原型8:Omega Mage 600
35.1 準備工作:Omega Mage原型 600
35.2 構(gòu)建場景 602
35.3 法師角色 607
35.4 鼠標交互 609
35.5 移動 613
35.6 物品欄和選擇道具 618
35.7 施展火場法術(shù) 625
35.8 切換房間 634
35.9 補充敵人 638
35.10 攻擊法師 646
35.11 抽象敵人接口 651
35.12 創(chuàng)建EnemyFactory 653
35.13 小結(jié) 657
第 IV 部分 附錄
附錄 A 項目創(chuàng)建標準流程 660
A.1 建立新項目 660
A.2 場景編碼就緒 662
附錄 B 實用概念 665
B.1 C#和 Unity 代碼概念 665
B.2 數(shù)學概念 684
B.3 插值 693
B.4 角色扮演游戲 706
B.5 用戶接口概念 707