Core Keeper 开服有两条连接路线:默认走 Steam relay 生成 Game ID,或者显式设 -port 用 IP 直连和 PC 商店间连接。它不是“所有部署都必须开放某个固定端口”。Linux 服务端还需要图形生成能力:官方包明确要求 -batchmode,别用 -nographics,无桌面服务器一般用 Xvfb 提供最小显示环境。
这篇按 2026年8月3日核对的开发者置顶 FAQ,并通过 SteamCMD 下载了当前 Linux App 1963720 Build 23543502,验证边界正文里写清楚。
先选Game ID还是IP直连
| 方式 | Game ID / Steam relay | IP Direct Connection |
|---|---|---|
| 启用方式 | 不传-port |
显式传-port PORT |
| 玩家加入 | Join Game输入Game ID | Join Game Via IP输入地址、端口和密码 |
| 入站端口 | 官方README不要求你指定Direct端口 | 必须精确放行你选择的UDP端口 |
| PC商店范围 | 当前包说明默认Steam用户 | Direct Connection用于跨PC商店连接 |
| 隐私 | Game ID本身具有加入能力 | 公网IP会暴露给玩家,玩家IP也会暴露给服务端 |
| 适用场景 | Steam朋友服、减少网络配置 | 跨商店、固定公网地址、需要直接控制入口 |
Game ID不是可以公开展示的无害编号。包内README说明它提供与密码相近的加入能力,只发给允许进入的玩家;泄露后更换Game ID。
当前官方包确认了什么
| 项目 | 2026-08-03核验结果 |
|---|---|
| 专用服务端App | 1963720 |
| 系统 | Windows、Linux |
| Linux Build ID | 23543502 |
| manifest安装大小 | 681,463,016字节 |
| Linux入口 | CoreKeeperServer,官方提供_launch.sh |
| 必需模式 | -batchmode,不能用-nographics替代 |
| Game ID输出 | 安装目录旁GameInfo.txt |
| 默认数据 | Core Keeper保存位置下DedicatedServer |
| 退出方式 | 官方FAQ建议在控制台输入q |
官方FAQ给出的世界目录:
Windows: %USERPROFILE%\AppData\LocalLow\Pugstorm\Core Keeper\DedicatedServer\worlds
Linux: ~/.config/unity3d/Pugstorm/Core Keeper/DedicatedServer/worlds
使用-datapath可以把不同实例的数据隔离到更清楚的位置。
本轮为什么没有写成实测通过

