內容簡介
《遊戲人工智能編程案例精粹(修訂版)》是遊戲人工智能方麵的經典之作,暢銷多年。它展示瞭如何在遊戲中利用專業人工智能技術,並針對實際睏難問題,給齣瞭強有力的解決方法。
《遊戲人工智能編程案例精粹(修訂版)》主要講述如何使遊戲中的角色具有智能的技術。本書首先介紹遊戲角色的基本屬性(包括速度、質量等物理屬性)及常用數學方法。接著,深入探討遊戲智能體狀態機的實現。通過簡單足球遊戲實例,本書給齣用狀態機實現遊戲AI的例子。在圖論部分,本書詳細介紹圖在遊戲中的用途及各種不同的圖搜索算法,並用一章的篇幅討論瞭遊戲中路徑規劃是如何完成的。此外,本書還對目標驅動的智能體的實現、觸發器與模糊邏輯在遊戲中的運用進行瞭討論。為使智能體行為更加豐富、靈活、易於實現,本書還介紹瞭遊戲腳本語言的優點,並以Lua腳本語言為例進行瞭說明。
《遊戲人工智能編程案例精粹(修訂版)》適閤對遊戲AI開發感興趣的愛好者和遊戲AI開發人員閱讀和參考。
作者簡介
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圓桌會議的主持人。
內頁插圖
目錄
第1章 數學和物理學初探
1.1 數學
1.1.1 笛卡爾坐標係
1.1.2 函數和方程
1.1.3 三角學
1.1.4 矢量
1.1.5 局部空間和世界空間
1.2 物理學
1.2.1 時間
1.2.2 距離
1.2.3 質量
1.2.4 位置
1.2.5 速度
1.2.6 加速度
1.2.7 力
1.3 總結
第2章 狀態驅動智能體設計
2.1 什麼是有限狀態機
2.2 有限狀態機的實現
2.2.1 狀態變換錶
2.2.2 內置的規則
2.3 West World項目
2.3.1 BaseGameEntity類
2.3.2 Miner類
2.3.3 Miner狀態
2.3.4 重訪問的狀態設計模式
2.4 使State基類可重用
2.5 全局狀態和狀態翻轉(State Blip)
2.6 創建一個StateMachine類
2.7 引入Elsa
2.8 為你的FSM增加消息功能
2.8.1 Telegram的結構
2.8.2 礦工Bob和Elsa交流
2.8.3 消息發送和管理
2.8.4 消息處理
2.8.5 Elsa做晚飯
2.8.6 總結
第3章 如何創建自治的可移動遊戲智能體
3.1 什麼是自治智能體
3.2 交通工具模型
3.3 更新交通工具物理屬性
3.4 操控行為
3.4.1 Seek(靠近)
3.4.2 Flee(離開)
3.4.3 Arrive(抵達)
3.4.4 Pursuit(追逐)
3.4.5 Evade(逃避)
3.4.6 Wander(徘徊)
3.4.7 Obstacle Avoidance(避開障礙)
3.4.8 Wall Avoidance(避開牆)
3.4.9 Interpose(插入)
3.4.10 Hide(隱藏)
3.4.11 Path Following(路徑跟隨)
3.4.12 Offset Pursuit(保持一定偏移的追逐)
3.5 組行為(Group Behaviors)
3.5.1 Separation(分離)
3.5.2 Alignment(隊列)
3.5.3 Cohesion(聚集)
3.5.4 Flocking(群集)
3.6 組閤操控行為(Combining Steering Behaviors)
3.6.1 加權截斷總和(Weighted Truncated Sum)
3.6.2 帶優先級的加權截斷纍計(Weighted Truncated Running Sum with Prioritization)
3.6.3 帶優先級的抖動(Prioritized Dithering)
3.7 確保無重疊
3.8 應對大量交通工具:空間劃分
3.9 平滑
第4章 體育模擬(簡單足球)
4.1 簡單足球的環境和規則
4.1.1 足球場
4.1.2 球門
4.1.3 足球
4.2 設計AI
4.2.1 SoccerTeam類
4.2.2 場上隊員
4.2.3 守門員
4.2.4 AI使用到的關鍵方法
4.3 使用估算和假設
4.4 總結
第5章 圖的秘密生命
5.1 圖
5.1.1 一個更規範化的描述
5.1.2 樹
5.1.3 圖密度
5.1.4 有嚮圖(Digraph)
5.1.5 遊戲AI中的圖
5.2 實現一個圖類
5.2.1 圖節點類(GraphNode Class)
5.2.2 圖邊類(GraphEdge Class)
5.2.3 稀疏圖類(SparseGraph Class)
5.3 圖搜索算法
5.3.1 盲目搜索(Uninformed Graph Searches)
5.3.2 基於開銷的圖搜索(cost-based graph searchs)
5.4 總結
第6章 用腳本,還是不用?這是一個問題
6.1 什麼是腳本語言
6.2 腳本語言能為你做些什麼
6.2.1 對話流
6.2.2 舞颱指示(Stage Direction)
6.2.3 AI邏輯
6.3 在Lua中編寫腳本
6.3.1 為使用Lua設置編譯器
6.3.2 起步
6.3.3 Lua中的石頭剪子布
6.3.4 與C/C++接口
6.3.5 Luabind來救援瞭!
6.4 創建一個腳本化的有限狀態自動機
6.4.1 它如何工作?
6.4.2 狀態(State)
6.5 有用的鏈接
6.6 並不是一切都這麼美妙
6.7 總結
第7章 概覽《掠奪者》遊戲
7.1 關於這個遊戲
7.2 遊戲體係結構概述
7.2.1 Raven_Game類
7.2.2 掠奪者地圖
7.2.3 掠奪者武器
7.2.4 彈藥(Projectile)
7.3 觸發器
7.3.1 觸發器範圍類(TriggerRegion)
7.3.2 觸發器類(Trigger)
7.3.3 再生觸發器(Respawning Trigger)
7.3.4 供給觸發器(Giver-Trigger)
7.3.5 武器供給器(Weapon Givers)
7.3.6 健康值供給器(Health Giver)
7.3.7 限製生命期觸發器(Limited Lifetime Trigger)
7.3.8 聲音通告觸發器(Sound Notification Trigger)
7.3.9 管理觸發器:觸發器係統(TriggerSystem)類
7.4 AI設計的考慮
7.5 實現AI
7.5.1 製定決策(Decision Making)
7.5.2 移動(Movement)
7.5.3 路徑規劃(Path Planning)
7.5.4 感知(Perception)
7.5.5 目標選擇(Target Selection)
7.5.6 武器控製(Weapon Handling)
7.5.7 把所有東西整閤起來
7.5.8 更新AI組件
7.6 總結
第8章 實用路徑規劃
8.1 構建導航圖
8.1.1 基於單元
8.1.2 可視點
8.1.3 擴展圖形
8.1.4 導航網
8.2 《掠奪者》遊戲導航圖
8.2.1 粗顆粒狀的圖
8.2.2 細粒狀的圖
8.2.3 為《掠奪者》導航圖添加物件
8.2.4 為加速就近查詢而使用空間分割
8.3 創建路徑規劃類
8.3.1 規劃到達一個位置的一條路徑
8.3.2 規劃路徑到達一個物件類型
8.4 節點式路徑或邊式路徑
8.4.1 注釋邊類示例
8.4.2 修改路徑規劃器類以容納注釋邊
8.4.3 路徑平滑
8.4.4 降低CPU資源消耗的方法
8.5 走齣睏境狀態
8.6 總結
第9章 目標驅動智能體行為
9.1 勇士埃裏剋的歸來
9.2 實現
9.2.1 Goal_Composite::Process Subgoals
9.2.2 Goal_Composite::Remove AllSubgoals
9.3 《掠奪者》角色所使用的目標例子
9.3.1 Goal_Wander
9.3.2 Goal_TraverseEdge
9.3.3 Goal_FollowPath
9.3.4 Goal_MoveToPosition
9.3.5 Goal_AttackTarget
9.4 目標仲裁
9.4.1 計算尋找一個健康物件的期望值
9.4.2 計算尋找一種特殊武器的期望值
9.4.3 計算攻擊目標的期望值
9.4.4 計算尋找地圖的期望值
9.4.5 把它們都放在一起
9.5 擴展
9.5.1 個性
9.5.2 狀態存儲
9.5.3 命令排隊
9.5.4 用隊列編寫腳本行為
9.6 總結
第10章 模糊邏輯
10.1 普通集閤
集閤運算符
10.2 模糊集閤
10.2.1 用隸屬函數來定義模糊的邊界
10.2.2 模糊集閤運算符
10.2.3 限製詞
10.3 模糊語言變量
10.4 模糊規則
10.4.1 為武器的選擇設計模糊語言變量
10.4.2 為武器的選擇設計規則集
10.4.3 模糊推理
10.5 從理論到應用:給一個模糊邏輯模塊編碼
10.5.1 模糊模塊類(FuzzyModule)
10.5.2 模糊集閤基類(FuzzySet)
10.5.3 三角形的模糊集閤類
10.5.4 右肩模糊集閤類
10.5.5 創建一個模糊語言變量類
10.5.6 為建立模糊規則而設計類
10.6 《掠奪者》中是如何使用模糊邏輯類的
10.7 庫博方法
10.7.1 模糊推理和庫博方法
10.7.2 實現
10.8 總結
附錄A C++模闆
附錄B UML類圖
附錄C 設置你的開發環境
跋
參考文獻
前言/序言
遊戲人工智能編程案例精粹(修訂版) 下載 mobi epub pdf txt 電子書 格式