首 頁
手機(jī)版

游戲編程權(quán)威指南第4版pdf

游戲編程權(quán)威指南 第4版是一本經(jīng)典的游戲編程入門讀物,由美國程序員麥克沙福瑞和格雷海姆兩人共同編著。本書探討了整個(gè)游戲開發(fā)過程和與創(chuàng)建游戲相關(guān)的挑戰(zhàn)。在對(duì)游戲框架的介紹中,作者探討了現(xiàn)代游戲引擎的主要子系統(tǒng)以及可用于實(shí)際游戲中的專業(yè)技術(shù)。全書內(nèi)容包括可以幫助你組裝編程工具箱的游戲開發(fā)基礎(chǔ)知識(shí);可靠、可運(yùn)行的代碼示例;核心游戲技術(shù),例如3D編程、腳本和游戲音頻;高級(jí)話題和游戲AI、網(wǎng)絡(luò)編程、C#工具等技術(shù)。第4版還擴(kuò)充了前一版的章節(jié),添加了游戲主體、AI、著色器編程、Lua腳本、C#編輯器和其他重要的更新。所有的代碼和示例都經(jīng)過了仔細(xì)的測(cè)試,可以用于商業(yè)級(jí)游戲中,歡迎游戲架構(gòu)設(shè)計(jì)人員閱讀。

內(nèi)容介紹

游戲編程的用戶需求和發(fā)展速度近年來很快,閱讀游戲開發(fā)類圖書的需求也越來越大。本書是一本游戲開發(fā)指南,是開發(fā)、部署、運(yùn)行商業(yè)游戲的讀物。

《游戲編程權(quán)威指南 第4版》分為4個(gè)部分共24章。首部分是游戲編程基礎(chǔ),主要介紹了游戲編程的定義、游戲架構(gòu)等基礎(chǔ)知識(shí)。第二部分是讓游戲跑起來,主要介紹了初始化和關(guān)閉代碼、主循環(huán)、游戲主題和用戶界面等。第三部分是核心游戲技術(shù),主要介紹了一些更為復(fù)雜的代碼示例,如3D編程、游戲音頻、物理和AI編程等。第四部分是高級(jí)知識(shí)和綜合應(yīng)用,主要介紹了網(wǎng)絡(luò)編程、多道程序設(shè)計(jì)和用C#創(chuàng)建工具等,并利用前面所講的知識(shí)開發(fā)出一款簡(jiǎn)單的游戲。本書適合游戲開發(fā)人員、游戲架構(gòu)設(shè)計(jì)人員和游戲引擎用戶參考閱讀,也適合想要進(jìn)入游戲開發(fā)領(lǐng)域的讀者閱讀。

章節(jié)目錄

第1章 什么是游戲編程 1

1.1 好的方面 1

1.1.1 工作 2

1.1.2 游戲玩家 2

1.1.3 同事 3

1.1.4 工具—軟件開發(fā)工具包(SDK) 4

1.1.5 硬件 5

1.1.6 平臺(tái) 6

1.1.7 展會(huì) 9

1.2 不好的地方 9

1.2.1 游戲編程很難 10

1.2.2 零碎文件 10

1.2.3 那不是bug—而是特性 11

1.2.4 工具 12

1.3 黑暗的一面 13

1.3.1 命中移動(dòng)的目標(biāo) 13

1.3.2 加班模式(和加班大餐) 13

1.3.3 呸!胡扯 15

1.3.4 操作系統(tǒng)地獄 15

1.3.5 雇員流動(dòng)的性質(zhì) 16

1.4 這一切都是值得的,對(duì)嗎 16

第2章 游戲中有什么 18

2.1 游戲架構(gòu) 18

2.2 使用游戲架構(gòu) 20

2.3 應(yīng)用層 22

2.3.1 讀取輸入 22

2.3.2 文件系統(tǒng)和資源緩存 22

2.3.3 內(nèi)存管理 23

2.3.4 初始化、主循環(huán)和關(guān)閉 23

2.3.5 其他應(yīng)用層代碼 24

2.4 游戲邏輯 25

2.4.1 游戲狀態(tài)和數(shù)據(jù)結(jié)構(gòu) 25

2.4.2 物理學(xué)和碰撞 26

