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