WINDOWS遊戲編程之從零開始

WINDOWS遊戲編程之從零開始

《Windows遊戲編程之從零開始》是清華大學出版社於2013年出版的書籍,作者是毛星雲。結合了當前遊戲開發技術的發展,深入淺出的地介紹了在Windows下進行遊戲開發所涉及到的各方面知識。端游開發報酬豐厚且能實現自己的遊戲夢想,作者毛星雲於2012年初與清華大學出版社簽約,歷經一年多時間,編寫了這本詳細講解Windows遊戲開發的入門圖書,市場反應強烈。

內容簡介

1. 如果你的編程經驗為零:

毫無編程經驗的朋友,請先閱讀介紹C++程式語言的相關書籍,再來延續我們的夢想,閱讀這本書。學習C++推薦書目: C++ Primer和C++ Primer Plus。

2. 如果你有C++編程經驗但沒有接觸過Windows 編程:

有C++編程經驗但毫無Windows編程經驗的朋友,可以從頭到尾順暢的閱讀這本書。因為這本書最準確的定位就是有一點C++編程經驗之後從零開始掌握Windows遊戲編程。

3. 如果你有Windows 編程經驗,但不熟悉GDI:

有Windows編程經驗但不熟悉GDI的朋友,推薦適當閱讀第一章之後,從第4章開始您的征程。

4. 如果你想了解Windows GDI遊戲繪圖技巧:

想了解Windows GDI遊戲繪圖技巧的朋友,請閱讀第5章。

5. 如果你想了解Windows遊戲動畫技巧:

想了解Windows遊戲動畫技巧的朋友,第6章會滿足你的好奇心。

6. 如果你想了解Windows小遊戲鍵盤滑鼠編程的相關知識:

需要了解Windows中小遊戲對鍵盤滑鼠編程相關知識的朋友,第7章會給你答案。

7. 如果你想看看Windows GDI如何寫出好玩的程式:

想看看Windows GDI可以弄出哪些好玩的玩意兒的朋友,第8章會給你驚喜。

8. 如果你想了解一個GDI小遊戲完整的開發過程:

想了解一個結構完整的小遊戲的開發過程的朋友們,第9章會超出你們的期待。

9. 如果你已經準備好迎接挑戰,開始學習DirectX遊戲編程:

有一定Windows編程經驗,並且了解GDI編程,想開始DirectX 3D遊戲編程學習的朋友,請從第10章開始閱讀。這本書從第10章往後的內容組織起來是一個系統的DirectX遊戲編程教材,其實可以單獨成書的。

作品目錄

序 篇 逐夢·遊戲開發夢想的重量

第1章 高瞻遠矚——遊戲開發面面觀............................................................................... 3

1.1 逐夢——夢想讓我們不孤單................................................................................ 4

1.1.1 現在的努力,就是為了證明小時候吹過的牛................................................ 4

1.1.2 為夢想,為國產遊戲的未來,請把這本書讀下去.......................................... 4

1.2 遊戲產業的黎明................................................................................................. 5

1.3 遊戲產業的分類——六大遊戲市場....................................................................... 6

1.3.1 3A級遊戲開發領域................................................................................... 6

1.3.2 社交和休閒遊戲開發領域.......................................................................... 8

1.3.3 移動遊戲開發領域.................................................................................... 9

1.3.4 功能型遊戲開發領域................................................................................. 9

1.3.5 學術型遊戲開發領域............................................................................... 10

1.3.6 獨立型遊戲開發領域............................................................................... 10

1.4 遊戲平台與遊戲開發程式語言的認知.................................................................. 11

1.5 對遊戲類型的認知............................................................................................ 12

1.6 遊戲開發中圖形API的概念.............................................................................. 14

1.7 遊戲編程學習路線總結..................................................................................... 15

1.8 章節小憩......................................................................................................... 16

第一篇 起航 · 夯實遊戲程式之根

第2章 開鋒你的絕世名刃—— Visual Studio開發環境的安裝、配置............................... 19

2.1 Visual Studio、VC++和C++的那些事兒............................................................ 20

2.2 Visual Studio 2010的下載、安裝與配置............................................................ 21

2.2.1 下載VisualStudio 2010......................................................................... 21

2.2.2 安裝VisualStudio 2010......................................................................... 22

2.2.3 初次配置VisualStudio 2010................................................................... 25

2.2.4 Visual Studio 2010常用設定介紹............................................................ 26

2.3 Visual Studio 2010使用指南............................................................................ 27

2.3.1 集成開發環境簡介.................................................................................. 27

2.3.2 Visual Studio界面概述........................................................................... 28

2.3.3 工具列選項............................................................................................ 29

2.4 百科全書——幫助文檔與MSDN....................................................................... 30

2.4.1 MSDN的安裝........................................................................................ 31

2.4.2 離線查看MSDN的方法.......................................................................... 33

2.4.3 使用MSDN幫助文檔.............................................................................. 34

