浅谈虚幻4引擎游戏客户端服务器及如何编译游戏专用服务器
在使用虛幻4引擎開發網絡游戲時免不了會需要自己來編寫服務器,關于如何編寫網絡服務器,不在這篇文章的討論范圍,后面有時間可能會出相關的教程,這篇文章主要是基于某些原因,我們不想自己實現服務器,那么我們可以采用虛幻自帶的獨立專用服務器,并且將它打包成exe,log方式啟動,效果圖如下:
那么這就是服務器的啟動日志嘍,你可以把它理解為是一個后臺的進程,也就是所謂的游戲服務器。那么虛幻4自帶的這套呢,是服務器和客戶端公用一套代碼,有利有弊吧,比如說優點有,他可以在服務器模擬碰撞而不需要自己實現,那么弊端就是不宜與維護,因為客戶端和服務器代碼在一起。在游戲運行的時候,客戶端其實只是模擬服務器上的行為,也就是說客戶端上很多東西只是從服務器上同步過來的,可以看作是一個copy,在UE4引擎下如果需要同步的變量,或者是需要同步的行為,我們都把它設置為replicated即可。對于需要執行的操作,那么就封裝成為一個事件在服務器執行即可,當然這也不是這篇文章重點要說的,有點跑題。那么下面講如何編譯游戲專用服務器,其實很簡單,就幾個步驟。
1、你需要下載引擎源代碼,然后自已編譯引擎,至于如何下載編譯引擎,請讀者自行百度,這里簡單提一下吧,如果已經下載編譯好的可以跳過此布。首先你需要注冊一個GitHub賬號,還要有一個epic game賬號,然后在epic game賬號設置中關聯GitHub賬號,之后去GitHub會收到關聯的驗證,點確認后,你就可以在組織中找到它,
后面就不用我說了吧,選擇一個版本直接下載就行。
下載完成后,你會得到一個類似于這樣的壓縮文件,我這里是4.21版本。然后解壓,解壓完成后按圖示順序依次執行批處理,首先點擊Setup,等待完成后,點擊gen.....生成vs工程,
完成后你會得到一個UE4.sln文件,
點擊該文件,啟動vs2017或者其他版本的vs,然后右鍵生成
之后的操作耐心等待即可,過程很漫長,一兩個小時甚至好幾個小時,取決于機器性能。生成完成后在下圖目錄中可以找到引擎exe文件。發送到桌面快捷方式即可。
2、用vs打開你需要編譯服務器的工程,如果你創建的不是c++工程,請右鍵工程名,生成vs工程。
生成完成后點擊打開工程:
?
?
你會得到如下的工程結構,
點擊此處可以啟動工程:
那么基礎操作我本不太想說太細,避免篇幅太長,但是又考慮部分新手,還是簡單提一下。
3、下面需要做的就是關閉vs,不關也可以,后面根據提示重載解決方案即可,新建文件,命名看圖示規則:
記事本打開文件,寫入如下代碼:(有幾處需要修改的,根據圖示規則修改)
代碼貼一下吧:
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
using System.Collections.Generic;
[SupportedPlatforms(UnrealPlatformClass.Server)]
public class TestProjectServerTarget : TargetRules
{
? ? public TestProjectServerTarget(TargetInfo Target) : base(Target)
? ? {
? ? ? ? Type = TargetType.Server;
? ? ? ? ExtraModuleNames.Add("TestProject");
? ? }
}
?
這個代碼不同版本的引擎,寫法可能也有所不同(4.18后可以用上面代碼),最簡單的你也可以直接從官方對應的shooter game 工程目錄下拷貝他的這個文件過來修改下也行。
4、完成以上步驟之后,我們再次生成vs工程,
打開vs,按如下圖示操作:
生成完成后,啟動工程,這時候需要修改下游戲的默認服務器地圖設置等等(不設置的話可能導致服務器進去是黑的,因為默認是一個空地圖),根據自己項目需要設置即可。
設置完成后,關閉引擎,回到vs,按圖示步驟再次生成工程,注意的是這時生成的是服務器,
生成完成后,在如下目錄會得到一個exe文件:
將它拷貝到我們工程打包后的如下目錄,(如何打包讀者自行解決,比較簡單,這里不提)
此時就可以啟動我們的服務器了,有幾種方式,可以右鍵發送到桌面快捷方式,并修改目標,加? -log(方便我們查看日志)
然后直接打開快捷方式即可啟動服務器,也可以用dos命名啟動。
啟動成功如圖所示:
此時服務器便啟動成功了,也就意味著我們的獨立服務器打包成功了。可以啟動客戶端測試,輸入gm命令測試:
~open 127.0.0.1? 便可以打開地圖,本篇內容到此結束,歡迎下方留言。
?
?
?
?
總結
以上是生活随笔為你收集整理的浅谈虚幻4引擎游戏客户端服务器及如何编译游戏专用服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python系列之面向对象编程
- 下一篇: 点对点OSPF路由器配置