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