Core Keeper地心护核者联机服务器搭建(Ubuntu版)
吃书路人
编辑于 2024年08月31日 01:35

国内看了半天全都是windows server环境的,蚌埠住了,自己去外边搜了一下ubuntu版

本教程创建时Core Keeper版本0.7.3

貌似国内第一份求求了三连点个赞

发现了一点错误,二次修改时版本为0.7.3.3

发现了一个我写的逆天错误,又重新从一个完全空白的服务器重搭了一遍,文章重新订正,三次修改版本为1.0.0.2

1、需求

不小于1核2G ubuntu22.04 云服务器(具体搭建及ssh连接教程请自行检索,tx云al云都可)

我用的2核4G的但看了一下后台看着占用不高,内存占用2G以内,感觉玩的人不多单核完全能cover住,甚至看到有老哥把这玩意放树莓上跑(

目测带宽占用很低

2、安装steamcmd和游戏

apt安装steamcmd有点问题我这里放的是安装包的教程

配置环境steamcmd环境

中间全部yesOK就可以

代码块
Shell
自动换行
复制代码
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install lib32gcc-s1
复制成功

安装steamcmd

代码块
Shell
自动换行
复制代码
mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
复制成功

启动steamcmd(不要使用sudo权限去启动steamcmd)

代码块
Shell
自动换行
复制代码
./steamcmd.sh
复制成功

看到steam>说明大功告成

遇到下面这个报错可无视不会有影响

代码块
JavaScript
自动换行
复制代码
Loading Steam API...dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
复制成功

然后在steam>输入

代码块
Shell
自动换行
复制代码
login anonymous
app_update 1963720
app_update 1007
quit
复制成功

P.S. 如果登录运行上面的某行一直在retrying,建议quit退出steamcmd并重进

以后遇到版本更新的操作请终止游戏进程后从启动steamcmd操作开始执行一遍就ok

3、游戏配置

以下部分请完整阅读教程后再操作,不要运行一步看一步

进入游戏目录

代码块
Shell
自动换行
复制代码
cd ~/Steam/steamapps/common/Core\ Keeper\ Dedicated\ Server/
复制成功

里面有一个README.txt的文件那个是游戏服务器执行的说明文档

先运行一遍游戏(请使用root权限执行,貌似不用会报错)

代码块
Shell
自动换行
复制代码
./_launch.sh
复制成功

看到Game ID弹出说明游戏正常运行了

先按ctrl+C终止游戏进程

然后去找配置文件(要先执行过游戏一次才会产生配置文件)

代码块
Shell
自动换行
复制代码
cd ~/.config/unity3d/Pugstorm/Core\ Keeper/DedicatedServer/
#或者 cd /root/.config/unity3d/Pugstorm/Core\ Keeper/DedicatedServer/
#配置文件夹会在用户home目录里,无法访问root文件夹可以使用sudo -s的方式切换为root用户
ls -l
复制成功

配置文件目录里有如下几个文件和文件夹

代码块
JavaScript
自动换行
复制代码
-rw-rw-r-- 1 ubuntu ubuntu  234 Aug 31 00:15 Admins.json
-rw-rw-r-- 1 ubuntu ubuntu  234 Aug 31 00:11 Admins.json.pugbackup
drwxrwxr-x 2 ubuntu ubuntu 4096 Aug 30 22:39 modloader
drwxrwxr-x 2 ubuntu ubuntu 4096 Aug 30 22:39 mods
-rw-rw-r-- 1 ubuntu ubuntu   21 Aug 31 00:15 PlayerBans.json
-rw-rw-r-- 1 ubuntu ubuntu   21 Aug 31 00:11 PlayerBans.json.pugbackup
-rw-rw-r-- 1 ubuntu ubuntu  257 Aug 31 00:13 ServerConfig.json
-rw-rw-r-- 1 ubuntu ubuntu  257 Aug 31 00:12 ServerConfig.json.pugbackup
drwxrwxr-x 2 ubuntu ubuntu 4096 Aug 31 00:15 worlds
复制成功

介绍一下每一个文件和文件夹的作用

worlds文件夹是服务器内存

所有结尾是pugbackup的都是原文件的备份文件

Admin.json是管理员用户配置,默认第一个进入服务器的人会成为管理员

PlayerBans.json是黑名单

mods和modloader文件夹是跟mod相关的,新版本中增加了一个modloader(不知道不会用)

ServerConfig.json是服务器配置,文件中各个配置的含义如下所示

代码块
JavaScript
自动换行
复制代码
{
    "gameId": "2222222222222222222222",
      //用于服务器的游戏ID。需要至少28个字符的字母和数字,不包括Y,y,x,0,O.不填或无效表示将在开始时生成一个新的ID。这里我用了一堆2来举例
    "world": 0,
      //表示使用哪个世界文件,0将会使用worlds文件夹中0.world.gzip
    "worldName": "Core Keeper",
      //服务器名称
    "worldSeed": 0,
      //生成新世界时使用的种子,设置为0将会随机
    "maxNumberPlayers": 100,
      //最大游玩人数
    "maxNumberPacketsSentPerFrame": 1,
    "networkSendRate": 20,
      //网络配置,不懂请无视
    "worldMode": 0,
      //为世界设置世界模式。可以是普通(0),困难(1),创意(2),休闲(4)。注意:目前不支持在创意和非创意世界之间切换。
    "seasonOverride": -1
      //通过设置为None (0), Easter (1), Halloween (2), Christmas (3), Valentine (4), Anniversary (5), CherryBlossom(6)中的任何一个来覆盖当前季节。-1是根据系统日期设置的默认设置。
}
复制成功

或者在执行_launch.sh时带参数执行,与上面同理,具体请看README.txt

其中有三个是ServerConfig.json中没有的

-port 

-ip 0.0.0.0  仅当设置了端口时使用。设置服务器将绑定到的地址。

所以如果不想使用steam中转可以使用如下命令执行

代码块
Shell
自动换行
复制代码
./_launch.sh -port 27015 -ip 0.0.0.0
复制成功

-datapath 这个是1.0.0新加的参数,是保存的文件位置。如果没有设置,它默认是一个名为“DedicatedServer”的子文件夹,位于默认的Core Keeper保存位置(上文提到的配置文件目录)。P.S. 非常不建议使用,这玩意可以理解为快速更换服务器的方法,对于普通使用者不建议使用(主要是我没试过)

如果想要替换本地已有的存档请找到本地存档后替换

本地存档位置C:\Program Files (x86)(steam安装位置,装其他盘的自行替换)\steam\userdata\(你的ID)\1621690\remote\map

将本地存档中的.gzip放到刚才讲的服务器配置文件夹中的worlds文件夹里(注意ServerConfig.json配置文件中的world项

P.S. 本地存档可能会存在多个.gzip文件,可以通过先进入你需要的地图,随便挖两下,然后保存退出,查看文件修改时间哪个最新来判断自己需要的文件

4、游戏运行

执行游戏需要挂在到后台,不推荐使用nohup,子进程有点多自己不会杀比较麻烦,容易有漏的,以下将展示使用screen运行游戏

代码块
Shell
自动换行
复制代码
sudo apt install screen
复制成功

创建一个名叫corekeeper的窗口并进入

代码块
Shell
自动换行
复制代码
screen -S corekeeper
复制成功

进入游戏目录并运行

代码块
Shell
自动换行
复制代码
cd ~/Steam/steamapps/common/Core\ Keeper\ Dedicated\ Server/
./_launch.sh
复制成功

看到GAME ID就可以进游戏联机了(这里贴一个正常启动的样子)

按ctrl + A +D退出窗口后台运行(不是关闭窗口)

输入以下可再次进入

代码块
Shell
自动换行
复制代码
screen -r corekeeper
复制成功

按ctrl +C终止游戏服务器进程,输入exit关闭窗口

放个服务器负载自己参考--4人

游戏本体大概占1.5~1.8G内存,我服务器后台还有其他业务,游戏流畅丝滑


研究了一晚上累死了,等我看看什么时候有空研究研究扔到docker里,有用的话给个三连吧orz

会有一篇新文章来专门写可能会遇到的问题