CentOS7搭建Ark: Survival and Evovled私服

SteamCMD的安装与使用参考了[1],Ark私服搭建参考了[2],服务器详细配置参考了[3],GameUserSettings.ini文件的生成一开始采用了ATLAS / ARK GameUserSettings.ini Generator这款在线工具,后来我自己写了一个中文版的——方舟生存进化GameUserSettings.ini文件生成器,从那之后就用自己写的这个了。对于游戏中的管理员命令,参见[4]。

安装SteamCMD

CentOS7的官源中没有提供SteamCMD,所以按照[1]中Manually这一节的指引安装SteamCMD:

1
2
3
4
5
useradd -m steam
yum install glic libstdc++ glibc.i86 libstdc++.i686
su - steam
mkdir Steam && cd Steam/
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

安装Ark私服

运行SteamCMD:

1
2
cd Steam/
./steamcmd.sh

使用匿名用户登陆,然后安装Ark私服到~/game_servers/ark/目录下,其中376030是Ark服务器的ID[5]:

1
2
3
4
5
login anonymous
force_install_dir /home/website/game_servers/ark/
app_update 376030 validate
# 等待下载安装,装好后退出
exit

开放服务器端口

使用root用户登陆系统,开放游戏服务器使用的端口[2]:

1
2
3
4
firewall-cmd --zone=public --add-port=7777/udp --permanent
firewall-cmd --zone=public --add-port=7778/udp --permanent
firewall-cmd --zone=public --add-port=27015/udp --permanent
firewall-cmd --reload

因不使用RCON,所以不开放27020/tcp端口。

启动与测试

~/game_servers/ark/ShooterGame/Binaries/Linux/下新建启动脚本server_start.sh,其内容如下:

1
2
#! /bin/bash
./ShooterGameServer TheIsland?listen?SessionName=Family?ServerPassword=123?ServerAdminPassword=asdf123 -server -log

其中包含的信息如下,关于命令行语法与参数的详细信息,参见[3]中Command Line Syntax和Command Line Arguments这两章。

地图 The Island 孤岛
服务器名 SessionName Family
密码 Password 123
管理员权限密码 ServerAdminPassword asdf123

给脚本加入可执行权限,然后运行测试

1
2
chmod +x server_start.sh
./server_start.sh

等待片刻后,便可通过“Steam界面(窗口)->视图(菜单)->服务器(菜单项)->服务器(窗口)->收藏夹(标签页)->添加服务器(按钮)->输入服务器IP地址->在此地址上寻找游戏(按钮)”看到ARK服务器的相关信息。如果客户端与服务器都在局域网内,也可以在游戏中的“加入线上方舟->筛选服务器:局域网”看到自己搭建的服务器。

通过systemd启动与管理游戏

创建文件/etc/systemd/system/ark.service文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=ARK: Survival Evolved dedicated server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStart=/home/steam/game_servers/ark/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?SessionName=Family -server -log -automanagedmods
WorkingDirectory=/home/steam/game_servers/ark/ShooterGame/Binaries/Linux
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=steam
Group=steam

[Install]
WantedBy=multi-user.target

注意这里和[2]中的不同,这里使用了-automanagedmods参数。-automanagedmods参数可以让服务器在启动前,自动下载、安装、更新MOD,只需要将MOD的创意工坊ID添加进GameUserSettings.ini便可。具体内容我们将在后面的“服务器MOD”这一节进行详述。

服务器设置

服务器配置涉及到的主要文件为~/game_servers/ark/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini。我通过方舟生存进化GameUserSettings.ini文件生成器按照个人喜好设置了服务器的各项参数,下载后替换游戏自动生成的GameUserSettings.ini文件便可。原本是用的ATLAS / ARK GameUserSettings.ini Generator,在弄明白GameUserSettings.ini的各项参数的作用后,我就写了一个中文版的。

服务器MOD

在“通过systemd启动与管理游戏”这一节,我们提到了-automanagedmods参数,这个参数可以让服务器在启动前,自动下载、安装、更新MOD,只需要将MOD的创意工坊ID添加进GameUserSettings.ini便可。我在[6]中选择了几个自己喜欢的MOD添加进去,分别是Awesome Teleporters!(889745138)、DinoTracker(924933745)、Death Recovery Mod(751991809)和Awesome SpyGlass(1404697612)。在GameUserSettings.ini[ServerSettings]中添加一项ActiveMods=889745138,924933745,751991809,1404697612便可[3]。

在修改完配置文件后,不要着急启动服务器,如果此时启动服务器,服务器会去~/game_servers/ark/Engine/Binaries/ThirdParty/SteamCMD/Linux目录下启动SteamCMD,如果此目录下没有SteamCMD的程序文件,则会报如下错误:

1
2
3
4
5
6
7
8
9
Using binned.
4.5.1-0+UE4 7038 3077 402 5
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 346110
LowLevelFatalError [File:E:\SVN_Ark\Engine\Source\Runtime\Core\Private\Linux\LinuxPlatformProcess.cpp] [Line: 652]
FLinuxPlatformProcess::WaitForProc: waitid for pid -1 failed (errno=22, Invalid argument)
Signal 11 caught.
EngineCrashHandler: Signal=11
Segmentation fault (core dumped)

为了避免此错误的出现,首先应该去查看该目录下有没有SteamCMD的程序文件,如果没有,则可以创建SteamCMD的安装目录的链接文件,然后放到此目录下。我是这样做的:

1
2
cd ~/game_servers/ark/Engine/Binaries/ThirdParty/SteamCMD/
ln -s /home/steam/Steam Linux

创建完链接文件后,便可启动服务器,通过systemctl status -l ark可看到服务器在下载安装MOD,稍等片刻,启动游戏,在加入服务器前,本地游戏也会提示安装MOD,待安装后,便可在游戏中尽情体验了。

参考文献

[1] Valve Developer Community. Steam命令行版客户端. Valve Developer Community. 2018-2-26. Official Website.

[2] Volunteers in gamers. Dedicated Server Setup. Official ARK: Survival Evolved Wiki. 2019-7-19. Official Website.

[3] Volunteers in gamers. Server Configuration. Official ARK: Survival Evolved Wiki. 2019-7-6. Official Website.

[4] Volunteers in gamers. Console Commands - Official ARK: Survival Evolved Wiki, Official Webpage

[5] Valve Developer Community. Dedicated Servers List. Valve Developer Community. 2019-5-24. Official Website.

[6] 豪弟弟. 方舟生存进化有哪些可玩性高的mod? - 豪弟弟的回答. 知乎. Details.