本文适合有一定Linux基础的同学阅读

前言

最近在玩Core Keeper,还算有趣,虽然自动化上还差点意思,和mc比确实还差不少东西。不过已经有一些能把玩的东西了。

昨天玩是朋友开房间,我们加进去玩,类似帕鲁。所以还是有很多不便,总不可能其他人想玩就叫房主开服吧。

于是就有了这篇文章,主要介绍一下core keeper的开服流程,和一些心得。

开服手段

稍微了解了一下开服方式,其实和帕鲁几乎一模一样,都是用steam开服,个人PC机就是去下Steam的服务端开服,而服务器就是用SteamCMD开服。

所以既然有Steam CMD了,那也必然会有封装好的Docker镜像,网上找了一下确实有,但是经过我的使用验证,这些Docker镜像都创建的太久远了,GitHub上能搜到的都是22年的,在此期间CK已经跟新了很多个版本,因此已经不再适用。

因此最后还是选择了最基础的Steam CMD开服方法。

快速上手

SteamCMD

SteamCMD是steam的命令行版本,它保留了一些steam的基础功能,例如账号登录,联机。主要的目的就是用来开专有服务器。(有很多游戏例如CS,帕鲁都是用的SteamCMD开私服)

安装SteamCMD

steamCMD官方手册:https://developer.valvesoftware.com/wiki/SteamCMD#Linux_2

安装手册上写的非常清楚了,这里贴一下原文:
账户:
创建一个名为 steam 的用户帐户,以安全地运行 SteamCMD,并将其与操作系统的其他部分隔离开来。

警告:
请勿在 root 用户的身份下运行 steamcmd。这样做存在安全风险。

  1. 以 root 用户身份创建 steam 用户:

    sudo useradd -m steam
    sudo passwd steam
    
  2. 进入其主目录:

sudo -u steam -s
cd /home/steam

Ubuntu安装
要安装 SteamCMD,必须启用 multiverse 仓库和 x86 架构的软件包。

sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd

安装完成后输入 steamcmd看一下是否能进入steamcmd的编辑模式。

SteamCMD基础使用

匿名登录:

login anonymous

退出:

quit

安装某个服务(例如1007)

app_update 1007 validate

安装Core keeper服务器

在装好steam CMD后,进入Steamcmd

steamcmd
  1. 匿名登录
Steam> login anonymous
  1. 安装Steamworks SDK Redist服务
    因为某些原因(可以看后面安装服务端自带的README),Core keeper的服务端服务要调用Steam works SDK服务。
Steam> app_update 1007 validate
  1. 安装Core Keeper服务端服务
Steam>app_update 1963720 validate
  1. 退出SteamCMD
Steam>quit

如果你没有修改过SteamCMD的安装目录的话,此时你可以去到~/.steam/SteamApps/common/'Core Keeper Dedicated Server'这个目录找到启动脚本_launch.sh

cd ~/.steam/SteamApps/common/'Core Keeper Dedicated Server'

运行这个启动脚本

sudo bash _launch.sh

正常无误的话,在运行过后会给出一段Game-ID:xxxxxxxxxxxxxxxxxxx,这个就是平时和朋友联机,朋友发的那一段代码,打开游戏输入后就可以进入了。

存档替换

存档位置是在~/.config/unity3d/Pugstorm/‘Core Keeper’/DedicatedServer/worlds
很蛋疼的是存档居然不和启动脚本在一个位置,隔着好几层层级嵌套。要替换存档就把以前的存档重命名为这个目录内的,然后覆盖即可。

服务器其他属性配置

服务器属性配置文件在~/.config/unity3d/Pugstorm/‘Core Keeper’/DedicatedServer/ServerConfig.json

具体属性解释如下:

参数 描述
-world 0 要使用的世界索引。
-worldname “Core Keeper Server” 服务器的名称。
-worldseed 0 用于新世界的种子。设置为0以生成随机种子。
-gameid “” 用于服务器的游戏ID。需要至少28个字符且是字母数字的组合,不包括Y、y、x、0、O。空或不有效意味着在启动时将生成一个新的ID。
-datapath “” 保存文件位置。如果未设置,则默认为默认的Core Keeper保存位置下的名为"DedicatedServer"的子文件夹。
-maxplayers 100 允许连接到服务器的最大玩家数。
-worldmode 0 设置世界的世界模式。可以是Normal (0)、Hard (1)、Creative (2)、Casual (4)。注意:当前不支持在创造模式和非创造模式世界之间切换。
-port 要绑定到的端口。如果未设置,则服务器将使用Steam中继网络。如果设置了端口,客户端将直接连接到服务器,且端口需要打开。
-ip 0.0.0.0 仅在设置了端口时使用。设置服务器将绑定到的地址。
-season -1 通过将其设置为None (0)、Easter (1)、Halloween (2)、Christmas (3)、Valentine (4)、Anniversary (5)、CherryBlossom (6)中的任何一个来覆盖当前季节。-1是默认设置,其根据系统日期设置。

参考:

中文教程:
开服流水账:https://steamcommunity.com/app/1621690/discussions/0/3275817873363439916/

异常问题解决:https://steamcommunity.com/app/1621690/discussions/0/3271312871346466708/?l=norwegian

wiki开服指南:注意有坑,它的steamworks SDK和游戏服务端不在同一级目录内。
https://core-keeper.fandom.com/wiki/Dedicated_Server#Setup_on_a_Debian_based_distro_(Debian/Ubuntu/Mint/etc.)

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