內容簡介
要想開發一款優秀的遊戲,人工智能必不可少。
《Unity3D人工智能編程精粹》精選瞭Unity3D遊戲開發中最關鍵、最實用的幾項人工智能關鍵技術,以實例的方式由淺入深地講解瞭深奧而強大的人工智能技術、設計原則以及編程實現方法,並且對書中的每一個案例都進行瞭詳細注釋,所有實例均運行測試通過。掌握瞭書中的技術,可以使遊戲角色具有良好的智能,大大增強遊戲的可玩性!
《Unity3D人工智能編程精粹》共分7章:第1章中給齣瞭遊戲人工智能的運動層、決策層、戰略層的架構模型,將遊戲角色模擬人的感知、決策和移動等問題進行分層處理與實現;第2章講解瞭多種操控角色自主移動的算法,讓角色在遊戲中的運動看起來更真實自然、運算速度更快;第3章采用圖示的方式詳細講解瞭遊戲尋路中著名的A*尋路技術,並進一步介紹瞭復雜地形、以及存在敵方火力威脅下的戰術尋路技術;第4章講解瞭遊戲角色感知遊戲世界的實現方法。例如,發現敵人的位置、追尋爆炸聲、讓角色具有短期記憶,根據腳印進行追蹤等;第5章~第6章講解瞭最常用的決策技術——狀態機與行為樹技術,並對比分析瞭有限狀態機與行為樹技術在遊戲人工智能中的適用範圍。在處理大規模的遊戲決策問題時,行為樹剋服瞭有限狀態機的許多缺點,層次清晰、易於發現差錯和調試,能大大減少編程者的負擔;第7章綜閤運用瞭A*尋路、行為樹等技術,給齣瞭一個具有較高人工智能水平的第三人稱射擊遊戲實例。
內頁插圖
目錄
第1章 Unity3D人工智能架構模型
1.1 遊戲AI的架構模型
1.1.1 運動層
1.1.2 決策層
1.1.3 戰略層
1.1.4 AI架構模型的其他部分
1.2 FPS/TPS遊戲中的AI解析
1.2.1 FPS/TPS中的運動層
1.2.2 FPS/TPS中的決策層
1.2.3 FPS/TPS中的戰略層
1.2.4 FPS/TPS中AI架構模型的支撐部分
第2章 實現AI角色的自主移動——操控行為
2.1 Unity3D操控行為編程的主要基類
2.1.1 將AI角色抽象成一個質點——Vehicle類
2.1.2 控製AI角色移動——AILocomotion類
2.1.3 各種操控行為的基類——Steering類
2.2 個體AI角色的操控行為
2.2.1 靠近
2.2.2 離開
2.2.3 抵達
2.2.4 追逐
2.2.5 逃避
2.2.6 隨機徘徊
2.2.7 路徑跟隨
2.2.8 避開障礙
2.3 群體的操控行為
2.3.1 組行為
2.3.2 檢測附近的AI角色
2.3.3 與群中鄰居保持適當距離——分離
2.3.4 與群中鄰居朝嚮一緻——隊列
2.3.5 成群聚集在一起——聚集
2.4 個體與群體的操控行為組閤
2.5 幾種操控行為的編程解析
2.5.1 模擬鳥群飛行
2.5.2 多AI角色障礙賽
2.5.3 實現動物遷徙中的跟隨領隊行為
2.5.4 排隊通過狹窄通道
2.6 操控行為的快速實現——使用Unity3D開源庫UnitySteer
2.7 操控行為編程的其他問題
第3章 尋找最短路徑並避開障礙物——A*尋路
3.1 實現A*尋路的3種工作方式
3.1.1 基本術語
3.1.2 方式1:創建基於單元的導航圖
3.1.3 方式2:創建可視點導航圖
3.1.4 方式3:創建導航網格
3.2 A*尋路算法是如何工作的
3.2.1 A*尋路算法的僞代碼
3.2.2 用一個實例來完全理解A*尋路算法
3.3 用A*算法實現戰術尋路
3.4 A*PathfindingProject插件的使用
3.4.1 基本的點到點尋路
3.4.2 尋找最近的多個道具(血包、武器、藥等)
3.4.3 戰術尋路——避開火力範圍
3.4.4 在復雜地形中尋路——多層建築物中的跨層尋路
3.4.5 RTS中的小隊尋路——用操控行為和A*尋路實現
3.4.6 使用A*PathfindingProject插件需要注意的問題
3.5 A*尋路的適用性
第4章 AI角色對遊戲世界的感知
4.1 AI角色對環境信息的感知方式
4.1.1 輪詢方式
4.1.2 事件驅動方式
4.1.3 觸發器
4.2 常用感知類型的實現
4.2.1 所有觸發器的基類——Trigger類
4.2.2 所有感知器的基類——Sensor類
4.2.3 事件管理器
4.2.4 視覺感知
4.2.5 聽覺感知
4.2.6 觸覺感知
4.2.7 記憶感知
4.2.8 其他類型的感知——血包、寶物等物品的感知
4.3 AI士兵的綜閤感知示例
4.3.1 遊戲場景設置
4.3.2 創建AI士兵角色
4.3.3 創建玩傢角色
4.3.4 顯示視覺範圍、聽覺範圍和記憶信息
4.3.5 遊戲運行結果
第5章 AI角色自主決策——有限狀態機
5.1 有限狀態機的FSM圖
5.1.1 《Pac-Man(吃豆人)》遊戲中紅幽靈的FSM圖
5.1.2 《QuakeⅡ(雷神2)》中Monster怪獸的有限狀態機
5.2 方法1:用Switch語句實現有限狀態機
5.2.1 遊戲場景設置
5.2.2 創建子彈預置體
5.2.3 創建敵人AI角色
5.2.4 創建玩傢角色及運行程序
5.3 方法2:用FSM框架實現通用的有限狀態機
5.3.1 FSM框架
5.3.2 FSMState類——AI狀態的基類
5.3.3 AdvancedFSM類——管理所有的狀態類
5.3.4 PatrolState類——AI角色的巡邏狀態
5.3.5 ChaseState類——AI角色的追逐狀態
5.3.6 AttackState類——AI角色的攻擊狀態
5.3.7 DeadState類——AI角色的死亡狀態
5.3.8 AIController類——創建有限狀態機,控製AI角色的行為
5.3.9 遊戲場景設置
第6章 AI角色的復雜決策——行為樹
6.1 行為樹技術原理
6.1.1 行為樹基本術語
6.1.2 行為樹中的葉節點
6.1.3 行為樹中的組閤節點
6.1.4 子樹的復用
6.1.5 使用行為樹與有限狀態機的權衡
6.1.6 行為樹執行時的協同(Coroutine)
6.2 行為樹設計示例
6.2.1 示例1:有限狀態機/行為樹的轉換
6.2.2 示例2:帶隨機節點的戰鬥AI角色行為樹
6.2.3 示例3:足球球員的AI行為樹
6.3 行為樹的執行流程解析——陣地軍旗爭奪戰
6.3.1 軍旗爭奪戰行為樹
6.3.2 軍旗爭奪戰的行為樹遍曆過程詳解
6.4 使用React插件快速創建敵人AI士兵行為樹
6.4.1 遊戲場景設置
6.4.2 創建行為樹
6.4.3 編寫腳本實現行為樹
6.4.4 創建敵人AI士兵角色
6.4.5 創建玩傢角色及運行程序
第7章 AI綜閤示例——第三人稱射擊遊戲
7.1 TPS遊戲示例總體設計
7.1.1 TPS遊戲示例概述
7.1.2 敵人AI角色行為樹設計
7.2 TPS遊戲示例場景的創建
7.2.1 遊戲場景設置
7.2.2 隱蔽點設置
7.3 為子彈和武器編寫腳本
7.3.1 創建子彈預置體
7.3.2 為M4槍編寫腳本
7.4 創建玩傢角色
7.5 創建第三人稱相機
7.6 創建敵人AI士兵角色
7.6.1 用React插件畫齣行為樹
7.6.2 為行為樹編寫代碼
7.6.3 敵人AI士兵角色控製腳本
7.7 創建GUI用戶界麵
7.8 遊戲截圖
參考文獻
前言/序言
《遊戲世界中的智慧湧現:從基礎到高級的AI設計之道》 你是否曾為遊戲角色那令人驚嘆的自主行為而著迷?它們如何感知周圍環境,做齣逼真的決策,甚至展現齣令人意想不到的“個性”?這背後並非神秘魔法,而是精妙的AI設計。本書將帶領你深入遊戲AI的核心,從最基礎的原理剖析,逐步構建起令人信服的智能體,直至創造齣能夠主宰虛擬世界的復雜AI係統。 第一篇:智能體的基石——感知、決策與行動 在本篇中,我們將奠定堅實的AI基礎。遊戲中的智能體並非孤立存在,它們需要與遊戲世界進行交互。 感知世界: 智能體如何“看見”和“聽見”?我們將探索各種傳感器模擬技術,包括視綫檢測(Raycasting)、觸發器(Colliders)的碰撞檢測、聽覺範圍模擬,以及如何利用遊戲內置的物理引擎和幾何學原理來構建這些感知係統。你將學習如何讓AI感知玩傢的方位、障礙物的存在、友軍的位置,甚至是其他NPC的微小動作。我們將深入研究視錐體(Frustum Culling)在AI感知中的應用,以及如何根據距離和角度優化感知效率。 理解與決策: 感知到的信息必須被處理,纔能轉化為有意義的行動。我們將深入探討決策製定的核心機製。 有限狀態機(Finite State Machines, FSMs): 這是最經典也是最常用的AI狀態管理工具。你將學習如何設計和實現清晰的狀態轉換,例如“巡邏”、“追逐”、“攻擊”、“逃跑”、“待機”等。我們將通過實際案例演示如何構建復雜的FSM,處理狀態之間的優先級和過渡條件,並深入講解狀態機在大型遊戲項目中的可維護性和擴展性。 行為樹(Behavior Trees, BTs): 相較於FSM,行為樹提供瞭更靈活、更模塊化的AI控製方式。我們將從零開始構建行為樹,學習其節點類型(Sequence, Selector, Parallel, Decorator, Condition, Action),以及如何組閤它們來創建復雜的AI邏輯。你將理解行為樹如何實現更細粒度的行為控製,例如在追逐過程中優先拾取道具,或是在逃跑時尋找掩體。我們將探討行為樹在AI“編舞”中的強大能力,讓AI的行為更加流暢和智能。 效用係統(Utility Systems): 在某些情況下,AI需要權衡多個選項並選擇最優解。效用係統為此提供瞭優雅的解決方案。你將學習如何定義效用函數,根據各種因素(如威脅等級、生命值、彈藥儲備、距離等)計算行動的“效用值”,並選擇最高效用的行動。我們將探討效用係統在RPG、策略遊戲等需要復雜資源管理和目標選擇場景下的應用。 黑闆係統(Blackboard Systems): 當多個AI係統需要共享信息時,黑闆係統就顯得尤為重要。我們將介紹黑闆的概念,以及如何利用它來存儲和檢索AI共享的數據,實現AI之間的協同與交流。 付諸行動: 決策的最終目的是驅動智能體做齣相應的動作。我們將探討如何將AI的決策轉化為遊戲中的具體行為。 尋路(Pathfinding): 智能體需要在復雜的遊戲環境中找到通往目標的最優路徑。我們將詳細講解A(A-star)算法,包括其工作原理、節點錶示、啓發式函數的設計,以及如何在網格(Grid-based)和導航網格(Navmesh-based)環境中實現高效尋路。你將學習如何處理動態障礙物、動態導航網格的更新,以及如何優化尋路性能。 運動控製(Movement Control): 如何讓AI的移動更加自然和逼真?我們將探討角色動畫的驅動,包括動畫狀態機與AI決策的聯動,以及如何實現平滑的位移動畫過渡。還將涉及基礎的避障算法,確保AI在移動過程中不會卡住。 第二篇:進階智能:學習、適應與協作 當智能體的基礎行為得以實現,我們便可以著手賦予它們更高級的“智慧”。 學習與適應: 真正的智能體能夠從經驗中學習並調整自己的行為。 強化學習(Reinforcement Learning, RL)基礎: 雖然直接在大型遊戲引擎中實現完整的深度強化學習可能麵臨性能挑戰,但我們可以學習其核心思想。我們將介紹RL的基本概念:狀態(State)、動作(Action)、奬勵(Reward)、Q-learning,以及如何設計簡單的奬勵函數來引導AI學習特定行為。通過對RL原理的理解,你可以為AI設計更具動態適應性的策略。 參數調優與麯綫(Parameter Tuning & Curves): 許多AI行為可以通過調整參數來達到最佳效果。你將學習如何使用數據驅動的方法,通過實驗和分析來找到最優參數,或者利用麯綫編輯器來平滑地調整AI的行為閾值和響應速度。 群體智能(Flocking & Swarming): 許多遊戲場景需要一群智能體協同行動,例如敵方士兵的協同作戰、NPC的群體行為。 Boids算法: 我們將深入講解Boids算法,學習如何通過模擬“分離”、“對齊”和“聚集”這三個基本規則,來創造齣逼真的群體行為。你將學會如何調整規則的權重,以實現不同的群體動態,例如悠閑的鳥群或緊密協同的蜂群。 團隊協作: 在更復雜的場景下,AI需要進行有目的的團隊協作。我們將探討如何利用有限狀態機或行為樹來協調團隊成員,例如指定掩護目標、分配攻擊順序、執行包圍戰術等。 預測與規避: 高級AI能夠預測玩傢或其他AI的意圖,並據此采取行動。 玩傢行為預測: 通過分析玩傢過去的行動模式,AI可以嘗試預測玩傢下一步的行動。我們將介紹一些基礎的預測技術,例如基於曆史數據的簡單統計模型,以及如何利用這些預測來增強AI的反應能力。 動態避障與導航: 除瞭靜態尋路,AI還需要應對動態變化的環境。我們將深入研究如何實現動態避障,讓AI能夠靈活地躲避突然齣現的障礙物或敵方火力,並在復雜地形中保持流暢的移動。 第三篇:AI的藝術——沉浸感與交互性 最終,AI的目的是為玩傢創造更豐富、更具沉浸感的遊戲體驗。 “演齣”AI: 有時,AI的行為並非完全基於最優策略,而是為瞭“演齣”而設計。 程序化敘事(Procedural Narrative)中的AI: 如何讓AI的行為推動故事發展?我們將探討如何將AI的行為與遊戲敘事相結閤,讓AI的決策和行動能夠觸發事件、影響劇情走嚮,從而創造齣動態和個性化的遊戲體驗。 “擬人化”AI: 我們將研究如何通過細微的AI行為來賦予NPC個性,例如讓AI角色在無事可做時錶現齣好奇、沮喪或疲憊等情緒,通過微小的動作和錶情來增強玩傢對角色的認同感。 AI係統的集成與優化: 性能考量: 在一個龐大而復雜的遊戲中,AI的性能至關重要。我們將深入探討各種AI係統的性能優化技巧,包括算法的選擇、數據結構的優化、緩存策略的應用,以及如何在多綫程環境下實現AI計算。 AI調試與迭代: 設計和調試AI是一個持續迭代的過程。我們將介紹各種常用的AI調試工具和方法,例如AI可視化工具、日誌記錄、斷點調試,以及如何有效地收集和分析AI的行為數據來改進設計。 本書特點: 循序漸進,理論與實踐並重: 從最基礎的概念齣發,逐步深入到高級技術,並輔以大量的代碼示例和實際項目案例,讓你能夠快速上手並解決實際問題。 廣泛的適用性: 書中介紹的AI技術和原理廣泛應用於各種類型的遊戲,包括動作遊戲、RPG、策略遊戲、模擬遊戲等,無論你正在開發何種類型的遊戲,都能從中受益。 麵嚮未來的AI設計: 即使你不是AI領域的專傢,也能通過本書掌握構建逼真、智能且引人入勝的遊戲AI的核心技能,為未來的遊戲開發打下堅實基礎。 本書不僅僅是關於代碼的堆砌,更是關於理解和創造“智能”。它將幫助你洞察遊戲世界中那些賦予角色生命與靈魂的奧秘,讓你能夠設計齣真正令人難忘的遊戲AI。準備好踏入這場構建智慧生物的旅程瞭嗎?