概述
本書將幫助想要“開發屬於自己的遊戲”的人實現原望,也為專業人士提供一些參考資料。書中內容包括用於運行遊戲的Windows應用程式編程,目前流行的遊戲開發接口DirectDraw、DirectInput和DirectSound的編程,尋路系統、人工智慧、戰鬥系統、地圖編輯器等和遊戲開發相關的知識。
本書主要介紹了遊戲開發的基本過程。同時為每一過程提供了強有力的例子。本書的最大特點就是實踐性強。全書同一具遊戲例子貫穿始始,基於這個遊戲例子,讀者可以馬上做出屬於自己的遊戲。
目錄
第1章概述 1
1.1遊戲簡史 1
1.2遊戲設計的要素 2
1.2.1策劃 2
1.2.2程式 4
1.2.3美工 4
1.2.4音效 4
1.3DirectX簡介 5
1.3.1DirectDraw 5
1.3.2Direct3D 5
1.3.3DirectSound 6
1.3.4DirectMusic6
1.3.5DirectInput 6
1.3.6DirectPlay6
1.3.7DirectSetup 6
1.4玩者對象的考慮 6
1.4.1學齡前(6歲以下) 7
1.4.2國小早期階段(5~8歲) 7
1.4.3國小階段(7~11歲) 7
1.4.4青少年階段(12~16歲) 7
1.4.5青年階段(16~24歲) 8
1.4.6成人階段(22歲以上) 8
1.5遊戲的界面設計 8
1.6人工智慧 9
1.7場景結構 10
1.7.1場景的生成方式 10
1.7.2地面描述數據 10
1.7.3地形描述數據 11
1.7.4地面對象描述數據 12
1.8場景描述數據的生成 12
1.9本章小結 13
第2章遊戲的Windows代碼 14
2.1視窗與視窗類 14
2.1.1註冊視窗類 14
2.1.2Windows視窗的創建 15
2.2訊息機制 18
2.3訊息處理函式 19
2.4代碼整理 20
2.4.1定義CApplication類 20
2.4.2初始化變數 23
2.4.3創建應用程式視窗 25
2.4.4主視窗的訊息處理 28
2.4.5默認的訊息循環機制 31
2.5具體套用 32
2.5.1創建特定屬性的視窗 32
2.5.2載入圖示和游標 36
2.5.3使用選單和對話框 38
2.6本章小結 44
第3章DirectDraw環境 45
3.1基本概念 45
3.1.1點陣圖 45
3.1.2表面(Surface) 47
3.1.3位塊 47
3.1.4RGB值 48
3.2使用DirectDraw的一般步驟 48
3.2.1一般步驟 48
3.2.2創建DirectDraw對象 49
3.2.3設定協作等級 50
3.2.4設定顯示模式 52
3.2.5創建主表面 53
3.2.6創建後台翻轉表面 54
3.2.7翻轉顯示(Flip) 56
3.2.8代碼整理 56
3.3高級DirectDraw 64
3.3.1載入點陣圖到表面 65
3.3.2表面間的位塊傳送(Bit blocktransfer) 70
3.3.3不規則外形的圖像表示 75
3.3.4裁剪器 78
3.3.5設備性能查詢 81
3.3.6添加功能 85
3.4DirectDraw的具體套用 90
3.5本章小結 94
第4章DirectInput互動 95
4.1建立DirectInput的一般步驟 95
4.2建立DirectInput 95
4.2.1創建DirectInput對象 96
4.2.2創建輸入設備 96
4.2.3設定數據格式 97
4.2.4設定協作等級 98
4.2.5設定緩衝數據方式的緩衝區大小 99
4.2.6獲得設備的訪問權 101
4.3檢索設備的數據 101
4.3.1檢索立即數據 101
4.3.2檢索緩衝數據 105
4.4代碼整理 108
4.4.1歸類 108
4.4.2初始化和釋放資源 112
4.4.3輸入設備的整體操作 116
4.4.4初始化鍵盤設備 118
4.4.5檢索鍵盤狀態 121
4.4.6初始化滑鼠設備 123
4.4.7檢索滑鼠狀態 126
4.4.8輸入設備查詢 130
4.5套用示例 134
4.6本章小結 145
第5章聲音的播放 146
5.1預備知識 146
5.2波形聲音檔案(WAVE) 147
5.3DirectSound的建立 148
5.3.1DirectSound的初始化 148
5.3.2創建次級緩衝區 149
5.4建立CDSound類 151
5.5DirectSound的使用 156
5.5.1構造與析構 156
5.5.2設定初始化屬性 159
5.5.3DirectSound操作流程 160
5.5.4載入波形檔案數據 164
5.6靜態緩衝區的相關操作 166
5.6.1設定靜態緩衝區的個數 166
5.6.2靜態緩衝區的鎖定、創建和釋放 167
5.6.3靜態緩衝區的播放控制 171
5.6.4靜態緩衝區的聲音屬性調節 175
5.6.5獲取靜態緩衝區 181
5.7流式緩衝區的相關操作 181
5.7.1流式緩衝區的結構 182
5.7.2設定流式緩衝區的個數 184
5.7.3流式緩衝區的創建、清空和釋放 185
5.7.4流式緩衝區的播放控制 190
5.7.5調節整個流式數據的播放游標 195
5.7.6設定流式緩衝區的音量 198
5.7.7給流式緩衝區載入數據 200
5.8套用示例 204
5.9本章小結 212
第6章基本框架 213
6.1初步策劃 213
6.1.1遊戲劇情 213
6.1.2遊戲規則 214
6.1.3怪物種類 214
6.1.4角色的屬性 214
6.1.5物品 215
6.1.6地面類型及地面對象 215
6.1.7戰鬥系統 215
6.1.8角色以及怪物的表現要求 215
6.1.9遊戲的表現角度 216
6.2圖片的製作 216
6.3角色動畫 217
6.3.1動畫的表現 217
6.3.2角色動畫演示 217
6.4場景 225
6.4.1表現場景 225
6.4.2場景移動與轉換演示 226
6.5立體效果 237
6.5.1立體效果的表現 238
6.5.2場景立體效果演示 241
6.6本章小結 252
第7章尋路算法 253
7.1A-Star尋路算法 253
7.1.1模仿人類的搜尋 253
7.1.2地形的表示 255
7.1.3兩種搜尋方式的模擬 255
7.2生成算法 258
7.2.1建立CGetPath類 258
7.2.2輔助函式和初始化 261
7.2.3求“八個方塊” 263
7.2.4求“近”方塊 267
7.2.5bresenham算法268
7.2.6求路徑的末端 272
7.2.7“步”的檢測 273
7.2.8“步”的下移 274
7.2.9路徑的樣式 276
7.2.10刪除路徑 278
7.2.11半吸附式搜尋 279
7.2.12吸附式搜尋 282
7.2.13吸附式和半吸附式的結合搜尋 284
7.2.14綜合尋路 286
7.3尋路算法的使用 292
7.4本章小結 300
第8章生成遊戲 301
8.1文字顯示系統 301
8.1.1獲得表面的設備內容 301
8.1.2建立文字顯示類 302
8.1.3使用CText類 310
8.2定義遊戲類 313
8.3生成遊戲 319
8.3.1輔助成員 319
8.3.2遊戲的開始畫面 322
8.3.3保存角色數據 324
8.3.4載入角色數據 325
8.3.5生成場景 326
8.3.6刪除場景 327
8.3.7恢復變數 329
8.3.8場景轉換 329
8.3.9升級系統 332
8.3.10角色的行為 332
8.3.11怪物的行為 336
8.3.12顯示實體以及文字 340
8.3.13遊戲進程 343
8.3.14獲取輸入設備狀態和更新螢幕 344
8.4遊戲演示 345
8.5本章小結 348
第9章地圖編輯器 349
9.1編輯 349
9.2定義編輯類CEdit349
9.3場景屬性描述的設定 355
9.4地面的編輯 355
9.4.1地面的構成方式 355
9.4.2選擇編輯方塊 357
9.4.3編輯地面 358
9.4.4獲得地面方塊的源位置 360
9.5對象的編輯 362
9.5.1編輯對象 362
9.5.2添加對象 363
9.5.3刪除對象 365
9.6編輯開關區域 366
9.7編輯角色出現區域 367
9.8數據的保存與載入 368
9.8.1保存場景數據 368
9.8.2載入場景數據 369
9.9編輯器進程 370
9.10生成編輯器 371
9.11載入場景檔案到遊戲 379
9.12本章小結 381