Unity3D 是近幾年非常流行的3D 遊戲開發引擎,已成為手機遊戲開發的主要開發工具之一,手機(或其他平台)的遊戲逐漸高階化、複雜化,遊戲角色也需要具有更高的「智慧」。
角色的AI(人工智慧)水準直接決定遊戲的驚險性、刺激性、趣味性,優秀的遊戲會使人玩不釋手。為了讓遊戲可以被玩家接受,使遊戲變得更加有趣,更要依賴於AI。
本書特點
■ 精選遊戲AI 中最必要、最實用的幾項關鍵技術,用大量Unity3D範例程式、圖片,以深入淺出的方式說明遊戲人工智慧理論、設計原則和Unity3D 程式設計實現方法。
■ 每個程式都有詳細的註釋並執行測試成功。程式對Unity3D 的版本(3.X/4.X/5.X) 依賴性不大。
■ 希望為具備初步Unity3D 遊戲開發程式設計能力的讀者,創作「更高智慧」遊戲角色時提供系統地、快速地幫助。
適用: Unity3D 遊戲開發者、遊戲開發培訓機構的師生、數位媒體技術、數位媒體藝術等專業者。
作者序
前言
☘寫作目的
Unity3D 是近幾年非常流行的3D 遊戲開發引擎,已成為手機遊戲開發的主要開發工具之一,也用於電腦虛擬實境領域的模擬飛行、模擬射擊、模擬駕駛等技術的開發。手機(或其他平台)的遊戲逐漸高階化、複雜化,遊戲角色也需要具有更高的「智慧」。
遊戲中角色的AI(人工智慧)水準直接決定著遊戲的驚險性、刺激性、趣味性,優秀的遊戲會使人玩不釋手。在人機對戰的TPS(第三人稱角度射擊遊戲)遊戲中,為了讓遊戲可以被玩家接受,使遊戲變得更加有趣,很大程度上更要依賴於AI。可以想像,如果敵人角色都只會呆滯地、向前進直衝進玩家的炮火中,玩家很快就會對此失去興趣而棄之。遊戲《半條命》因老練狡猾的敵人「海軍陸戰隊」的AI 系統而聞名;《星海爭霸》遊戲因廣泛使用尋路技術而讓我們看到戰場上士兵的編隊移動,現已成為RTS(即時戰略遊戲)遊戲的潮流。
大部分的Unity3D 書籍多屬初階入門級的參考書,尚無Unity3D 遊戲人工智慧的專門中文書籍,而其專題內容一般只在網際網路「討論區」上出現,缺少系統化詳解。
為此,本書精選遊戲AI 中最必要、最實用的幾項關鍵技術,用大量Unity3D
範例程式、圖片,以深入淺出的方式說明遊戲人工智慧理論、設計原則和
Unity3D 程式設計實現方法。每個程式都有詳細的註釋並執行測試成功。程式對Unity3D 的版本(3.X/4.X/5.X) 依賴性不大。希望本書能為具備初步Unity3D 遊戲開發程式設計能力的讀者在創作「更高智慧」遊戲角色時提供系統地、快速地幫助。
前言
☘寫作目的
Unity3D 是近幾年非常流行的3D 遊戲開發引擎,已成為手機遊戲開發的主要開發工具之一,也用於電腦虛擬實境領域的模擬飛行、模擬射擊、模擬駕駛等技術的開發。手機(或其他平台)的遊戲逐漸高階化、複雜化,遊戲角色也需要具有更高的「智慧」。
遊戲中角色的AI(人工智慧)水準直接決定著遊戲的驚險性、刺激性、趣味性,優秀的遊戲會使人玩不釋手。在人機對戰的TPS(第三人稱角度射擊遊戲)遊戲中,為了讓遊戲可以被玩家接受,使遊戲變得更加有趣,很大程度上更要依賴於AI。可以想像,如果敵人角色都只會呆滯地、向前進直...
目錄
前言
Chapter 01 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 架構模型的支撐部分
Chapter 02 實現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 操控行為程式設計的其他問題
Chapter 03 尋找最短路徑並避開障礙物: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* Pathfinding Project 外掛程式的使用
3.4.1 基本的點到點尋路
3.4.2 尋找最近的多個道具(生命值、武器、藥等)
3.4.3 戰術尋路:避開火力範圍
3.4.4 在複雜地形中尋路:多層建築物中的跨層尋路
3.4.5 RTS 中的小隊尋路:用操控行為和A* 尋路實現
3.4.6 使用A* Pathfinding Project 外掛程式需要注意的問題
3.5 A* 尋路的適用性
Chapter 04 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 遊戲執行結果
Chapter 05 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 遊戲場景設定
Chapter 06 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 建立玩家角色及執行程式
Chapter 07 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 遊戲畫面
前言
Chapter 01 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 架構模型的支撐部分
Chapter 02 實現AI 角色的自主移動:操控行為
2.1 Unity3D 操控行為程式設計的主要基礎類別
2.1.1 將AI 角色抽象成一個質點:Vehicle 類別
2.1.2 控制AI 角色移動:AILocomotion 類別
2.1.3 各種操控行為的基礎類別:St...