【GAD翻译馆】创建一个服务器

发表于2017-12-06
评论4 3.2k浏览

翻译:王成林(麦克斯韦的麦斯威尔 ) 审校:黄秀美(厚德载物) 

在这篇文章中我将介绍如何在你的电脑上创建一个服务器,使你的朋友能够加入到你当前开发的游戏中。在阅读本文前你的电脑中需要有一个编译好的非二进制版本的引擎。所以在开始前,你应该从它的资源库中克隆一个已发行的版本(因为这些版本比较稳定)。如果你在编译引擎中出现了困难,请参考这个视频

在开始前,有必要说一下目前还不能为只用蓝图开发的游戏创建服务器。不过还好,你可以使用编辑器中的“新C++类向导”功能添加一个空白的C++类,从而将一个蓝图项目转换为一个C++项目。另外一定要使用源代码构建编辑器,否则在后面服务器的代码不能成功编译。


创建项目

在使用源代码编译引擎后,打开引擎并创建一个新的第三人称C++项目模板,将其命名为“ServerProject”。然后关闭该项目,在资源管理器中将以下C#文件添加到源文件夹中:

1
2
3
4
5
6
7
8
9
10
11
12
using UnrealBuildTool;
using System.Collections.Generic;
 
[SupportedPlatforms(UnrealPlatformClass.Server)]
public class ServerProjectServerTarget : TargetRules
    public ServerProjectServerTarget(TargetInfo Target) : base(Target)
    
        Type = TargetType.Server;
        ExtraModuleNames.Add("ServerProject");
    

确保将该文件保存为“ServerProjectServer.Target.cs”(红色的文字是一个命名规则,目的是为了让我们知道该文件只和服务器有关,不会影响我们游戏的代码)。

添加完以上文件后,打开你的游戏的解决方案文件并使用以下配置编译游戏:

·       开发编辑器

·       开发服务器

如果你使用的是二进制版本的引擎,在开发服务器配置选项中编译过程将失败。

 

配置项目的地图

我们将创建一个空白地图(我们将其命名为EntryMap),在其中玩家可以输入服务器的IP地址从而与其建立连接。打开你的项目的设置页面,为项目的“游戏默认地图”(该地图为打包游戏运行时载入的第一张地图)指定EntryMap。记得也要为你的服务器设置默认地图(在我的项目中它的名字为NewMap):

接下来,创建一个新的控件蓝图(我们将其命名为IPWidget)并在它的画布面板中添加一个文本框以及一个按钮。

然后在Join按钮的OnPressed事件中加入以下逻辑:

编译并保存你的蓝图。然后打开你的项目的Entry Map,将以上控件添加到视口中:

现在我们的项目已经完成了,请保存所有内容并打包你的游戏,然后将其发给你的朋友(如果他们没有安装引擎那么他们需要一个安装程序才能玩你的游戏)。


启动服务器

为了启动你的服务器,打开你的项目的二进制文件夹然后找到“ServerProjectServer.exe”。在你的电脑的某处创建一个它的快捷方式,然后在它的属性的目标选项中加入-log标签:

这确保了服务器会在命令提示符中打开,以便我们查看服务器当前的各种信息。为了启动服务器,打开这个快捷方式,会出现如下窗口:

注意服务器正在监听端口7777。为了使玩家能够加入服务器,他们需要输入服务器的IP地址,包括它的监听端口(例如,“xx.xxx.xx.xx:7777”,其中xx是服务器的IP)。如果你使用你的本地电脑作为主机,你需要打开你的路由器的端口,这样玩家才能连接游戏

最后,这是在几名玩家成功连接后服务器的日志:


【版权声明】

原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引