|
-- 會員 / 註冊 --
|
|
|
|
Lua游戲AI開發指南 ( 簡體 字) |
作者:[美] David Young 楊 | 類別:1. -> 遊戲 -> 遊戲程式 |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 46031 詢問書籍請說出此書號!【缺書】 NT售價: 345 元 |
出版日:1/1/2017 |
頁數:304 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115439475 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 游戲人工智能(游戲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
|
序: |
|