UE4联网机制和多人游戏总结 (第一部分)
1 網絡概述
在多人游戲會話中,游戲狀態信息將通過互聯網連接在多臺機器之間通信,而非單獨駐留于一臺計算機上。玩家之間的信息共享十分微妙,并會增加部分額外步驟,因此此操作導致多人游戲編程比單人游戲編輯復雜。虛幻引擎 提供的網絡框架非常強大,支持部分世界上最流行的網絡游戲,可簡化此流程。本頁對驅動多人游戲編程的概念和可使用的網絡游戲構建工具進行了概述。
1.1 盡早規劃多人游戲
若項目可能需要多人游戲功能,則從項目開始階段起,構建所有gameplay時都應將多人游戲功能考慮在內。若開發團隊通常會在創建多人游戲時實施額外步驟,相較于單人游戲,構建gameplay的流程并不會耗時過久。長遠來看,項目將便于整個團隊進行調試和維護。同時,虛幻引擎中編寫的多人游戲gameplay仍可在單人游戲中使用。
但是,重構無網絡情況下編譯的基本代碼需要梳理整個項目,幾乎所有gameplay都需要重新編寫。屆時,開發團隊成員需重新學習可能早已熟悉的編程實操。同時,網速和穩定的相關技術瓶頸也會讓你措手不及。
相較于初期規劃,在項目后期引入網絡功能會占用大量資源,且極為復雜。因此,除非確定項目無需多人游戲功能,否則應 始終 按多人游戲方向進行編程。
1.2 客戶端-服務器模型
在單人游戲或本地多人游戲中,游戲在 獨立 游戲上本地運行。玩家將輸入連接到一臺計算機,直接控制其上所有內容,而包括Actor、場景和各玩家的用戶界面在內的所有游戲項目均存在于這臺本地機器上。
單人游戲和本地多人游戲都僅在一臺機器上執行。
在網絡多人游戲中,虛幻引擎使用 客戶端-服務器 模型。網絡中的一臺計算機作為 服務器 主持多人游戲會話,而所有其他玩家的計算機作為 客戶端 連接到該服務器。然后,服務器與連接的客戶端分享游戲狀態信息,并提供一種客戶端之間通信的方法。
在網絡多人游戲中,游戲將在服務器(1)與多個與之連接的客戶端(2)之間進行。服務器處理gameplay,客戶端向用戶顯示游戲。
**服務器作為游戲主機,保留一個真實 授權 的游戲狀態。**換句話說,服務器是多人游戲實際發生的地方。客戶端會遠程控制其在服務器上各自擁有的 Pawn,發送過程調用以使其執行游戲操作。但服務器不會將視覺效果直接流送至客戶端顯示器。服務器會將游戲狀態信息 復制 到各客戶端,告知應存在的Actor、此類Actor的行為,以及不同變量應擁有的值。然后各客戶端使用此信息,對服務器上正在發生的情況進行高度模擬。
欲了解客戶端與服務器之間的連接過程的相關額外技術信息,參見客戶端-服務器模型 上的指南。
1.2.1 客戶端-服務器游戲范例
我們將在多人游戲中以兩個玩家為例,說明此過程對gameplay編程實踐的改變方式。我們稱他們為 玩家1 和 玩家2,并分析兩人互射發射物的過程。
在網絡多人游戲中,游戲將在服務器(1)與多個與之連接的客戶端(2)之間進行。服務器處理gameplay,客戶端向用戶顯示游戲。
在獨立游戲中,此類所有交互都在同一臺機器上的同一 場景 中發生,因此理解和編程均較為簡單。例如,生成對象時,你可以認為所有玩家均能看到此對象。
在網絡游戲中,此類交互發生在多個不同場景:服務器上的場景、玩家1客戶端的場景、玩家2客戶端的場景,以及參與會話的其他所有客戶端的額外場景。每臺不同機器上的各場景均有各自Pawn、武器及發射物的副本。服務器是游戲真正運行的地方,但我們要讓客戶端的場景看似發生了相同事件。因此,需要選擇性地向各客戶端發送信息,以在服務器上創建場景的視覺代表。
這一過程將在基礎游戲交互(碰撞、移動、傷害)、美化效果(視覺效果和音效)和私人玩家信息(HUD更新)間進行劃分。這三者各自與網絡中的特定機器或機組關聯。但是,**此信息的復制過程并非完全自動,游戲編程時須指定要復制的信息和接收副本的機器。主要的難點在于選擇應復制的信息及方式,以向所有玩家提供一致的游戲體驗,同時需最小化信息復制量,盡可能減少網絡帶寬占用率。**加粗樣式
總結
以上是生活随笔為你收集整理的UE4联网机制和多人游戏总结 (第一部分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle查询创建视图语句
- 下一篇: OpenCV滤波器 龙门石窟篇【Pyth