灵魂面甲专用服务器指南
本文档详细介绍了如何在Windows环境下设置和配置灵魂面甲的自托管专用服务器。虽然这些信息中的大部分也适用于Linux环境,但在文件路径和脚本等方面会有一些差异。由于我对Linux的经验不足,无法解释这些差异。
免责声明:设置和管理游戏服务器没有唯一的"正确"方式。每个人都有自己的偏好。本指南展示了一种基于我个人经验和偏好的方法。将其作为起点,但请随意根据您的偏好调整您的设置。
注意:本指南说明了如何在不使用任何服务器管理软件的情况下完成所有操作。如果您更喜欢运行服务器管理软件,您需要了解该特定软件的工作原理并在那里设置您的服务器。本指南的大部分内容可能不适用于您。
安装和更新
安装SteamCMD
下载SteamCMD,这是一个命令行工具,可以从Steam服务器下载数据,包括专用服务器的文件。您可以从此页面下载,或者如果您愿意,这里是Windows版本的直接下载链接。解压文件并将其放在系统的某个目录中。我使用的位置是C:\SteamCMD
。它会在您放置它的目录中自行安装。
运行一次SteamCMD,让它更新并下载其余文件。完成后,当它提示您输入时,输入命令quit
关闭它。
提示:我建议将您安装SteamCMD的位置添加到系统的Path
环境变量中。这将允许您在任何地方运行它,而无需写出完整路径。这不是必需的,但可能会使将来的操作更容易。
选择位置
现在选择您想要安装专用服务器的位置。它可以在任何地方,但您可能想选择一个不包含任何空格的路径,以防止将来出现麻烦。找到位置后,在那里创建一个新文件夹,用于存放服务器文件。
创建更新脚本
我们将创建一个批处理脚本,它将有双重用途。它既可以安装专用服务器文件,也可以在游戏发布更新时在将来更新它们。
首先,如果您还没有这样做,您需要在Windows中启用查看文件扩展名。如果您在打开的文件夹窗口顶部选择"查看"菜单,应该有一个名为"文件扩展名"的选项。启用该选项。如果您看不到查看菜单,按键盘上的Alt键应该会使其显示出来。
在您在上一步中创建的文件夹内创建一个新的文本文件。将文件命名为update.bat
,将扩展名从.txt更改为.bat。然后在您选择的文本编辑器中打开文件,或右键单击文件并选择编辑
以在Windows记事本中打开它。
复制以下文本块并将其粘贴到此文件中。
@echo off set root=%~dp0 if %root:~-1%==\ set root=%root:~0,-1% pushd %root% steamcmd.exe +force_install_dir "%root%" +login anonymous +app_update 3017310 +quit copy /Y *.dll WS\Binaries\Win64\*.dll popd pause
保存文件。
回到Windows中的文件,双击它运行。这将打开一个控制台窗口,在那里它将下载游戏并在完成时暂停。查看输出以确保没有错误。如果您看到任何错误,您需要在继续下一步之前找出如何解决它们。如果一切看起来都很好,那么按任意键关闭控制台窗口。
将来,每当游戏发布更新时,停止您的服务器并再次运行这个相同的脚本以将您的服务器更新到最新版本。
启动脚本
现在您已经安装了服务器,下一步是构建启动脚本。构建和配置这个脚本有多种方法,但我们只会介绍一种应该能让您启动并运行的方法。您以后随时可以自定义它。
在安装服务器的同一文件夹中,创建一个新的文本文件并将其命名为serve.bat
(或者如果您愿意,可以命名为start.bat
),将扩展名从.txt更改为.bat。然后在您选择的文本编辑器中打开文件,或右键单击文件并选择编辑
以在Windows记事本中打开它。
复制以下文本块并将其粘贴到此文件中。
@echo off set root=%~dp0 if %root:~-1%==\ set root=%root:~0,-1% cd %root% set SteamAppId=2646460 WS\Binaries\Win64\WSServer-Win64-Shipping Level01_Main -log -server -UTF8Output -PORT=8777 -QueryPort=27015 -EchoPort=18888 -forcepassthrough -SteamServerName="my server name" -PSW="my password" -adminpsw="admin password" -saving=600 -backup=900
现在,您需要编辑一些值以适应您的服务器。主要是以下值:
- SteamServerName - 您的服务器在服务器列表中显示的名称
- PSW - 您的服务器密码。如果您想要一个开放的服务器,删除此参数。(但是,在您完成配置服务器之前,您可能想要保留它,这样人们就不会在您准备好之前加入。)
- adminpsw - 您的服务器管理员密码。确保这个密码是安全的,因为它是某人获得服务器设置和gm命令完全访问权限所需的全部内容。
完成配置此文件后,保存它。
回到Windows中的文件,双击它运行。这将首次启动您的服务器。您会看到它在控制台窗口中运行。一旦它停止打印消息,就意味着它已完全启动。通常需要2分钟以上才能完全启动。在选中窗口时按Ctrl+C可以启动服务器的关闭程序。
在服务器启动时,您可能会看到警告或错误输出。其中一些是正常的,不用担心。其他的可能表示实际问题。如果服务器在出现错误后继续运行,那么现在不要担心它们。如果它们导致任何实际问题,您可以稍后再回来查看。如果服务器崩溃或自行关闭,那么您可能有一个需要现在解决的问题。如果需要,请查看故障排除部分寻求帮助。
组合脚本(可选)
如果您想在每次启动服务器时检查更新,可以将更新和启动脚本组合成一个脚本。这会给您的启动时间增加一点时间,但可能会让事情变得更容易。以下是一个示例:
@echo off set root=%~dp0 if %root:~-1%==\ set root=%root:~0,-1% cd %root% steamcmd.exe +force_install_dir "%root%" +login anonymous +app_update 3017310 +quit copy /Y *.dll WS\Binaries\Win64\*.dll set SteamAppId=2646460 WS\Binaries\Win64\WSServer-Win64-Shipping Level01_Main -log -server -UTF8Output -PORT=8777 -QueryPort=27015 -EchoPort=18888 -forcepassthrough -SteamServerName="my server name" -PSW="my password" -adminpsw="admin password" -saving=600 -backup=900
服务器配置
此时,您应该有一个可以启动并且不会崩溃的服务器。在本节中,我们将介绍在开放服务器供人们游玩之前您可能想要调整的常见配置选项。本节中的所有内容都是可选的,但值得查看。
常规
服务器配置主要通过命令行参数进行。您已经在serve.bat
脚本(或者您决定如何称呼它)中看到了许多这些参数。它们是脚本最后一行中列出的长参数列表。您可以根据需要编辑此脚本以添加、删除或更改参数。
以下是常见启动参数的列表,以及一些不太常见的参数。除了这些之外,许多Unreal Engine 4.27的命令行参数也可以使用。
参数 | 描述 |
---|---|
-server | 必需参数。 |
-log | 此参数告诉服务器在控制台窗口中运行。如果您省略它,那么它将在后台运行,没有任何窗口。除非您知道自己在做什么,否则建议保留此参数。 |
-forcepassthrough | 必需参数。 |
-UTF8Output | 确保包含非拉丁字符的日志消息正确显示。您应该保留这个。 |
-PORT=[port] | 服务器用于客户端游戏连接的绑定端口。这可以是您想要的任何有效且可用的UDP端口。 |
-QueryPort=[port] | 服务器用于处理传入查询的绑定端口。这可以是您想要的任何有效且可用的UDP端口。 |
-EchoPort=[port] | 服务器用于telnet连接的绑定端口。这可以是您想要的任何有效且可用的TCP端口。Telnet只能被运行在与服务器相同机器上的客户端访问。它只绑定到回环适配器(127.0.0.1)。 |
-MULTIHOME=[ip] | 告诉服务器绑定到特定的本地IP。如果未指定,服务器将绑定到0.0.0.0(所有可用适配器)。在家庭设置中通常不需要这个,除非计算机有多个适配器,并且您想要选择一个特定的适配器。 |
-MaxPlayers=[count] | 指定一次可以连接到服务器的最大玩家数。如果连接的玩家太多,服务器性能将受到影响。 |
-gamedistindex=[index] | 设置服务器的区域。这似乎只影响游戏事件允许的时间。它实际上并不会将服务器列在指定区域下。已知值:
|
-pve | 强制服务器在PVE模式下运行。 |
-pvp | 强制服务器在PVP模式下运行。 |
-saving=[seconds] | 服务器将世界状态保存到内存数据库的间隔(以秒为单位)。这不会将数据库保存到磁盘,但会为以后保存到磁盘做准备。 |
-backup=[seconds] | 服务器将当前内存数据库保存到磁盘上的world.db文件的间隔(以秒为单位)。 |
-initbackup | 如果指定,服务器将在每次启动时创建world.db的备份副本。 |
-backupinterval=[minutes] | 如果指定,服务器将按此间隔(以分钟为单位)自动创建磁盘上world.db文件的备份副本。请注意,服务器永远不会删除备份,因此您需要偶尔手动删除一些备份以保留磁盘空间。 |
-rconpsw=[password] | 如果指定,在服务器上启用RCON,允许RCON客户端连接并发出一些管理命令。该值指定RCON客户端连接所需的密码。如果未指定此参数,RCON将被禁用。 |
-rconaddr=[ip] | 指定要将RCON监听器绑定到的IP地址。类似于MULTIHOME参数,但专门用于RCON。如果未指定,服务器将使用MULTIHOME地址。如果既未指定MULTIHOME也未指定rconaddr,则RCON将被禁用。 |
-rconport=[port] | 指定RCON监听器将绑定到的TCP端口。这是RCON客户端需要连接的端口。如果未指定,默认为端口19000。 |
-GongHuiMaxMember=[count] | 指定服务器上一个部落可以容纳的最大玩家数。如果未指定,则默认为游戏设置中设置的值。如果指定了,它将在下次服务器启动时覆盖游戏设置。 |
-serverpm=[mask] | 指定在服务器上启用哪些权限列表。更多信息,请参见下面的权限列表和封禁部分。 |
一旦您对配置感到满意,就可以进入下一步。
注意:上述设置中的一些也可以在文件WS/Saved/Config/WindowsServer/Engine.ini中配置。但是,大多数设置只支持通过命令行配置。如果在两个地方都指定了,命令行将优先。出于这些原因,通常不值得将配置分散在启动脚本和Engine.ini之间。将所有内容保持在启动脚本中会更容易。
RCON访问
假设您已经使用上表中描述的命令行参数配置了RCON,您应该能够从运行在与服务器相同机器上的客户端访问RCON。您还可以将其他机器的IP地址列入白名单,以提供RCON访问权限。这可以通过编辑文件WS/Saved/Config/WindowsServer/Engine.ini
并添加以下内容来完成。
[Server.SafeIP] IP=xxx.xxx.xxx.xxx IP=xxx.xxx.xxx.xxx
权限列表和封禁
服务器支持可选的权限列表。您可以设置白名单或黑名单,这取决于您想如何运行服务器。这是除了可选设置服务器密码之外的功能。
权限列表主要通过游戏内管理员控制台命令配置,但也可以在服务器未运行时手动编辑。启用或禁用特定列表是通过上面提到的命令行参数-serverpm=[mask]
完成的。您也可以使用控制台命令临时启用或禁用列表。
更多信息,请参见服务器权限。
关于如何封禁玩家的示例,请参见服务器权限 - 示例:封禁玩家。