2.4.3 事件 26

2.4.4 進(jìn)程管理器 27

2.4.5 命令解釋器 28

2.5 人類玩家的游戲視圖 28

2.5.1 圖形顯示 29

2.5.2 音頻 30

2.5.3 用戶界面表示 31

2.5.4 進(jìn)程管理器 31

2.5.5 選項(xiàng) 31

2.5.6 多人游戲 31

2.6 AI代理的游戲視圖 31

2.7 網(wǎng)絡(luò)游戲架構(gòu) 32

2.7.1 遠(yuǎn)程游戲視圖 33

2.7.2 遠(yuǎn)程游戲邏輯 33

2.8 必須使用DirectX嗎 34

2.8.1 DirectX的設(shè)計(jì)理念 34

2.8.2 Direct3D或OpenGL 35

2.8.3 DirectSound還是 35

2.8.4 DirectInput或自己實(shí)現(xiàn) 36

2.9 其他內(nèi)容 36

2.10 補(bǔ)充書目 36

第3章 拯救了我的編碼趣聞和風(fēng)格 37

3.1 通用編碼風(fēng)格 38

3.1.1 大括號(hào) 38

3.1.2 一致性 39

3.2 智能代碼設(shè)計(jì)實(shí)踐 40

3.2.1 避免隱藏代碼和重要操作 41

3.2.2 類結(jié)構(gòu):保持簡(jiǎn)單 42

3.2.3 繼承VS.組合 42

3.2.4 變壞的虛函數(shù) 43

3.2.5 使用接口類 44

3.2.6 考慮使用工廠 45

3.2.7 封裝變化的組件 46

3.2.8 使用流來初始化對(duì)象 46

3.3 智能指針和裸指針 47

3.3.1 引用計(jì)數(shù) 48

3.3.2 C++的shared_ptr 49

3.4 正確使用內(nèi)存 52

3.4.1 了解不同類型的內(nèi)存 53

3.4.2 優(yōu)化內(nèi)存訪問 55

3.4.3 內(nèi)存對(duì)齊 56

3.4.4 虛擬內(nèi)存 57

3.4.5 編寫自己的內(nèi)存管理器 58

3.5 各種有用的東西 59

3.5.1 一個(gè)很棒的隨機(jī)數(shù)生成器 60

3.5.2 集合的偽隨機(jī)遍歷 61

3.5.3 內(nèi)存池 62

3.6 開發(fā)出適合自己的風(fēng)格 67

3.7 補(bǔ)充書目 68

第4章 生成游戲 69

4.1 一個(gè)小動(dòng)機(jī) 69

4.2 創(chuàng)建項(xiàng)目 70

4.2.1 生成配置 70

4.2.2 創(chuàng)建堅(jiān)不可摧的 結(jié)構(gòu) 71

4.2.3 將游戲引擎和工具放在何處 73

4.2.4 設(shè)置Visual Studio生成選項(xiàng) 74

4.2.5 多平臺(tái)項(xiàng)目 76

4.3 源代碼庫和版本控制 77

4.3.1 微軟Visual SourceSafe的相關(guān)歷史 79

4.3.2 Subversion和TortoiseSVN 79

4.3.3 Perforce軟件的Perforce 80

4.3.4 Avid的AlienBrain 81

4.3.5 使用源代碼控制分支 81

4.4 生成游戲:一門黑色藝術(shù) 84

4.4.1 自動(dòng)化生成 85

4.4.2 生成計(jì)算機(jī) 85

4.4.3 自動(dòng)化生成腳本 85

4.5 創(chuàng)建生成腳本 87

4.5.1 標(biāo)準(zhǔn)生成 87

4.5.2 里程碑生成 88

4.5.3 多個(gè)項(xiàng)目和共享代碼 90

4.5.4 最后的建議 91

第5章 游戲初始化和關(guān)閉 92

5.1 初始化101 92

5.2 C++初始化的一些陷阱 93

5.3 游戲的應(yīng)用層 95

5.3.1 WinMain:Windows入口點(diǎn) 95

5.3.2 應(yīng)用層:GameCodeApp 97

5.3.3 InitInstance():檢查系統(tǒng)資源 97

5.3.4 檢查游戲的多個(gè)實(shí)例 98

