Unity 與 C++ 網絡遊戲開發實戰:基於 VR、AI 與分佈式架構
內容描述
本書以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;仿真框架和人工智能。
本書內容全面,講解通俗易懂,適合網絡遊戲開發、軍事虛擬仿真係統開發和智能網絡仿真係統開發等領域的開發人員和技術愛好者閱讀,也適合系統架構人員閱讀。另外,本書還適合作為相關院校和培訓機構的培訓教材使用。
本書核心內容:
客戶端開發:
Unity開發環境的搭建和調試
編寫Hello World與仿真係統體驗
Unity遊戲開發語言
在Unity中使用圖形學知識
Unity編輯器的使用
虛擬仿真係統的架構和模塊
人物資源編輯與程序開發
場景資源編輯與程序開發
資源組件和交互物品開發
NGUI組件開發和操作交互開發
服務器端開發:
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遊戲中常用的人工智能算法和深度學習引申58 4
後記——全書總結與個人發展建議588