找回密码
 立即注册
查看: 279|回复: 0

unreal编译源码搭建dedicated server的流水账——但是细

[复制链接]
发表于 2023-4-13 11:24 | 显示全部楼层 |阅读模式
参考视频:
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://www.youtube.com/watch?v=ad5MZLSDAZk
这个视频更简洁一些,但是不包括源码编译,要找这个系列的另外一个教程。
官方参考网址:
https://docs.unrealengine.com/4.26/en-US/InteractiveExperiences/Networking/HowTo/DedicatedServers/
dedicated server:是专用服务器的意思
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



内容修改为:


修改了三处位置。同时注意这里的11行代码,TargetType.Server类型。
然后,重写生成工程文件:



生成好之后,打开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、alt+f4关闭当前的客户端
3、为啥把编译好的server的exe,拷贝到打包的exe中,才能运行,这个不知道为啥。


也许是缺少打包的一些资源吧,不明白。
4、可以直接这么打包服务器:


选择DedicatedServerDemo或者DedicatedServerDemoServer后,然后点击Package Project,就可以得到客户端和服务器的包了。
服务器的包,编译时间相对较长,耐心等待。


这样的话,就可以生成对应的两个可执行文件了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-5 09:32 , Processed in 0.383823 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表