5.3.5 檢查硬盤空間 99

5.3.6 檢查內(nèi)存 99

5.3.7 計(jì)算CPU速度 100

5.3.8 你擁有的是個(gè)垃圾袋嗎 101

5.3.9 初始化資源緩存 101

5.3.10 加載文本字符串 102

5.3.11 腳本管理器和事件系統(tǒng) 104

5.3.12 初始化DirectX并創(chuàng)建 窗口 104

5.3.13 創(chuàng)建游戲邏輯和游戲視圖 105

5.3.14 設(shè)置游戲保存 105

5.3.15 預(yù)加載從緩存中選定的 資源 106

5.4 收尾工作:干凈漂亮地退出 107

5.4.1 我怎樣才能離開呢 107

5.4.2 強(qiáng)制關(guān)閉模態(tài)對(duì)話框 109

5.4.3 關(guān)閉游戲 110

5.4.4 游戲機(jī)怎么樣 110

5.5 進(jìn)入和退出 111

第6章 游戲主體和組件架構(gòu) 112

6.1 初次嘗試創(chuàng)建游戲主體 112

6.2 組件架構(gòu) 115

6.3 創(chuàng)建主體和組件 116

6.4 定義主體和組件 120

6.5 存儲(chǔ)并訪問主體 122

6.6 將它們組合起來 123

6.7 數(shù)據(jù)共享 124

6.7.1 直接訪問 125

6.7.2 事件 125

6.7.3 兩全其美 126

第7章 主循環(huán)的控制 127

7.1 組織主循環(huán) 127

7.1.1 硬編碼的更新 127

7.1.2 多線程主循環(huán) 128

7.1.3 一種混合技術(shù) 129

7.1.4 簡(jiǎn)單的協(xié)同式多任務(wù)處理器 131

7.1.5 非常簡(jiǎn)單的進(jìn)程示例:DelayProcess 135

7.1.6 Process派生類的使用 137

7.2 良好地適應(yīng)操作系統(tǒng) 137

7.3 使用DirectX 11框架 138

7.3.1 渲染和呈現(xiàn)顯示 138

7.3.2 用于更新和渲染的回調(diào)函數(shù) 139

7.4 我現(xiàn)在可以制作游戲了嗎 141

第8章 游戲數(shù)據(jù)的加載與緩存 142

8.1 游戲資源:格式和存儲(chǔ)要求 143

8.1.1 3D對(duì)象網(wǎng)格和環(huán)境 143

8.1.2 動(dòng)畫數(shù)據(jù) 145

8.1.3 地圖/關(guān)卡數(shù)據(jù) 146

8.1.4 紋理數(shù)據(jù) 146

8.1.5 位圖顏色深度 147

8.1.6 聲音和音樂數(shù)據(jù) 149

8.1.7 視頻和預(yù)渲染的過場(chǎng)動(dòng)畫 150

8.2 資源文件 152

8.2.1 將資源打包到一個(gè)文件中 153

8.2.2 打包資源的其他好處 153

8.2.3 數(shù)據(jù)壓縮和性能 154

8.2.4 Zlib:開源壓縮 154

8.3 資源高速緩存 158

8.3.1 IResourceFile接口 161

8.3.2 ResHandle:跟蹤加載的資源 161

8.3.3 IResourceLoader接口和DefaultResourceLoader 163

8.3.4 ResCache:簡(jiǎn)單的資源高速緩存 163

8.3.5 將資源緩存入DirectX等 169

8.3.6 世界設(shè)計(jì)和高速緩存預(yù)測(cè) 170

8.4 我的緩存不夠用了 173

第9章 輸入設(shè)備編程 174

9.1 獲取設(shè)備狀態(tài) 174

9.2 使用XInput或DirectInput 177

9.3 一些安全提示 179

9.4 使用雙軸控制器 182

9.4.1 捕獲桌面上的鼠標(biāo) 182

9.4.2 使用鼠標(biāo)拖拽 184

9.5 使用游戲控制器 186

9.5.1 非靈敏區(qū) 187

9.5.2 正常輸入 189

9.5.3 單桿、雙桿、紅色拉桿和藍(lán)色拉桿 190

9.5.4 增加控制值 190

