Windows遊戲編程大師技巧(第2版)

《Windows遊戲編程大師技巧(第2版)》是2022年人民郵電出版社出版的圖書。

基本介紹

  • 中文名:Windows遊戲編程大師技巧(第2版)
  • 作者:André LaMothe 
  • 譯者:沙鷹
  • 出版時間:2022年2月1日
  • 出版社:人民郵電出版社
  • ISBN:9787115292483
內容簡介,圖書目錄,

內容簡介

  《Windows遊戲編程大師技巧(第 2版)》是遊戲程式設計師André LaMothe的代表作。
  全書分為4個部分,總計15章和6個附錄。作者循循善誘地從程式設計的角度介紹了在Windows環境下進行遊戲開發所需的全部知識,包括Win32編程以及DirectX中所有主要組件(包括DirectDraw、DirectSound、DirectInput和DirectMusic)。書中還用單獨的章節詳細講授了2D圖形學和光柵化技術、遊戲算法、多執行緒編程、文本遊戲和解析、人工智慧(包括模糊邏輯、神經網路和遺傳算法)、物理建模(完全碰撞反應、動量傳遞和正反向運動學)及實時模擬等遊戲程式開發中的關鍵技術。附錄部分介紹了本書光碟的內容,如何安裝DirectX,回顧了數學和三角學的基礎知識、C++編程的基礎知識,還給出了遊戲編程資源以及ASCII表。
  《Windows遊戲編程大師技巧(第 2版)》所附光碟上帶有本書中所有程式的原始碼、關於Direct3D和General 3D的文章和線上書籍以及眾多免費的素材。
  《Windows遊戲編程大師技巧(第 2版)》適合想要學習Windows遊戲編程的人員閱讀,對於有一定經驗的專業遊戲開發人員,也具有較高的參考價值。

圖書目錄

