游戲人工智能編程案例精粹(修訂版) 版權信息
- ISBN:9787115291134
- 條形碼:9787115291134 ; 978-7-115-29113-4
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
游戲人工智能編程案例精粹(修訂版) 本書特色
適讀人群 :游戲設計和開發人員、游戲AI理論和應用的研究者1.Amazon長年熱銷的游戲開發圖書2.內容豐富實用,包括AI技術在游戲中應用的真實案例合集3.針對實際難題提供靠譜的專業解決方案,引導讀者學習使用C++變成語言設計、編程和實現游戲人工智能的過程4.含配套示例代碼,提升效率,方便學習,輕松掌握
游戲人工智能編程案例精粹(修訂版) 內容簡介
《游戲人工智能編程案例精粹(修訂版)》展示了如何在游戲中利用專業人工智能技術,并針對實際困難問題,給出了強有力的解決方法。
《游戲人工智能編程案例精粹(修訂版)》主要講述如何使游戲中的角色具有智能的技術。本書首先介紹游戲角色的基本屬性(包括速度、質量等物理屬性)及常用數學方法。接著,深入探討游戲智能體狀態機的實現。通過簡單足球游戲實例,本書給出用狀態機實現游戲AI的例子。在圖論部分,本書詳細介紹圖在游戲中的用途及各種不同的圖搜索算法,并用一章的篇幅討論了游戲中路徑規劃是如何完成的。此外,本書還對目標驅動的智能體的實現、觸發器與模糊邏輯在游戲中的運用進行了討論。為使智能體行為更加豐富、靈活、易于實現,本書還介紹了游戲腳本語言的優點,并以Lua腳本語言為例進行了說明。
《游戲人工智能編程案例精粹(修訂版)》適合對游戲AI開發感興趣的愛好者和游戲AI開發人員閱讀和參考。
游戲人工智能編程案例精粹(修訂版) 目錄
第 1 章 數學和物理學初探 1
1.1 數學 1
1.1.1 笛卡爾坐標系 1
1.1.2 函數和方程 2
1.1.3 三角學 8
1.1.4 矢量 13
1.1.5 局部空間和世界空間 19
1.2 物理學 20
1.2.1 時間 20
1.2.2 距離 21
1.2.3 質量 21
1.2.4 位置 21
1.2.5 速度 21
1.2.6 加速度 23
1.2.7 力 27
1.3 總結 29
第 2 章 狀態驅動智能體設計 31
2.1 什么是有限狀態機 32
2.2 有限狀態機的實現 33
2.2.1 狀態變換表 34
2.2.2 內置的規則 35
2.3 West World 項目 37
2.3.1 BaseGameEntity 類 38
2.3.2 Miner 類 38
2.3.3 Miner 狀態 39
2.3.4 重訪問的狀態設計模式 40
2.4 使 State 基類可重用 45
2.5 全局狀態和狀態翻轉(State Blip) 46
2.6 創建一個 StateMachine 類 47
2.7 引入 Elsa 49
2.8 為你的 FSM 增加消息功能 50
2.8.1 Telegram 的結構 51
2.8.2 礦工 Bob 和 Elsa 交流 52
2.8.3 消息發送和管理 52
2.8.4 消息處理 56
2.8.5 Elsa 做晚飯 57
2.8.6 總結 61
第 3 章 如何創建自治的可移動游戲智能體 63
3.1 什么是自治智能體 63
3.2 交通工具模型 64
3.3 更新交通工具物理屬性 67
3.4 操控行為 68
3.4.1 Seek(靠近) 68
3.4.2 Flee(離開) 69
3.4.3 Arrive(抵達) 69
3.4.4 Pursuit(追逐) 70
3.4.5 Evade(逃避) 72
3.4.6 Wander(徘徊) 72
3.4.7 Obstacle Avoidance(避開障礙) 74
3.4.8 Wall Avoidance(避開墻) 78
3.4.9 Interpose(插入) 80
3.4.10 Hide(隱藏) 81
3.4.11 Path Following(路徑跟隨) 83
3.4.12 Offset Pursuit(保持一定偏移的追逐) 84
3.5 組行為(Group Behaviors) 85
3.5.1 Separation(分離) 86
3.5.2 Alignment(隊列) 87
3.5.3 Cohesion(聚集) 88
3.5.4 Flocking(群集) 89
3.6 組合操控行為(Combining
Steering Behaviors) 90
3.6.1 加權截斷總和(Weighted
Truncated Sum) 91
3.6.2 帶優先級的加權截斷累計(Weighted Truncated Running Sum with
Prioritization) 91
3.6.3 帶優先級的抖動(Prioritized Dithering) 93
3.7 確保無重疊 94
3.8 應對大量交通工具:空間劃分 96
3.9 平滑 99
第 4 章 體育模擬(簡單足球) 102
4.1 簡單足球的環境和規則 102
4.1.1 足球場 104
4.1.2 球門 105
4.1.3 足球 106
4.2 設計 AI 110
4.2.1 SoccerTeam 類 112
4.2.2 場上隊員 118
4.2.3 守門員 131
4.2.4 AI 使用到的關鍵方法 136
4.3 使用估算和假設 144
4.4 總結 144
第 5 章 圖的秘密生命 146
5.1 圖 146
5.1.1 一個更規范化的描述 147
5.1.2 樹 148
5.1.3 圖密度 148
5.1.4 有向圖(Digraph) 148
5.1.5 游戲 AI 中的圖 149
5.2 實現一個圖類. 153
5.2.1 圖節點類(GraphNode Class) 154
5.2.2 圖邊類(GraphEdge Class) 155
5.2.3 稀疏圖類(SparseGraph Class) 156
5.3 圖搜索算法 157
5.3.1 盲目搜索(Uninformed Graph Searches) 158
5.3.2 基于開銷的圖搜索(cost-based graph searchs) 172
5.4 總結 183
第 6 章 用腳本,還是不用?這是一個問題 185
6.1 什么是腳本語言 185
6.2 腳本語言能為你做些什么 186
6.2.1 對話流 188
6.2.2 舞臺指示(Stage Direction) 188
6.2.3 AI 邏輯 189
6.3 在 Lua 中編寫腳本 190
6.3.1 為使用 Lua 設置編譯器 190
6.3.2 起步 191
6.3.3 Lua 中的石頭剪子布 197
6.3.4 與 C/C 接口 199
6.3.5 Luabind 來救援了! 206
6.4 創建一個腳本化的有限狀態自動機 213
6.4.1 它如何工作? 213
6.4.2 狀態(State) 216
6.5 有用的鏈接 218
6.6 并不是一切都這么美妙 218
6.7 總結 219
第 7 章 概覽《掠奪者》游戲 220
7.1 關于這個游戲 220
7.2 游戲體系結構概述 221
7.2.1 Raven_Game 類 222
7.2.2 掠奪者地圖 222
7.2.3 掠奪者武器 224
7.2.4 彈藥(Projectile) 225
7.3 觸發器 226
7.3.1 觸發器范圍類(TriggerRegion) 227
7.3.2 觸發器類(Trigger) 228
7.3.3 再生觸發器(Respawning Trigger) 229
7.3.4 供給觸發器(Giver-Trigger) 230
7.3.5 武器供給器(Weapon Givers) 230
7.3.6 健康值供給器(Health Giver) 231
7.3.7 限制生命期觸發器(Limited Lifetime Trigger) 231
7.3.8 聲音通告觸發器(Sound Notification Trigger) 232
7.3.9 管理觸發器:觸發器系統(TriggerSystem)類 232
7.4 AI 設計的考慮 234
7.5 實現 AI 235
7.5.1 制定決策(Decision Making) 235
7.5.2 移動(Movement) 236
7.5.3 路徑規劃(Path Planning) 236
7.5.4 感知(Perception) 236
7.5.5 目標選擇(Target Selection) 240
7.5.6 武器控制(Weapon Handling) 241
7.5.7 把所有東西整合起來 244
7.5.8 更新 AI 組件 245
7.6 總結247
第 8 章 實用路徑規劃 248
8.1 構建導航圖 248
8.1.1 基于單元 248
8.1.2 可視點 249
8.1.3 擴展圖形 249
8.1.4 導航網 250
8.2 《掠奪者》游戲導航圖 251
8.2.1 粗顆粒狀的圖 251
8.2.2 細粒狀的圖 253
8.2.3 為《掠奪者》導航圖添加物件 253
8.2.4 為加速就近查詢而使用空間分割 254
8.3 創建路徑規劃類 255
8.3.1 規劃到達一個位置的一條路徑 256
8.3.2 規劃路徑到達一個物件類型 257
8.4 節點式路徑或邊式路徑 260
8.4.1 注釋邊類示例 261
8.4.2 修改路徑規劃器類以容納注釋邊 261
8.4.3 路徑平滑 263
8.4.4 降低 CPU 資源消耗的方法 267
8.5 走出困境狀態 277
8.6 總結 279
第 9 章 目標驅動智能體行為 280
9.1 勇士埃里克的歸來 281
9.2 實現 283
9.2.1 Goal_Composite::ProcessSubgoals 285
9.2.2 Goal_Composite::RemoveAllSubgoals 286
9.3 《掠奪者》角色所使用的目標例子 287
9.3.1 Goal_Wander 287
9.3.2 Goal_TraverseEdge 288
9.3.3 Goal_FollowPath 290
9.3.4 Goal_MoveToPosition 292
9.3.5 Goal_AttackTarget 293
9.4 目標仲裁 295
9.4.1 計算尋找一個健康物件的期望值 297
9.4.2 計算尋找一種特殊武器的期望值 298
9.4.3 計算攻擊目標的期望值 299
9.4.4 計算尋找地圖的期望值 300
9.4.5 把它們都放在一起 300
9.5 擴展 301
9.5.1 個性 301
9.5.2 狀態存儲 303
9.5.3 命令排隊 306
9.5.4 用隊列編寫腳本行為 308
9.6 總結 309
第 10 章 模糊邏輯 310
10.1 普通集合 312
集合運算符 312
10.2 模糊集合 313
10.2.1 用隸屬函數來定義模糊的邊界 313
10.2.2 模糊集合運算符 315
10.2.3 限制詞 316
10.3 模糊語言變量 316
10.4 模糊規則 317
10.4.1 為武器的選擇設計模糊語言變量 318
10.4.2 為武器的選擇設計規則集 320
10.4.3 模糊推理 320
10.5 從理論到應用:給一個模糊邏輯模塊編碼 327
10.5.1 模糊模塊類(FuzzyModule) 327
10.5.2 模糊集合基類(FuzzySet) 328
10.5.3 三角形的模糊集合類 329
10.5.4 右肩模糊集合類 330
10.5.5 創建一個模糊語言變量類 331
10.5.6 為建立模糊規則而設計類 333
10.6 《掠奪者》中是如何使用模糊邏輯類的 338
10.7 庫博方法 339
10.7.1 模糊推理和庫博方法 341
10.7.2 實現 342
10.8 總結 342
附錄 A C 模板 343
附錄 B UML 類圖 349
附錄 C 設置你的開發環境 357
跋 359
參考文獻 361
展開全部
游戲人工智能編程案例精粹(修訂版) 作者簡介
Mat Buckland是一位自由職業程序員和技術作家。他在20世紀80年代為ZX Spectrum編寫Waddington’s Monopoly的時候,對AI產生了興趣,多年以來,他對于讓計算機“思考”的熱情絲毫沒有減退。他是AI Techniques for Game Programming一書的作者,也是專注于AI教程的網站ai-junkie.com的創辦人。他是AI Interface Standards Committee的成員,還是European Game Developers Conference圓桌會議的主持人。