UE4编译专用服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4编译专用服务器相关的知识,希望对你有一定的参考价值。

[代码]:

1 <span style="font-family: Arial, Helvetica, sans-serif; ">最近想要编译出<a href="http://www.52vr.com/forum/unreal" style="font-weight: bold;color: ;" target="_blank">ue4</a>的专用服务器,编译成单独的exe。研究了好几天,网上找了一些方法,但是均试验失败,最后发现要自己加xxx.cs才行!网上一些方法都并没有提到这个!现写下详细过程及分析,以供各位参考!</span>
 
总结出几个要点:
1.要下载UE4源代码。在GITHUB上有,可以从Epic上快速找到,如下图:
 

技术分享

 
下载好以后,按顺序点击
1.setup.bat 点击以后会下载大概4G的东西,根据网速不同要几个小时吧
2.GenerateProjectFiles.bat 点击以后会生成出UE4.sln
 

技术分享

 
下载源码花了我一天时间!我把源码打包上传到网盘了,想要速度比较快的,可以到我网盘下载
http://download.csdn.NET/detail/sukeychen/9593597
收5积分...实在没积分的留言我可以发你们
 
2.打开UE4.sln,选择解决方案配置的Development Editor,编译出UE4编辑器
 

技术分享

 
3.用这个编辑器新建的工程,就可以用来编译Server了。但是如果你要编译的是旧工程的Server也不用担心,可以改版本,效果是一样的。
右键点击工程 选择Switch Unreal Engine version...就可以选择版本了:
 

技术分享

 
4.在工程文件目录下的Source文件夹下,新建VRGameServer.TARget.cs文件
文件内容类似:
 

[代码]:

01 // Copyright 1998-2014 Epic Games, Inc. All Rights Reserved. 
02     
03 using UnrealBuildTool; 
04 using System.Collections.Generic; 
05     
06 public class GameServerTarget : TargetRules 
07
08     public GameServerTarget(TargetInfo Target) 
09     
10         Type = TargetType.Server; 
11     
12     
13     // 
14     // TargetRules interface. 
15     // 
16     public override void SetupBinaries( 
17         TargetInfo Target, 
18         ref List<uebuildbinaryconfiguration> OutBuildBinaryConfigurations, 
19         ref List<string> OutExtraModuleNames 
20         
21     
22         base.SetupBinaries(Target, ref OutBuildBinaryConfigurations, ref OutExtraModuleNames); 
23         OutExtraModuleNames.Add("Game"); 
24     
25     
26     public override bool GetSupportedPlatforms(ref List<unrealtargetplatform> OutPlatforms) 
27     
28         // It is valid for only server platforms 
29         return UnrealBuildTool.UnrealBuildTool.GetAllServerPlatforms(ref OutPlatforms, false); 
30     
31     
32     public override List<unrealtargetplatform> GUBP_GetPlatforms_MonolithicOnly(UnrealTargetPlatform HostPlatform) 
33     
34         if (HostPlatform == UnrealTargetPlatform.Mac) 
35         
36             return new List<unrealtargetplatform>(); 
37         
38         return new List<unrealtargetplatform> { HostPlatform, UnrealTargetPlatform.Win32, UnrealTargetPlatform.Linux }; 
39     
40     
41     public override List<unrealtargetconfiguration> GUBP_GetConfigs_MonolithicOnly(UnrealTargetPlatform HostPlatform, UnrealTargetPlatform Platform) 
42     
43         return new List<unrealtargetconfiguration> { UnrealTargetConfiguration.Development }; 
44     
45 }  </unrealtargetconfiguration></unrealtargetconfiguration></unrealtargetplatform></unrealtargetplatform></unrealtargetplatform></unrealtargetplatform></string></uebuildbinaryconfiguration>
 

[代码]:

1 GameServerTarget
 
改为
 

[代码]:

1 你项目名ServerTarget
 
比如我的就是改成
 

[代码]:

1 VRGameServerTarget
 
 

[代码]:

1 OutExtraModuleNames.Add("Game");
 
改为
 

[代码]:

1 OutExtraModuleNames.Add("项目名");
 
比如我的就是改成
 

[代码]:

1 OutExtraModuleNames.Add("VRGame");

技术分享

 
然后在工程文件上按右键选择Generate Visual Studio project files 重新生成VS文件。
 
5.打开工程文件的sln(我的是VRGame.sln)
选择Development Server选项进行编译
 

技术分享

 
编译的时间会有点久,耐心等待=.=
(说明:如果不是用编译版的,直接用的下载好的版本,加入xxxserver.cs以后,也是会出现Development Server选项,但是会报错,打不开头文件,因为下载版的源代码是只能看,不能编译和重新构建的)
 
6.在工程目录下的Binaries下的Win64里就会出现XXXServer.exe(XXX为你自己的工程名)
我的是:
D:\\VRGame\\Binaries\\Win64
 

技术分享

 
7.设置好默认地图,打包工程,据说不勾选Use pak file 和 full rebuild编译会快些(但是我没感觉出来有变快=.=)
 

技术分享

 

技术分享

 
8.把XXXServer.exe复制到打包好的文件下的Binaries下的Win64里
 

技术分享

 
9.右键把XXXServer.exe设置为快捷方式,在快捷方式里按右键->属性-> 在路径后面加 -log
就能显示出控制台了。
 

技术分享

 

技术分享

 
10.在客户端输入 ~open 127.0.0.1 就可以连接上服务器了
(127.0.0.1为本机,如果是在其他机子则填对应IP)
 

技术分享

 
参考网址:
http://www.cnblogs.com/moelocus/p/5599509.html
https://wiki.unrealengine.com/Standalone_Dedicated_Server

https://www.youtube.com/watch?v=zSA8zUo8oCg

 

转自52vr http://www.52vr.com/article-904-1.html

以上是关于UE4编译专用服务器的主要内容,如果未能解决你的问题,请参考以下文章

UE4 4.14 专用服务器没有生成解决办法

[UE4]创建游戏加入游戏

[工作积累] UE4 并行渲染的同步 - Sync between FParallelCommandListSet & FRHICommandListImmediate calls(代码片段

UE4的源代码编译

UE4 C++入门之路5-热重载Compile(编译项目的三种方式)

UE4 C++入门之路5-热重载Compile(编译项目的三种方式)