第一部分Windows編程基礎
第1章學海無涯
1.1曆史一瞥
1.2設計遊戲
1.3遊戲類型
1.4集思廣益
1.5設計文檔和情節串聯圖闆
1.6使遊戲具有趣味性
1.7遊戲的構成
1.8常規遊戲編程指導規範
1.9使用工具
1.10從準備到完成——使用編譯器
1.11示例:FreakOut
1.12小結
第2章Windows編程模型
2.1Windows的起源
2.1.1早期版本的Windows
2.1.2Windows3.x
2.1.3Windows95
2.1.4Windows98
2.1.5WindowsME
2.1.6WindowsXP
2.1.7WindowsNT/2000
2.1.8Windows基本架構:Win9X/NT
2.2多任務和多綫程
2.2.1獲取綫程的信息
2.2.2事件模型
2.3按照微軟風格編程:匈牙利符號錶示法
2.3.1變量的命名
2.3.2函數的命名
2.3.3類型和常量的命名
2.3.4類的命名
2.3.5參數的命名
2.4世界上最簡單的Windows程序
2.4.1總是從WinMain()開始
2.4.2程序剖析
2.4.3選擇一個信息框
2.5現實中的Windows應用程序
2.6Windows類
2.7注冊Windows類
2.8創建窗口
2.9事件處理程序
2.10主事件循環
2.11産生一個實時事件循環
2.12打開多個窗口
2.13小結
第3章高級Windows編程
3.1使用資源
3.1.1整閤資源
3.1.2使用圖標資源
3.1.3使用光標資源
3.1.4創建字符串錶資源
3.1.5使用.WAV聲音資源
3.1.6使用編譯器創建.RC文件
3.2使用菜單
3.2.1創建菜單
3.2.2裝載菜單
3.2.3響應菜單事件消息
3.3GDI(圖形設備接口)簡介
3.3.1重拾WM_PAINT信息
3.3.2視頻顯示基礎和色彩(VideoDisplayBasicsandColor)
3.3.3RGB和調色闆模式
3.3.4基本文本顯示
3.4處理重要事件
3.4.1Windows操作
3.4.2處理鍵盤事件
3.4.3處理鼠標事件
3.5自行發送消息
3.6小結
第4章WindowsGDI、控件和靈感
4.1高級GDI繪圖
4.1.1掀開圖形設備描述錶的蓋頭來
4.1.2顔色、畫筆和畫刷
4.1.3使用畫筆
4.1.4使用畫刷
4.2點、綫、平麵多邊形和圓
4.2.1繪製點
4.2.2繪製綫段
4.2.3繪製矩形
4.2.4繪製圓
4.2.5繪製多邊形
4.3深入文本和字體
4.4定時高於一切
4.4.1WM_TIMER消息
4.4.2低層定時操作
4.5使用控件
4.5.1按鈕
4.5.2嚮子控件發送消息
4.6獲取信息
4.7T3D遊戲控製颱程序
4.8小結
第二部分DirectX和2D基礎
第5章DirectX基礎知識和令人生畏的COM
5.1DirectX基礎
5.1.1HEL和HAL
5.1.2更多的DirectX基礎類
5.2COM:是微軟的傑作,還是魔鬼的傑作
5.2.1COM對象究竟是什麼
5.2.2接口標識符和GUID的詳細內容
5.2.3創建一個類COM對象
5.2.4COM的簡要迴顧
5.2.5可運行的COM程序
5.3應用DirectXCOM對象
5.3.1COM和函數指針
5.3.2創建和使用DirectX界麵
5.3.3接口查詢
5.4COM的前景
5.5小結
第6章初次邂逅DirectDraw
6.1DirectDraw的接口
6.1.1接口的特性
6.1.2組閤使用接口
6.2創建DirectDraw對象
6.2.1對DirectDraw進行錯誤處理
6.2.2順便提一下接口
6.3與Windows協作
6.4設置模式
6.5色彩的奧秘
6.6創建顯示錶麵
6.6.1創建一個主顯示錶麵
6.6.2關聯調色闆
6.6.3繪製像素
6.6.4清理資源
6.7小結
第7章高級DirectDraw和位圖圖形
7.1使用高彩模式
7.1.116位高彩模式
7.1.2獲取像素格式
7.1.324/32位真彩色模式
7.2雙緩衝
7.3錶麵動態
7.4頁麵切換
7.5顯存塊移動單元(Blitter)
7.5.1使用Blitter進行內存填充
7.5.2從一個錶麵嚮另一個錶麵復製位圖
7.6基礎裁剪知識
7.6.1將像素按視口裁剪
7.6.2位圖裁剪技巧
7.6.3使用IDirectDrawClipper進行DirectDraw裁剪
7.7使用位圖
7.7.1載入.BMP文件
7.7.2使用位圖
7.7.3載入8位位圖
7.7.4載入16位位圖
7.7.5載入24位位圖
7.7.6總結位圖
7.8離屏錶麵
7.8.1創建離屏錶麵
7.8.2在離屏錶麵上進行Blitting
7.8.3設置Blitter
7.8.4色彩鍵
7.8.5源色彩鍵
7.8.6目標色彩鍵
7.8.7使用Blitter(終於!)
7.9位圖的鏇轉和縮放
7.10離散采樣理論
7.11色彩效果
7.11.1256色模式下的色彩動畫
7.11.2256色模式下的色彩鏇轉
7.11.3使用RGB模式的技巧
7.12手動色彩變換及查詢錶
7.13新的DirectX色彩和Gamma控製接口
7.14將GDI和DirectX聯用
7.15DirectDraw的廬山真麵目
7.15.1主DirectDraw對象
7.15.2關於錶麵
7.15.3使用調色闆
7.16在窗口模式下使用DirectDraw
7.17小結
第8章矢量光柵化及2D變換
8.1繪製綫條
8.1.1Bresenham算法
8.1.2算法的速度優化
8.2基本2D圖形裁剪
8.2.1利用點斜式計算兩條直綫的交點
8.2.2利用一般式計算兩條直綫的交點
8.2.3利用矩陣式計算兩條直綫的交點
8.2.4裁剪直綫
8.2.5Cohen-Sutherland算法
8.3綫框多邊形
8.3.1多邊形數據結構
8.3.2多邊形的繪製及裁剪
8.42D平麵裏的變換
8.4.1平移
8.4.2鏇轉
8.4.3縮放
8.5矩陣引論
8.5.1單位矩陣
8.5.2矩陣加法
8.5.3矩陣乘法
8.5.4使用矩陣進行變換
8.6平移
8.7縮放
8.8鏇轉
8.9填充實心多邊形
8.9.1三角形和四邊形類型
8.9.2繪製三角形和四邊形
8.9.3三角形解構詳述
8.9.4四邊形光柵化的一般性討論
8.9.5多邊形的三角化
8.10多邊形碰撞檢測
8.10.1接近度、邊界球/圓
8.10.2邊界盒
8.10.3點包含
8.11深入定時和同步
8.12捲軸和搖鏡頭
8.12.1頁麵捲軸引擎
8.12.2均勻平鋪(Tile)顯示引擎
8.12.3稀疏位圖平鋪顯示引擎
8.13僞3D等軸測引擎
8.13.1方法1:基於單元,全二維
8.13.2方法2:基於全屏,具有一些二維或三維的碰撞網絡
8.13.3方法3:采用全三維數學運算,使用一個固定的相機視角
8.14T3DLIB1函數庫
8.14.1引擎架構
8.14.2新的遊戲編程控製颱程序
8.14.3基本定義
8.14.4可用的宏
8.14.5數據類型和結構
8.14.6全局定義
8.14.7DirectDraw接口
8.14.82D多邊形函數
8.14.92D基本圖元函數
8.14.10數學和誤差函數
8.14.11位圖函數
8.14.12調色闆函數
8.14.13實用工具函數
8.15BOB引擎
8.16小結
第9章DirectInput輸入和力反饋
9.1輸入循環
9.2DirectInput序麯
9.2.1DirectInput組件
9.2.2設置DirectInput的一般步驟
9.2.3數據采集模式
9.2.4創建主DirectInput對象
9.2.5101鍵盤
9.2.6讀數據過程中的問題:重獲取
9.2.7捕捉鼠標
9.2.8使用遊戲杆
9.2.9將輸入消息化
9.3力反饋
9.3.1力反饋的物理原理
9.3.2設置力反饋
9.3.3力反饋演示程序
9.4編寫一個廣泛適用的輸入係統:T3DLIB2.CPP
9.5小結
第10章用DirectSound和DirectMusic演奏樂麯
10.1在PC上對聲音編程
10.2從此有瞭聲音…
10.3數碼聲音與MIDI比較——音質好且存儲省
10.3.1數碼聲音——從“位”開始
10.3.2閤成聲音與MIDI
10.3.3MIDI概述
10.4發聲硬件
10.4.1波錶閤成
10.4.2波導閤成
10.5數碼錄音:設備和技術
10.5.1錄製聲音
10.5.2處理聲音
10.6DirectSound中的麥剋風
10.7初始化DirectSound
10.7.1理解協作等級
10.7.2設定協作等級
10.8主聲音緩衝區與輔助聲音緩衝區
10.8.1使用輔助緩衝區
10.8.2創建輔助聲音緩衝區
10.8.3把數據寫入輔助聲音緩衝區
10.9渲染聲音
10.9.1播放聲音
10.9.2停止播放
10.9.3控製音量
10.9.4調整頻率
10.9.5調整聲道平衡
10.10用DirectSound反饋信息
10.11從磁盤中讀取聲音數據
10.11.1.WAV文件格式
10.11.2讀取.WAV文件
10.12DirectMusic:偉大的試驗
10.13DirectMusic的體係結構
10.14初始化DirectMusic
10.14.1初始化COM
10.14.2創建一個演奏對象
10.14.3給演奏對象增加端口
10.15加載一個MIDI段
10.15.1創建一個加載程序
10.15.2加載MIDI文件
10.16操作MIDI段
10.16.1播放一個MIDI段
10.16.2停止一個MIDI段
10.16.3檢查MIDI段的狀態
10.16.4釋放一個MIDI段
10.16.5關閉DirectMusic
10.16.6一些DirectMusic的實例
10.17T3DLIB3聲音和樂麯庫
10.17.1頭文件
10.17.2類型
10.17.3全局變量
10.17.4DirectSoundAPI封裝
10.17.5DirectMusicAPI封裝
10.18小結
第三部分核心遊戲編程
第11章算法、數據結構、內存管理和多綫程
11.1數據結構
11.1.1靜態結構和數組
11.1.2鏈錶
11.2算法分析
11.3遞歸
11.4樹結構
11.4.1建立二分查找樹(BST)
11.4.2搜索BST
11.5優化理論
11.5.1運用你的頭腦
11.5.2數學技巧
11.5.3定點運算
11.5.4循環體展開
11.5.5查找錶
11.5.6匯編語言
11.6製作演示
11.6.1預先記錄的演示
11.6.2由人工智能控製的演示
11.7保存遊戲的手段
11.8實現多人遊戲
11.8.1輪流
11.8.2分屏
11.9多綫程編程技術
11.9.1多綫程編程的術語
11.9.2為何要在遊戲中使用綫程
11.9.3取得一個綫程
11.9.4綫程間的消息傳遞
11.9.5等待閤適時機
11.9.6多綫程和DirectX
11.9.7高級多綫程編程
10.10小結
第12章人工智能
12.1人工智能初步
12.2確定性AI算法
12.2.1隨機運動
12.2.2跟蹤算法
12.2.3反跟蹤:閃避算法
12.3模式以及基本控製腳本的編寫
12.3.1基本模式
12.3.2具備條件邏輯處理的模式
12.4行為狀態係統建模
12.4.1基本狀態機
12.4.2加入更多錶現個性的行為
12.5用軟件對記憶和學習進行建模
12.6計劃樹和決策樹
12.6.1計劃編程
12.6.2實現真正的計劃生成器
12.7尋路
12.7.1試探法(TrialandError)
12.7.2輪廓跟蹤
12.7.3碰撞規避跟蹤
12.7.4路點尋路
12.7.5一個賽車例子
12.7.6可靠的尋路
12.8高級AI腳本
12.8.1設計腳本語言
12.8.2使用C/C++編譯器
12.9人工神經網絡
12.10遺傳算法
12.11模糊邏輯
12.11.1普通集閤論
12.11.2模糊集閤理論
12.11.3模糊語言變量及其規則
12.11.4模糊流形與成員關係
12.11.5模糊關聯矩陣
12.11.6用模糊化的輸入處理FAM
12.11.7暖融融
12.12為遊戲創造真正的AI
12.13小結
第13章基本物理建模
13.1基本物理學定律
13.1.1質量(m)
13.1.2時間(t)
13.1.3位置(s)
13.1.4速率(v)
13.1.5加速度(a)
13.1.6力(F)
13.1.7多維空間中的力
13.1.8動量(P)
13.2綫性動量的物理性質:守恒與傳遞
13.3模擬萬有引力效果
13.3.1模擬重力井
13.3.2模擬炮彈彈道
13.4討厭的摩擦力
13.4.1摩擦基本概念
13.4.2斜麵上的摩擦力(高級)
13.5基本的特殊碰撞反應
13.5.1簡單的x,y反彈物理
13.5.2計算任意方嚮上的平麵碰撞反應
13.5.3矢量反射示例
13.5.4綫段的交點
13.6實際2D物體間的精確碰撞響應(高級)
13.7解決n-t坐標係統
13.8簡單運動學
13.8.1求解正嚮運動學問題
13.8.2解決反嚮運動學問題
13.9粒子係統
13.9.1每顆粒子都需要的東西
13.9.2設計粒子引擎
13.9.3粒子引擎軟件
13.9.4産生初始條件
13.9.5整閤微粒係統
13.10創建遊戲的物理模型
13.10.1物理建模的數據結構
13.10.2基於幀的模擬與基於時間的模擬
13.11小結
第14章文字時代
14.1什麼是文字遊戲
14.2文字遊戲如何工作
14.3從外部世界獲得輸入
14.4語言分析和解析
14.4.1詞法分析
14.4.2句法分析
14.4.3語義分析
14.5組成遊戲世界
14.5.1錶示場景
14.5.2放置物體
14.5.3讓事情發生
14.5.4自由移動
14.5.5物品係統
14.6實現視覺、聽覺和嗅覺
14.6.1聽覺
14.6.2嗅覺
14.6.3視覺
14.7實時響應
14.8錯誤處理
14.9造訪ShadowLand
14.10ShadowLand中使用的語言
14.11編譯和運行ShadowLand
14.12小結
第15章綜閤運用
15.1Outpost的設計初稿
15.1.1遊戲背景
15.1.2設計遊戲玩法
15.2用於編寫遊戲的工具
15.3遊戲場景:在太空中捲動
15.4玩傢控製的飛船:鬼怪號
15.5小行星帶
15.6敵人
15.6.1邊哨(Outpost)
15.6.2捕食者太空雷
15.6.3戰艦
15.7“寶物”
15.8HUD
15.9粒子係統
15.10玩遊戲
15.11編譯Outpost
15.12結束語
第四部分附錄
附錄A光盤內容簡介
附錄B安裝DirectX和使用C/C++編譯器
附錄C數學和三角學迴顧
附錄DC++入門
附錄E遊戲編程資源
附錄FASCII錶
· · · · · · (
收起)