9.6 使用鍵盤 191

9.6.1 Mike的鍵盤窺探器 191

9.6.2 GetAsyncKeyState()和其他函數(shù) 195

9.6.3 處理Windows中的Alt鍵 195

9.7 什么?沒有跳舞毯 195

第10章 用戶界面編程 197

10.1 DirectX的文本助手和對(duì)話框資源管理器 197

10.2 人類的游戲視圖 198

10.3 WASD移動(dòng)控制器 206

10.4 屏幕元素 208

10.5 自定義的MessageBox對(duì)話框 210

10.6 模態(tài)對(duì)話框 215

10.7 控件 218

10.8 控件識(shí)別 219

10.9 命中測(cè)試和焦點(diǎn)順序 221

10.10 控件狀態(tài) 222

10.11 更多控件屬性 223

10.11.1 熱鍵 223

10.11.2 工具提示 223

10.11.3 上下文相關(guān)幫助 224

10.11.4 可拖拽 224

10.11.5 聲音和動(dòng)畫 224

10.12 最后的用戶界面提示 225

第11章 游戲事件管理 226

11.1 游戲事件 226

11.1.1 事件和事件數(shù)據(jù) 227

11.1.2 事件監(jiān)聽器委托 230

11.1.3 事件管理器 231

11.1.4 示例:將所有內(nèi)容整合在一起 238

11.2 哪些游戲事件是重要的 239

11.3 事件和進(jìn)程的區(qū)別 241

11.4 補(bǔ)充書目 241

第12章 使用Lua編寫腳本 242

12.1 游戲編程語言的簡(jiǎn)史 242

12.1.1 匯編語言 243

12.1.2 C/C++ 244

12.1.3 腳本語言 245

12.2 使用腳本語言 246

12.2.1 快速原型法 246

12.2.2 專注于設(shè)計(jì) 247

12.2.3 速度和內(nèi)存成本 247

12.2.4 它們之間的界限是什么 247

12.3 腳本語言集成策略 248

12.3.1 自己進(jìn)行編寫 248

12.3.2 使用現(xiàn)有的語言 248

12.3.3 選擇一種腳本語言 249

12.3.4 Python 249

12.3.5 Lua 249

12.4 Lua速成課程 250

12.4.1 注釋 250

12.4.2 變量 250

12.4.3 函數(shù) 252

12.4.4 表 253

12.4.5 流程控制 255

12.4.6 操作符 257

12.4.7 接下來是什么 257

12.5 Lua中的面向?qū)ο缶幊獭?58

12.5.1 元表 259

12.5.2 創(chuàng)建一個(gè)簡(jiǎn)單的類抽象 261

12.6 內(nèi)存管理 263

12.7 將Lua綁定到C++ 263

12.7.1 Lua C API 263

12.7.2 tolua++ 263

12.7.3 luabind 264

12.7.4 LuaPlus 264

12.8 LuaPlus速成課程 264

12.8.1 LuaState 264

12.8.2 LuaObject 265

12.8.3 表 266

12.8.4 全局 267

12.8.5 函數(shù) 268

12.8.6 從Lua調(diào)用C++函數(shù) 269

12.9 將所有內(nèi)容整合在一起 271

12.9.1 管理Lua狀態(tài) 271

12.9.2 腳本導(dǎo)出 273

12.9.3 進(jìn)程系統(tǒng) 274

12.9.4 事件系統(tǒng) 282

12.9.5 腳本組件 287

12.10 Lua開發(fā)和調(diào)試 289

12.11 結(jié)語 289

12.12 補(bǔ)充書目 289

第13章 游戲音頻 290

13.1 聲音的工作原理 290

13.1.1 數(shù)字錄音和重現(xiàn) 291

13.1.2 聲音文件 293

13.1.3 線程和同步的簡(jiǎn)介 293

13.2 游戲語音系統(tǒng)架構(gòu) 294

13.2.1 聲音資源和句柄 295

13.2.2 IAudioBuffer接口和AudioBuffer類 303

13.2.3 IAudio接口和Audio類 305

13.2.4 DirectSound實(shí)現(xiàn) 308

13.2.5 聲音進(jìn)程 317

13.2.6 啟動(dòng)音效 321