2.5 Coding路上不孤單——強大的編程助手Visual AssistX...................................... 34

2.6 長征第一步——第一個程式的創建與編寫........................................................... 36

2.6.1 關於項目與解決方案............................................................................... 36

2.6.2 第一個程式的創建與編寫......................................................................... 37

2.6.3 Visual Studio檔案類型分析.................................................................... 41

2.7 章節小憩......................................................................................................... 42

第3章 啟程——Windows編程基礎................................................................................ 43

3.1 高瞻遠矚——Windows編程體系與遊戲編程....................................................... 44

3.2 理解兩個術語——API與SDK........................................................................... 45

3.2.1 何為API................................................................................................ 45

3.2.2 什麼是SDK........................................................................................... 46

3.3 Windows程式的“心臟”——WinMain函式...................................................... 46

3.3.1 WinMain函式......................................................................................... 46

3.3.2 MessageBox函式.................................................................................. 49

3.3.3 PlaySound函式..................................................................................... 51

3.3.4 示例程式Firstblood!............................................................................ 52

3.4 Windows程式的“外貌”——視窗.................................................................... 55

3.5 Winodows資源的“身份證”——句柄.............................................................. 55

3.6 Windows程式的“郵局”——訊息與訊息佇列................................................... 56

3.6.1 訊息的表示形式——MSG結構體............................................................. 56

3.6.2 關於訊息佇列......................................................................................... 58

3.7 步步為營——視窗創建四步曲........................................................................... 58

3.7.1 視窗類的設計......................................................................................... 58

3.7.2 視窗類的註冊......................................................................................... 63

3.7.3 視窗的正式創建...................................................................................... 64

3.7.4 視窗的顯示和更新.................................................................................. 66

3.8 各有千秋——兩套訊息循環體系........................................................................ 68

3.8.1 以GetMessage為核心的訊息循環體系.................................................... 69

3.8.2 以PeekMessage為核心的訊息循環體系.................................................. 71

3.9 Windows程式的“中樞神經”——視窗過程函式................................................ 73

3.10 做好善後——視窗類的註銷............................................................................. 75

3.11 牛刀小試——一個完整的視窗程式的誕生......................................................... 76

3.12 小不忍則亂大謀——關於命名規範................................................................... 80

3.13 章節小憩....................................................................................................... 82

第二篇 初探 · GDI 2D遊戲編程

第4章 入門心法——Windows遊戲圖形基礎.................................................................. 85

4.1 Windows圖形設備接口(GDI)........................................................................ 86

4.1.1 GDI的初印象......................................................................................... 86

4.1.2 用GDI寫遊戲的認知.............................................................................. 86

4.1.3 關於GDI+............................................................................................. 87

4.1.4 GDI的特點............................................................................................ 87

4.1.5 GDI中的基本圖形.................................................................................. 88

4.1.6 GDI的函式分類...................................................................................... 89

4.2 設備環境(DC)............................................................................................. 90

4.2.1 設備環境的基本概念............................................................................... 90

4.2.2 獲取設備環境句柄(HDC)的兩種方式..................................................... 91

4.3 Windows螢幕區域相關概念闡述....................................................................... 94

4.3.1 螢幕區、視窗區與客戶區......................................................................... 94

4.3.2 坐標點與坐標變換.................................................................................. 94

4.4 寫一個GDI程式通用框架................................................................................. 95

4.5 GDI基本幾何繪圖.......................................................................................... 100

4.5.1 創建畫筆.............................................................................................. 100

4.5.2 創建畫刷.............................................................................................. 101

4.5.3 圖形對象的選擇.................................................................................... 102

4.5.4 繪製圖形和線條.................................................................................... 103

4.6 遊戲隨機數系統初步....................................................................................... 105

4.6.1 遊戲中的隨機系統概述.......................................................................... 105

4.6.2 隨機系統初步....................................................................................... 106

4.6.3 幾種隨機數的簡單算法.......................................................................... 108

4.6.4 產生一定範圍內隨機數的通用算法公式................................................... 109

4.6.5 總結.................................................................................................... 109

4.6.6 示例程式GDIdemo1............................................................................. 110

4.7 文字的輸出.................................................................................................... 113

4.7.1 最常用文字輸出函式TextOut................................................................. 114

4.7.2 進階文字輸出函式................................................................................. 114

4.7.3 設定文字顏色....................................................................................... 115

4.7.4 設定文字背景透明................................................................................. 116

4.7.5 字型的創建.......................................................................................... 116

4.7.6 總結.................................................................................................... 117

4.7.7 示例程式GDIdemo2............................................................................. 119

4.8 點陣圖繪製基礎................................................................................................ 120

4.8.1 點陣圖繪製四步曲.................................................................................... 121

4.8.2 示例程式GDIdemo3............................................................................. 125

4.9 消除閃爍:緩衝顯示技術................................................................................ 127

4.10 章節小憩..................................................................................................... 128

