《Unity與C++網路遊戲開發實戰:基於VR、AI與分散式架構》一書由王靜逸 劉岵編寫,由機械工業出版社出版發行。
基本介紹
- 書名:Unity與C++網路遊戲開發實戰:基於VR、AI與分散式架構
- 作者:王靜逸 劉岵
- 類別:計算機/遊戲開發
- 出版社:機械工業出版社
- 出版時間:2019年
- 頁數:608 頁
- 定價:139 元
- 開本:16 開
- 裝幀:精裝
- ISBN:9787111617617
內容簡介,圖書目錄,作者簡介,
內容簡介
本書以Unity圖形開發和C++網路開發為主線,系統地介紹了網路仿真系統和網路遊戲開發的相關知識。本書從客戶端開發和伺服器端開發兩個方面著手講解了一個完整的仿真模擬系統的開發,既有詳細的基礎知識,也有常見的流行技術,更有完整的項目實戰案例,而且還介紹了VR、人工智慧和分散式架構等前沿知識在開發中的套用。
本書共21章,分為4篇。第1篇和第2篇為客戶端開發,主要介紹了Unity基礎與實戰開發,涵蓋Unity開發環境的搭建和調試;編寫Hello World與仿真系統體驗;Unity遊戲開發語言;在Unity中使用圖形學知識;Unity編輯器的使用;虛擬仿真訓練系統的架構和模組;人物資源編輯與程式開發;場景資源編輯與程式開發;資源組件和互動物品開發;NGUI組件開發和操作互動開發。第3篇和第4篇為伺服器端開發,主要介紹了C++網路開發基礎與實戰,涵蓋C++語言基礎;C++網路編程基礎;多執行緒和異步套接字;MySQL資料庫的使用;網路協定Protobuf的使用;設計架構簡單的互動伺服器體系;開發登錄伺服器LoginServer;開發網關伺服器GateServer;開發中心伺服器CenterServer;開發戰場伺服器BattleServer;仿真框架和人工智慧。
本書內容全面,講解通俗易懂,適合網路遊戲開發、軍事虛擬仿真系統開發和智慧型網路仿真系統開發等領域的開發人員和技術愛好者閱讀,也適合系統架構人員閱讀。另外,本書還適合作為相關院校和培訓機構的培訓教材使用。
圖書目錄
第1篇 Unity基礎(客戶端)
第1章 Unity介紹與相關環境的搭建和調試 2
1.1 Unity引擎介紹 2
1.1.1 Unity3D引擎部分 2
1.1.2 Unity3D編輯器部分 3
1.2 Unity引擎發展 5
1.3 Unity引擎套用場景和使用範圍介紹 5
1.4 Unity軟體安裝 7
1.5 Unity Windows環境的安裝和搭建 9
1.6 Unity Android環境的安裝和搭建 11
1.7 Unity授權 15
1.8 Unity服務 16
第2章 編寫Hello World與仿真系統體驗 18
2.1 創建第一個空的工程 18
2.2 創建第一個腳本程式 20
2.3 編寫第一個Hello Word程式 21
2.4 編譯輸出第一個程式 22
2.5 運行Hello World 23
2.6 打開仿真程式Demo 23
2.7 這是一個很好玩的仿真系統 25
2.8 進入訓練場準備體驗訓練操作 25
2.9 控制人物行走 26
2.10 開動第一輛汽車 27
2.11 完成第一個仿真任務 27
2.12 本章小結與分析 28
第3章 Unity遊戲開發語言 29
3.1 C#語言介紹 29
3.2 C#常用數據結構介紹 31
3.2.1 ArrayList鍊表結構 31
3.2.2 泛型List 31
3.2.3 Stack棧 32
3.2.4 佇列Queue 33
3.2.5 字典Dictionary 34
3.3 C#的接口與繼承 35
3.3.1 實現繼承和接口繼承 35
3.3.2 多重繼承 35
3.3.3 結構的繼承 35
3.4 C#的委託 37
3.5 C#多執行緒使用介紹 38
3.6 C#的反射機制 39
3.7 Unity中使用泛型 42
3.8 Unity中使用協程 42
3.9 Unity的序列化和網路協定庫介紹 45
3.10 Unity中使用CLR進行Native互動 46
3.11 Unity中使用熱更新語言Lua 47
3.12 本章小結與分析 50
第4章 在Unity中使用圖形學知識 51
4.1 3D數學基本知識在遊戲中的套用 51
4.2 三維坐標系 52
4.3 頂點坐標變換 53
4.3.1 向量是什麼 53
4.3.2 矩陣是什麼 54
4.3.3 如何操作向量 55
4.3.4 如何處理點或者向量與矩陣的乘法 55
4.3.5 點和向量通過矩陣的變換 56
4.4 光照與材質 58
4.4.1 什麼是Shader的基本光照模型 59
4.4.2 什麼是光照模型 59
4.4.3 什麼是材質 61
4.5 Unity引擎中的渲染管線流程 67
4.6 Unity中實現模型的縮放和旋轉等程式處理 70
4.7 Unity中計算射線相關的程式處理 74
4.8 Unity中製作一個簡單的渲染特效 77
4.9 本章小結與分析 84
第5章 Unity編輯器的使用 86
5.1 創建一個空的工程 86
5.2 編輯器界面布局介紹 88
5.3 編輯器的常用功能介紹 89
5.4 編輯器模型編輯——旋轉控制第一個模型 95
5.5 編輯器動作骨骼編輯——讓人物動起來 96
5.6 編輯器光照和相機的編輯——讓人物更真實 98
5.7 編輯器粒子特效編輯——讓環境更絢麗 101
5.8 編輯器場景編輯——創建簡單的戰場 104
5.9 編輯器地形和光照貼圖烘焙——讓戰場真實起來 105
5.10 編輯器遮擋剔除——提高戰場的運行效率 107
5.11 編輯器資源管理——讓工程更容易管理 109
5.12 編輯器控制台和調試——輸出調試信息 110
5.13 編輯器資源商店和常用外掛程式 111
5.14 編輯器材質編輯——讓車輛變化一下樣式 114
5.15 編輯器物理系統介紹——讓人和車輛發生碰撞 116
5.16 本章小結與分析 118
第2篇 Unity實戰(客戶端)
第6章 虛擬仿真訓練系統的架構和模組 122
6.1 什麼是虛擬仿真訓練 122
6.1.1 戰鬥模擬仿真訓練 122
6.1.2 車輛仿真和工業操作 123
6.2 物理架構介紹——虛擬仿真訓練系統 123
6.3 使用態勢端發布授權任務 126
6.4 將分隊長學員配置加入授權任務 127
6.5 啟動仿真任務——完成一次美妙的任務體驗 128
6.6 本章小結與分析 130
第7章 人物資源編輯與程式開發 132
7.1 模型資源的導入和整理編輯 132
7.2 人物動作資源的編輯和管理 134
7.3 數據資源的導入和整理 137
7.4 人物的控制和腳本程式開發 141
7.5 人物的行為狀態機開發 147
7.6 人物特效的控制和狀態互動 150
7.7 人物的物理狀態和碰撞瞄準的程式互動 151
7.8 人物的屬性和程式接口開發 154
7.9 在場景中運行人物資源和調試程式 158
7.10 本章小結與分析 159
第8章 場景資源編輯與程式開發 161
8.1 場景資源的導入和整理管理 161
8.2 場景數據資源的導入和場景程式管理 162
8.3 地形的編輯和程式相關功能開發 169
8.4 添加碰撞體樹木和非碰撞體植被 172
8.5 創建光源和陰影渲染 174
8.6 添加場景靜態物體和動態物體 176
8.7 添加場景水的外掛程式並使用代碼集成 182
8.8 添加天氣系統外掛程式並集成代碼系統 187
8.9 添加場景道路外掛程式並製作道路 192
8.10 添加天空盒和霧態效果 194
8.11 場景預覽和渲染效率最佳化 196
8.12 場景系統載入切換和系統程式開發 198
8.13 本章小結與分析 202
第9章 資源組件和互動物品開發 203
9.1 資源組件的導入和整理管理 203
9.2 資源物品的數據導入和整理管理 205
9.3 AssetBundle的資源組成和功能API 207
9.4 開發自己的AssetBundle打包工具外掛程式 208
9.5 載入和管理AssetBundle資源 212
9.6 車輛動力系統的外掛程式使用和系統集成開發 216
9.7 關於飛行器直升機的開發和使用 223
9.8 地雷組件的開發和功能互動 225
9.9 物品管理器系統開發 230
9.10 本章小結與分析 235
第10章 NGUI組件開發和操作互動開發 236
10.1 NGUI外掛程式介紹和導入工程 236
10.2 NGUI圖集的使用和製作 237
10.3 NGUI圖集的最佳化和DrawCall的最佳化策略 239
10.4 NGUI的底層實現原理和分析 240
10.5 UILable的使用 242
10.6 UISprite的使用 243
10.7 UIPanel的使用 244
10.8 UIScrollView的使用 245
10.9 UIButton的使用 247
10.10 UIRoot和UICamera的自適應 250
10.11 打造UI面向對象的動態載入和管理 251
10.12 登錄UI功能開發 257
10.13 大廳任務信息系統UI功能開發 261
10.14 戰場場景中主視角UI系統功能開發 268
10.15 VR開發——VR可以使用的VRGUI 276
10.16 本章小結與分析 277
第3篇 C++網路開發基礎(伺服器)
第11章 C++語言基礎 280
11.1 C++簡介 280
11.2 C++基本語法 281
11.3 C++數據結構 283
11.4 C++變數類型 289
11.5 C++修飾符類型 290
11.6 C++存儲類 291
11.7 C++運算符和運算方式 294
11.8 C++函式 297
11.9 C++數組和高級功能 300
11.10 C++指針和高級功能 301
11.11 C++引用和常用方式 303
11.12 C++類和對象 305
11.13 C++繼承和多態 307
11.14 C++接口和抽象 309
11.15 C++檔案和流的處理 311
11.16 C++ STL庫介紹 314
11.17 本章小結與分析 319
第12章 C++網路編程基礎 321
12.1 Socket套接字 321
12.2 套接字定址方式 326
12.3 Winsocket網路程式開發流程 328
12.4 在Visual Studio中創建網路工程 330
12.5 Winsocket編程準備 331
12.6 基於TCP的Socket編程 332
12.7 基於UDP的Socket編程 336
12.8 本章小結與分析 343
第13章 多執行緒和異步套接字 345
13.1 C++多執行緒開發 345
13.2 C++多執行緒互斥對象和同步 347
13.3 C++進程間通信 350
13.4 C++設定異步I/O的模式和方法 356
13.5 本章小結與分析 358
第14章 MySQL資料庫的使用 359
14.1 MySQL資料庫介紹和使用範圍 359
14.2 安裝MySQL資料庫 360
14.3 MySQL可視化管理工具的使用 362
14.4 使用C++連線MySQL資料庫 364
14.5 SQL語句和語法 369
14.6 MySQL備份導出數據和導入轉移數據 371
14.7 本章小結與分析 374
第15章 網路協定Protobuf的使用 376
15.1 什麼是Protobuf 376
15.2 Protobuf的功能是什麼 378
15.3 Protobuf序列化的原理是什麼 385
15.4 如何編寫Protobuf的.proto檔案 387
15.5 如何編譯和生成Protobuf的編譯程式 389
15.6 使用Protobuf協定製作一段網路小程式 392
15.7 本章小結與分析 399
第4篇 C++網路開發實戰(伺服器)
第16章 設計架構簡單的互動伺服器體系 402
16.1 Visio:一個繪製架構圖的軟體 402
16.2 如何使用圖和連線線來表示架構 404
16.3 需要哪些服務來構建整個服務體系 406
16.4 登錄伺服器(LoginServer) 407
16.5 網關伺服器(GateServer) 410
16.6 中心伺服器(CenterServer) 413
16.7 戰場伺服器(BattleServer) 414
16.8 本章小結與分析 418
第17章 開發登錄伺服器LoginServer 420
17.1 登錄伺服器的作用 420
17.2 使用Protobuf生成登錄授權檔案和協定 421
17.3 創建LoginServer網路會話層底層模組 429
17.4 創建LoginServer服務邏輯模組 436
17.5 導入LoginServer的Protobuf協定 440
17.6 客戶端Protobuf協定的導入和使用 443
17.7 從客戶端登錄到授權的邏輯處理過程 445
17.8 啟動LoginServer,完成第一次授權登錄 449
17.9 Redis快取存儲和信息處理 450
17.10 本章小結與分析 452
第18章 開發網關伺服器GateServer 453
18.1 網關伺服器及其作用 453
18.2 創建GateServer的框架主程式 454
18.3 創建網關轉發和驗證所需要的Protobuf協定腳本 461
18.4 生成伺服器所需要的C++協定程式 464
18.5 生成客戶端所需要的C#協定程式 466
18.6 完成網關伺服器的邏輯功能開發 468
18.7 完成客戶端從網關授權進入大廳的邏輯 478
18.8 本章小結與分析 481
第19章 開發中心伺服器CenterServer 482
19.1 中心伺服器及其作用 482
19.2 創建CenterServer框架主程式 484
19.3 創建中心伺服器的Protobuf協定腳本 488
19.4 生成伺服器所需要的C++協定程式 495
19.5 生成客戶端所需要的C#協定程式 497
19.6 生成伺服器data數據和協定代碼 500
19.7 完成中心伺服器的邏輯功能開發 504
19.8 啟動客戶端完成任務配置並開始仿真任務 513
19.9 本章小結與分析 520
第20章 開發戰場伺服器BattleServer 522
20.1 戰場伺服器及其作用 522
20.2 創建BattleServer框架主程式 524
20.3 創建戰場伺服器Protobuf協定腳本 527
20.4 生成伺服器所需要的C++協定程式 537
20.5 生成客戶端所需要的C#協定程式 539
20.6 生成伺服器data數據和協定代碼 550
20.7 創建戰場伺服器的聊天模組 553
20.8 創建戰場邏輯模組 556
20.9 創建戰場仿真人員同步模組 558
20.10 創建戰場仿真車輛和飛行器模組 564
20.11 創建戰場動態資源管理和監控模組 568
20.12 創建戰場AI仿真敵人和飛行器AI狀態機 571
20.13 調試戰場伺服器和客戶端,啟動仿真任務 576
20.14 本章小結與分析 579
第21章 一些仿真框架和人工智慧的介紹 581
21.1 VR-LINK與HLA框架:高層體系模型框架的使用 581
21.2 遊戲中常用的人工智慧算法和深度學習引申 584
後記——全書總結與個人發展建議 588
作者簡介
王靜逸,計算機學士、金融學碩士、中國計算機學會會員、神兔未來科技有限公司創始人、QQ炫舞(1與2)引擎開發工程師和客戶端負責人。曾經任職於武漢中鐵橋樑科學研究院、上海聯想研究院和華為研究所,任研究員。曾經參與了騰訊QQ炫舞、全民炫舞微信手遊及曙光之戰OL等熱門遊戲的研發和圖形引擎研發。創辦神兔未來科技有限公司,從事分散式仿真、VR與AR等領域的圖形學研究與物聯網網路系統開發,並主持了多項軍用仿真系統和武警虛擬現實訓練系統的開發。目前在布比(BUMO)公鏈任研究員和架構師,併兼任第一視頻集團研究院研究員與技術總監,從事分散式區塊鏈和分散式人工智慧的研究。
劉岵 中國科學院計算機碩士、中國人工智慧產業發展聯盟理事、中國人工智慧學會智慧型傳媒專委會委員、中國計算機學會區塊鏈專委會委員。曾任諾基亞中國區和微軟移動業務中國區技術總監。現任上市公司第一視頻集團副總裁、研究院院長。有20餘年的信息技術開發與管理經驗。在核心期刊上發表過多篇論文,並擁有多項專利。