13.3 其他技術(shù)難題 322

13.3.1 聲音和游戲?qū)ο蟆?22

13.3.2 定時(shí)和同步 322

13.3.3 混合問題 324

13.4 一些隨記 326

13.4.1 數(shù)據(jù)驅(qū)動(dòng)的聲音設(shè)置 326

13.4.2 背景環(huán)境聲音和音樂 327

13.4.3 語音 328

13.5 結(jié)語 330

第14章 3D圖形基礎(chǔ) 331

14.1 3D圖形流水線 331

14.2 3D數(shù)學(xué)101 332

14.2.1 坐標(biāo)和坐標(biāo)系 333

14.2.2 向量數(shù)學(xué) 335

14.3 C++數(shù)學(xué)類 340

14.3.1 向量類 340

14.3.2 矩陣數(shù)學(xué) 341

14.3.3 四元數(shù)數(shù)學(xué) 351

14.3.4 變換 358

14.3.5 幾何體 360

14.3.6 光照、法線和顏色 361

14.3.7 材質(zhì) 363

14.3.8 貼有紋理的頂點(diǎn) 365

14.3.9 紋理 365

14.3.10 二次采樣 365

14.3.11 mip映射 367

14.3.12 ID3D11Device和ID3D11DeviceContext簡(jiǎn)介 367

14.3.13 在D3D11中加載紋理 368

14.3.14 三角形網(wǎng)格 370

14.4 你還在嗎 373

第15章 3D頂點(diǎn)和像素著色器 374

15.1 頂點(diǎn)著色器和著色器語法 375

15.2 編譯頂點(diǎn)著色器 379

15.3 頂點(diǎn)著色器的C++輔助類 380

15.4 像素著色器 386

15.5 像素著色器的C++輔助類 387

15.6 使用著色器輔助類進(jìn)行渲染 390

15.7 著色器—這只是一個(gè)開始 391

15.8 補(bǔ)充書目 391

第16章 3D場(chǎng)景 392

16.1 場(chǎng)景圖基礎(chǔ) 392

16.1.1 ISceneNode接口類 392

16.1.2 SceneNodeProperties和 RenderPass 394

16.1.3 SceneNode—一切都是從這里開始的 396

16.1.4 Scene類 401

16.2 特殊的場(chǎng)景圖節(jié)點(diǎn) 408

16.2.1 獨(dú)立渲染通道的實(shí)現(xiàn) 408

16.2.2 一個(gè)簡(jiǎn)單的攝像機(jī) 411

16.2.3 在場(chǎng)景中放入燈光 413

16.2.4 天空的渲染 416

16.2.5 在場(chǎng)景中使用網(wǎng)格 420

16.3 遺漏的內(nèi)容 424

16.4 還沒滿足 425

16.5 補(bǔ)充書目 425

第17章 碰撞和簡(jiǎn)單的物理學(xué) 426

17.1 物理學(xué)中的數(shù)學(xué)知識(shí) 427

17.1.1 米、英尺、肘尺還是Kellicam 427

17.1.2 距離、速度和加速度 427

17.1.3 質(zhì)量、加速度和力 428

17.1.4 轉(zhuǎn)動(dòng)慣量、角速度和扭矩 431

17.1.5 距離和交集的計(jì)算 431

17.2 選擇一種物理SDK 432

17.3 對(duì)象屬性 434

17.4 碰撞體 435

17.4.1 良好的碰撞幾何體的要求 436

17.4.2 可見幾何體VS碰撞幾何體 437

17.4.3 人類角色的碰撞體 437

17.4.4 特殊對(duì)象:樓梯、門道和樹 439

17.5 碰撞系統(tǒng)的使用 439

17.6 集成一個(gè)物理SDK 441

17.6.1 Bullet SDK的組件 444

17.6.2 初始化 445

17.6.3 關(guān)閉 446

17.6.4 物理系統(tǒng)的更新 447

17.6.5 創(chuàng)建簡(jiǎn)單的物理對(duì)象 449

17.6.6 凸面網(wǎng)格的創(chuàng)建 451

17.6.7 觸發(fā)器的創(chuàng)建 452

17.6.8 力和力矩的應(yīng)用 453

17.6.9 物理調(diào)試渲染器 454