第5章 遮羞的藝術——Windows遊戲繪圖技巧............................................................ 129

5.1 透明貼圖的兩套體系....................................................................................... 130

5.2 透明遮罩法.................................................................................................... 130

5.2.1 具體實現細節....................................................................................... 131

5.2.2 示例程式GDIdemo4............................................................................. 134

5.3 透明色彩法.................................................................................................... 137

5.3.1 具體實現細節....................................................................................... 137

5.3.2 示例程式GDIdemo5............................................................................. 139

5.4 自己動手處理圖片素材................................................................................... 141

5.4.1 遊戲素材的來源.................................................................................... 142

5.4.2 Photoshop圖像處理軟體...................................................................... 142

5.4.3 處理遊戲素材圖片................................................................................. 143

5.5 章節小憩....................................................................................................... 150

第6章 光與影的交匯——Windows遊戲動畫技術......................................................... 151

6.1 定時器動畫顯示............................................................................................. 152

6.1.1 創建定時器.......................................................................................... 152

6.1.2 WM_TIMER訊息回響............................................................................ 153

6.1.3 刪除定時器.......................................................................................... 154

6.1.4 示例程式GDIdemo6............................................................................. 155

6.2 遊戲循環動畫顯示.......................................................................................... 161

6.3 透明動畫....................................................................................................... 165

6.4 排序貼圖....................................................................................................... 169

6.5 章節小憩....................................................................................................... 175

第7章 做遊戲的主人——Windows遊戲輸入訊息處理.................................................. 176

7.1 Windows鍵盤訊息處理.................................................................................. 177

7.1.1 虛擬鍵碼與鍵盤訊息............................................................................. 177

7.1.2 鍵盤訊息處理....................................................................................... 181

7.1.3 示例程式GDIdemo10........................................................................... 182

7.2 Windows滑鼠訊息處理.................................................................................. 187

7.2.1 滑鼠訊息的處理方式............................................................................. 187

7.2.2 滑鼠相關常用函式講解.......................................................................... 189

7.3 章節小憩....................................................................................................... 199

第8章 玄妙的物理——物理建模與粒子系統初步.......................................................... 201

8.1 基礎物理建模初步.......................................................................................... 202

8.1.1 勻速與加速運動模擬............................................................................. 202

8.1.2 重力系統模擬....................................................................................... 207

8.1.3 摩擦力系統模擬.................................................................................... 210

8.2 粒子系統初步................................................................................................ 214

8.2.1 基本概念.............................................................................................. 214

8.2.2 雪花飛舞示例程式................................................................................. 215

8.2.3 星光綻放示例程式................................................................................. 219

8.3 章節小憩....................................................................................................... 224

第9章 夢的初現——開發回合制遊戲《勇者斗惡龍》................................................... 225

9.1 設計遊戲登場角色.......................................................................................... 226

9.2 設計主角角色技能.......................................................................................... 228

9.2.1 “無敵斬”角色技能設計....................................................................... 228

9.2.2 “烈火劍法”角色技能設計.................................................................... 228

9.2.3 “氣療術”角色技能設計....................................................................... 229

9.2.4 “恩賜解脫”角色技能設計.................................................................... 229

9.3 設計反派角色技能.......................................................................................... 230

9.3.1 人工智慧技術一瞥................................................................................. 230

9.3.2 反派人物AI的設計............................................................................... 232

9.3.3 “幽冥鬼火”反派技能設計.................................................................... 233

9.3.4 “嗜血咒”反派技能設計....................................................................... 233

9.3.5 “致命一擊”反派技能設計.................................................................... 234

9.3.6 “使用梅肯斯姆”反派技能設計............................................................. 234

9.4 書寫遊戲程式實現代碼................................................................................... 235

9.4.1 遊戲資源的初始化................................................................................. 235

9.4.2 功能函式的實現.................................................................................... 238

9.4.3 遊戲主體部分的實現............................................................................. 240

9.4.4 遊戲視窗過程函式的實現....................................................................... 244

9.4.5 玩家動作邏輯與技能特效繪圖函式的實現................................................ 245

9.4.6 反派動作邏輯與繪圖函式的實現............................................................. 248

9.5 整合代碼,完成遊戲開發................................................................................ 251

9.6 玩遊戲.......................................................................................................... 269

9.7 遊戲打法攻略、改進與素材............................................................................. 271

9.8 章節小憩....................................................................................................... 272

第三篇 飛躍 · DirectX遊戲編程基礎

第10章 快到碗裡來——DirectX大局觀認知................................................................. 275

10.1 對DirectX的認知......................................................................................... 276

10.1.1 DirectX的目前地位............................................................................. 276

10.1.2 DirectX的兩種不同含義...................................................................... 277

10.1.3 DirectX的幾套開發方案...................................................................... 278

10.1.4 圖形API體系認知............................................................................... 278

10.1.5 微軟的寵兒——DirectX....................................................................... 279

10.1.6 不甘做備胎——OpenGL...................................................................... 279

