《Lua遊戲AI開發指南》是2018年12月人民郵電出版社出版的圖書,作者是[美]David Young 楊。
基本介紹
- 書名:Lua遊戲AI開發指南
- 作者:[美]David Young
- ISBN:9787115439475
- 頁數:304頁
- 定價:69元
- 出版社:人民郵電出版社
- 出版時間:2018年12月
- 裝幀:平裝
- 開本:16開
內容簡介,圖書目錄,
內容簡介
遊戲人工智慧(遊戲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