內容簡介
本書結合作者多年的開發經驗,從角色、戰鬥、關卡和物理等多個層面深入解析動作遊戲開發中的各種難點問題。本書儘可能避開動作遊戲開發中的簡單問題,而是把重點放在剖析難點問題上,從而幫助讀者鑽煮背牛更加深入地理解動作凶汽舉遊戲開發的相關知識。
本書共10章。第1章簡要介紹動作遊戲的發展和現狀;第2章介紹動作遊戲開發的前期準備;第3章深入介紹動作遊戲的物理系統;第4章介紹動作遊戲主角系統的設翻犁紙計;第5章深入介紹動作遊戲關卡部分的設計;第6章深入介紹動作遊戲戰鬥部分的設計;第7章介紹動作遊戲的相機、Cutscene過場動畫、輸入、IK與音頻管理等模組;第8章介紹動作遊戲的畫面特效與後處理;第9章對《忍者龍劍傳∑2》《君臨都市》《戰神3》三個動作遊戲案例進行剖析;第10章介紹橫版動作遊戲的Demo設計。
本書內容豐富,知煮頁恥識體系完整,非常適合所有想學習動作遊戲開發的人員閱讀,尤其適合從事動作遊戲開發的程式設計師、Unity3D工程師和Steam遊戲從業人員閱讀。另外,本書還可以作為相關院校及社會培訓機構的教材。
出版背景
第1篇 概述及前期準備
第1章 概述 2
1.1 本書的側重點及目標 2
1.2 Unity3D引擎在大環境中的發展現狀 4
1.3 Steam、獨立遊戲及動作遊戲的現狀 5
1.4 設計目標:大而全還是小而精 7
第2章 前期準備 9
2.1 通用預備知識 9
2.1.1 使用協程分解複雜邏輯 9
2.1.2 自定義的插值公式 10
2.1.3 訊息模組的設計 12
2.1.4 模組間的管理與協調 13
2.2 基於編輯器環境的基礎知識 14
2.2.1 編輯器工具的編寫 15
2.2.2 關聯敬詢歸朽遊戲配置數據 19
2.2.3 常量生成器 22
2.3 3D遊戲所需要的數學知識 24
2.3.1 向量加減 24
2.3.2 點乘 25
2.3.3 叉乘 26
2.3.4 投影 27
2.3.5 四元數 28
2.4 其他準備 29
2.4.1 關注項目中的GC問題 29
2.4.2 控制台工具的編寫 31
2.4.3 項目目錄結構建議 32
2.4.4 項目的程式流程結構建議 33
第2篇 動作遊戲核心模組
第3章 物理系統詳解 36
3.1 物理系統基本內容梳理 36
3.1.1 系統參數臭懂察設定 36
3.1.2 Fixed Update更新頻率37
3.1.3 Rigidbody參數簡介 38
3.1.4 物理材質設定 38
3.2 常見問題 39
3.2.1 物理步的理解誤區 39
3.2.2 重疊與擠出問題 40
3.2.3 地面檢測最佳化處理 40
3.2.4 Dash與瞬移的最佳化 41
3.2.5 踩頭問題及解決方法 42
3.2.6 動畫根運動的物理問題 45
3.3 為動作遊戲定製碰撞系統 46
3.3.1 設計目標 46
3.3.2 OBB碰撞檢測簡介 47
3.3.3 Box與Box相交測試 47
3.3.4 Box與Sphere相交測試 50
3.3.5 Sphere與Sphere相交測試 52
3.3.6 不同形狀的邊界點獲取 52
3.3.7 碰撞對象管理器 56
第4章 主角系統設計 58
4.1 基榆鞏礎要素 58
4.1.1 同類遊戲對比 58
4.1.2 邏輯編寫前的準備工作 59
4.1.3 移動邏輯 59
4.1.4 跳躍邏輯 65
4.1.5 攻擊邏輯 67
4.1.6 受擊邏輯 69
4.1.7 應對腳本類爆炸的問題 71
4.2 常規功能 72
4.2.1 角色有限狀態機 72
4.2.2 設計掛接點接口 73
4.2.3 技能系統 74
4.2.4 連續技功能 75
4.3 場景互動部分 78
4.3.1 角色凍結 78
4.3.2 場景互動組件 79
第5章 關卡部分詳解 82
5.1 前期考量 82
5.1.1 從Graybox說起 82
5.1.2 規劃層級結構 83
5.1.3 模型的導出與調試 84
5.2 開發階段深入解析 85
5.2.1 SpawnPoint的使用 85
5.2.2 擴展SpawnPoint 87
5.2.3 對象池的編寫 92
5.2.4 關卡模組的序列化 94
5.2.5 戰鬥壁障的實現 99
5.3 光照與烘焙 102
5.3.1 不同GI類型的選擇 102
5.3.2 預計算光照的使用 103
5.3.3 光照探針的使用 104
5.3.4 反射探針簡要介紹 104
5.3.5 藉助LPPV最佳化烘焙 105
第6章 戰鬥部分深入解析 107
6.1 角色模組 107
6.1.1 Motor組件的設計 107
6.1.2 動畫事件的處理 110
6.1.3 Animator常見問題整理 112
6.2 設計一個可擴展的戰鬥系統 114
6.2.1 基礎戰鬥框架編寫 115
6.2.2 添加傷害傳遞邏輯 117
6.2.3 配置傷害碰撞 120
6.2.4 僵直度組件的添加 121
6.2.5 浮空組件的添加 123
6.3 敵人AI的設計 125
6.3.1 AI設計綜述 125
6.3.2 Behavior Designer外掛程式簡介 127
6.3.3 使用協程來開發AI程式 128
6.3.4 可控制的隨機行為 131
6.3.5 設計共享數據段 132
6.3.6 場景信息的獲取 133
第7章 其他模組 135
7.1 相機 135
7.1.1 常見的相機模式分類 135
7.1.2 常規第三人稱相機實現 136
7.1.3 滑軌相機的實現 140
7.2 Cutscene過場動畫 145
7.2.1 不同類型的Cutscene簡介 146
7.2.2 使用Timeline 146
7.2.3 使用腳本過場動畫 148
7.3 輸入、IK與音頻管理 149
7.3.1 InControl外掛程式的使用 149
7.3.2 Final-IK外掛程式的使用 151
7.3.3 音頻管理 153
第8章 畫面特效與後處理 160
8.1 著色器Shader 160
8.1.1 3D遊戲中的常見Shader 160
8.1.2 死亡徑向溶解效果 161
8.1.3 受擊邊緣泛光效果 164
8.1.4 基於螢幕門的抖動透明 166
8.2 CommandBuffer的使用 169
8.2.1 CommandBuffer簡介 169
8.2.2 製作主角特顯效果 171
8.3 後處理 175
8.3.1 PPS後處理工具 175
8.3.2 編寫自己的後處理腳本 177
8.4 計算著色器Compute Shader 179
8.4.1 什麼是Compute Shader 179
8.4.2 語法及使用簡介 179
8.4.3 使用案例 181
第3篇 項目案例實戰
第9章 案例剖析 190
9.1 《忍者龍劍傳∑2》案例剖析 190
9.1.1 斷肢效果的再實現 190
9.1.2 流血噴濺程式的再實現 193
9.1.3 角色殘影效果的再實現 202
9.2 《君臨都市》案例剖析 206
9.2.1 通用動作方案設計 206
9.2.2 組合攻擊的再實現 207
9.3 《戰神3》案例剖析 211
9.3.1 吸魂效果的再實現 211
9.3.2 鏈刃伸縮效果的再實現 216
9.3.3 赫利俄斯照射的再實現 220
第10章 橫版動作遊戲Demo設計 227
10.1 規劃與調配 227
10.1.1 簡要規劃 227
10.1.2 資源準備 228
10.1.3 項目配置 228
10.2 基礎框架的整合 231
10.2.1 戰鬥模組的整合231
10.2.2 動畫事件的整合232
10.3 玩家邏輯的整合 233
10.3.1 輸入邏輯封裝 233
10.3.2 玩家邏輯的編寫234
10.4 敵人邏輯的編寫 241
10.4.1 基礎邏輯的編寫241
10.4.2 遊走邏輯的編寫244
10.4.3 受擊邏輯的編寫246
10.5 構建遊戲 247
10.5.1 預製體的組裝 247
10.5.2 出生點邏輯的編寫 248
10.5.3 回顧與總結249
作者簡介
周尚宣 筆名與網路ID為Hont。主機與動作遊戲發燒友,獨立遊戲開發者,Unity3D工程師。自2014年開始,一直從事技術部落格文章的創作。曾經先後參與了手遊、VR和Steam端游等不同類型遊戲項目的開發與上線,積累了大量的開發經驗。工作之餘喜愛鑽研動作遊戲的各項技術並加以實踐,將其用於商業遊戲、獨立遊戲和個人開發的遊戲項目之中。
3.1.1 系統參數設定 36
3.1.2 Fixed Update更新頻率37
3.1.3 Rigidbody參數簡介 38
3.1.4 物理材質設定 38
3.2 常見問題 39
3.2.1 物理步的理解誤區 39
3.2.2 重疊與擠出問題 40
3.2.3 地面檢測最佳化處理 40
3.2.4 Dash與瞬移的最佳化 41
3.2.5 踩頭問題及解決方法 42
3.2.6 動畫根運動的物理問題 45
3.3 為動作遊戲定製碰撞系統 46
3.3.1 設計目標 46
3.3.2 OBB碰撞檢測簡介 47
3.3.3 Box與Box相交測試 47
3.3.4 Box與Sphere相交測試 50
3.3.5 Sphere與Sphere相交測試 52
3.3.6 不同形狀的邊界點獲取 52
3.3.7 碰撞對象管理器 56
第4章 主角系統設計 58
4.1 基礎要素 58
4.1.1 同類遊戲對比 58
4.1.2 邏輯編寫前的準備工作 59
4.1.3 移動邏輯 59
4.1.4 跳躍邏輯 65
4.1.5 攻擊邏輯 67
4.1.6 受擊邏輯 69
4.1.7 應對腳本類爆炸的問題 71
4.2 常規功能 72
4.2.1 角色有限狀態機 72
4.2.2 設計掛接點接口 73
4.2.3 技能系統 74
4.2.4 連續技功能 75
4.3 場景互動部分 78
4.3.1 角色凍結 78
4.3.2 場景互動組件 79
第5章 關卡部分詳解 82
5.1 前期考量 82
5.1.1 從Graybox說起 82
5.1.2 規劃層級結構 83
5.1.3 模型的導出與調試 84
5.2 開發階段深入解析 85
5.2.1 SpawnPoint的使用 85
5.2.2 擴展SpawnPoint 87
5.2.3 對象池的編寫 92
5.2.4 關卡模組的序列化 94
5.2.5 戰鬥壁障的實現 99
5.3 光照與烘焙 102
5.3.1 不同GI類型的選擇 102
5.3.2 預計算光照的使用 103
5.3.3 光照探針的使用 104
5.3.4 反射探針簡要介紹 104
5.3.5 藉助LPPV最佳化烘焙 105
第6章 戰鬥部分深入解析 107
6.1 角色模組 107
6.1.1 Motor組件的設計 107
6.1.2 動畫事件的處理 110
6.1.3 Animator常見問題整理 112
6.2 設計一個可擴展的戰鬥系統 114
6.2.1 基礎戰鬥框架編寫 115
6.2.2 添加傷害傳遞邏輯 117
6.2.3 配置傷害碰撞 120
6.2.4 僵直度組件的添加 121
6.2.5 浮空組件的添加 123
6.3 敵人AI的設計 125
6.3.1 AI設計綜述 125
6.3.2 Behavior Designer外掛程式簡介 127
6.3.3 使用協程來開發AI程式 128
6.3.4 可控制的隨機行為 131
6.3.5 設計共享數據段 132
6.3.6 場景信息的獲取 133
第7章 其他模組 135
7.1 相機 135
7.1.1 常見的相機模式分類 135
7.1.2 常規第三人稱相機實現 136
7.1.3 滑軌相機的實現 140
7.2 Cutscene過場動畫 145
7.2.1 不同類型的Cutscene簡介 146
7.2.2 使用Timeline 146
7.2.3 使用腳本過場動畫 148
7.3 輸入、IK與音頻管理 149
7.3.1 InControl外掛程式的使用 149
7.3.2 Final-IK外掛程式的使用 151
7.3.3 音頻管理 153
第8章 畫面特效與後處理 160
8.1 著色器Shader 160
8.1.1 3D遊戲中的常見Shader 160
8.1.2 死亡徑向溶解效果 161
8.1.3 受擊邊緣泛光效果 164
8.1.4 基於螢幕門的抖動透明 166
8.2 CommandBuffer的使用 169
8.2.1 CommandBuffer簡介 169
8.2.2 製作主角特顯效果 171
8.3 後處理 175
8.3.1 PPS後處理工具 175
8.3.2 編寫自己的後處理腳本 177
8.4 計算著色器Compute Shader 179
8.4.1 什麼是Compute Shader 179
8.4.2 語法及使用簡介 179
8.4.3 使用案例 181
第3篇 項目案例實戰
第9章 案例剖析 190
9.1 《忍者龍劍傳∑2》案例剖析 190
9.1.1 斷肢效果的再實現 190
9.1.2 流血噴濺程式的再實現 193
9.1.3 角色殘影效果的再實現 202
9.2 《君臨都市》案例剖析 206
9.2.1 通用動作方案設計 206
9.2.2 組合攻擊的再實現 207
9.3 《戰神3》案例剖析 211
9.3.1 吸魂效果的再實現 211
9.3.2 鏈刃伸縮效果的再實現 216
9.3.3 赫利俄斯照射的再實現 220
第10章 橫版動作遊戲Demo設計 227
10.1 規劃與調配 227
10.1.1 簡要規劃 227
10.1.2 資源準備 228
10.1.3 項目配置 228
10.2 基礎框架的整合 231
10.2.1 戰鬥模組的整合231
10.2.2 動畫事件的整合232
10.3 玩家邏輯的整合 233
10.3.1 輸入邏輯封裝 233
10.3.2 玩家邏輯的編寫234
10.4 敵人邏輯的編寫 241
10.4.1 基礎邏輯的編寫241
10.4.2 遊走邏輯的編寫244
10.4.3 受擊邏輯的編寫246
10.5 構建遊戲 247
10.5.1 預製體的組裝 247
10.5.2 出生點邏輯的編寫 248
10.5.3 回顧與總結249
作者簡介
周尚宣 筆名與網路ID為Hont。主機與動作遊戲發燒友,獨立遊戲開發者,Unity3D工程師。自2014年開始,一直從事技術部落格文章的創作。曾經先後參與了手遊、VR和Steam端游等不同類型遊戲項目的開發與上線,積累了大量的開發經驗。工作之餘喜愛鑽研動作遊戲的各項技術並加以實踐,將其用於商業遊戲、獨立遊戲和個人開發的遊戲項目之中。