10.2 宿敵的世紀之斗:DirectX與OpenGL的博弈.................................................. 280

10.3 DirectX開發環境的配置................................................................................ 282

10.4 新版DirectXSDK的組件介紹....................................................................... 286

10.4.1 新版DirectXSDK中現存的組件.......................................................... 286

10.4.2 新版DirectXSDK中被移除的組件....................................................... 288

10.4.3 關於當前2D遊戲開發可用的圖形API................................................... 289

10.5 對DirectXSDK檔案組成的剖析.................................................................... 289

10.6 讓DirectXSDK物盡其用............................................................................. 294

10.7 選擇我們的DirectX學習版本........................................................................ 295

10.7.1 DirectX的幾套版本簡介...................................................................... 295

10.7.2 DirectX11 vs DirectX9,現階段學哪個好.............................................. 295

10.8 當前Direct3D中的兩套渲染體系................................................................... 297

10.9 Direct3D程式的體系結構.............................................................................. 298

10.10 學習DirectX的兩個技巧............................................................................. 300

10.11 章節小憩................................................................................................... 300

第11章 三維內功心法——Direct3D編程基礎............................................................... 301

11.1 典型Direct3D程式流程分析.......................................................................... 302

11.2 對COM接口對象的一些介紹......................................................................... 303

11.3 寫一個DirectX程式通用框架........................................................................ 304

11.4 化腐朽為神奇——Direct3D初始化四步曲....................................................... 310

11.4.1 Direct3D初始化四步曲概述................................................................. 310

11.4.2 Direct3D初始化四步曲之一:創接口.................................................... 310

11.4.3 Direct3D初始化四步曲之二:取信息.................................................... 311

11.4.4 Direct3D初始化四步曲之三:填內容.................................................... 313

11.4.5 Direct3D初始化四步曲之四:創設備.................................................... 315

11.4.6 Direct3D初始化四步曲代碼賞析........................................................... 316

11.4.7 示例程式D3Ddemo1.......................................................................... 317

11.5 深入理解Direct3D動畫顯示技術——交換鏈................................................... 319

11.6 對固定功能渲染流水線體系的理解................................................................. 321

11.7 Direct3D中的“繪製金鑰匙”—— Direct3D設備接口..................................... 322

11.8 Direct3D中二維文本的繪製.......................................................................... 323

11.8.1 D3DXCreateFont函式........................................................................ 324

11.8.2 DrawText函式.................................................................................... 325

11.9 起承轉合的藝術:Direct3D渲染五步曲.......................................................... 326

11.9.1 Direct3D渲染五步曲概述.................................................................... 326

11.9.2 五步曲之一:清屏操作........................................................................ 327

11.9.3 五步曲之二:開始繪製........................................................................ 329

11.9.4 五步曲之三:正式繪製........................................................................ 329

11.9.5 五步曲之四:結束繪製........................................................................ 330

11.9.6 五步曲之五:翻轉顯示........................................................................ 330

11.9.7 Direct3D渲染五步曲代碼整體賞析....................................................... 331

11.9.8 示例程式D3Ddemo2.......................................................................... 331

11.10 章節小憩................................................................................................... 337

第12章 騰飛前的助跑——Direct3D 繪製基礎............................................................. 338

12.1 頂點快取的逆襲........................................................................................... 339

12.1.1 引言.................................................................................................. 339

12.1.2 頂點快取相關基礎知識........................................................................ 339

12.1.3 頂點快取使用四步曲之一:設計頂點快取.............................................. 340

12.1.4 頂點快取使用四步曲之二:創建頂點快取.............................................. 342

12.1.5 頂點快取使用四步曲之三:訪問頂點快取.............................................. 345

12.1.6 頂點快取使用四步曲之四:圖形的繪製.................................................. 347

12.1.7 示例程式D3Ddemo3.......................................................................... 350

12.2 索引快取——頂點快取的紅顏知己................................................................. 354

12.2.1 引言.................................................................................................. 354

12.2.2 索引快取的使用思路............................................................................ 356

12.2.3 相濡以沫的頂點快取與索引快取........................................................... 357

12.2.4 雙劍合璧:頂點快取、索引快取使用四步曲........................................... 359

12.2.5 示例程式D3Ddemo4.......................................................................... 367

12.3 章節小憩..................................................................................................... 371

第13章 邁向三維世界——Direct3D 的四大變換.......................................................... 372

13.1 四大變換的基本認知..................................................................................... 373

13.2 四大變換之一:世界變換.............................................................................. 373

13.2.1 矩陣的平移......................................................................................... 375

13.2.2 矩陣的旋轉......................................................................................... 376

13.2.3 矩陣的縮放......................................................................................... 377

13.3 四大變換之二:取景變換.............................................................................. 378

13.4 四大變換之三:投影變換.............................................................................. 379

13.5 四大變換之四:視口變換.............................................................................. 381

13.6 總結............................................................................................................ 382

