游戲開(kāi)發(fā) 世嘉新人培訓(xùn)教材
定 價(jià):198 元
- 作者:[日]平山尚
- 出版時(shí)間:2020/4/1
- ISBN:9787115525758
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.5
- 頁(yè)碼:676
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
《游戲開(kāi)發(fā):世嘉新人培訓(xùn)教材》全面介紹了游戲開(kāi)發(fā)人員需要掌握的相關(guān)技術(shù)知識(shí)。內(nèi)容由淺入深,從命令行游戲開(kāi)發(fā)講起,然后介紹如何開(kāi)發(fā)簡(jiǎn)單的2D游戲,最后介紹如何開(kāi)發(fā)出一個(gè)包含模型和動(dòng)畫的3D游戲,涵蓋了計(jì)算機(jī)圖形學(xué)(3DCG、2DCG、字體、光照、動(dòng)畫)、計(jì)算機(jī)運(yùn)算(碰撞處理、計(jì)算誤差)、編程(模塊化、bug預(yù)防、性能優(yōu)化)、游戲處理(狀態(tài)遷移、實(shí)時(shí)處理、加載)和聲音處理等知識(shí)。
1.專業(yè)經(jīng)典
本書(shū)由世嘉一線開(kāi)發(fā)者執(zhí)筆,并被選為世嘉新人培訓(xùn)教材,榮獲游戲開(kāi)發(fā)者奧斯卡CEDEC AWARDS 2009著作獎(jiǎng)。
2.系統(tǒng)全面
全方位介紹游戲開(kāi)發(fā)者必須掌握的基礎(chǔ)技術(shù),包括游戲編程、數(shù)學(xué)和物理等,內(nèi)容充實(shí),幫助讀者建立起一套扎實(shí)的知識(shí)體系。
3.實(shí)踐導(dǎo)向
不借助任何引擎,從簡(jiǎn)單的命令行游戲開(kāi)發(fā)講起,到2D游戲開(kāi)發(fā),最終帶領(lǐng)讀者開(kāi)發(fā)出一個(gè)3D游戲,并在此過(guò)程中介紹游戲開(kāi)發(fā)中會(huì)遇到的各種問(wèn)題及解決方案,實(shí)踐性強(qiáng)。讀者可下載隨書(shū)附帶的源碼,邊做邊學(xué)。
4.拒絕枯燥
采用口語(yǔ)化的行文方式,以設(shè)計(jì)思路為切入點(diǎn)進(jìn)行講解,每一步都有明確的邏輯依據(jù),讓讀者在知道“怎么做”的同時(shí),明白“為什么”這么做。
平山尚(作者)
1977年生于日本北海道,曾在京都大學(xué)研究生院工學(xué)研究科進(jìn)行基因研究,畢業(yè)后進(jìn)入世嘉株式會(huì)社,參與了《電腦戰(zhàn)機(jī)》(PS2)、《超級(jí)網(wǎng)球大獎(jiǎng)賽3》(AC、PS3)的開(kāi)發(fā)。著有《我的第一本編程書(shū)》。
羅水東(譯者)
游戲開(kāi)發(fā)工程師,15年軟件和游戲開(kāi)發(fā)經(jīng)驗(yàn)。熱愛(ài)技術(shù),樂(lè)于分享心得。目前主要關(guān)注的領(lǐng)域?yàn)?D休閑游戲開(kāi)發(fā)和底層引擎技術(shù)。
第 1部分 2D 游戲.1
第 1章 第 一個(gè)游戲2
1.1 開(kāi)發(fā)一個(gè)益智游戲 .3
1.2 示例代碼解說(shuō) 7
1.3 添加讀取場(chǎng)景數(shù)據(jù)的功能 16
1.4 C++ 課堂 21
1.5 補(bǔ)充內(nèi)容:標(biāo)志位和位運(yùn)算26
1.6 補(bǔ)充內(nèi)容:指針和內(nèi)存 34
1.7 補(bǔ)充內(nèi)容:引用 41
1.8 本章小結(jié) 46
第 2章 從像素開(kāi)始學(xué)習(xí)2D 圖形處理 .47
2.1 什么是2D 圖形處理 48
2.2 準(zhǔn)備工作 50
2.3 打印一個(gè)點(diǎn) 54
2.4 移植《箱子搬運(yùn)工》 .55
2.5 補(bǔ)充內(nèi)容:結(jié)束處理 .58
2.6 本章小結(jié) 60
第3章 使用圖片素材 61
3.1 讀取圖片文件 .62
3.2 帶圖片的《箱子搬運(yùn)工》的示例代碼72
3.3 使用透明通道 .75
3.4 頭文件包含關(guān)系的組織策略 .82
3.5 補(bǔ)充內(nèi)容:透明混合的性能優(yōu)化 86
3.6 補(bǔ)充內(nèi)容:加法混合 .88
3.7 本章小結(jié) 90
第4章 實(shí)時(shí)游戲 91
4.1 什么是實(shí)時(shí)游戲 92
4.2 運(yùn)行動(dòng)畫 95
4.3 帶動(dòng)畫的《箱子搬運(yùn)工》.96
4.4 獲得游戲的幀率 .101
4.5 解決幀率差異 103
4.6 補(bǔ)充內(nèi)容:根據(jù)幀率變化動(dòng)態(tài)改變游戲運(yùn)行速度 105
4.7 補(bǔ)充內(nèi)容:影像撕裂現(xiàn)象 110
4.8 本章小結(jié) .111
第5章 簡(jiǎn)單的狀態(tài)遷移 113
5.1 往類庫(kù)追加功能 .114
5.2 相對(duì)直接的做法 .117
5.3 試著增加狀態(tài) 119
5.4 代碼審查 .122
5.5 示例代碼解說(shuō) 128
5.6 本章小結(jié) .136
第6章 文本繪制方法 .137
6.1 字體圖片 .138
6.2 文本繪制函數(shù) 138
6.3 一些改進(jìn) .140
6.4 成果驗(yàn)證 .142
6.5 示例代碼解說(shuō) 143
6.6 注意著作權(quán) 147
6.7 示例類庫(kù)的功能 .147
6.8 本章小結(jié) .148
第7章 動(dòng)作游戲初體驗(yàn) 149
7.1 用到的類庫(kù) 150
7.2 開(kāi)發(fā)《炸彈人》 .151
7.3 示例代碼解說(shuō) 152
7.4 添加背景顯示 157
7.5 配置移動(dòng)的對(duì)象 .164
7.6 游戲的改進(jìn)方向 .169
7.7 本章小結(jié) .170
第8章 2D 平面內(nèi)的碰撞處理 171
8.1 碰撞檢測(cè) .172
8.2 碰撞響應(yīng) .174
8.3 發(fā)生多個(gè)碰撞時(shí)的問(wèn)題 .179
8.4 碰撞響應(yīng)與操作性 180
8.5 移動(dòng)的物體相互碰撞 184
8.6 《炸彈人》的碰撞處理 .184
8.7 本章小結(jié) .186
第9章 各種輸入設(shè)備 .187
9.1 獲取輸入設(shè)備實(shí)例 188
9.2 鍵盤 189
9.3 鼠標(biāo) 189
9.4 手柄 190
9.5 在《炸彈人》游戲中使用手柄 .191
9.6 本章小結(jié) .193
第 10章 狀態(tài)遷移詳解 194
10.1 問(wèn)題定位 195
10.2 使用繼承 195
10.3 實(shí)際運(yùn)用 198
10.4 補(bǔ)充內(nèi)容:簡(jiǎn)化狀態(tài)遷移的代碼 .201
10.5 補(bǔ)充內(nèi)容:跨層級(jí)的狀態(tài)遷移處理的改進(jìn) 204
10.6 補(bǔ)充內(nèi)容:繼承的原理 208
10.7 本章小結(jié) 213
第 11章 播放聲音 .215
11.1 關(guān)于音頻類庫(kù) 216
11.2 補(bǔ)充內(nèi)容:計(jì)算機(jī)如何播放聲音 .218
11.3 補(bǔ)充內(nèi)容:音高和音量 219
11.4 補(bǔ)充內(nèi)容:音色 220
11.5 補(bǔ)充內(nèi)容:聲音的疊加 221
11.6 補(bǔ)充內(nèi)容:do、re、mi 的原理 222
11.7 補(bǔ)充內(nèi)容:演奏樂(lè)譜 223
11.8 補(bǔ)充內(nèi)容:讀取WAV 音頻文件 225
11.9 補(bǔ)充內(nèi)容:使用Sound 模塊來(lái)合成聲波 .226
11.10 本章小結(jié) 226
第 12章 旋轉(zhuǎn)、縮放與平移 227
12.1 旋轉(zhuǎn) .228
12.2 引入向量和矩陣 241
12.3 利用頂點(diǎn)來(lái)實(shí)現(xiàn) 246
12.4 縮放 .253
12.5 在縮放的同時(shí)進(jìn)行旋轉(zhuǎn).255
12.6 矩陣的力量 .256
12.7 補(bǔ)充內(nèi)容:旋轉(zhuǎn)公式的由來(lái) 263
12.8 補(bǔ)充內(nèi)容:更為實(shí)用的旋轉(zhuǎn)處理方法 266
12.9 補(bǔ)充內(nèi)容:數(shù)學(xué)中的矩陣 .267
12.10 本章小結(jié) 271
第 13章 顯卡的力量 272
13.1 關(guān)于使用的類庫(kù) 273
13.2 使用顯卡繪制三角形 273
13.3 將圖像貼到三角形中 275
13.4 混合模式 278
13.5 旋轉(zhuǎn)、縮放和移動(dòng) .278
13.6 移植《炸彈人》 281
13.7 本章小結(jié) 284
第 2部分 3D 游戲285
第 14章 繪制立體物體 286
14.1 關(guān)于類庫(kù) 287
14.2 開(kāi)始制作3D 動(dòng)作游戲《機(jī)甲大戰(zhàn)》 .287
14.3 繪制三角形 .289
14.4 按位置前后繪制物體 290
14.5 將遠(yuǎn)處的物體繪制得小一些 294
14.6 坐標(biāo)變換 303
14.7 用矩陣表示透視變換 316
14.8 開(kāi)始制作《機(jī)甲大戰(zhàn)》 322
14.9 補(bǔ)充內(nèi)容:Z 緩存的精度問(wèn)題 335
14.10 本章小結(jié) 338
第 15章 類庫(kù)的封裝方法 .340
15.1 整體設(shè)計(jì) 341
15.2 資源的詳細(xì)內(nèi)容 342
15.3 試運(yùn)行 350
15.4 從文件載入 .352
15.5 補(bǔ)充內(nèi)容:將類庫(kù)從游戲中分離 .354
15.6 本章小結(jié) 363
第 16章 偽XML 文件的讀取 364
16.1 確定文件格式 365
16.2 創(chuàng)建前的準(zhǔn)備 366
16.3 處理流程 368
16.4 字符串解析 .371
16.5 編寫代碼 373
16.6 運(yùn)用 .375
16.7 示例代碼解說(shuō) 378
16.8 補(bǔ)充內(nèi)容:生成數(shù)據(jù)文件382
16.9 本章小結(jié) 385
第 17章 編寫高性能的代碼 386
17.1 算法與時(shí)間復(fù)雜度 .387
17.2 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ) 390
17.3 吞吐量與延遲 402
17.4 并行處理 404
17.5 內(nèi)存問(wèn)題 404
17.6 STL 和數(shù)據(jù)結(jié)構(gòu) 411
17.7 性能瓶頸分析 416
17.8 補(bǔ)充內(nèi)容:函數(shù)調(diào)用的開(kāi)銷 417
17.9 補(bǔ)充內(nèi)容:高效運(yùn)算與低效運(yùn)算 .420
17.10 本章小結(jié) 422
第 18章 3D 碰撞處理 .423
18.1 長(zhǎng)方體的碰撞處理 .424
18.2 使用浮點(diǎn)數(shù)的碰撞檢測(cè) 427
18.3 三角形和線段的相交檢測(cè) .436
18.4 實(shí)用性 445
18.5 其他問(wèn)題 447
18.6 本章小結(jié) 448
第 19章 《機(jī)甲大戰(zhàn)》的設(shè)計(jì) 450
19.1 狀態(tài)遷移 451
19.2 操作 .451
19.3 發(fā)射導(dǎo)彈 454
19.4 將功能整合到一起 .457
19.5 前端展現(xiàn) 461
19.6 不足之處 463
19.7 本章小結(jié) 464
第 20章 光照 465
20.1 看見(jiàn)物體的過(guò)程 466
20.2 光的衰減過(guò)程 469
20.3 嘗試計(jì)算 473
20.4 整合到《機(jī)甲大戰(zhàn)》中.479
20.5 補(bǔ)充內(nèi)容:性能優(yōu)化 480
20.6 補(bǔ)充內(nèi)容:更好的繪制效果 483
20.7 本章小結(jié) 484
第 21章 角色動(dòng)畫 .485
21.1 相對(duì)運(yùn)動(dòng) 486
21.2 層級(jí)Model 類 492
21.3 自動(dòng)構(gòu)建樹(shù)結(jié)構(gòu) 495
21.4 將動(dòng)畫數(shù)據(jù)化 500
21.5 補(bǔ)間方法 506
21.6 引入到《機(jī)甲大戰(zhàn)》中.518
21.7 補(bǔ)充內(nèi)容:聯(lián)立方程組vs 斜率指定法 519
21.8 補(bǔ)充內(nèi)容:不足之處 520
21.9 本章小結(jié) 523
第3部分 通往商業(yè)游戲之路525
第 22章 高效的碰撞檢測(cè) .526
22.1 低效的循環(huán)判斷方法 527
22.2 性能改善的基本思路 528
22.3 基于排序的方法 531
22.4 依靠分割實(shí)現(xiàn)的方法 539
22.5 補(bǔ)充內(nèi)容:改進(jìn)等分切割法545
22.6 補(bǔ)充內(nèi)容:空間分割的高級(jí)技巧 .548
22.7 本章小結(jié) 552
第 23章 數(shù)據(jù)加載 .554
23.1 為何加載時(shí)間越來(lái)越長(zhǎng).555
23.2 文件加載類 .556
23.3 通過(guò)合并文件提升性能.562
23.4 通過(guò)壓縮提升性能 .571
23.5 補(bǔ)充內(nèi)容:多線程異步處理579
23.6 補(bǔ)充內(nèi)容:編碼技術(shù) 590
23.7 補(bǔ)充內(nèi)容:用于加密的合并與壓縮 591
23.8 本章小結(jié) 592
第 24章 float 的用法 593
24.1 位數(shù)限制 594
24.2 float 的實(shí)現(xiàn) 594
24.3 位數(shù)截?cái)鄮?lái)的誤差 596
24.4 誤差程度 597
24.5 減小誤差的方法 600
24.6 特別的數(shù) 606
24.7 本章小結(jié) 608
第 25章 隨書(shū)類庫(kù)概要 609
25.1 類庫(kù)中的類 .610
25.2 啟動(dòng)設(shè)定 611
25.3 Framework 模塊 613
25.4 WindowCreator 模塊 614
25.5 FileIO 模塊 614
25.6 Base 模塊 615
25.7 Math 模塊 616
25.8 Threading 模塊 618
25.9 Input 模塊 .620
25.10 Sound 模塊 620
25.11 PseudoXml 模塊 621
25.12 Graphics 模塊 621
25.13 Scene 模塊 628
25.14 抗鋸齒處理 630
25.15 將《機(jī)甲大戰(zhàn)》改用最終版類庫(kù)實(shí)現(xiàn) 631
25.16 X 文件 .633
25.17 本章小結(jié) 634
第 26章 bug 的應(yīng)對(duì)方法 .635
26.1 防火與滅火 .636
26.2 bug 的種類 .636
26.3 bug 的預(yù)防 .641
26.4 bug 的處理 .654
26.5 《機(jī)甲大戰(zhàn)》的處理 656
26.6 補(bǔ)充內(nèi)容:如何檢測(cè)內(nèi)存溢出 657
26.7 本章小結(jié) 660
第 27章 進(jìn)階方向 .662
27.1 應(yīng)該學(xué)習(xí)什么 663
27.2 工具開(kāi)發(fā) 664
27.3 AI 667
27.4 網(wǎng)絡(luò) .667
27.5 shader 668
27.6 參考文獻(xiàn) 669
27.7 一些期待的書(shū) 672
后記 .675
致謝 .676