定 價(jià):79 元
叢書名:游戲設(shè)計(jì)與開發(fā)技術(shù)叢書
- 作者:(美) Mat Buckland著
- 出版時(shí)間:2012/9/1
- ISBN:9787115291134
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.5
- 頁碼:362頁
- 紙張:膠版紙
- 版次:2
- 開本:16開
《游戲人工智能編程案例精粹(修訂版)》是游戲人工智能方面的經(jīng)典之作,暢銷多年。它展示了如何在游戲中利用專業(yè)人工智能技術(shù),并針對(duì)實(shí)際困難問題,給出了強(qiáng)有力的解決方法。
《游戲人工智能編程案例精粹(修訂版)》主要講述如何使游戲中的角色具有智能的技術(shù)。本書首先介紹游戲角色的基本屬性(包括速度、質(zhì)量等物理屬性)及常用數(shù)學(xué)方法。接著,深入探討游戲智能體狀態(tài)機(jī)的實(shí)現(xiàn)。通過簡(jiǎn)單足球游戲?qū)嵗緯o出用狀態(tài)機(jī)實(shí)現(xiàn)游戲AI的例子。在圖論部分,本書詳細(xì)介紹圖在游戲中的用途及各種不同的圖搜索算法,并用一章的篇幅討論了游戲中路徑規(guī)劃是如何完成的。此外,本書還對(duì)目標(biāo)驅(qū)動(dòng)的智能體的實(shí)現(xiàn)、觸發(fā)器與模糊邏輯在游戲中的運(yùn)用進(jìn)行了討論。為使智能體行為更加豐富、靈活、易于實(shí)現(xiàn),本書還介紹了游戲腳本語言的優(yōu)點(diǎn),并以Lua腳本語言為例進(jìn)行了說明。
《游戲人工智能編程案例精粹(修訂版)》適合對(duì)游戲AI開發(fā)感興趣的愛好者和游戲AI開發(fā)人員閱讀和參考。
第1章 數(shù)學(xué)和物理學(xué)初探
1.1 數(shù)學(xué)
1.1.1 笛卡爾坐標(biāo)系
1.1.2 函數(shù)和方程
1.1.3 三角學(xué)
1.1.4 矢量
1.1.5 局部空間和世界空間
1.2 物理學(xué)
1.2.1 時(shí)間
1.2.2 距離
1.2.3 質(zhì)量
1.2.4 位置
1.2.5 速度
1.2.6 加速度
1.2.7 力
1.3 總結(jié)
第2章 狀態(tài)驅(qū)動(dòng)智能體設(shè)計(jì)
2.1 什么是有限狀態(tài)機(jī)
2.2 有限狀態(tài)機(jī)的實(shí)現(xiàn)
2.2.1 狀態(tài)變換表
2.2.2 內(nèi)置的規(guī)則
2.3 West World項(xiàng)目
2.3.1 BaseGameEntity類
2.3.2 Miner類
2.3.3 Miner狀態(tài)
2.3.4 重訪問的狀態(tài)設(shè)計(jì)模式
2.4 使State基類可重用
2.5 全局狀態(tài)和狀態(tài)翻轉(zhuǎn)(State Blip)
2.6 創(chuàng)建一個(gè)StateMachine類
2.7 引入Elsa
2.8 為你的FSM增加消息功能
2.8.1 Telegram的結(jié)構(gòu)
2.8.2 礦工Bob和Elsa交流
2.8.3 消息發(fā)送和管理
2.8.4 消息處理
2.8.5 Elsa做晚飯
2.8.6 總結(jié)
第3章 如何創(chuàng)建自治的可移動(dòng)游戲智能體
3.1 什么是自治智能體
3.2 交通工具模型
3.3 更新交通工具物理屬性
3.4 操控行為
3.4.1 Seek(靠近)
3.4.2 Flee(離開)
3.4.3 Arrive(抵達(dá))
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(隊(duì)列)
3.5.3 Cohesion(聚集)
3.5.4 Flocking(群集)
3.6 組合操控行為(Combining Steering Behaviors)
3.6.1 加權(quán)截?cái)嗫偤?Weighted Truncated Sum)
3.6.2 帶優(yōu)先級(jí)的加權(quán)截?cái)嗬塾?jì)(Weighted Truncated Running Sum with Prioritization)
3.6.3 帶優(yōu)先級(jí)的抖動(dòng)(Prioritized Dithering)
3.7 確保無重疊
3.8 應(yīng)對(duì)大量交通工具:空間劃分
3.9 平滑
第4章 體育模擬(簡(jiǎn)單足球)
4.1 簡(jiǎn)單足球的環(huán)境和規(guī)則
4.1.1 足球場(chǎng)
4.1.2 球門
4.1.3 足球
4.2 設(shè)計(jì)AI
4.2.1 SoccerTeam類
4.2.2 場(chǎng)上隊(duì)員
4.2.3 守門員
4.2.4 AI使用到的關(guān)鍵方法
4.3 使用估算和假設(shè)
4.4 總結(jié)
第5章 圖的秘密生命
5.1 圖
5.1.1 一個(gè)更規(guī)范化的描述
5.1.2 樹
5.1.3 圖密度
5.1.4 有向圖(Digraph)
5.1.5 游戲AI中的圖
5.2 實(shí)現(xiàn)一個(gè)圖類
5.2.1 圖節(jié)點(diǎn)類(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 總結(jié)
第6章 用腳本,還是不用?這是一個(gè)問題
6.1 什么是腳本語言
6.2 腳本語言能為你做些什么
6.2.1 對(duì)話流
6.2.2 舞臺(tái)指示(Stage Direction)
6.2.3 AI邏輯
6.3 在Lua中編寫腳本
6.3.1 為使用Lua設(shè)置編譯器
6.3.2 起步
6.3.3 Lua中的石頭剪子布
6.3.4 與C/C++接口
6.3.5 Luabind來救援了!
6.4 創(chuàng)建一個(gè)腳本化的有限狀態(tài)自動(dòng)機(jī)
6.4.1 它如何工作?
6.4.2 狀態(tài)(State)
6.5 有用的鏈接
6.6 并不是一切都這么美妙
6.7 總結(jié)
第7章 概覽《掠奪者》游戲
7.1 關(guān)于這個(gè)游戲
7.2 游戲體系結(jié)構(gòu)概述
7.2.1 Raven_Game類
7.2.2 掠奪者地圖
7.2.3 掠奪者武器
7.2.4 彈藥(Projectile)
7.3 觸發(fā)器
7.3.1 觸發(fā)器范圍類(TriggerRegion)
7.3.2 觸發(fā)器類(Trigger)
7.3.3 再生觸發(fā)器(Respawning Trigger)
7.3.4 供給觸發(fā)器(Giver-Trigger)
7.3.5 武器供給器(Weapon Givers)
7.3.6 健康值供給器(Health Giver)
7.3.7 限制生命期觸發(fā)器(Limited Lifetime Trigger)
7.3.8 聲音通告觸發(fā)器(Sound Notification Trigger)
7.3.9 管理觸發(fā)器:觸發(fā)器系統(tǒng)(TriggerSystem)類
7.4 AI設(shè)計(jì)的考慮
7.5 實(shí)現(xiàn)AI
7.5.1 制定決策(Decision Making)
7.5.2 移動(dòng)(Movement)
7.5.3 路徑規(guī)劃(Path Planning)
7.5.4 感知(Perception)
7.5.5 目標(biāo)選擇(Target Selection)
7.5.6 武器控制(Weapon Handling)
7.5.7 把所有東西整合起來
7.5.8 更新AI組件
7.6 總結(jié)
第8章 實(shí)用路徑規(guī)劃
8.1 構(gòu)建導(dǎo)航圖
8.1.1 基于單元
8.1.2 可視點(diǎn)
8.1.3 擴(kuò)展圖形
8.1.4 導(dǎo)航網(wǎng)
8.2 《掠奪者》游戲?qū)Ш綀D
8.2.1 粗顆粒狀的圖
8.2.2 細(xì)粒狀的圖
8.2.3 為《掠奪者》導(dǎo)航圖添加物件
8.2.4 為加速就近查詢而使用空間分割
8.3 創(chuàng)建路徑規(guī)劃類
8.3.1 規(guī)劃到達(dá)一個(gè)位置的一條路徑
8.3.2 規(guī)劃路徑到達(dá)一個(gè)物件類型
8.4 節(jié)點(diǎn)式路徑或邊式路徑
8.4.1 注釋邊類示例
8.4.2 修改路徑規(guī)劃器類以容納注釋邊
8.4.3 路徑平滑
8.4.4 降低CPU資源消耗的方法
8.5 走出困境狀態(tài)
8.6 總結(jié)
第9章 目標(biāo)驅(qū)動(dòng)智能體行為
9.1 勇士埃里克的歸來
9.2 實(shí)現(xiàn)
9.2.1 Goal_Composite::Process Subgoals
9.2.2 Goal_Composite::Remove AllSubgoals
9.3 《掠奪者》角色所使用的目標(biāo)例子
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 目標(biāo)仲裁
9.4.1 計(jì)算尋找一個(gè)健康物件的期望值
9.4.2 計(jì)算尋找一種特殊武器的期望值
9.4.3 計(jì)算攻擊目標(biāo)的期望值
9.4.4 計(jì)算尋找地圖的期望值
9.4.5 把它們都放在一起
9.5 擴(kuò)展
9.5.1 個(gè)性
9.5.2 狀態(tài)存儲(chǔ)
9.5.3 命令排隊(duì)
9.5.4 用隊(duì)列編寫腳本行為
9.6 總結(jié)
第10章 模糊邏輯
10.1 普通集合
集合運(yùn)算符
10.2 模糊集合
10.2.1 用隸屬函數(shù)來定義模糊的邊界
10.2.2 模糊集合運(yùn)算符
10.2.3 限制詞
10.3 模糊語言變量
10.4 模糊規(guī)則
10.4.1 為武器的選擇設(shè)計(jì)模糊語言變量
10.4.2 為武器的選擇設(shè)計(jì)規(guī)則集
10.4.3 模糊推理
10.5 從理論到應(yīng)用:給一個(gè)模糊邏輯模塊編碼
10.5.1 模糊模塊類(FuzzyModule)
10.5.2 模糊集合基類(FuzzySet)
10.5.3 三角形的模糊集合類
10.5.4 右肩模糊集合類
10.5.5 創(chuàng)建一個(gè)模糊語言變量類
10.5.6 為建立模糊規(guī)則而設(shè)計(jì)類
10.6 《掠奪者》中是如何使用模糊邏輯類的
10.7 庫博方法
10.7.1 模糊推理和庫博方法
10.7.2 實(shí)現(xiàn)
10.8 總結(jié)
附錄A C++模板
附錄B UML類圖
附錄C 設(shè)置你的開發(fā)環(huán)境
跋
參考文獻(xiàn)