13.7 示例程式D3Ddemo5................................................................................... 382

13.8 章節小憩..................................................................................................... 389

第14章 繪製出質感的世界—光照與材質.................................................................. 390

14.1 引言............................................................................................................ 391

14.2 四大光照類型............................................................................................... 391

14.3 三大光源類型............................................................................................... 393

14.4 材質............................................................................................................ 398

14.5 關於頂點法線............................................................................................... 399

14.6 總結與升華.................................................................................................. 402

14.7 幾何體的快捷繪製........................................................................................ 402

14.7.1 D3D中內置的幾何體概述.................................................................... 402

14.7.2 D3D中幾種內置的幾何體繪製四步曲.................................................... 403

14.7.3 D3D中幾種內置幾何體的創建.............................................................. 404

14.8 示例程式D3Ddemo7................................................................................... 415

14.9 章節小憩..................................................................................................... 420

第15章 做遊戲的主人——輸出控制利器DirectInput.................................................... 421

15.1 引言............................................................................................................ 422

15.2 DirectInput接口概述.................................................................................... 422

15.3 DirectInput使用步驟詳解.............................................................................. 424

15.3.1 頭檔案和庫檔案的包含........................................................................ 424

15.3.2 創建DirectInput接口和設備................................................................. 424

15.3.3 設定數據格式..................................................................................... 427

15.3.4 設定協作級別..................................................................................... 427

15.3.5 設定特殊屬性..................................................................................... 428

15.3.6 獲取和輪詢設備.................................................................................. 429

15.3.7 讀取設備信息..................................................................................... 429

15.4 精煉:DirectInput使用五步曲....................................................................... 431

15.5 DirectInput鍵盤按鍵鍵值總結....................................................................... 433

15.6 DirectInput滑鼠按鍵鍵值總結....................................................................... 434

15.7 示例程式D3Ddemo8................................................................................... 435

15.8 手把手封裝DirectInput到類中....................................................................... 440

15.9 封裝好的DirectInput類的使用....................................................................... 444

15.10 示例程式D3Ddemo9.................................................................................. 445

15.11 章節小憩................................................................................................... 451

第16章 起舞不落幕——與紋理映射的華麗邂逅........................................................... 452

16.1 紋理映射的概念........................................................................................... 453

16.2 紋理映射使用四步曲..................................................................................... 454

16.3 總結與升華.................................................................................................. 459

16.4 示例程式D3Ddemo10.................................................................................. 461

16.5 四大紋理過濾方式精講.................................................................................. 472

16.6 四大紋理定址方式精講.................................................................................. 477

16.7 紋理映射知識總結........................................................................................ 480

16.8 示例程式D3Ddemo11................................................................................. 483

16.9 章節小憩..................................................................................................... 489

第17章 他山之石可攻玉——三維遊戲模型的載入........................................................ 490

17.1 格線模型技術的前生今世.............................................................................. 491

17.2 認識三維建模軟體3DSMax和Maya............................................................. 491

17.3 對X檔案的認識........................................................................................... 494

17.4 從3DSMax中導出X檔案方法詳解............................................................... 495

17.5 格線模型接口ID3DXMESH........................................................................... 498

17.6 檔案模型載入三步曲..................................................................................... 500

17.6.1 三步曲之一:通過X檔案載入格線模型................................................. 500

17.6.2 三步曲之二:載入材質和紋理............................................................... 501

17.6.3 三步曲之三:繪製格線模型.................................................................. 502

17.6.4 總結與升華......................................................................................... 504

17.7 示例程式D3demo12.................................................................................... 505

17.8 章節小憩..................................................................................................... 510

第18章 水乳交融的藝術——Alpha混合技術................................................................ 511

18.1 初識Alpha通道與混合技術........................................................................... 512

18.2 Direct3D中的融合套路——融合因子............................................................. 512

18.3 融合運算方式的取法..................................................................................... 513

18.4 融合因子的取法........................................................................................... 514

18.5 Alpha的三處來源......................................................................................... 515

18.6 Alpha融合使用三步曲.................................................................................. 517

18.7 示例程式D3Ddemo13.................................................................................. 518

18.8 章節小憩..................................................................................................... 521

第19章 橫看成嶺側成峰——深度測試與Z快取........................................................... 522

19.1 形象化理解深度測試..................................................................................... 523

19.2 深度測試相關概念講解.................................................................................. 523

19.3 深度測試使用四步曲..................................................................................... 524

19.4 示例程式D3Ddemo14.................................................................................. 527

19.5 章節小憩..................................................................................................... 529

第20章 虛實結合的光影——模板技術......................................................................... 530

20.1 對模板技術中概念的理解.............................................................................. 531

20.1.1 模板快取............................................................................................ 531

20.1.2 模板測試............................................................................................ 531

20.2 模板測試精細講解........................................................................................ 532

20.2.1 創建模板緩衝區.................................................................................. 532

20.2.2 清除模板緩衝區.................................................................................. 533

