游戲開發 -- 世嘉新人培訓教材

游戲開發 -- 世嘉新人培訓教材

作者: [日]平山尚
出版社: 人民郵電
出版在: 2020-04-01
ISBN-13: 9787115525758
ISBN-10: 7115525757
裝訂格式: 平裝
總頁數: 676 頁





內容描述


《遊戲開發:世嘉新人培訓教材》全面介紹了遊戲開發人員需要掌握的相關技術知識。
內容由淺入深,從命令行遊戲開發講起,然後介紹如何開發簡單的2D遊戲,
最後介紹如何開發出一個包含模型和動畫的3D遊戲,涵蓋了計算機圖形學
(3DCG、2DCG、字體、光照、動畫)、計算機運算(碰撞處理、計算誤差)、
編程(模塊化、bug預防、性能優化)、遊戲處理(狀態遷移、實時處理、加載)和聲音處理等知識。


目錄大綱


第1部分2D 遊戲.1
第1章第一個遊戲2
1.1 開發一個益智遊戲.3
1.2 示例代碼解說 7
1.3 添加讀取場景數據的功能16
1.4 C++ 課堂21
1.5 補充內容:標誌位和位運算26
1.6 補充內容:指針和內存34
1.7 補充內容:引用41
1.8 本章小結46
第2章從像素開始學習2D 圖形處理.47
2.1 什麼是2D 圖形處理48
2.2 準備工作50
2.3 打印一個點54
2.4 移植《箱子搬運工》 .55
2.5 補充內容:結束處理.58
2.6 本章小結60
第3章使用圖片素材61
3.1 讀取圖片文件.62
3.2 帶圖片的《箱子搬運工》的示例代碼72
3.3 使用透明通道.75
3.4 頭文件包含關係的組織策略.82
3.5 補充內容:透明混合的性能優化86
3.6 補充內容:加法混合.88
3.7 本章小結90
第4章實時遊戲91
4.1 什麼是實時遊戲92
4.2 運行動畫95
4.3 帶動畫的《箱子搬運工》.96
4.4 獲得遊戲的幀率.101
4.5 解決幀率差異103
4.6 補充內容:根據幀率變化動態改變遊戲運行速度105
4.7 補充內容:影像撕裂現象110
4.8 本章小結.111
第5章簡單的狀態遷移113
5.1 往類庫追加功能.114
5.2 相對直接的做法.117
5.3 試著增加狀態119
5.4 代碼審查.122
5.5 示例代碼解說128
5.6 本章小結.136
第6章文本繪製方法.137
6.1 字體圖片.138
6.2 文本繪製函數138
6.3 一些改進.140
6.4 成果驗證.142
6.5 示例代碼解說143
6.6 注意著作權147
6.7 示例類庫的功能.147
6.8 本章小結.148
第7章動作遊戲初體驗149
7.1 用到的類庫150
7.2 開發《炸彈人》 .151
7.3 示例代碼解說152
7.4 添加背景顯示157
7.5 配置移動的對象.164
7.6 遊戲的改進方向.169
7.7 本章小結.170
第8章2D 平面內的碰撞處理171
8.1 碰撞檢測.172
8.2 碰撞響應.174
8.3 發生多個碰撞時的問題.179
8.4 碰撞響應與操作性180
8.5 移動的物體相互碰撞184
8.6 《炸彈人》的碰撞處理.184
8.7 本章小結.186
第9章各種輸入設備.187
9.1 獲取輸入設備實例188
9.2 鍵盤189
9.3 鼠標189
9.4 手柄190
9.5 在《炸彈人》遊戲中使用手柄.191
9.6 本章小結.193
第10章狀態遷移詳解194
10.1 問題定位195
10.2 使用繼承195
10.3 實際運用198
10.4 補充內容:簡化狀態遷移的代碼.201
10.5 補充內容:跨層級的狀態遷移處理的改進204
10.6 補充內容:繼承的原理208
10.7 本章小結213
第11章播放聲音.215
11.1 關於音頻類庫216
11.2 補充內容:計算機如何播放聲音.218
11.3 補充內容:音高和音量219
11.4 補充內容:音色220
11.5 補充內容:聲音的疊加221
11.6 補充內容:do、re、mi 的原理222
11.7 補充內容:演奏樂譜223
11.8 補充內容:讀取WAV 音頻文件225
11.9 補充內容:使用Sound 模塊來合成聲波.226
11.10 本章小結226
第12章旋轉、縮放與平移227
12.1 旋轉.228
12.2 引入向量和矩陣241
12.3 利用頂點來實現246
12.4 縮放.253
12.5 在縮放的同時進行旋轉.255
12.6 矩陣的力量.256
12.7 補充內容:旋轉公式的由來263
12.8 補充內容:更為實用的旋轉處理方法266
12.9 補充內容:數學中的矩陣.267
12.10 本章小結271
第13章顯卡的力量272
13.1 關於使用的類庫273
13.2 使用顯卡繪製三角形273
13.3 將圖像貼到三角形中275
13.4 混合模式278
13.5 旋轉、縮放和移動.278
13.6 移植《炸彈人》 281
13.7 本章小結284
第2部分3D 遊戲285
第14章繪製立體物體286
14.1 關於類庫287
14.2 開始製作3D 動作遊戲《機甲大戰》 .287
14.3 繪製三角形.289
14.4 按位置前後繪製物體290
14.5 將遠處的物體繪製得小一些294
14.6 坐標變換303
14.7 用矩陣表示透視變換316
14.8 開始製作《機甲大戰》 322
14.9 補充內容:Z 緩存的精度問題335
14.10 本章小結338
第15章類庫的封裝方法.340
15.1 整體設計341
15.2 資源的詳細內容342
15.3 試運行350
15.4 從文件載入.352
15.5 補充內容:將類庫從遊戲中分離.354
15.6 本章小結363
第16章偽XML 文件的讀取364
16.1 確定文件格式365
16.2 創建前的準備366
16.3 處理流程368
16.4 字符串解析.371
16.5 編寫代碼373
16.6 運用.375
16.7 示例代碼解說378
16.8 補充內容:生成數據文件382
16.9 本章小結385
第17章編寫高性能的代碼386
17.1 算法與時間複雜度.387
17.2 數據結構基礎390
17.3 吞吐量與延遲402
17.4 並行處理404
17.5 內存問題404
17.6 STL 和數據結構411
17.7 性能瓶頸分析416
17.8 補充內容:函數調用的開銷417
17.9 補充內容:高效運算與低效運算.420
17.10 本章小結422
第18章3D 碰撞處理.423
18.1 長方體的碰撞處理.424
18.2 使用浮點數的碰撞檢測427
18.3 三角形和線段的相交檢測.436
18.4 實用性445
18.5 其他問題447
18.6 本章小結448
第19章《機甲大戰》的設計450
19.1 狀態遷移451
19.2 操作.451
19.3 發射導彈454
19.4 將功能整合到一起.457
19.5 前端展現461
19.6 不足之處463
19.7 本章小結464
第20章光照465
20.1 看見物體的過程466
20.2 光的衰減過程469
20.3 嘗試計算473
20.4 整合到《機甲大戰》中.479
20.5 補充內容:性能優化480
20.6 補充內容:更好的繪製效果483
20.7 本章小結484
第21章角色動畫.485
21.1 相對運動486
21.2 層級Model 類492
21.3 自動構建樹結構495
21.4 將動畫數據化500
21.5 補間方法506
21.6 引入到《機甲大戰》中.518
21.7 補充內容:聯立方程組vs 斜率指定法519
21.8 補充內容:不足之處520
21.9 本章小結523
第3部分通往商業遊戲之路525
第22章高效的碰撞檢測.526
22.1 低效的循環判斷方法527
22.2 性能改善的基本思路528
22.3 基於排序的方法531
22.4 依靠分割實現的方法539
22.5 補充內容:改進等分切割法545
22.6 補充內容:空間分割的高級技巧.548
22.7 本章小結552
第23章數據加載.554
23.1 為何加載時間越來越長.555
23.2 文件加載類.556
23.3 通過合併文件提升性能.562
23.4 通過壓縮提升性能.571
23.5 補充內容:多線程異步處理579
23.6 補充內容:編碼技術590
23.7 補充內容:用於加密的合併與壓縮591
23.8 本章小結592
第24章float 的用法593
24.1 位數限制594
24.2 float 的實現594
24.3 位數截斷帶來的誤差596
24.4 誤差程度597
24.5 減小誤差的方法600
24.6 特別的數606
24.7 本章小結608
第25章隨書類庫概要609
25.1 類庫中​​的類.610
25.2 啟動設定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 將《機甲大戰》改用最終版類庫實現631
25.16 X 文件.633
25.17 本章小結634
第26章bug 的應對方法.635
26.1 防火與滅火.636
26.2 bug 的種類.636
26.3 bug 的預防.641
26.4 bug 的處理.654
26.5 《機甲大戰》的處理656
26.6 補充內容:如何檢測內存溢出657
26.7 本章小結660
第27章進階方向.662
27.1 應該學習什麼663
27.2 工具開發664
27.3 AI 667
27.4 網絡.667
27.5 shader 668
27.6 參考文獻669
27.7 一些期待的書672
後記.675
致謝.676


作者介紹


平山尚(作者)
1977年生於日本北海道,曾在京都大學研究生院工學研究科進行基因研究,
畢業後進入世嘉株式會社,參與了《電腦戰機》(PS2)、《超級網球大獎賽3》(AC、PS3)的開發。
著有《我的第一本編程書》。
羅水東(譯者)
遊戲開發工程師,15年軟件和遊戲開發經驗。
熱愛技術,樂於分享心得。
目前主要關注的領域為3D休閒遊戲開發和底層引擎技術。




相關書籍

Unity 遊戲設計與實現 : 南夢宮一線程序員的開發實例 (修訂版)

作者 加藤政樹

2020-04-01

遊戲開發入門:數學和物理

作者 徐芝琦

2020-04-01

3ds Max & Unreal Engine 4——VR三維建模技術實例教程(附VR模型)

作者 初樹平 張翔

2020-04-01