0x00:前言
最近和朋友开始对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 -p /etc/sysctl.conf
③.添加以下信息到【/etc/security/limits.conf】中
* soft nofile 1000000
* hard nofile 1000000
④.添加以下信息到【/etc/pam.d/common-session】中
session required pam_limits.so
注意: 若服主未进行以上操作,可能导致服务端无法正常启动,同时导致过高的CPU占用。
- 设置防火墙放行端口
服务端要求防火墙放行以下端口
模式 | 端口 | 作用 | |
---|---|---|---|
UDP | 27015 | Steam服务浏览器搜索端口 | |
UDP | 7777 | 游戏客户端通讯端口 | |
UDP | 7778 | 游戏客户端原始通讯端口(一般是TCP端口+1) | |
TCP | 27020 | 管理员远程控制台端口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用户开启服务端
- 为Ark服务端创建用户
useradd -m ark
- 切换到用户
su - ark
- 运行SteamCmd
- 以匿名身份登录
login anonymous
- 设置下载路径
force_install_dir /home/ark/ark
- 下载Ark服务端
app_update 376030 validate
出现以上提示,steamcmd就开始下载Ark服务端文件了
一般需要30-40分钟左右时间(视服务器带宽而定)
当出现以上提示后,即服务端下载已经完成!
如果出现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】以达到个性化服务端的目的。
以下将列出主要的几个设置项
名称 | 作用 | 默认值 |
---|---|---|
bChatShowSteamName | 玩家聊天时显示Steam名称 | False |
bChatShowTribeName | 玩家聊天时显示部落名称 | True |
bNoBloodEffects | 禁用血腥模式 | False |
名称 | 作用 | 默认值 |
---|---|---|
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 |
名称 | 作用 | 默认值 |
---|---|---|
SessionName | 服务器名称 | Ark's Server |
名称 | 作用 | 默认值 |
---|---|---|
MaxPlayers | 可以加入服务器的玩家人数 | 70 |
名称 | 作用 | 默认值 |
---|---|---|
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>
名称 | 值 | 描述 |
---|---|---|
PlayerID | Integer[32] | 玩家在UE4中的ID |
ClearInventory | Boolean | 是否清理玩家背包的物品 |
ClearSlotItems | Boolean | 是否清理玩家槽的物品 |
ClearEquippedItems | Boolean | 是否清理玩家装备中的物品 |
- 杀死玩家
KickPlayer <SteamID>
- 升级属性
LevelUp <StatName> <NumLevels>
名称 | 值 | 描述 |
---|---|---|
StatName | string | Health, Stamina, Torpidity, Oxygen, Food, Water, Temperature, Weight, MeleeDamageMultiplier, SpeedMultiplier, TemperatureFortitude, CraftingSpeedMultiplier |
NumLevels | Integer[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
大佬 想请问 好久没开的服务器 再次开启进入 发现之前的生存者不见了 每次重新连私服 都会重新建立生存者
额,运行runserver后大概多久可以搜到服务器?大佬
运行多久才能在社区列表中刷出一般视你的服务端性能而定
不过在服务端占用内存 达到4-6G时,基本可以确定服务端已经装载完成,我一般是以这个指标来确认服务端是否启动完成,此时服务器可在社区列表中刷新显示。
一般是8-10分钟左右。
SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
报这个错, 大佬知道怎么解决么
出现这个错误属于正常情况,由于你的服务器中未运行steam服务,所以他会检测不到steam的运行,但出现这个错误对服务器的正常运行是无碍的。|´・ω・)ノ
怎么让ark后台运行,在ssh关闭的情况下
在后台运行服务端的方式有很多种,最简单的一种是直接将服务端运行在后台 【nohup xxxx】xxxx替换为服务器指令。举个栗子 nohup RunServer.sh;其次另外一种 是使用screen,这种方法可以将使服务端在前台后台之间切换,指令为【screen -s ARK】【./RunServer.sh】使用组合键ctrl +a+d 将screen切换至后台,若要将服务端切换到前台,则输入【screen -r ARK 】即可ヾ(≧∇≦*)ゝ