編輯推薦
遊戲AI可以很容易地拆分成決策製定、動畫處理和戰術等
各種組件,但各個係統間的平衡和交互決定瞭良好的AI和糟糕
的AI之間的區彆。
本書首先介紹AI沙箱,然後依次介紹、實現和擴展瞭遊
戲AI的各個新領域。更進一步,讀者還將學習使用一些開源
庫,如Ogre3D、Bullet物理引擎、OpenSteer、Recast、
Detour以及Lua,並利用一個可以擴展和運行的完整代碼庫來
創建AI沙箱。
本書采用一種循序漸進的方法,從學習移動一個簡單物體
開始,到實現一個帶有完整動畫的戰士。學習完本書,你的AI
將能夠導航、尋路、管理動畫迴放、彼此交流並能感知它所處
的環境。
如果你是遊戲開發者,或者是一位想專注於實現自己的遊
戲AI係統和技術,而又不想創建遊戲引擎的底層接口的普通程
序員,這本書正是為你量身打造的。C++語言知識對於調試整
個AI沙箱和擴展本書提供的功能十分有用,但並非必需的。
讀完本書,你將能夠:
■ 創建動畫狀態機以便在Lua代碼中驅動AI
動畫;
■ 構建導航網格並在其中尋路;
■ 使用全功能的Lua IDE編寫和調試Lua腳本;
■ 使用行為樹、狀態機和決策樹開發決策邏
輯,構建模塊化、可重用的AI;
■ 使用黑闆數據結構管理短期和長期的知識
錶示;
■ 添加感官知覺讓AI能看能聽;
■ 基於影響力地圖開發多個AI的高級戰術。
內容簡介
遊戲人工智能(遊戲AI)是遊戲開發的一個重要方麵,在很大程度上決定瞭遊戲産品的逼真程度和對玩傢的吸引力,由此也得到遊戲開發工程師越來越多的重視。
本書秉承把動畫和運動係統直接集成到AI係統的方法,詳細介紹瞭如何使用Lua語言及相關的技術和工具,編寫和實現高質量的遊戲AI。全書共9章,分彆介紹瞭沙箱基礎、創建和移動智能體、角色動畫、意識控製、導航、決策製定、知識錶達、感知和策略等主題。
本書適閤於遊戲開發工程師,特彆是想要詳細瞭解遊戲AI開發的程序員閱讀參考。
作者簡介
遊戲開發人員、編程愛好者遊戲開發人員、編程愛好者遊戲開發人員、編程愛好者遊戲開發人員、編程愛好者遊戲開發人員、編程愛好者遊戲開發人員、編程愛好者
目錄
第1章 從構建沙箱開始 1
1 AI沙箱簡介 1
1.1 理解沙箱 2
1.2 項目文件組織 2
1.3 預先做好的構建 4
1.4 使用Visual Studio 2008/2010/2012/2013編譯沙箱項目 5
1.5 開源庫 5
1.6 開源工具 6
1.7 Lua IDE-Decoda 6
1.8 在Decoda中運行AI沙箱 6
1.9 創建一個新的Decoda項目 7
1.10 調試Lua腳本 8
1.11 Decoda的Watch窗口 9
1.12 Decoda的Call Stack窗口 9
1.13 Decoda的Virtual Machines窗口 9
1.14 同時調試Lua與C++代碼 10
1.15 Visual Studio-附加到進程 10
1.16 Decoda-附加到進程 11
1.17 Decoda-附加到係統調試器 11
1.18 關聯Lua腳本代碼到Decoda 12
1.19 Lua虛擬機 12
1.20 Lua堆棧 13
1.21 Lua基礎類型 13
1.22 元錶 14
1.23 元方法 14
1.24 自定義類型 15
1.25 C/C++調用Lua函數 15
1.26 Lua調用C/C++函數 16
1.27 創建自定義數據類型 18
1.28 Demo框架 20
2 小結 24
第2章 創建並移動智能體 25
1 新建一個沙箱項目 25
2 創建文件結構 26
3 擴展SandboxApplication類 26
4 首次運行你的沙箱 28
5 新建一個Decoda項目 29
6 配置Decoda運行的可執行程序 29
7 創建一個沙箱Lua腳本 30
7.1 創建地闆 31
7.2 添加光源 31
7.3 添加天空盒 32
7.4 在沙箱中添加網格 33
7.5 創建沙箱對象 34
8 發射方塊 35
9 創建智能體Lua腳本 37
9.1 創建視覺錶象 38
9.2 更新智能體的位置 39
9.3 更新智能體的朝嚮 39
10 智能體的屬性 40
10.1 朝嚮 40
10.2 定位 40
10.3 大小 41
10.4 物理 41
10.5 知識 42
10.6 智能體的移動 43
10.7 智能體轉嚮力 44
10.8 規避 56
10.9 規避障礙物和其他智能體 57
10.10 群組移動 59
10.11 創建一群追隨者 59
10.12 轉嚮力閤計 63
11 小結 64
第3章 角色動畫 65
1 骨骼和網格 65
1.1 網格骨骼 66
1.2 加載一個動畫網格 66
1.3 顯示骨骼 66
2 附加網格到骨骼上 67
給戰士附加武器 67
3 動畫片段 69
3.1 播放戰士動畫 69
3.2 戰士動畫 70
4 戰士的姿勢 72
武器姿勢 74
5 操作動畫 75
5.1 啓用和禁用動畫 75
5.2 循環動畫 75
5.3 動畫的長度 76
5.4 動畫時間 76
5.5 歸一化時間 76
5.6 重新開始動畫 76
5.7 播放非循環動畫 77
5.8 動畫速率 78
6 動畫混閤 78
6.1 動畫權重 79
6.2 混閤窗口 79
6.3 混閤麯綫 79
6.4 綫性混閤 79
6.5 處理混閤權重 80
7 動畫狀態機(ASM) 83
7.1 狀態 83
7.2 轉換 84
7.3 創建動畫狀態機 84
7.4 創建輔助函數 85
7.5 添加狀態 86
7.6 添加轉換 86
7.7 添加外部輔助函數 87
7.8 強製設置狀態 88
7.9 請求狀態 89
7.10 更新動畫狀態機 89
7.11 處理狀態轉換和狀態請求 89
7.12 更新運行中的動畫 91
7.13 動畫狀態機實例 92
8 構造一個武器動畫狀態機 92
9 構建戰士的動畫狀態機 95
10 更新動畫狀態機 97
11 處理狀態 98
12 小結 100
第4章 意識體控製 101
1 創建身體 101
1.1 創建戰士 102
1.2 附加動畫網格到智能體 104
1.3 創建障礙訓練場 105
2 為動畫狀態機添加迴調 107
2.1 處理迴調 108
2.2 為ASM添加迴調 108
2.3 更新ASM以調用迴調函數 109
3 讓戰士射擊 111
3.1 骨骼位置 111
3.2 骨骼鏇轉 111
3.3 創建粒子效果 111
3.4 粒子方嚮 112
3.5 對象刪除 112
3.6 碰撞效果迴調 112
3.7 發生子彈 113
3.8 處理子彈碰撞效果 113
3.9 射擊 114
4 讓戰士奔跑 116
4.1 設置穿越障礙訓練場的路綫 116
4.2 跑過障礙訓練場 117
5 創建大腦 118
實現意識體控製的方法 118
6 直接動畫控製 119
6.1 死亡狀態 119
6.2 空閑狀態 121
6.3 下落狀態 122
6.4 移動狀態 123
6.5 射擊狀態 124
7 一個簡單的有限狀態機 125
7.1 初始化智能體 126
7.2 智能體FSM狀態處理 127
8 間接動畫控製 128
8.1 動畫控製器 129
8.2 命令 129
8.3 命令隊列 130
8.4 操作命令 131
8.5 姿勢改變命令 131
8.6 死亡命令 132
8.7 下落命令 133
8.8 空閑命令 134
8.9 移動命令 136
8.10 射擊命令 137
8.11 賦值成員函數 139
8.12 初始化控製器 139
8.13 添加命令處理函數 140
8.14 更新控製器 141
9 運行障礙訓練場 142
9.1 創建直接控製智能體 143
9.2 創建間接控製智能體 144
9.3 間接控製智能體初始化 145
9.4 間接控製智能體更新 145
9.5 間接控製智能體的控製 146
9.6 産生一個間接控製的智能體 146
10 動作延遲 147
11 小結 148
第5章 導航 149
1 尋路 149
2 創建導航網格 149
2.1 配置導航網格 150
2.2 可通行高度 151
2.3 可通行半徑 152
2.4 可通行的攀爬高度 153
2.5 可通行的斜坡角度 154
2.6 最小區域麵積 154
2.7 構建導航網格 156
2.8 繪製導航網格 156
3 在導航網格中尋路 157
3.1 路徑查詢 157
3.2 查詢結果 157
3.3 隨機導航路點 158
4 路徑信息 158
5 為戰士添加隨機尋路 158
5.1 更新智能體的路徑 159
5.2 繪製路徑 160
5.3 初始化導航網格 160
5.4 隨意移動的智能體 162
6 創建更多的導航網格 163
7 小結 163
第6章 決策製定 164
1 創建自定義類型 164
2 智能體動作 165
2.1 添加數據成員 166
2.2 動作初始化 167
2.3 動作更新 167
2.4 動作清理 168
2.5 動作的成員函數 168
3 創建動作 169
3.1 空閑動作 169
3.2 死亡動作 170
3.3 換彈藥動作 171
3.4 射擊動作 172
3.5 隨機移動動作 174
3.6 移動動作 175
3.7 逃跑動作 178
3.8 追逐動作 181
4 求值器 184
5 創建求值器 184
5.1 常數求值器 185
5.2 是否擁有彈藥求值器 185
5.3 是否有生命危險求值器 185
5.4 是否有敵人求值器 186
5.5 是否移動求值器 187
5.6 是否存活求值器 187
5.7 能否射擊敵人求值器 188
5.8 50比50機會求值器 188
6 決策結構 189
7 決策樹 189
7.1 分枝 190
7.2 決策葉節點 191
7.3 分枝求值 191
8 構造一棵決策樹 192
創建分枝 193
9 創建一個決策樹智能體 196
9.1 決策樹的優點 198
9.2 決策樹的缺點 198
10 有限狀態機 198
10.1 狀態 198
10.2 轉換 199
10.3 有限狀態機結構 199
10.4 輔助函數 200
10.5 添加狀態和轉換 201
10.6 更新有限狀態機 202
10.7 添加實例函數 203
11 構造有限狀態機 204
11.1 空閑狀態 204
11.2 移動狀態 205
11.3 隨機移動狀態 206
11.4 射擊狀態 207
11.5 逃跑狀態 208
11.6 死亡狀態 209
11.7 追逐狀態 209
11.8 換子彈狀態 210
12 創建一個有限狀態機智能體 211
13 有限狀態機的優點 212
14 有限狀態機的缺點 212
15 行為樹 212
15.1 行為樹結點 213
15.2 輔助函數 213
15.3 更新行為樹結點 214
16 動作 215
17 條件 215
18 選擇器 216
19 序列 216
20 創建行為樹對象 216
20.1 行為樹輔助函數 217
20.2 選擇器計算 217
20.3 序列計算 219
20.4 結點計算 221
20.5 繼續行為樹計算 221
20.6 行為樹的更新循環 222
20.7 更新行為樹 223
21 構造一顆行為樹 224
21.1 死亡行為 225
21.2 逃跑行為 226
21.3 戰鬥行為 226
21.4 換子彈行為 227
21.5 射擊行為 228
21.6 追逐行為 228
21.7 移動行為 229
21.8 隨機移動行為 230
21.9 空閑行為 230
22 創建行為樹智能體 231
23 行為樹的優點 232
24 行為樹的缺點 232
25 小結 232
第7章 知識錶達 233
1 知識源 233
1.1 創建知識源 233
1.2 知識源求值 234
2 黑闆 235
2.1 創建黑闆 235
2.2 添加和刪除知識源 235
2.3 知識源求值 236
2.4 設置和返迴黑闆屬性 237
2.5 黑闆的成員函數 237
3 創建戰士的知識源 238
3.1 選擇敵人 238
3.2 選擇逃離位置 239
4 構造戰士的黑闆 240
5 更新決策求值器 242
6 更新行為動作 243
6.1 死亡動作 243
6.2 逃離動作 243
6.3 空閑動作 244
6.4 移動動作 245
6.5 追逐動作 246
6.6 換子彈動作 246
6.7 射擊動作 247
7 小結 247
第8章 感知 248
1 事件 248
1.1 屬性 248
1.2 發送事件 249
1.3 接收事件 249
2 管理事件 250
2.1 分配智能體團隊 250
2.2 處理智能體通訊 251
2.3 事件類型 253
3 創建智能體的官能 253
3.1 初始化官能 253
3.2 更新官能 253
4 智能體可見性 254
檢測其他可見智能體 255
5 智能體視覺事件 257
5.1 看到新敵人的事件 257
5.2 看到新的敵人死屍事件 257
5.3 看到新的死亡隊友事件 258
6 處理新看到的智能體 259
6.1 間歇性可見的智能體 260
6.2 限製智能體可視性的更新 261
6.3 創建事件處理 261
6.4 添加事件處理函數 263
7 智能體的聽覺 263
8 聽覺事件 264
8.1 子彈發射事件 264
8.2 子彈碰撞事件 264
9 處理聽覺事件 265
10 清理黑闆中的事件 266
11 清理聽覺事件 267
12 團隊交流 268
12.1 選擇敵人事件 268
12.2 位置更新事件 269
12.3 撤退位置事件 269
13 更新智能體行為 270
13.1 選擇敵人 270
13.2 評估危險位置 272
13.3 計算最佳逃離位置 275
14 小結 276
第9章 策略 277
1 影響力地圖 277
1.1 單元格高度 278
1.2 單元格寬度 279
2 構造影響力地圖 281
2.1 配置 281
2.2 導航網格的立體像素化 282
3 繪製影響力地圖 283
4 訪問影響力 284
4.1 設置影響力 284
4.2 獲取影響力 285
5 清除影響力 285
6 傳播影響力 286
6.1 單元格慣性 287
6.2 單元格衰減 289
7 影響力地圖的圖層 290
8 更新影響力地圖 292
9 戰士的策略 293
初始化和更新策略 294
10 團隊影響力評分 295
10.1 初始化團隊影響力 295
10.2 更新團隊影響力 296
10.3 配置團隊影響力 297
11 危險區域評分 298
11.1 利用智能體事件 298
11.2 添加事件處理器 300
11.3 初始化危險影響力 300
11.4 更新危險影響力 301
11.5 配置團隊影響力 302
12 小結 303
後記 305
Lua遊戲AI開發指南 下載 mobi epub pdf txt 電子書