参考视频:
B站的视频:
https://www.bilibili.com/video/BV1wk4y1m7wz/?spm_id_from=333.337.search-card.all.click&vd_source=d33b44674c517c8b7928e8d3ac316b37
YouTube的视频:
https://www.youtube.com/watch?v=AKiGajA7AXM
和上面的视频是一个,但可以打开英文字幕对照下哦。
官方参考网址:
https://docs.unrealengine.com/4.26/en-US/InteractiveExperiences/Networking/HowTo/DedicatedServers/
1、下载源码,这个要使用git hub账户,授权一波才行。
下载好之后解压,主要不要有中文路径。
2、执行Setup.bat文件,这是下载依赖,注意此时要关闭360等杀毒软件,否则在你离开的时候下载,会弹出授权框,而你又没有授权,导致下载失败:
执行完1之后,点击2,生产vs的.sln工程文件。
使用vs或者rider打开UE5.sln
选择:Development Editor,Win64
然后右键UE5,Build即可。
视机器性能而定,编译时常长达若干小时,我的是耗费约1.5个小时左右:
3、使用编译好的unreal 引擎创建一个新的项目
在目录:I:\unreal5.1\UnrealEngine-5.1.0-release\Engine\Binaries\Win64
下找到UnrealEditor.exe,双击执行。
等待引擎加载好资源,等吧,会运行起来的。
耐心等待打开引擎即可。这里如果没有安装GeForce驱动的可以直接忽略,点击否跳过即可。
ok,至此unreal的引擎源码编译是完成了,为你点赞。
接下来才是关键哦,用这个编译好的引擎,创建一个C++的&&第三人称的空项目。第一人称的说是同步有问题:
点击确定之后,会自动打开vs。注意这里构建选择的是:Development Editor和Win64
我的理解这里构建Development Editor是为了下面用引擎打开项目,创建地图使用,而所以是Development Editor。
右键你的Games下的工程,进行Build即可。
构建好之后,关闭这个vs即可。
4、打开构建好的项目,创建服务器的地图。
找到之前编译好的ue,打开这个项目:
这个就是刚才你创建的那个空项目哦。我为啥讲这个使用自己编译好的ue打开呢,因为如果你之前安装过ue,那如果双击DedicatedServerDemo.uproject
我不知道是使用的是安装的ue还是自己编译好的ue打开的。为了一致性,还是使用自己编译好的引擎打开这个DedicatedServerDemo.uproject即可。
创建服务器的地图:
这里选择一个Basic即可:
创建一个名字为ServerMap的关卡,并且创建一个Actor,用来提示这个是服务器的关卡。这里上面的红字Server是一个蓝图:
弄好这个actor之后,直接拖到ServerMap中,设置好大小、缩放,让其更加明显一点即可。当然你不做这个actor也无法所谓。只有ServerMap也是可以的。这里这是视频里说的,为了更好的提示当前进入了服务器的关卡而已。
设置打包选项:
在Server Default Map中选择自己创建的那个ServerMap即可。其他的Editor Startup Map无所谓,毕竟这是编辑器运行第一个关卡;然后是GameDefaultMap,这个选择客户端运行时的第一个关卡,这个你可以随便选择一个即可。这里也不是重点。
其实说到这里,我们应该理解一个概念:
即使服务器运行一个关卡,客户端一开始运行也有一个关卡,那两个客户端怎么可见呢,那就要共同进入一个服务器的关卡,就这么简单。
至于未进入之前两个客户端开始的关卡,这个随便定义,你可以是一个登录场景+选服界面也是可以的。
设置打包选项:
添加一个客户端地图,和一个服务器地图。这类似于unity的将各个scene添加到build setting里面。
等待客户端编译好,这个打包客户端的过程还是很长的。
构建好这个客户端,是直接可以运行的。
双击即可运行。
没事儿,直接点击否也可以。
如何退出呢?
按住键盘上的~键,然后输入quit或者exit即可。
6、准备构建一个服务端
服务端也是一个应用程序,代码是在客户端的基础至少,稍加修改,挺神奇的。
找到引擎源码目录下的:I:\unreal5.1\UnrealEngine-5.1.0-release\Engine\Source\UnrealServer.Target.cs
拷贝到,之前的客户端项目中的源码位置处,如下:
I:\OGL\DedicatedServerWorkspace\DedicatedServerDemo\Source
稍微修改,将名称改为:DedicatedServerDemoServer.Target.cs
内容修改为:
修改了三处位置。
然后,重写生成工程文件:
生成好之后,打开DedicatedServerDemo.sln:
右键DedicatedServerDemo,选择Build即可:
编译好之后。
拷贝到:我们打包的那个exe目录下:I:\OGL\DedicatedServerWorkspace\clientexe\Windows\DedicatedServerDemo\Binaries\Win64
为创建快捷方式,然后追加空格-log即可:
I:\OGL\DedicatedServerWorkspace\clientexe\Windows\DedicatedServerDemo\Binaries\Win64\DedicatedServerDemoServer.exe -log
然后双击运行这个服务器。
然在双击运行客户端两个:
此时他们是互不可见的,然后在敲入连接服务器的指令:
在两个客户端,分别按下键盘上的~,弹出对话框:
可以看到左边的那个客户端,已经进入了服务器:
然后在右边的客户端也执行此命令:open 127.0.0.1
此时双方都可见了:
同时你还可以进一步的观察服务器的log窗口输出了啥:
至此,服务器的搭建完成了。
这里注意几个点:
1、打包后的exe默认是全屏运行方式,不太好运行另外一个客户端,此时可以使用f11,退出全屏,缩小此窗口,运行多个客户端测试。
2、为啥把编译好的server的exe,拷贝到打包的exe中,才能运行,这个不知道为啥。
也许是缺少打包的一些资源吧,不明白。