17.6.10 接收碰撞事件 455

17.6.11 物理SDK集成的最后內(nèi)容 457

17.7 等一下,我還有話要說 458

第18章 游戲AI簡(jiǎn)介 459

18.1 AI技術(shù) 459

18.1.1 硬編碼AI 460

18.1.2 隨機(jī)化 461

18.1.3 加權(quán)隨機(jī) 462

18.2 有限狀態(tài)機(jī) 463

18.3 決策樹 467

18.4 模糊邏輯 471

18.5 效用理論 474

18.6 以目標(biāo)為導(dǎo)向的行動(dòng)計(jì)劃 477

18.7 路徑查找 478

18.7.1 A* (A-Star) 479

18.7.2 動(dòng)態(tài)規(guī)避 481

18.8 補(bǔ)充書目 482

第19章 多玩家游戲的網(wǎng)絡(luò)編程 483

19.1 互聯(lián)網(wǎng)的工作原理 483

19.1.1 Winsock還是Berkeley 484

19.1.2 Internet地址 484

19.1.3 域名系統(tǒng) 486

19.1.4 有用的程序和文件 487

19.2 套接字API 488

19.2.1 套接字效用函數(shù) 488

19.2.2 域名服務(wù)(DNS)函數(shù) 490

19.2.3 套接字初始化和關(guān)閉 491

19.2.4 創(chuàng)建套接字和設(shè)置套接字選項(xiàng) 491

19.2.5 服務(wù)器函數(shù) 495

19.2.6 套接字讀取和寫入 498

19.3 使用套接字制作一款多玩家游戲 499

19.3.1 數(shù)據(jù)包類 500

19.3.2 核心套接字類 501

19.3.3 用于監(jiān)聽的套接字類 506

19.3.4 套接字管理器類 508

19.4 核心客戶端類 515

19.5 核心服務(wù)器端類 516

19.6 將套接字連接到事件系統(tǒng)中 517

19.7 如果真的這么簡(jiǎn)單就好了 522

第20章 多道程序設(shè)計(jì)簡(jiǎn)介 523

20.1 多道程序設(shè)計(jì)是什么 523

20.2 創(chuàng)建線程 525

20.3 進(jìn)程同步 527

20.3.1 測(cè)試與置位、信號(hào)量和互斥 528

20.3.2 Windows臨界區(qū) 528

20.4 有趣的線程問題 530

20.5 線程安全 531

20.6 GameCode4中的多線程類 531

20.6.1 RealtimeProcess類 532

20.6.2 從實(shí)時(shí)進(jìn)程發(fā)送事件 534

20.6.3 接收實(shí)時(shí)進(jìn)程中的事件 537

20.7 Zip文件的后臺(tái)解壓縮 538

20.8 進(jìn)一步工作 540

20.9 關(guān)于硬件 541

20.10 關(guān)于未來 541

20.11 補(bǔ)充書目 542

第21章 “茶壺大戰(zhàn)”游戲 543

21.1 制作游戲 544

21.2 核心類的創(chuàng)建 545

21.2.1 茶壺大戰(zhàn)的應(yīng)用層 545

21.2.2 游戲邏輯 546

21.2.3 人類玩家的游戲視圖 553

21.3 游戲事件 556

21.4 游戲玩法 556

21.4.1 關(guān)卡的加載 557

21.4.2 主體管理器 558

21.4.3 發(fā)送和接收事件 560

21.4.4 進(jìn)程 562

21.5 留給讀者的練習(xí) 563

第22章 C#中簡(jiǎn)單的游戲編輯器 565

22.1 為什么要使用C# 565

22.2 如何將編輯器組合起來 565

22.3 編輯器架構(gòu) 566

22.3.1 應(yīng)用層 566

22.3.2 編輯器的邏輯類 567

22.3.3 編輯器視圖 568

22.3.4 訪問游戲引擎的函數(shù) 569

22.3.5 創(chuàng)建DLL 578

22.3.6 編輯器架構(gòu)的封裝 578

22.4 C#編譯器應(yīng)用程序 579

22.4.1 托管代碼和非托管代碼之間的區(qū)別 580

22.4.2 NativeMethods類 581

22.4.3 Program類 582