20.2.3 模板測試相關參數介紹........................................................................ 534

20.2.4 對模板測試的一些理解........................................................................ 537

20.3 鏡面特效的實現........................................................................................... 538

20.4 通過實例程式講解........................................................................................ 539

20.5 示例程式D3Ddemo15.................................................................................. 543

20.6 章節小憩..................................................................................................... 548

第四篇 致用 · DirectX遊戲編程套用

第21章 翱翔於三維空間——遊戲攝像機的構建........................................................... 551

21.1 對攝像機的一些概述..................................................................................... 552

21.2 開始設計攝像機類........................................................................................ 552

21.3 關於向量計算的函式講解.............................................................................. 555

21.4 計算取景變換矩陣........................................................................................ 557

21.5 類的其餘實現細節........................................................................................ 560

21.6 示例程式D3Ddemo16.................................................................................. 566

21.7 章節小憩..................................................................................................... 574

第22章 鍾靈毓秀的世界——三維地形的構建............................................................... 575

22.1 三維地形繪製思路分析.................................................................................. 576

22.2 關於高度圖.................................................................................................. 577

22.2.1 高度圖的概念..................................................................................... 577

22.2.2 高度圖的製作..................................................................................... 578

22.2.3 用Photoshop製作高度圖................................................................... 579

22.2.4 在程式中讀取高度圖............................................................................ 581

22.3 地形類輪廓的書寫........................................................................................ 582

22.4 地形頂點的計算........................................................................................... 583

22.5 地形索引的計算........................................................................................... 585

22.6 渲染出地形.................................................................................................. 587

22.7 完成地形類的設計........................................................................................ 588

22.8 示例程式D3Ddemo17.................................................................................. 592

22.9 章節小憩..................................................................................................... 597

第23章 向碧藍的蒼穹致敬——三維天空的構建........................................................... 598

23.1 三維天空技術闡述........................................................................................ 599

23.2 天空盒的設計............................................................................................... 600

23.3 天空盒類的實現........................................................................................... 603

23.4 天空盒類的使用........................................................................................... 609

23.5 示例程式D3Ddemo18.................................................................................. 609

23.6 章節小憩..................................................................................................... 615

第24章 讓唯美的雪花飄揚——三維粒子系統的實現.................................................... 616

24.1 對粒子系統的基本認知.................................................................................. 617

24.2 粒子系統的基本原理..................................................................................... 618

24.3 雪花粒子系統的設計..................................................................................... 620

24.4 雪花粒子系統的實現..................................................................................... 623

24.5 雪花飛揚粒子類的使用.................................................................................. 628

24.6 示例程式D3Ddemo19.................................................................................. 629

24.7 章節小憩..................................................................................................... 635

第25章 造物主的降臨——多遊戲模型的載入............................................................... 636

25.1 格線模型的最佳化........................................................................................... 637

25.2 格線模型的克隆........................................................................................... 639

25.3 檔案模型載入類的設計.................................................................................. 640

25.4 檔案模型載入類的實現.................................................................................. 641

25.5 檔案模型載入類的使用.................................................................................. 645

25.6 示例程式D3Ddemo20.................................................................................. 646

25.7 章節小憩..................................................................................................... 652

第五篇 升華 · 致我們的遊戲開發夢想

第26章 站在巨人肩膀上——遊戲引擎技術導論........................................................... 655

26.1 遊戲引擎的起源、意義和概念........................................................................ 656

26.1.1 遊戲引擎的起源和意義........................................................................ 656

26.1.2 遊戲引擎的概念理解............................................................................ 656

26.1.3 一款完善的遊戲引擎的構成.................................................................. 657

26.1.4 DirectX與遊戲引擎的區別................................................................... 657

26.2 人氣開源遊戲引擎介紹.................................................................................. 657

26.3 遊戲引擎排名的權威榜單一瞥........................................................................ 659

26.4 優秀的免費/開源第一人稱射擊遊戲介紹.......................................................... 661

26.5 關於遊戲引擎的一些思考.............................................................................. 664

26.6 市面上各類遊戲引擎完全列舉........................................................................ 665

附錄A 進階遊戲編程書籍總結與推薦............................................................................ 668

A.1 零基礎遊戲編程學習大體階段概括................................................................... 669

A.2 Windows遊戲編程入門書籍推薦..................................................................... 670

A.3 遊戲編程進階書籍推薦................................................................................... 670

A.3.1 DirectX入門........................................................................................ 670

A.3.2 地形方面............................................................................................. 671

A.3.3 物理方面............................................................................................. 671

A.3.4 數學方面............................................................................................. 672

A.3.5 引擎設計方面....................................................................................... 672

A.3.6 實時渲染方面....................................................................................... 673

A.3.7 圖形學方面.......................................................................................... 673

A.3.8 AI方面................................................................................................ 673

A.3.9 網路方面............................................................................................. 674

A.3.10 系列書籍方面..................................................................................... 674