本轮完成了App下载和依赖准备,Unity 6000.0.59f2已创建Mesa llvmpipe OpenGL 4.5设备;进入MonoManager ReloadAssembly后,在amd64仿真中触发:
x86-codegen.h:410
condition `offset == (gint32)offset' not met
Caught fatal signal - signo:6
因此:
- 没有
GameInfo.txt; - 没有Game ID;
- 没有世界文件;
- 没有正常退出和重开;
- 不能把App下载成功当作服务器启动成功。
这只说明当前Apple Silicon的linux/amd64仿真路径不可用,不说明原生x86_64 Linux有相同问题。后续最小验证只需换原生x86_64环境完成GameInfo、世界、q停服和重开,不需要为了文章做完整多人部署。
配置怎么选
没有运行和玩家样本时,配置只能作为测试起点:
| 场景 | 采购测试起点 | 需要观察 |
|---|---|---|
| 2—4人新世界 | 2核4GB、40GB SSD | 首次世界生成、内存、保存时长 |
| 5—8人长期世界 | 4核8GB、60GB SSD | 世界增长、玩家峰值、备份窗口 |
| 更高人数/模组/跨商店 | 4核8GB以上,先做兼容和负载测试 | 官方包提示高人数可能不稳定 |
包内参数默认-maxplayers 8,虽然接受更高数字,但官方明确提示需要更多资源或可能不稳定。不要把“参数能填写16”写成“官方支持稳定16人”。
准备玩家使用的PC商店、Game ID或IP直连、人数、世界来源、模组和备份周期,再到萤光云VPS页面核对实时Linux/Windows镜像、SSD、价格和库存。
推荐目录结构

/opt/corekeeper/current/ # App 1963720程序
/opt/corekeeper/releases/ # 旧Build回退
/srv/corekeeper/private-01/ # -datapath实例数据
/srv/corekeeper/logs/
/srv/corekeeper/backups/
每个实例使用独立datapath、Game ID或Direct端口。不要让测试服和生产服共用同一个world index。
用SteamCMD安装Linux服务端
sudo adduser --system --home /opt/corekeeper --group corekeeper
sudo mkdir -p /opt/corekeeper/current /srv/corekeeper/{private-01,logs,backups}
steamcmd \
+force_install_dir /opt/corekeeper/current \
+login anonymous \
+app_update 1963720 validate \
+quit
当前官方包实际使用App 1963720。部分旧教程还额外安装Steam runtime App 1007;是否需要应以当前README.txt、_launch.sh和目标发行版实际错误为准,不要无条件复制。
安装后记录:
du -sh /opt/corekeeper/current
sha256sum /opt/corekeeper/current/CoreKeeperServer
sed -n '1,240p' /opt/corekeeper/current/README.txt
sed -n '1,260p' /opt/corekeeper/current/ARGUMENTS.txt
Linux为什么需要Xvfb
包内README明确说明部分程序化生成在GPU完成,所以:
- 使用
-batchmode; - 不使用
-nographics; - 无桌面Linux通过Xvfb提供虚拟显示;
- 官方
_launch.sh会检查libxi6和xvfb并启动:99; - 容器也要提供可用的图形后端,不能只复制Unity无头模板。
Ubuntu示意:
sudo apt update
sudo apt install -y xvfb libxi6
优先先运行官方_launch.sh,只有理解当前脚本后才改成自己的systemd包装器。
Game ID朋友服启动参数
不传-port,让服务端走Steam relay:
cd /opt/corekeeper/current
./_launch.sh \
-datapath /srv/corekeeper/private-01 \
-world 0 \
-worldname "Private Core Keeper" \
-worldseed "CHANGE_TO_YOUR_SEED" \
-worldmode Normal \
-maxplayers 8
启动后不要只看进程。检查:
cat /opt/corekeeper/current/GameInfo.txt
tail -n 200 /opt/corekeeper/current/CoreKeeperServerLog.txt
find /srv/corekeeper/private-01 -maxdepth 3 -type f -print
GameInfo.txt会提示Game ID、允许平台和被忽略/无效参数。真实Game ID不要写进公开日志工单。
IP直连与跨PC商店
需要Direct Connection时显式设置:
./_launch.sh \
-datapath /srv/corekeeper/private-01 \
-world 0 \
-worldname "Private Core Keeper" \
-port 7778 \
-ip 0.0.0.0 \
-password "CHANGE_ME" \
-maxplayers 8
这里的7778只是你选择的示例端口,不是所有Core Keeper服务器的强制默认值。主机防火墙和云安全组放行相同UDP端口:
sudo ufw allow 7778/udp
ss -lunp | grep ':7778'
客户端使用IP;PORT;;PASSWORD格式可以由GameInfo.txt生成。服务器IP和玩家IP会互相暴露,公开社区应在隐私告知和日志留存上有明确规则。
当前包内重要参数
-world 0到29:世界索引;-worldname:玩家看到的名称;-worldseed:只在新世界首次生成时生效;-worldmode:Normal、Hard、Creative或Casual;-season:季节活动;-datapath:保存路径;-gameid:自定义Game ID,格式不合法会随机生成;-port和-ip:只能通过命令行启用Direct Connection;-maxplayers:默认8,提高需要额外验证。
多数参数也能保存到ServerConfig.json,但port/ip写在JSON中不会生效。修改后以GameInfo.txt为准,不要只看配置文件。
正常停服、备份和重开
官方FAQ建议在控制台输入q退出。可靠流程:
通知玩家 → 控制台q → 等待进程退出
→ 归档datapath、GameInfo和ServerConfig → 生成SHA-256
→ 复制到服务器外多代存储 → 新程序目录恢复
→ 启动同一world index → 检查GameInfo → 客户端进入原世界
不要直接关闭终端、强杀Unity进程或只备份一个未知扩展名的世界文件。完整datapath更能保留worlds、worldgenparams、backups和配置关系。
世界种子和worldgenparams
包内README说明,专用服务器没有普通客户端的世界生成UI。要复用自定义生成参数:
- 在正常Core Keeper客户端创建目标参数世界;
- 从客户端保存目录取得对应
worldgenparams文件; - 复制到服务端
datapath/worldgenparams; - 重命名为目标world index;
- 新建世界时使用相同seed;
- 先在副本验证,再作为生产世界。
这和复制现有世界不是一回事。worldseed对已经创建的世界不会重新生成地图。
模组和更新
Core Keeper当前有官方模组支持站点和Steam Workshop开放测试,但服务器、客户端、商店和模组框架的组合可能不同。保存:
- 服务端Build ID;
- 模组来源、ID、版本、依赖和哈希;
- 允许的平台;
- 世界副本;
- 更新前后GameInfo和日志;
- 成套回退的程序、模组与世界。
先验证原版Game ID/Direct Connection和世界重开,再加入模组,避免把网络、Xvfb和模组错误混在一起。
常见故障
服务端没有GameInfo.txt
先看CoreKeeperServerLog.txt和控制台。程序可能在图形、Mono、权限、参数或Steam初始化阶段提前退出。没有GameInfo不能算启动通过。
Linux提示没有显示设备
确认使用官方_launch.sh或Xvfb,且没有添加-nographics。当前官方README说明生成依赖GPU。
设置了端口但玩家仍用Game ID失败
Game ID和Direct Connection是两条连接路径。检查GameInfo.txt的允许平台、IP、端口、密码和无效参数,再按目标方式验收。
改了worldseed但地图没变化
seed只在世界首次创建时生效。换一个空world index或正确迁移worldgenparams,不要覆盖生产世界。
关闭终端后进程仍在
开发者FAQ提醒直接关窗口可能让进程留在后台。使用控制台q,再检查进程和日志。
FAQ
Core Keeper必须开放7778吗?
不是。默认Game ID/Steam relay不要求设置Direct端口;只有传-port时才开放你选择的UDP端口,7778只是包内示例。
Linux可以用-nographics吗?
当前官方README明确不可以,因为部分世界生成依赖GPU;使用-batchmode和Xvfb。
默认最多几人?
默认8人。提高-maxplayers可能需要更多资源或不稳定,这篇没有验证更高人数。
本文实测启动成功了吗?
没有。App下载和包内核验完成,但当前amd64仿真在Mono阶段崩溃,未生成GameInfo或世界。
如何判断原生Linux最小验证通过?
生成GameInfo和世界、用q正常停服,再启动同一datapath并读取原世界即可;不必先做完整多人部署。
购买前清单
- Steam Game ID还是IP Direct Connection;
- 玩家PC商店和跨商店需求;
- 原生x86_64 Linux或Windows镜像;
- Xvfb/GPU生成依赖;
- 世界索引、seed、worldgenparams和旧世界来源;
- 模组、Build ID和更新策略;
- SSD、datapath多代异机备份;
- 公网IP、端口、DDoS、扩容和迁移条款。
继续阅读:云服务器配置选择、服务器地域怎么选、测试IP与线路、安全组规则和备份恢复。确定连接方式后,再到萤光云VPS页面查看实时Linux/Windows镜像、配置、价格和库存。







