0%

方舟生存进化 Linux(CentOS) 开服、mod安装

环境

阿里云服务器,CentOS 7.7 64位, 2核CPU,4G内存,4G交换空间

交换空间配置

Linux配置虚拟内存文件

开服准备

创建用户并设置密码

1
2
adduser arkserver
passwd arkserver

开放以下端口

1
2
7777/udp
27015/udp

PS:云服务器一般是在安全组规则中设置放行
同时关闭系统自带的防火墙(root用户执行service firewalld stop

(可选)使用原始套接字连接

安装完成后,开放端口:
7778/udp(游戏端口号+1)
并在arkserver.cfg中添加启动参数?bRawSockets,例如:

1
2
3
fn_parms(){
parms="\"${defaultmap}?AltSaveDirectoryName=${defaultmap}?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?bRawSockets -automanagedmods\""
}

修改文件描述符限制

1
2
echo "fs.file-max=100000" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
1
2
echo "* soft nofile 1000000" >> /etc/security/limits.conf
echo "* hard nofile 1000000" >> /etc/security/limits.conf

切换用户

1
su - arkserver

下载并运行一键安装脚本

1
wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh arkserver

PS:如果访问raw.githubusercontent.com经常出错,可修改hosts文件(/etc/hosts),添加以下内容(root用户)

1
199.232.4.133 raw.githubusercontent.com

运行安装文件

1
./arkserver install

一路回车即可。

安装过程中可能出现的问题

出现 ERROR、FAIL

一般是网络问题导致的下载失败,删除报错的脚本后重新执行./dstserver install

依赖程序包缺失

表现为check_deps.sh执行时,出现红字
使用yum命令安装缺失程序包即可
如:

1
yum install python3 jq -y

之后再次执行./arkserver install

建立SteamCMD软链接失败

ln: failed to create symbolic link '~/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux': No such file or directory
建议再次执行./arkserver install尝试
也可手动安装SteamCMD,见文章最末尾

开服相关

编辑配置文件

可通过编辑Game.iniGameUserSettings.ini文件(位于/home/arkserver/serverfiles/ShooterGame/Saved/Config/LinuxServer)修改服务器配置
笔者直接复制PC端...\steamapps\common\ARK\ShooterGame\Saved\Config\WindowsNoEditor文件夹下的这两个文件到服务器上

设置加入服务器密码和管理员密码

GameUserSettings.ini文件[ServerSettings]下添加:

1
2
ServerPassword=123456
ServerAdminPassword=654321

在游戏内按Tab调出控制台,输入enablecheats 管理员密码启动作弊模式
之后输入指令即可(如cheat fly

修改服务器名称:

GameUserSettings.ini文件中添加:

1
2
[SessionSettings]
SessionName=ArkServer

更多配置参数可查看官方wiki: Server Configuration

更换地图

lgsm/config-lgsm/arkserver/arkserver.cfg文件添加一行:

1
defaultmap="MAP_NAME_HERE"

MAP_NAME_HERE替换成地图名
地图名:

1
2
3
4
5
6
7
8
TheIsland
TheCenter
Ragnarok
CrystalIsles
ScorchedEarth_P
Aberration_P
Extinction
Valguero_P

设置人数

lgsm/config-lgsm/arkserver/arkserver.cfg文件添加一行:

1
maxplayers=10

其他配置

修改端口号(以1234为例):

添加

1
port=1234

设置启动时自动更新

添加

1
updateonstart="on"

关闭反作弊(BattleEye)

arkserver.cfg中增加启动参数-NoBattlEye

1
2
3
fn_parms(){
parms="\"${defaultmap}?AltSaveDirectoryName=${defaultmap}?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port} -NoBattlEye -automanagedmods\""
}

更多配置可参考/home/arkserver/lgsm/config-lgsm/arkserver/_default.cfg文件,将需要修改的内容添加进arkserver.cfg即可

启动服务器

1
./arkserver start

PS:启动服务器需要时间,耐心等待。

停止服务器

1
./arkserver stop

更新服务器版本

1
./arkserver update

加入服务器

手动收藏

打开steam主窗口,左上角视图-服务器(如图所示)

收藏夹中点击添加服务器,输入地址后点击在此地址上寻找游戏将选定的游戏添加到收藏夹,然后连接即可。
之后可直接在游戏内通过收藏夹连接。

通过steam快捷方式连接

建立.bat文件(1.2.3.4替换为ip地址或域名,多个地图需要指定端口):

1
start steam://connect/1.2.3.4

mod安装

1.自动从创意工坊下载并安装

编辑Game.ini文件,增加ModInstaller属性(从而自动下载并安装mod):

1
2
3
4
5
[ModInstaller]
ModIDS=[workshopID]
ModIDS=[workshopID]
ModIDS=[workshopID]
ModIDS=[workshopID]

编辑GameUserSettings.ini文件,[ServerSettings]下,ActiveMods字段:

1
ActiveMods=[workshopID],[workshopID],[workshopID],[workshopID]

最后重启服务器:

1
./arkserver restart

2. 手动安装(可能会安装失败,建议使用方法1)

把PC上steamapps\common\ARK\ShooterGame\Content\Mods下对应的modID文件夹和.mod文件
复制到/home/arkserver/serverfiles/ShooterGame/Content/Mods下,再编辑GameUserSettings.ini文件,[ServerSettings]下,ActiveMods字段,重启服务器即可
PS:mod安装也需要时间,耐心等待

其他内容

手动安装SteamCMD

未正常安装SteamCMD,会导致无法自动下载并安装MOD,且无法更新服务器版本。
检查/home/arkserver/serverfiles/Engine/Binaries/ThirdParty/SteamCMD下是否有Linux文件,如果没有,则
先依次建立对应文件夹,再执行以下命令进行下载,并建立软链接:

1
2
3
4
5
6
cd ~
mkdir steamcmd
cd steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xf steamcmd_linux.tar.gz
ln -s ~/steamcmd/ ~/serverfiles/Engine/Binaries/ThirdParty/SteamCMD/Linux

查看端口占用

1
netstat -atunp | grep ShooterGame

查询开服情况脚本

注:需根据开服端口替换port变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import time,sys,os,subprocess

port=7777

def check():
try:
out=subprocess.check_output('netstat -atunp | grep ShooterGame',shell=True)
except subprocess.CalledProcessError:
print("Error: Server is not running!")
sys.exit()

out = str(out,"utf-8")
print(out)
if(str(port+1) in out):
print("开服完成")
sys.exit()

while(1):
check()
time.sleep(10)

参考

Ark Survival Evolved - LinuxGSM_
Dedicated_Server_Setup#Linux
Server_Configuration