A.3.11 策劃方面........................................................................................... 675

A.3.12 美工方面........................................................................................... 675

A.3.13 小說&電影......................................................................................... 675

A.3.14 其他.................................................................................................. 676

A.4 開源遊戲原始碼推薦...................................................................................... 676

後記 總有一天你將破蛹而出......................................................................................... 678

編輯推薦

端游開發是目前最熱的職業,報酬豐厚且能實現自己的遊戲夢想。作者歷經一年時間,編寫了這本詳細講解Windows遊戲開發的入門圖書。
《逐夢旅程:Windows遊戲編程之從零開始》由淺入深,從Windows遊戲開發的基本概念開始講解,寓教於樂,每個知識點都配有經典的遊戲源碼作為實例。讓讀者可以從零開始,邊玩邊學,熟練掌握Windows遊戲開發。
《逐夢旅程:Windows遊戲編程之從零開始》涵蓋了市場上最新的DirectX技術,使讀者在第一時間接觸最新、最前沿的遊戲開發技術,同時《逐夢旅程:Windows遊戲編程之從零開始》對目前遊戲市場裡熱門的幾大遊戲引擎都進行了深入淺出的剖析和對比,讓讀者輕鬆邁入遊戲開發的殿堂。
《逐夢旅程:Windows遊戲編程之從零開始》適合Windows遊戲開發的初學者閱讀,也適合作為高等院校和培訓學校相關專業的教學參考書。

致終將由我們去復興的國產遊戲

我們所有的夢想都可以成真,只要我們有勇氣去追求它們(Allour dreams can come true, if we have the courage to pursue them)。

————沃爾特·迪斯尼

依稀記得那還是F4紅遍大街小巷,滿城都飄揚著《流星雨》的年代。

那個時候的電子遊戲,無論是投幣式的街機遊戲,還是網咖里的《反恐精英》、《流星蝴蝶劍》、《仙劍奇俠傳》、《星際爭霸》、《帝國時代》等引領時代的遊戲界的璀璨明珠,總能深深地吸引住每個純真無邪的孩童的心,絢爛的遊戲畫面總是讓孩童們流連忘返。

那個時候,每次放學後唯一單純的想法就是悄悄溜到學校附近的網咖,和電腦遊戲親密接觸。口袋裡有零花錢的時候就能玩上一會兒,沒有零花錢的時候就痴痴地站在螢幕前面看別人操縱著螢幕前的劍俠闖蕩世界。年少的我單純地認為,遊戲世界中存在著一個無比恢弘的世界,那是可以裝下夢想的地方。應該是我對遊戲的痴迷,對遊戲開發夢想的虔誠,讓我走向了研究遊戲開發的這條道路。

還記得那個香樟樹覆蓋的夏天,年幼無知的我在一幫同學中吹牛說:我長大後,一定要自己開發出比這些遊戲還牛、還要好玩的遊戲。

現在想想,這幾年走過的路途,真應了那句話,“現在的努力,都是為了小時候吹過的牛”。

這些年來,在學習遊戲編程的道路上有過驚喜,有過坎坷,有過自豪,有過悵惘,走了不少彎路,最終也算是走上了正途,小有所成。於是,我單曲循環著五月天的《有些事情現在不做一輩子都不會做了》,打開Word,打開Visual Studio,把自己這么多年來的遊戲開發經驗和心得用文字凝聚起來,開始為大家編寫這本書。

而這么一寫,就是一整年。

經過一年夙興夜寐,終於,趕在22歲生日之前,近百萬字的書稿隨著一聲響指而初具雛形。

“謹以此書獻給父母,因養育之恩無以回報;謹以此書獻給母校南京航空航天大學和烏克蘭國立航空航天大學,因賜予我一顆不甘平庸、上下求索的心;謹以此書獻給所有懷揣遊戲開發夢想的人們,因為,你們不是一個人在戰鬥。”

當在書稿的開篇寫下這三個“謹以”的時候,我終於意識到,這一年的夜以繼日,這一年的披星戴月,都是值得的。

然而,因為歲月積累的關係,這本書中滲透的編程思想或許不能和編程界中的泰斗們同日而語。但是我可以捂著胸口說,我把這些年自己悟出來的關於遊戲編程的學習方法和真知灼見,毫無保留地呈現給了大家。大家能看到的眼前的這些文字和代碼,全都是經過一遍又一遍的深思熟慮,一遍又一遍的修改,小心謹慎地敲出來的。

詳細研究過遊戲編程的朋友們都應該有這樣的共識:“中國人寫的書水平上不去,外國人寫的書水平有了,但是翻譯得往往都強差人意,理解不了”。也許正是這個原因,國內遊戲編程的入門門檻一直很高,DirectX一直被人們認為是很難學的。很多懷揣遊戲開發夢想的熱血青年們,信誓旦旦地開始著手學習遊戲編程的時候,往往卻被晦澀難懂的遊戲編程教材拒之夢想門外,碰了一鼻子灰,從此和最初的夢想失之交臂。我想,這或許是導致國產遊戲業界的萎靡,國產遊戲一直很難成長起來的原因之一。

