接下來筆者希望能夠簡單的實做出網路連線的功能,而筆者會用Unreal Engine(以下會簡稱為UE)做示範,因此會先整理與介紹官方文件所給予的指令與教學。
·作業系統:Windows 11
·開發引擎:Unreal Engine
·版本:5.0.3
·開發語言:C/C++
·開發環境:VSCode
UE最主要是以C/S的模型實現多人連線,並且官方已經寫好了Replicate system讓開發者減省大量的時間,不需要去煩惱網路方面的各種問題就像先前提過得socket之類的,只需要簡單的步驟就能讓想要的資訊replicate,雖然操作簡單但還是要理解箇中原理才能讓連線的品質最佳化,下面會分成三大類來說明UE是怎麼去處理網路資訊。
UE主要有四個網路模式,主要的比較如下圖:
可以看到除了Dedicated Server以外都是可以遊玩的,因此在遊戲開發時官方也建議在網路模式的前提下進行開發,無論該遊戲是否有需要連線,一方面是實際在執行遊戲本地執行與有連線功能執行並不會有太大的差異,再者是對於之後倘若需要連線功能時不需要將整份專案重寫,在改變上能節省較多時間。
這主要是為了函式而生的功能,最大的特色就是他是即時呼叫與執行,並且他分成Server,Client與NetMulticast三種類行。
UFUNCTION(Client)
void Client_Execute();
UFUNCTION(Server)
void Server_Execute();
UFUNCTION(NetMulticast)
void Multicast_Execute();
在實做函式的時候需要在定義的後面加上_Implementation的關鍵字才會去執行。
這部份最主要是要說明所有的遊戲內容該怎麼去溝通,與一般的C/S模型不同,UE會在Server端模擬一遍遊戲內容後再把結果replicate到客戶端而不是只把玩家的輸入同步給所有人,因此在傳送上會有頻寬的問題若頻寬不夠有可能就會讓資訊遺失,UE在這點上是讓開發者去設定要replicate的資訊自己的優先度,優先度越高的會越先進行傳送,但最主要的還是開發者自己要去思考什麼東西需要replicate什麼不需要。