22.4.4 MessageHandler類 583

22.5 C#編輯器用戶界面 585

22.5.1 EditorForm類 585

22.5.2 ActorComponentEditor類 595

22.6 后續(xù)工作 603

22.7 補(bǔ)充材料 604

第23章 對(duì)游戲進(jìn)行調(diào)試和分析 605

23.1 處理錯(cuò)誤的藝術(shù) 606

23.2 調(diào)試基礎(chǔ) 607

23.2.1 調(diào)試器的使用 609

23.2.2 安裝Windows符號(hào)文件 611

23.2.3 對(duì)全屏游戲進(jìn)行調(diào)試 612

23.2.4 遠(yuǎn)程調(diào)試 613

23.2.5 對(duì)小存儲(chǔ)器轉(zhuǎn)儲(chǔ)文件(Minidump)進(jìn)行調(diào)試 615

23.3 圖形調(diào)試和著色器調(diào)試 616

23.4 調(diào)試技術(shù) 617

23.4.1 調(diào)試是一次實(shí)驗(yàn) 617

23.4.2 重現(xiàn)bug 619

23.4.3 降低復(fù)雜度 620

23.4.4 設(shè)置下一條語句 620

23.4.5 匯編級(jí)調(diào)試 621

23.4.6 給代碼添加調(diào)料 623

23.4.7 提取調(diào)試信息 624

23.4.8 Lint和其他代碼分析器 625

23.4.9 Nu-Mega的BoundsChecker和運(yùn)行時(shí)分析器 625

23.4.10 消失的bug 625

23.4.11 調(diào)整數(shù)值 626

23.4.12 caveman調(diào)試 626

23.4.13 當(dāng)一切方法都失敗時(shí) 627

23.5 創(chuàng)建錯(cuò)誤日志系統(tǒng) 628

23.6 不同類型的bug 633

23.6.1 內(nèi)存泄漏和堆損壞 634

23.6.2 游戲數(shù)據(jù)損壞 637

23.6.3 堆棧損壞 638

23.6.4 剪切和粘貼bug 639

23.6.5 空間不足 639

23.6.6 只在發(fā)布模式(Release Mode)中出現(xiàn)的bug 640

23.6.7 惹是生非的多線程 640

23.6.8 奇怪的bug 641

23.7 性能分析 642

23.7.1 性能的測(cè)量 642

23.7.2 代碼的優(yōu)化 642

23.7.3 折中方案 643

23.7.4 過度優(yōu)化 644

23.8 結(jié)束小思 644

23.9 補(bǔ)充書目 644

第24章 駛向結(jié)束 645

24.1 問題的整理 645

24.1.1 質(zhì)量 646

24.1.2 代碼 650

24.1.3 內(nèi)容 653

24.2 應(yīng)付大麻煩 655

24.2.1 項(xiàng)目進(jìn)度嚴(yán)重拖延 655

24.2.2 人事相關(guān)問題 661

24.2.3 競(jìng)爭(zhēng)對(duì)手會(huì)置你于死地 662

24.2.4 到底有沒有出路 663

24.2.5 最后一個(gè)建議: 不要驚慌 664

24.3 光明就在前方—畢竟這不是一場(chǎng)訓(xùn)練 664

24.3.1 測(cè)試存檔 664

24.3.2 補(bǔ)丁build或產(chǎn)品演示 665

24.3.3 事后分析 665

24.3.4 如何利用你的時(shí)間 666

免責(zé)聲明:

來源于網(wǎng)絡(luò),僅用于分享知識(shí),學(xué)習(xí)和交流!請(qǐng)下載完在24小時(shí)內(nèi)刪除。

禁用于商業(yè)用途!請(qǐng)購買正版,謝謝合作。

使用說明

1、下載并解壓,得出pdf文件

2、如果在電腦上打不開pdf文件,別著急,那么您需要先在電腦上下載一個(gè)pdf閱讀軟件

3、有pdf閱讀文件直接雙擊即可打開pdf文件

收起介紹展開介紹
  • 下載地址
游戲編程權(quán)威指南第4版pdf

有問題? 點(diǎn)此報(bào)錯(cuò)

發(fā)表評(píng)論

0條評(píng)論

熱門推薦