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