在這樣的環境的激勵下,這本傾注我一年多心血的書出現了,願它能夠改變這樣的現狀。

願這本書,能幫助那些熱愛遊戲編程、懷揣遊戲開發夢想,卻苦於難以入門的人們,讓他們少走彎路。

願這本書,能為國產遊戲、國產遊戲引擎的崛起,開啟一扇門,迎接新的黎明。

我們都還年輕,該做的夢及時去做,該追尋的夢想用力去追尋。

我有一個夢想,將來的某一天,大家都能玩到擁有自己本土文化的優質遊戲。

我有一個夢想,有一天,西遊記能出ACT,讓老外去體會中國文化西遊記中“鬥戰勝佛”的打擊快感,那一定比西方的動作巔峰之作《戰神》、《鬼泣》更加深邃。

我有一個夢想,有一天,上海灘能出沙盒遊戲,而不是玩《GTA》感受美國夢,亦或是玩著《熱血無賴》體驗國外公司強行塞給我們的“中國文化”。

我有一個夢想,有一天,不少3A大作不需要漢化,因為是我們自己的遊戲,配音是中國的,文化也是中國的。

我有一個夢想,將來的某一天,國產遊戲能像中國的其他產業一樣,以一個領跑者的姿態,面對全世界,面對全宇宙,器宇軒昂,揚眉吐氣。

這會是由我們一起去完成的夢想。

等著我們的好訊息!

致謝·不是一個人在戰鬥

首先需要感謝親朋好友在我遠在異國他鄉留學期間創作這本書時,對我的全力支持。沒有他們在精神上的理解、鼓勵和噓寒問暖,一直有著輕微拖延症的我是不可能走出這一步並順利完成書稿的。

父母的養育成就了我這顆不甘平庸的心。追根溯源,本書的出版,是父母用心教育的結晶。養育之恩,沒齒難忘。

這本書起源於我在CSDN部落格上開設的部落格專欄《VisualC++遊戲開發》。沒想到連載引起了不小的反響,網友們普遍覺得我的寫作風格新穎,有趣,喜歡看,甚至每周一都像等待美劇更新一樣等待著文章的更新。正因為眾多網友的支持,才有了我想把自己多年以來的遊戲編程經驗總結成一本書的衝動。非常感謝那么多在部落格中回復與鼓勵我的朋友們。

在寫作的過程中,參考了大量遊戲編程相關的書籍和資料,站在巨人的肩膀上我們才能看得更遠。沒有前輩的貢獻,就沒有本書的出版,在這裡向這些前輩們表示衷心的感激。另外還需要感謝清華大學出版社圖格事業部夏毓彥老師和出版社的相關工作人員,他們對本書的順利出版做出了非常巨大的貢獻。

最後,讓我向所有幫助與支持我的朋友們與同學們真誠地說出那句一直未曾說出口的感謝。

作者簡介

毛星雲,網路暱稱“淺墨”,90後,熱愛遊戲編程的傢伙,有點倔的偽IT文藝青年。因為在CSDN上開設《VisualC++遊戲開發》部落格專欄而被網友熟知,部落格訪問量逾150萬餘人次。本科畢業於烏克蘭國立航空航天大學和南京航空航天大學,目前在南京航空航天大學讀研究生。

每天寫作5小時 一年寫出百萬字

毛星雲出生於1991年,今年剛滿22歲,是個不折不扣的90後。他於2009年進入南航航天學院“中國烏克蘭航天聯合培養班”,經過南航兩年的本科培養順利赴烏克蘭就讀大三大四,並完成本科學業畢業回國。

在烏克蘭留學期間,毛星雲完成了100餘萬字的《逐夢旅程:Windows遊戲編程之從零開始》一書。

部落格記錄成長 訪問量逾百萬

一年多的時間,毛星雲陸續發表了70餘篇原創的部落格文章,這些文章常常因為內容獨到新穎,被奉為佳作推薦至CSDN首頁。記者了解到,毛星雲的部落格開設至今,訪問量已經突破了140萬人次,擁有4000餘名忠實冬粉。他常常被冬粉們稱呼為“淺墨大哥”“淺墨大神”。

WINDOWS遊戲編程之從零開始 WINDOWS遊戲編程之從零開始
WINDOWS遊戲編程之從零開始 WINDOWS遊戲編程之從零開始
WINDOWS遊戲編程之從零開始 WINDOWS遊戲編程之從零開始
WINDOWS遊戲編程之從零開始 WINDOWS遊戲編程之從零開始
WINDOWS遊戲編程之從零開始 WINDOWS遊戲編程之從零開始
WINDOWS遊戲編程之從零開始 WINDOWS遊戲編程之從零開始

相關詞條

相關搜尋

熱門詞條

聯絡我們