具體描述
編輯推薦
如何使遊戲中的角色看上去像真實的人或動物,如何讓遊戲更驚險、刺激、有趣味性,使人玩不釋手
《Unity 3D人工智能編程》通過大量的示例項目,詳細展示如何將人工智能技術應用到Unity3D遊戲,係統講解如何使遊戲角色更具智能性,增強遊戲的可玩性
人工智能技術在遊戲開發中起著至關重要的作用,遊戲角色的智能水平直接影響著遊戲的驚險性、刺激性、趣味性。本書以實例方式詳細講解如何在Unity 3D中實現不同的人工智能技術,如何應用Unity 3D內置的特性,以及如何使用Unity 3D資源商店中的腳本和插件,涵蓋有限狀態機、路徑尋找、跟隨、在圖中導航,以及行為樹等技術,並且對於所有的算法,書中都給齣瞭C# 實現代碼。
通過閱讀《Unity 3D人工智能編程》,你將學到:
構建有限狀態機。
實現一個感應係統。
將群組行為應用於飛翔的對象。
在Unity 3D中運行A*尋路算法。
在遊戲中應用概率和隨機性技巧。
使用Unity 3D專業版中的特性來在圖中導航,進行尋路。
學習行為樹以及Behave插件。
在最後的項目中,實現一個人工智能車輛戰鬥遊戲。
內容簡介
《Unity 3D人工智能編程》重點關注如何將人工智能技術應用於Unity3D遊戲項目。書中從有限狀態機開始,接著探討瞭如何為你的遊戲增加一些隨機性,讓遊戲變得更加難以預測,更加有趣。如何在一個遊戲中加入一個感應係統讓遊戲中的角色可以感知周圍的環境,同時使得代碼不會隨著項目規模的擴大變得難以維護。如何將群組行為用於一組移動的對象,這樣可以有效地控製一組移動對象的行為。然後探討瞭如何讓人工智能角色跟隨一條規定的路徑進行移動,在此基礎上,講述瞭如何實現A*尋路算法,以對遊戲引擎的尋路原理有更深一層的理解。緊接著介紹瞭如何在Unity3D中使用導航網格方便快捷地實現尋路。然後講解瞭當遊戲規模變大,有限狀態機的代碼變得冗長,難以維護時,使用行為樹來解決這個問題,並講解瞭如何在Unity3D中使用Behave這個免費插件來實現行為樹。最後,用一個車輛戰鬥遊戲將本書中提到的大多數知識點融會貫通,應用於最後這個規模稍大的遊戲中。
作者簡介
Aung Sithu Kyaw,Rival Edge公司聯閤創始人,有豐富的軟件開發經驗,並曾在多傢公司從事遊戲編程工作。他主要感興趣的領域包括遊戲編程、創業、寫作以及分享知識。此外,他還參與撰寫《Irrlicht 1.7 Realtime 3D Engine Beginner's Guide》一書。
Clifford Peters,是一位程序員和計算機科學傢,並且是一些Unity圖書的評審專傢。
Thet Naing Swe,Rival Edge公司聯閤創始人、首席創意官,目前在Rival Edge負責數字媒體交互谘詢項目。
李秉義,資深軟件工程師,擁有豐富的軟件開發經驗。目前關注數據存儲與傳輸,網絡加速等領域的技術,熱衷於研究開源係統。
目錄
前 言
第1章 人工智能導論 1
1.1 人工智能 1
1.2 遊戲中的人工智能 2
1.3 人工智能技術 3
1.3.1 有限狀態機 3
1.3.2 人工智能中的隨機性和概率 5
1.3.3 感應器係統 6
1.3.4 群組、蜂擁和羊群效應 7
1.3.5 路徑跟隨和引導 8
1.3.6 A*尋路算法 9
1.3.7 導航網格 16
1.3.8 行為樹 18
1.3.9 運動 20
1.3.10 Dijkstra算法 23
1.4 本章小結 23
第2章 有限狀態機 24
2.1 玩傢的坦剋 24
2.1.1 PlayerTankController類 25
2.1.2 初始化 26
2.2 子彈類 29
2.3 設置航點 31
2.4 抽象有限狀態機類 32
2.5 敵方坦剋的人工智能 34
2.5.1 巡邏狀態 36
2.5.2 追逐狀態 38
2.5.3 攻擊狀態 38
2.5.4 死亡狀態 40
2.6 使用有限狀態機框架 42
2.6.1 AdvanceFSM類 42
2.6.2 FSMState類 43
2.6.3 狀態類 44
2.6.4 NPCTankController 類 46
2.7 本章小結 48
第3章 隨機性和概率 49
3.1 隨機性 50
3.2 概率的定義 52
3.2.1 獨立與關聯事件 53
3.2.2 條件概率 53
3.3 人物個性 56
3.4 有限狀態機和概率 57
3.5 動態人工智能 59
3.6 示例老虎機 60
3.6.1 隨機老虎機 60
3.6.2 加權概率 63
3.7 本章小結 68
第4章 感應器的實現 70
4.1 基本的感覺係統 71
4.2 場景設置 72
4.3 玩傢的坦剋與切麵 73
4.3.1 玩傢的坦剋 74
4.3.2 切麵 75
4.4 人工智能角色 76
4.4.1 感觀 77
4.4.2 視覺 78
4.4.3 觸覺 80
4.5 測試 82
4.6 本章小結 83
第5章 群組行為 84
5.1 島嶼示例中的群組行為 84
5.1.1 個體的行為 85
5.1.2 控製器 90
5.2 替代實現 92
5.3 本章小結 99
第6章 路徑跟隨和引導行為 100
6.1 跟隨一條路徑 100
6.1.1 路徑腳本 102
6.1.2 路徑跟隨 103
6.2 避開障礙物 106
6.2.1 添加定製圖層 107
6.2.2 避開障礙 108
6.3 本章小結 113
第7章 A*尋路算法 114
7.1 迴顧A*尋路算法 114
7.2 實現 116
7.2.1 Node 116
7.2.2 PriorityQueue 117
7.2.3 GridManager 118
7.2.4 AStar 123
7.2.5 TestCode類 126
7.3 場景設置 128
7.4 測試 131
7.5 本章小結 132
第8章 導航網格 133
8.1 簡介 134
8.2 設置地圖 134
8.2.1 Navigation Static 135
8.2.2 烘焙導航網格 135
8.2.3 導航網格代理 136
8.3 有斜坡的場景 139
8.4 NavMeshLayers 141
8.5 分離網格鏈接 144
8.5.1 生成分離網格鏈接 145
8.5.2 手動生成分離網格鏈接 146
8.6 本章小結 148
第9章 行為樹 149
9.1 Behave插件 149
9.2 工作流 151
9.3 行為節點 153
9.4 與腳本的接口 155
9.5 裝飾節點 158
9.6 Behave調試器 160
9.7 順序節點 160
9.8 探索Behave的結果 162
9.9 選擇節點 163
9.10 優先級選擇節點 166
9.11 並行節點 168
9.12 引用 169
9.13 機器人與外星人項目 170
9.14 本章小結 173
第10章 融會貫通 174
10.1 場景設置 175
10.2 車輛 177
10.2.1 玩傢控製的車輛 178
10.2.2 人工智能車輛控製器 180
10.2.3 有限狀態機 182
10.3 武器 187
10.3.1 槍 187
10.3.2 子彈 189
10.3.3 發射器 191
10.3.4 導彈 193
10.4 本章小結 195
前言/序言
本書旨在幫助你把各種人工智能技術應用到你的遊戲中。我們將會討論決策技術,比如有限狀態機和行為樹;也將探討運動、避開障礙和群組行為;還將演示如何跟隨一條路徑,如何使用A*尋路算法來創建一條路徑,以及如何使用導航網格到達目的地。作為額外收獲,你將詳細瞭解隨機性和概率,並把這些概念應用到最後一個綜閤項目中。 本書內容第1章討論什麼是人工智能,如何將其應用到遊戲中,以及遊戲中使用的各種實現人工智能的技術。 第2章討論人工智能中需要用到的一種簡化決策管理的方法。我們使用有限狀態機來確定人工智能在特定狀態下的行為,以及這種狀態下人工智能如何轉換為其他狀態。 第3章討論概率論的基礎知識,以及如何改變特定輸齣的概率。然後學習如何給遊戲增加隨機性,讓遊戲中的人工智能更難以預測。 第4章介紹怎樣讓遊戲角色在某些情況下能夠感知他們周圍的世界。當他們具有視覺和聽覺時,遊戲角色會知道敵人就在附近,他們還會知道何時發起攻擊。 第5章討論多個對象組隊同時行進的情況。該章將探討兩種實現群組行為的方式,以及這兩種方式是怎樣使這些對象同時行進的。 第6章學習人工智能角色如何跟隨一條給定的路徑到達目的地。我們將瞭解人工智能角色如何在不知道路徑的情況下找到目標,以及如何使其移嚮目標的同時避開障礙。 第7章討論一個流行的算法,即尋找從指定位置到目標位置的最優路徑。有瞭A*算法,我們可以掃描地形並找到到達目標的最優路徑。 第8章討論如何利用Unity的能力使尋路更易於實現。通過創建一個導航網格(需要使用Unity Pro版),我們能夠更好地錶示周圍的場景,然後就能使用圖塊和A*算法。 第9章講解從有限狀態機擴展而來的行為樹,即使在最為復雜的遊戲中我們也可以使用它。我們將使用免費插件Behave來幫助在Unity中創建並管理行為樹。 第10章把我們在本書中所學的各種原理整閤在最後一個項目中。在這裏你能夠應用所學的人工智能原理,設計齣一個令人難忘的車輛戰鬥遊戲。 本書要求配置學習本書,要求讀者安裝Unity 3.5或更高版本。第8章討論導航網格,顧名思義涉及創建一個導航網格,這需要你安裝Unity Pro版本;第9章討論行為樹,要求下載Behave——一個免費的行為樹插件,這需要你擁有一個Unity Store賬號。不過這些需求都是可選的,因為本書配備的資源中已經為你準備好瞭導航網格和Behave插件,可登錄華章網站下載。 本書的讀者對象本書麵嚮任何想要學習將人工智能應用到遊戲中的讀者,並側重於之前有Unity使用經驗的讀者。我們會用C#語言編寫代碼,所以我們希望你熟悉C#。 下載示例代碼和書中的彩色插圖你可以在華章網站的本書頁麵中下載示例代碼文件和書中的彩色插圖。
《Unity 3D遊戲開發實戰:從零到精通》 一、 序言:開啓你的遊戲開發之旅 你是否曾夢想親手打造一款引人入勝的Unity 3D遊戲?是否渴望將腦海中天馬行空的創意轉化為觸手可及的數字世界?《Unity 3D遊戲開發實戰:從零到精通》正是為你量身打造的入門與進階指南。本書將帶領你踏上一段激動人心的Unity 3D遊戲開發之旅,從最基礎的概念入手,逐步深入到復雜的遊戲係統設計與實現,最終幫助你掌握獨立開發高質量Unity 3D遊戲的技能。 本書不同於市麵上充斥著理論堆砌的教程,我們堅持以實戰為導嚮,通過大量的案例分析和項目實踐,讓你在動手操作中學習,在解決問題的過程中成長。無論你是完全零基礎的初學者,還是已經接觸過遊戲開發但希望係統學習Unity 3D的開發者,都能在這本書中找到屬於自己的價值。我們將陪伴你,一步步揭開Unity 3D的神秘麵紗,讓你從一個遊戲愛好者蛻變為一名自信的遊戲創作者。 二、 核心內容概覽:掌握Unity 3D開發全流程 本書內容涵蓋Unity 3D遊戲開發的方方麵麵,力求為你構建一個全麵而紮實的知識體係。我們將從以下幾個核心維度展開: 1. Unity 編輯器精通:你的創意工作颱 界麵與工作流程: 深入理解Unity編輯器的各個窗口(Scene, Game, Inspector, Project, Hierarchy等)的功能和協同工作方式,熟悉快捷鍵和常用操作,提升開發效率。 資源管理: 學習如何導入、組織和管理項目中的各種資源(模型、紋理、音頻、腳本等),掌握資源導入設置,優化資源導入流程。 場景構建: 掌握場景(Scene)的概念,學習如何創建、編輯和組織場景中的遊戲對象(GameObject),理解 Prefab 的強大之處,以及如何利用它們構建復雜場景。 地形與環境: 學習使用Unity內置的地形係統創建逼真的自然環境,包括紋理繪製、細節添加、植被生成等。 光照與渲染: 深入理解Unity的光照模型(實時光照、烘焙光照),學習設置各種光源(Directional, Point, Spot),掌握陰影效果,並瞭解後處理(Post-processing)技術,為遊戲營造獨特的視覺風格。 2. 腳本編程與交互:賦予遊戲生命 C 基礎迴顧與精煉: 針對遊戲開發所需,快速迴顧和強調C語言的關鍵特性,包括變量、數據類型、控製流、函數、類、對象、繼承、多態等,並重點講解如何在Unity腳本中應用。 Unity API 核心: 掌握Unity腳本與編輯器交互的核心API,包括 MonoBehaviour 生命周期(Awake, Start, Update, FixedUpdate, LateUpdate等)、Transform 組件操作、Input 係統、Rigidbody 物理組件、Collider 碰撞檢測等。 物理引擎應用: 深入理解Unity的物理引擎,學習如何利用 Rigidbody 和 Collider 組件實現逼真的物理效果,如碰撞、重力、關節等,並掌握其參數調優。 射綫檢測與觸發器: 學習使用射綫檢測(Raycasting)實現各種交互功能,如鼠標拾取、目標鎖定、掃描等。理解並應用觸發器(Trigger)與碰撞器(Collider)的區彆,實現更精細的交互邏輯。 動畫係統: 掌握Unity的動畫係統(Animator Controller, Animation Clips),學習如何創建、導入和控製動畫,實現角色動作、UI動畫等。 UI 係統: 學習Unity的UI係統(UGUI),包括 Canvas, RectTransform, Image, Text, Button, Slider 等常用組件,掌握 UI 布局、事件處理和交互設計。 3. 遊戲係統設計與實現:構建完整遊戲體驗 玩傢控製: 設計和實現各種類型的玩傢控製方式,如第一人稱、第三人稱、俯視角等,並考慮移動、跳躍、射擊等操作的流暢性。 AI 基礎: (此處不深入AI編程,而是側重於AI在遊戲中的應用錶現)理解遊戲中常見的AI行為模式,如巡邏、追擊、躲避、尋路等,並學習如何利用Unity提供的工具或簡單腳本實現這些行為,為遊戲世界增添活力。 敵人設計與行為: 設計不同類型的敵人,賦予它們獨特的攻擊模式、移動方式和AI行為,使其成為遊戲挑戰的關鍵元素。 關卡設計與流程: 學習如何規劃遊戲關卡,設置遊戲流程,引導玩傢探索,並融入解謎、戰鬥等元素。 遊戲狀態管理: 實現遊戲主循環、場景切換、遊戲暫停、遊戲結束等核心狀態管理邏輯。 音效與音樂: 學習如何導入、播放和管理遊戲音效與背景音樂,增強遊戲的沉浸感。 粒子係統: 利用Unity的粒子係統(Particle System)創建各種視覺特效,如爆炸、火焰、魔法效果等,提升遊戲的美術錶現力。 4. 性能優化與發布:讓你的遊戲更上一層樓 性能分析與瓶頸查找: 學習使用Unity的Profiler工具,分析遊戲的CPU、GPU、內存占用,找齣性能瓶頸。 常見優化技巧: 掌握各種性能優化策略,如Draw Call批處理、LOD(Level of Detail)、遮擋剔除(Occlusion Culling)、物理層(Physics Layers)、對象池(Object Pooling)等。 內存管理: 理解Unity的內存分配機製,學習如何減少內存占用,避免內存泄露。 打包與發布: 學習如何將Unity項目打包成獨立的可執行文件,支持不同的平颱(Windows, macOS, WebGL, Android, iOS等),並瞭解發布前的相關設置。 三、 案例驅動:實戰項目貫穿始終 本書將通過一係列精心設計的實戰項目,讓你將理論知識付諸實踐。每個項目都將聚焦於特定的遊戲類型或開發技術,力求做到: 由淺入深: 項目難度循序漸進,從簡單的原型到更復雜的完整遊戲。 實用性強: 項目內容貼近實際遊戲開發需求,學到的技能可以直接應用於你的個人項目。 模塊化設計: 每個項目都可視為一個獨立的學習單元,方便讀者根據自己的興趣選擇性學習。 我們將可能涵蓋的項目類型包括但不限於: 2D 橫版闖關遊戲: 學習平颱跳躍、角色控製、敵人AI、收集品係統等。 3D 第一人稱射擊(FPS)原型: 掌握第一人稱視角控製、槍械射擊、敵人AI、彈道計算等。 3D 動作冒險遊戲基礎: 學習第三人稱角色控製、相機跟隨、場景互動、基礎謎題等。 簡單的策略遊戲元素: 探索單位移動、資源收集、簡單的戰鬥邏輯等。 UI 驅動的休閑遊戲: 專注於 UI 交互、遊戲狀態管理、得分係統等。 四、 誰適閤閱讀本書? 遊戲開發愛好者: 擁有將創意變成現實的渴望,想要係統學習Unity 3D遊戲開發。 計算機科學專業的學生: 希望將理論知識應用於實際遊戲開發項目,拓展技能。 程序員轉型遊戲開發: 具備編程基礎,希望學習遊戲引擎開發的技術棧。 獨立遊戲開發者: 尋求全麵而實用的Unity 3D開發指南,提升開發效率和作品質量。 希望學習新技能的任何人: 對遊戲開發充滿好奇,並願意投入時間和精力去學習。 五、 學習本書,你將收獲什麼? 紮實的 Unity 3D 基礎: 從編輯器操作到腳本編程,全麵掌握 Unity 的核心功能。 完整的遊戲開發流程: 學習從概念到實現,再到優化的全過程。 解決實際問題的能力: 通過大量的案例和項目,鍛煉獨立解決開發中遇到的技術難題。 自信的獨立開發能力: 掌握開發一款小型到中型 3D 遊戲所需的關鍵技能。 一份寶貴的開發經驗: 本書將分享大量在實際開發中總結齣的寶貴經驗和技巧。 六、 結語:踏上你的創作之路 《Unity 3D遊戲開發實戰:從零到精通》不僅僅是一本書,它更是你遊戲開發旅程中的一位忠實夥伴。我們相信,通過本書的學習,你將能夠自信地站在Unity 3D開發的起點,並且有能力不斷精進,創造齣屬於你自己的精彩遊戲世界。現在,就讓我們一起,開啓這段激動人心的創作之旅吧!