0x00:前言

ARK: Survival Evolved

最近和朋友开始对ARK这款游戏开始感兴趣,于是几个人合伙都买了这款游戏。
不过在合作生存类的游戏上,我们几个比较喜欢自己小圈子里面互相玩耍,于是博主开始捣鼓搭建一个属于自己的Ark服务器。

需要准备的工具:

  • 公网服务器 & 有公网IP的家庭网络
  • 服务器系统:64位Linux系统
  • SteamCmd (安装教程
  • 8G以上内存的VPS

根据Ark官网的要求,服务端运行需要6G以上的运行内存
官网要求

故在本文中,博主采用4H8G的64位Ubuntu进行架设

配置


0x01:设置系统参数

  • 安装运行所需依赖库

Ark服务端在Linux环境下运行需要glibc 2.14或更高版本的支持。

Ubuntu 14.04(或更高版本) 和 Debian 8(或更高版本)已经集成该库,但是老版本的系统并未集成,故需要服主单独安装。

①.添加安装源
将一下源信息添加到【/etc/apt/sources.list】文件末尾

# Experimental/unstable (sid) repositories
deb http://ftp.debian.org/debian experimental main
deb http://ftp.debian.org/debian sid main

②.更新服务器安装源并安装

apt-get update
apt-get -t experimental install libc6-dev
  • 开放文件限制

由于服务端在启动时需要加载过多的文件,故需要设置系统保证服务端进程运行时可以正常加载相应文件
①.添加以下信息到【/etc/sysctl.conf】中

fs.file-max=100000

修改sysctl

②.生效配置文件

sysctl -p /etc/sysctl.conf

③.添加以下信息到【/etc/security/limits.conf】中

*   soft    nofile  1000000
*   hard    nofile  1000000

修改Limits

④.添加以下信息到【/etc/pam.d/common-session】中

session required pam_limits.so

修改session

注意: 若服主未进行以上操作,可能导致服务端无法正常启动,同时导致过高的CPU占用。

  • 设置防火墙放行端口

服务端要求防火墙放行以下端口

模式端口作用
UDP27015Steam服务浏览器搜索端口
UDP7777游戏客户端通讯端口
UDP7778游戏客户端原始通讯端口(一般是TCP端口+1)
TCP27020管理员远程控制台端口RCON

CentOS 7下,此处提供Firewalld设置教程

# 放行Steam服务浏览器搜索端口
firewall-cmd --zone=public --add-port=27015/udp --permanent

# 放行游戏客户端通讯端口
firewall-cmd --zone=public --add-port=7777/udp --permanent
firewall-cmd --zone=public --add-port=7778/udp --permanent

# 放行管理员远程控制台端口RCON
firewall-cmd --zone=public --add-port=27020/tcp --permanent

# 使防火墙生效
firewall-cmd --reload

Ubuntu 下,此处提供iptables设置教程

# 放行Steam服务浏览器搜索端口
iptables -A INPUT -p udp --destination-port 27015 -j ACCEPT

# 放行游戏客户端通讯端口
iptables -A INPUT -p udp --destination-port 7777 -j ACCEPT
iptables -A INPUT -p udp --destination-port 7778 -j ACCEPT

# 放行管理员远程控制台端口RCON
iptables -A INPUT -p tcp --destination-port 27020 -j ACCEPT

0x02:下载Ark服务端

为了您服务器的安全,本文强烈建议不要使用root用户开启服务端

  1. 为Ark服务端创建用户
useradd -m ark
  1. 切换到用户
su - ark
  • 运行SteamCmd
  • 以匿名身份登录
login anonymous

login anonymous

  • 设置下载路径
force_install_dir /home/ark/ark

force_install_dir

  • 下载Ark服务端
app_update 376030 validate

app_update 376030 validate
出现以上提示,steamcmd就开始下载Ark服务端文件了
一般需要30-40分钟左右时间(视服务器带宽而定)
success
当出现以上提示后,即服务端下载已经完成!

如果出现Error! App '376030' state is 0x402 after update job.
则只需要再输入一次下载指令重试即可。

  • 退出SteamCmd
quit

0x03:配置Ark服务端

  • 创建运行脚本

目录
在【home/ark/ark/ShooterGame/Binaries/Linux/】创建一个【RunServer.sh】文件,加入以下内容

#! /bin/bash
./ShooterGameServer TheIsland?listen?SessionName=<server_name>?ServerPassword=<join_password>?ServerAdminPassword=<admin_password> -server -log

在<server_name>项中输入服务器名
在<join_password>项中输入服务器加入密码
在<admin_password>项中输入管理员管理密码
举个栗子

#! /bin/bash
./ShooterGameServer TheIsland?listen?SessionName=SmartFoxServer?ServerPassword=smartfox?ServerAdminPassword=smartfox -server -log

若不想设置密码则将【?ServerPassword=<join_password>】全部删除即可

脚本

  • 授予脚本运行权限
chmod +x RunServer.sh
  • 运行脚本
./RunServer.sh

到此,服务器已经可以正常运行。
服务器列表


0x04:个性化Ark服务端

首次启动Ark服务器后会在【.../ark/ShooterGame/】目录下生成Saved文件夹

该文件夹为服务器的存档文件夹,进入服务器的玩家存档都会保存在这里面。

我们将修改在【Saved/Config/LinuxServer】文件夹中的【GameUserSettings.ini】以达到个性化服务端的目的。
配置文件目录树
以下将列出主要的几个设置项

【/Script/ShooterGame.ShooterGameUserSettings】

名称作用默认值
bChatShowSteamName玩家聊天时显示Steam名称False
bChatShowTribeName玩家聊天时显示部落名称True
bNoBloodEffects禁用血腥模式False

【ServerSettings】

名称作用默认值
ShowMapPlayerLocation显示玩家在地图上的位置True
AllowThirdPersonPlayer是否允许第三人称视角True
ServerCrosshair准心True
ServerPassword服务器加入密码Null
ServerAdminPassword服务器管理员密码Null
RCONPort管理控制台端口27020
DifficultyOffset服务器难度0.5
serverPVE设置服务器为PVE/PVP模式True
proximityChat只有在玩家附近才显示聊天信息True
AdminLogging是否显示管理员正在进行的指令操作False
AutoSavePeriodMinutes服务器多少分钟进行一次存档20
globalVoiceChat是否开启全服语音False
NoTributeDownloads是否载入服务器外部人物数据False
ServerHardcore玩家死亡后是否从①级重新开始True
serverForceNoHud禁用浮动名字True
alwaysNotifyPlayerLeft是否显示玩家离开信息True
alwaysNotifyPlayerJoined是否显示玩家加入信息True
DayCycleSpeedScale一整天流速1
DayTimeSpeedScale白天流速1
NightTimeSpeedScale夜晚流速1
XPMultiplier玩家经验倍率1
TamingSpeedMultiplier驯服速度(越大越快)1
ResourcesRespawnPeriodMultiplier资源刷新速度1

【SessionSettings】

名称作用默认值
SessionName服务器名称Ark's Server

【/Script/Engine.GameSession】

名称作用默认值
MaxPlayers可以加入服务器的玩家人数70

【MessageOfTheDay】

名称作用默认值
Duration展示服务器信息30
Message自定义服务器欢迎信息SmartFox's Ark Server

同时你也可以使用官网提供的Server ini生成器点击跳转

自定义修改文件之后,将文件保存。启动服务器就可以体验专属自己的服务器啦。


0x06:管理员指令

启动游戏进入服务器后,在游戏界面按下【`】键可以调出控制台

  • 获取权限

输入以下指令获取服务器管理权限

EnableCheats <Password>

此处的<Password>为服主设置的【ServerAdminPassword】值

  • 全服广播
cheat broadcast <信息>
  • 发送部落信息
cheat tribemessage <部落ID> <信息>
  • 设置玩家进入服务器时的公告
cheat SetMessageOfTheDay <信息>
  • 封禁/解封玩家
#封禁玩家
banplayer <SteamName>

#解封玩家
unbanplayer <SteamName>
  • 添加/删除玩家白名单
# 添加玩家到白名单(服务器满人时, 白名单玩家优先进入)
cheat AllowPlayerToJoinNoCheck <SteamID>

# 把玩家移出白名单
cheat DisallowPlayerToJoinNoCheck <SteamID>
  • 无敌模式
cheat God
  • 冻结除了玩家以外的生物
cheat playersonly
  • 设置世界时间
cheat settimeofday <Hour>:<Minute>[:<Second>]
  • 清理玩家物品
ClearPlayerInventory <PlayerID> <ClearInventory> <ClearSlotItems> <ClearEquippedItems> 
名称描述
PlayerIDInteger[32]玩家在UE4中的ID
ClearInventoryBoolean是否清理玩家背包的物品
ClearSlotItemsBoolean是否清理玩家槽的物品
ClearEquippedItemsBoolean是否清理玩家装备中的物品
  • 杀死玩家
KickPlayer <SteamID> 
  • 升级属性
LevelUp <StatName> <NumLevels> 
名称描述
StatNamestringHealth, Stamina, Torpidity, Oxygen, Food, Water, Temperature, Weight, MeleeDamageMultiplier, SpeedMultiplier, TemperatureFortitude, CraftingSpeedMultiplier
NumLevelsInteger[32]升级等级
  • 传送玩家
# 将玩家传送到我身边
TeleportPlayerIDToMe <PlayerID>

# 将我传送到玩家身边
TeleportToPlayer <PlayerID>
  • 强制玩家加入某个部落
ForcePlayerToJoinTribe <PlayerID> <TribeName> 
  • 飞行模式
# 开启飞行模式
cheat fly

# 关闭飞行模式
cheat walk
  • 穿墙模式
cheat ghost

0x07:参考文章

Ark服务器搭建:https://ark.gamepedia.com/Dedicated_Server_Setup
Ark服务器设置:https://ark.gamepedia.com/Server_Configuration
Ark服务器管理员控制台指令:https://ark.gamepedia.com/Console_Commands

Last modification:March 12th, 2020 at 03:53 pm
If you think my article is useful to you, please feel free to appreciate