第 一部分 Windows編程基礎
第 1章 學海無涯 2
1.1 歷史一瞥 2
1.2 設計遊戲 5
1.3 遊戲類型 5
1.4 集思廣益 6
1.5 設計文檔和情節串聯圖板 6
1.6 使遊戲具有趣味性 7
1.7 遊戲的構成 7
1.8 常規遊戲編程指導規範 11
1.9 使用工具 14
1.10 從準備到完成——使用編譯器 15
1.11 示例:FreakOut 17
1.12 小結 30
第 2章 Windows編程模型 31
2.1 Windows的起源 31
2.1.1 早期版本的Windows 31
2.1.2 Windows 3.x 32
2.1.3 Windows 95 32
2.1.4 Windows 98 33
2.1.5 Windows ME 33
2.1.6 Windows XP 33
2.1.7 Windows NT/2000 33
2.1.8 Windows 基本架構:Win9X/NT 34
2.2 多任務和多執行緒 34
2.2.1 獲取執行緒的信息 34
2.2.2 事件模型 36
2.3 按照微軟風格編程:匈牙利符號表示法 37
2.3.1 變數的命名 38
2.3.2 函式的命名 38
2.3.3 類型和常量的命名 38
2.3.4 類的命名 38
2.3.5 參數的命名 39
2.4 世界上**簡單的Windows程式 39
2.4.1 總是從WinMain()開始 40
2.4.2 程式剖析 41
2.4.3 選擇一個信息框 42
2.5 現實中的Windows應用程式 44
2.6 Windows類 45
2.7 註冊Windows類 50
2.8 創建視窗 50
2.9 事件處理程式 52
2.10 主事件循環 57
2.11 產生一個實時事件循環 60
2.12 打開多個視窗 61
2.13 小結 63
第3章 高 級Windows編程 64
3.1 使用資源 64
3.1.1 整合資源 66
3.1.2 使用圖示資源 66
3.1.3 使用游標資源 68
3.1.4 創建字元串表資源 71
3.1.5 使用.WAV聲音資源 73
3.1.6 使用編譯器創建.RC檔案 76
3.2 使用選單 77
3.2.1 創建選單 77
3.2.2 裝載選單 79
3.2.3 回響選單事件訊息 82
3.3 GDI(圖形設備接口)簡介 86
3.3.1 重拾WM_PAINT信息 86
3.3.2 視頻顯示基礎和色彩(Video Display Basics and Color) 90
3.3.3 RGB和調色板模式 91
3.3.4 基本文本顯示 92
3.4 處理重要事件 97
3.4.1 Windows操作 97
3.4.2 處理鍵盤事件 101
3.4.3 處理滑鼠事件 107
3.5 自行傳送訊息 109
3.6 小結 111
第4章 Windows GDI、控制項和靈感 112
4.1 高 級GDI繪圖 112
4.1.1 掀開圖形設備描述表的蓋頭來 112
4.1.2 顏色、畫筆和畫刷 113
4.1.3 使用畫筆 114
4.1.4 使用畫刷 116
4.2 點、線、平面多邊形和圓 117
4.2.1 繪製點 118
4.2.2 繪製線段 119
4.2.3 繪製矩形 120
4.2.4 繪製圓 122
4.2.5 繪製多邊形 123
4.3 深入文本和字型 124
4.4 定時高於一切 125
4.4.1 WM_TIMER訊息 125
4.4.2 低層定時操作 127
4.5 使用控制項 130
4.5.1 按鈕 131
4.5.2 向子控制項傳送訊息 133
4.6 獲取信息 136
4.7 T3D遊戲控制台程式 141
4.8 小結 145
第 二部分 DirectX和2D基礎
第5章 DirectX基礎知識和令人生畏的COM 148
5.1 DirectX基礎 148
5.1.1 HEL和HAL 150
5.1.2 更多的DirectX基礎類 151
5.2 COM:是微軟的傑作,還是魔鬼的傑作 153
5.2.1 COM對象是什麼 154
5.2.2 接口標識符和GUID的詳細內容 156
5.2.3 創建一個類COM對象 157
5.2.4 COM的簡要回顧 158
5.2.5 可運行的COM程式 159
5.3 套用DirectX COM對象 162
5.3.1 COM和函式指針 163
5.3.2 創建和使用DirectX界面 166
5.3.3 接口查詢 167
5.4 COM的前景 168
5.5 小結 169
第6章 初次邂逅DirectDraw 170
6.1 DirectDraw的接口 170
6.1.1 接口的特性 170
6.1.2 組合使用接口 172
6.2 創建DirectDraw對象 173
6.2.1 對DirectDraw進行錯誤處理 173
6.2.2 順便提一下接口 174
6.3 與Windows協作 177
6.4 設定模式 180
6.5 色彩的奧秘 182
6.6 創建顯示表面 185
6.6.1 創建一個主顯示表面 186
6.6.2 關聯調色板 192
6.6.3 繪製像素 192
6.6.4 清理資源 201
6.7 小結 202
第7章 高 級DirectDraw和點陣圖圖形 203
7.1 使用高彩模式 203
7.1.1 16位高彩模式 204
7.1.2 獲取像素格式 205
7.1.3 24/32位真彩色模式 211
7.2 雙緩衝 213
7.3 表面動態 217
7.4 頁面切換 220
7.5 顯存塊移動單元(Blitter) 225
7.5.1 使用Blitter進行記憶體填充 227
7.5.2 從一個表面向另一個表面複製點陣圖 232
7.6 基礎裁剪知識 235
7.6.1 將像素按視口裁剪 235
7.6.2 點陣圖裁剪技巧 236
7.6.3 使用IDirectDrawClipper進行DirectDraw裁剪 241
7.7 使用點陣圖 245
7.7.1 載入.BMP檔案 245
7.7.2 使用點陣圖 250
7.7.3 載入8位點陣圖 251
7.7.4 載入16位點陣圖 252
7.7.5 載入24位點陣圖 252
7.7.6 總結點陣圖 253
7.8 離屏表面 253
7.8.1 創建離屏表面 253
7.8.2 在離屏表面上進行Blitting 254
7.8.3 設定Blitter 255
7.8.4 色彩鍵 255
7.8.5 源色彩鍵 256
7.8.6 目標色彩鍵 258
7.8.7 使用Blitter(終於!) 259
7.9 點陣圖的旋轉和縮放 260
7.10 離散採樣理論 261
7.11 色彩效果 265
7.11.1 256色模式下的色彩動畫 265
7.11.2 256色模式下的色彩旋轉 270
7.11.3 使用RGB模式的技巧 271
7.12 手動色彩變換及查詢表 272
7.13 新的DirectX色彩和Gamma控制接口 272
7.14 將GDI和DirectX聯用 273
7.15 DirectDraw的廬山真面目 275
7.15.1 主DirectDraw對象 275
7.15.2 關於表面 277
7.15.3 使用調色板 277
7.16 在視窗模式下使用DirectDraw 278
7.17 小結 285
第8章 矢量光柵化及2D變換 286
8.1 繪製線條 286
8.1.1 Bresenham算法 287
8.1.2 算法的速度最佳化 292
8.2 基本2D圖形裁剪 294
8.2.1 利用點斜式計算兩條直線的交點 295
8.2.2 利用一般式計算兩條直線的交點 297
8.2.3 利用矩陣式計算兩條直線的交點 297
8.2.4 裁剪直線 299
8.2.5 Cohen-Sutherland算法 300
8.3 線框多邊形 306
8.3.1 多邊形數據結構 307
8.3.2 多邊形的繪製及裁剪 308
8.4 2D平面里的變換 310
8.4.1 平移 310
8.4.2 旋轉 312
8.4.3 縮放 319
8.5 矩陣引論 320
8.5.1 單位矩陣 322
8.5.2 矩陣加法 322
8.5.3 矩陣乘法 323
8.5.4 使用矩陣進行變換 325
8.6 平移 326
8.7 縮放 327
8.8 旋轉 327
8.9 填充實心多邊形 329
8.9.1 三角形和四邊形類型 330
8.9.2 繪製三角形和四邊形 332
8.9.3 三角形解構詳述 334
8.9.4 四邊形光柵化的一般性討論 341
8.9.5 多邊形的三角化 341
8.10 多邊形碰撞檢測 345
8.10.1 接近度、邊界球/圓 345
8.10.2 邊界盒 348
8.10.3 點包含 350
8.11 深入定時和同步 351
8.12 捲軸和搖鏡頭 353
8.12.1 頁面捲軸引擎 353
8.12.2 均勻平鋪(Tile)顯示引擎 354
8.12.3 稀疏點陣圖平鋪顯示引擎 358
8.13 偽3D等軸測引擎 359
8.13.1 方法1:基於單元,全二維 359
8.13.2 方法2:基於全螢幕,具有一些二維或三維的碰撞網路 361
8.13.3 方法3:採用全三維數學運算,使用一個固定的相機視角 362
8.14 T3DLIB1函式館 363
8.14.1 引擎架構 363
8.14.2 新的遊戲編程控制台程式 364
8.14.3 基本定義 370
8.14.4 可用的宏 371
8.14.5 數據類型和結構 372
8.14.6 全局定義 375
8.14.7 DirectDraw接口 376
8.14.8 2D多邊形函式 379
8.14.9 2D基本圖元函式 381
8.14.10 數學和誤差函式 385
8.14.11 點陣圖函式 386
8.14.12 調色板函式 390
8.14.13 實用工具函式 392
8.15 BOB引擎 393
8.16 小結 400
第9章 DirectInput輸入和力反饋 401
9.1 輸入循環 401
9.2 DirectInput序曲 402
9.2.1 DirectInput組件 404
9.2.2 設定DirectInput的一般步驟 404
9.2.3 數據採集模式 405
9.2.4 創建主DirectInput對象 406
9.2.5 101鍵盤 407
9.2.6 讀數據過程中的問題:重獲取 413
9.2.7 捕捉滑鼠 414
9.2.8 使用遊戲桿 418
9.2.9 將輸入訊息化 428
9.3 力反饋 431
9.3.1 力反饋的物理原理 431
9.3.2 設定力反饋 431
9.3.3 力反饋演示程式 432
9.4 編寫一個廣泛適用的輸入系統:T3DLIB2.CPP 433
9.5 小結 437
第 10章 用DirectSound和DirectMusic演奏樂曲 438
10.1 在PC上對聲音編程 438
10.2 從此有了聲音… 439
10.3 數碼聲音與MIDI比較——音質好且存儲省 441
10.3.1 數碼聲音——從“位”開始 442
10.3.2 合成聲音與MIDI 443
10.3.3 MIDI概述 444
10.4 發聲硬體 444
10.4.1 波表合成 444
10.4.2 波導合成 445
10.5 數碼錄音:設備和技術 445
10.5.1 錄製聲音 446
10.5.2 處理聲音 446
10.6 DirectSound中的麥克風 446
10.7 初始化DirectSound 448
10.7.1 理解協作等級 449
10.7.2 設定協作等級 450
10.8 主聲音緩衝區與輔助聲音緩衝區 450
10.8.1 使用輔助緩衝區 450
10.8.2 創建輔助聲音緩衝區 451
10.8.3 把數據寫入輔助聲音緩衝區 453
10.9 渲染聲音 454
10.9.1 播放聲音 455
10.9.2 停止播放 455
10.9.3 控制音量 455
10.9.4 調整頻率 456
10.9.5 調整聲道平衡 456
10.10 用DirectSound反饋信息 456
10.11 從磁碟中讀取聲音數據 458
10.11.1 .WAV檔案格式 458
10.11.2 讀取.WAV檔案 458
10.12 DirectMusic:偉大的試驗 462
10.13 DirectMusic的體系結構 463
10.14 初始化DirectMusic 464
10.14.1 初始化COM 464
10.14.2 創建一個演奏對象 464
10.14.3 給演奏對象增加連線埠 465
10.15 載入一個MIDI段 466
10.15.1 創建一個載入程式 466
10.15.2 載入MIDI檔案 466
10.16 操作MIDI段 469
10.16.1 播放一個MIDI段 469
10.16.2 停止一個MIDI段 469
10.16.3 檢查MIDI段的狀態 469
10.16.4 釋放一個MIDI段 470
10.16.5 關閉DirectMusic 470
10.16.6 一些DirectMusic的實例 470
10.17 T3DLIB3聲音和樂曲庫 470
10.17.1 頭檔案 471
10.17.2 類型 471
10.17.3 全局變數 472
10.17.4 DirectSound API封裝 472
10.17.5 DirectMusic API封裝 476
10.18 小結 478
第三部分 核心遊戲編程
第 11章 算法、數據結構、 記憶體管理和多執行緒 480
11.1 數據結構 480
11.1.1 靜態結構和數組 480
11.1.2 鍊表 481
11.2 算法分析 487
11.3 遞歸 489
11.4 樹結構 490
11.4.1 建立二分查找樹(BST) 493
11.4.2 搜尋BST 495
11.5 最佳化理論 497
11.5.1 運用你的頭腦 497
11.5.2 數學技巧 498
11.5.3 定點運算 499
11.5.4 循環體展開 502
11.5.5 查找表 502
11.5.6 彙編語言 503
11.6 製作演示 504
11.6.1 預先記錄的演示 504
11.6.2 由人工智慧控制的演示 505
11.7 保存遊戲的手段 505
11.8 實現多人遊戲 506
11.8.1 輪流 506
11.8.2 分屏 506
11.9 多執行緒編程技術 507
11.9.1 多執行緒編程的術語 508
11.9.2 為何要在遊戲中使用執行緒 509
11.9.3 取得一個執行緒 510
11.9.4 執行緒間的訊息傳遞 516
11.9.5 等待合適時機 520
11.9.6 多執行緒和DirectX 526
11.9.7 高 級多執行緒編程 526
10.10 小結 527
第 12章 人工智慧 528
12.1 人工智慧初步 528
12.2 確定性AI算法 529
12.2.1 隨機運動 530
12.2.2 跟蹤算法 531
12.2.3 反跟蹤:閃避算法 534
12.3 模式以及基本控制腳本的編寫 535
12.3.1 基本模式 535
12.3.2 具備條件邏輯處理的模式 539
12.4 行為狀態系統建模 540
12.4.1 基本狀態機 541
12.4.2 加入更多表現個性的行為 544
12.5 用軟體對記憶和學習進行建模 546
12.6 計畫樹和決策樹 548
12.6.1 計畫編程 549
12.6.2 實現真正的計畫生成器 552
12.7 尋路 553
12.7.1 試探法(Trial and Error) 554
12.7.2 輪廓跟蹤 555
12.7.3 碰撞規避跟蹤 555
12.7.4 路點尋路 556
12.7.5 一個賽車例子 559
12.7.6 可靠的尋路 559
12.8 高 級AI腳本 563
12.8.1 設計腳本語言 563
12.8.2 使用C/C++編譯器 565
12.9 人工神經網路 568
12.10 遺傳算法 571
12.11 模糊邏輯 573
12.11.1 普通集合論 573
12.11.2 模糊集合理論 574
12.11.3 模糊語言變數及其規則 575
12.11.4 模糊流形與成員關係 577
12.11.5 模糊關聯矩陣 581
12.11.6 用模糊化的輸入處理FAM 583
12.11.7 暖融融 589
12.12 為遊戲創造真正的AI 589
12.13 小結 589
第 13章 基本物理建模 590
13.1 基本物理學定律 591
13.1.1 質量(m) 591
13.1.2 時間(t) 591
13.1.3 位置(s) 592
13.1.4 速率(v) 593
13.1.5 加速度(a) 594
13.1.6 力(F) 597
13.1.7 多維空間中的力 598
13.1.8 動量(P) 598
13.2 線性動量的物理性質:守恆與傳遞 599
13.3 模擬萬有引力效果 601
13.3.1 模擬重力井 603
13.3.2 模擬炮彈彈道 604
13.4 討厭的摩擦力 607
13.4.1 摩擦基本概念 607
13.4.2 斜面上的摩擦力(高 級) 609
13.5 基本的特殊碰撞反應 611
13.5.1 簡單的x,y反彈物理 611
13.5.2 計算任意方向上的平面碰撞反應 614
13.5.3 矢量反射示例 616
13.5.4 線段的交點 617
13.6 實際2D物體間的精 確碰撞回響(高 級) 621
13.7 解決n-t坐標系統 624
13.8 簡單運動學 630
13.8.1 求解正向運動學問題 631
13.8.2 解決反向運動學問題 633
13.9 粒子系統 634
13.9.1 每顆粒子都需要的東西 635
13.9.2 設計粒子引擎 635
13.9.3 粒子引擎軟體 636
13.9.4 產生初始條件 640
13.9.5 整合微粒系統 642
13.10 創建遊戲的物理模型 643
13.10.1 物理建模的數據結構 643
13.10.2 基於幀的模擬與基於時間的模擬 643
13.11 小結 645
第 14章 文字時代 646
14.1 什麼是文字遊戲 647
14.2 文字遊戲如何工作 647
14.3 從外部世界獲得輸入 650
14.4 語言分析和解析 651
14.4.1 詞法分析 655
14.4.2 句法分析 660
14.4.3 語義分析 662
14.5 組成遊戲世界 663
14.5.1 表示場景 663
14.5.2 放置物體 665
14.5.3 讓事情發生 666
14.5.4 自由移動 666
14.5.5 物品系統 666
14.6 實現視覺、聽覺和嗅覺 666
14.6.1 聽覺 667
14.6.2 嗅覺 668
14.6.3 視覺 668
14.7 實時回響 670
14.8 錯誤處理 671
14.9 造訪Shadow Land 671
14.10 Shadow Land中使用的語言 671
14.11 編譯和運行Shadow Land 673
14.12 小結 674
第 15章 綜合運用 675
15.1 Outpost的設計初稿 675
15.1.1 遊戲背景 675
15.1.2 設計遊戲玩法 676
15.2 用於編寫遊戲的工具 676
15.3 遊戲場景:在太空中捲動 677
15.4 玩家控制的飛船:鬼怪號 678
15.5 小行星帶 680
15.6 敵人 681
15.6.1 邊哨(Outpost) 681
15.6.2 捕食者太空雷 682
15.6.3 戰艦 682
15.7 “寶物” 685
15.8 HUD 685
15.9 粒子系統 688
15.10 玩遊戲 689
15.11 編譯Outpost 689
15.12 結束語 690
第四部分 附錄
附錄A 光碟內容簡介 694
附錄B 安裝DirectX和使用C/C++編譯器 696
附錄C 數學和三角學回顧 699
附錄D C++入門 709
附錄E 遊戲編程資源 727
附錄F ASCII表 731
check!

熱門詞條

聯絡我們