《幸福工厂》是一款第一人称开放世界工厂建造游戏,融合了探索与战斗元素。你可以独自或与朋友一起游玩,探索外星行星,建造多层工厂,进入传送带的天堂!
预设配置详情
满意工厂
[!IMPORTANT]
正在为 v1.1 更新?
- 确保所有现有服务器已应用更新的启动命令!
- 现在需要一个新的 TCP 端口!(详见服务器端口)
- 虽然不是必须的,但建议现有服务器删除
~/FactoryGame/Saved/Config/下的LinuxServer目录以移除已弃用的设置,并通过游戏内服务器管理器重新配置设置。
作者/贡献者
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center">
<a href="https://github.com/redthirten">
<img src="https://avatars.githubusercontent.com/u/4533989" width="50px;" alt=""/><br /><sub><b>Red-Thirten</b></sub>
</a>
<br />
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=redthirten" title="代码">💻</a>
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=redthirten" title="维护者">🔨</a>
</td>
<td align="center">
<a href="https://github.com/iamkubi">
<img src="https://avatars.githubusercontent.com/u/6176191" width="50px;" alt=""/><br /><sub><b>Kubi</b></sub>
</a>
<br />
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=iamkubi" title="代码">💻</a>
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=iamkubi" title="贡献者">💡</a>
</td>
<td align="center">
<a href="https://github.com/matthewpi">
<img src="https://avatars.githubusercontent.com/u/26559841" width="50px;" alt=""/><br /><sub><b>matthewpi</b></sub>
</a>
<br />
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=matthewpi" title="代码">💻</a>
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=matthewpi" title="贡献者">💡</a>
</td>
<td align="center">
<a href="https://github.com/Software-Noob">
<img src="https://avatars.githubusercontent.com/u/10975908" width="50px;" alt=""/><br /><sub><b>Software-Noob</b></sub>
</a>
<br />
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=Software-Noob" title="代码">💻</a>
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=Software-Noob" title="贡献者">💡</a>
</td>
<td align="center">
<a href="https://github.com/Zarklord">
<img src="https://avatars.githubusercontent.com/u/1622280" width="50px;" alt=""/><br /><sub><b>Zarklord</b></sub>
</a>
<br />
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=Zarklord" title="代码">💻</a>
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=Zarklord" title="贡献者">💡</a>
</td>
<td align="center">
<a href="https://github.com/AlienXAXS">
<img src="https://avatars.githubusercontent.com/u/1773445" width="50px;" alt=""/><br /><sub><b>AlienXAXS</b></sub>
</a>
<br />
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=AlienXAXS" title="贡献者">💡</a>
</td>
<td align="center">
<a href="https://github.com/gOOvER">
<img src="https://avatars.githubusercontent.com/u/116325?v=4" width="50px;" alt=""/><br /><sub><b>gOOvER</b></sub>
</a>
<br />
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=gOOvER" title="代码">💻</a>
<a href="https://github.com/pelican-eggs/games-steamcmd/commits?author=gOOvER" title="贡献者">💡</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
游戏描述
来自 Coffee Stain 的官方网站:
《满意工厂》是一款第一人称开放世界工厂建造游戏,融合了探索和战斗元素。你可以独自或与朋友一起探索外星行星,建造多层工厂,进入传送带的天堂!
Egg 功能
- 可配置为启动时通过 SteamCMD 自动检查服务器更新。也可配置强制验证。
- 可配置的循环自动存档数量。
- [实验性] 可配置的最大玩家数量。
- [高级] 可配置的网络和服务器分支设置。
[!NOTE]
自《满意工厂》v1.0 起,大多数服务器设置已从 Egg 配置移至游戏内服务器管理器进行配置。\
请参阅服务器初始化了解哪些设置可以在游戏内配置。
服务器端口
| 端口 | 默认值 | 协议 | 必需 | 备注 |
|---|---|---|---|---|
| 主端口 | 7777 | UDP & TCP | 是 | 客户端使用此端口连接。UDP 是未加密的游戏流量。TCP 也用于游戏内服务器管理器和 API,并且是 TLS 加密的。 |
| 可靠消息 | 8888 | TCP | 是 | 适用于《满意工厂》v1.1 及以上版本。必须分配给服务器并在关联的启动变量中指定。 |
[!TIP]
*你的内部端口必须与网络上的外部端口匹配(例如,你不能将外部端口 7778 转发到内部端口 7777;它们必须匹配)。(*v1.0 发布后需要测试)\
\
待办事项:这不再完全正确,需要重新措辞以支持以下内容:
- 客户端必须连接到正确的端口,但端口重映射(例如,通过 NAT/防火墙规则)可能会破坏这一点。
- 为了解决这个问题,服务器现在在初始握手期间向客户端通信监听端口。
- 如果使用了外部端口重映射,服务器必须通过以下方式知道外部端口:
ExternalPortRangeBegin配置设置(用于重映射的范围)。-ExternalReliablePort=命令行参数(用于显式映射的端口)。
安装/系统要求
| 最低配置 | 推荐配置 | |
|---|---|---|
| 处理器 | 支持现代指令集(如 AVX、AES 等)的近期 x86/64(AMD/Intel)处理器。不支持 32 位或 ARM。 | 更看重单核性能而非多核。如果你通过 Proxmox 运行 Wings,可能需要将虚拟机的 CPU 类型设置为 "host" 以避免会话保存/加载崩溃。 |
| 内存 | 4608 MiB | 8192-12288 MiB(尤其是 4 名玩家或大型存档文件) |
| 存储 | 5120 MiB | 7168-10240 MiB(或更多,取决于存档大小或频率) |
| 网络 | 1 Mbit/s | 1-5 Mbit/s(可能需要服务器和客户端配置调整) |
| 主机操作系统 | 大多数稳定的 Linux 操作系统分支应该可以工作 | 使用已安装操作系统的最新内核版本可以防止一些边缘情况下的安装/启动问题。 |
| 游戏所有权 | 启动不需要。 | 需要完全"初始化"(见下文服务器初始化) |
服务器初始化
[!WARNING]
由于 TLS 证书尚未被信任,无法通过主菜单的"加入游戏 -> 直接加入游戏..."首次加入服务器。请通过"服务器管理器 -> 添加服务器"加入,系统会提示你信任证书并初始化服务器。
要使服务器完全"初始化",拥有游戏的客户端必须登录服务器以"认领"它并创建管理员密码。然后,可以通过游戏内的"创建游戏"选项卡创建新会话,或上传现有存档文件(见下文存档文件)。
以下杂项设置可以由管理员客户端通过服务器管理器的"服务器设置"选项卡进行配置,目前不通过 Egg 设置:
- 服务器名称
- 管理员密码
- 玩家密码保护
- 自动加载会话名称
- 自动暂停(当没有玩家在线时)
- 玩家断开连接时自动保存
- 禁用季节性活动
- 自动保存间隔
- 服务器重启间隔
- 发送游戏数据(崩溃报告)
- 网络质量
[!NOTE]
目前,在专用服务器上无法游玩第 0 层(入门教程),它将自动解锁,即使你上传了第 0 层的存档。如果你想体验带有入门教程的游戏开头,建议先进行本地多人游戏,然后在完成第 0 层后上传存档。
存档文件
[!CAUTION]
停止服务器不会自动保存你的游戏!在停止服务器之前,请确保已保存游戏!
存档文件位于以下目录,但可以通过游戏内服务器管理器的"管理存档"选项卡更轻松地下载到本地计算机(仅限管理员)。
/home/container/.config/Epic/FactoryGame/Saved/SaveGames/server
现有的存档文件(包括单人游戏存档)也可以通过服务器管理器上传到服务器,并在同一选项卡下加载。
如果你忘记了管理员密码,或者想将服务器重置为全新状态,可以删除以下文件:
/home/container/.config/Epic/FactoryGame/Saved/SaveGames/ServerSettings.<你的服务器查询端口>.sav
控制台命令
游戏内服务器管理器中的"控制台"选项卡是执行命令的唯一方式。通过面板输入命令无效。
已知错误/警告
以下在控制台中看到的错误或警告可以安全忽略:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/home/container/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so')
LogSteamShared: Warning: Steam Dedicated Server API failed to initialize.
↑ 尝试加载本地文件 'steamclient.so',但由于不存在而失败,导致警告消息。然而,备份的 /home/container/.steam/sdk64/steamclient.so 已成功加载(根据 [Wiki](https://satisfactory.wiki.gg/wiki/Dedicated_servers#SteamAPI_Init():_Sys_LoadModule_failed_to_load:_/path/to/.steam/sdk64/steamclient.so) 这是正确的行为)。
Warning: failed to init SDL thread priority manager: SDL not found
↑ 这是 Linux 上与 Steam 相关软件的常见错误,但可以安全忽略。
Exiting abnormally (error code: 130)
↑ 这个误导性消息在停止服务器时出现。它由 Unreal Engine 打印,因为它不知道被中断的原因(即使这是我们预期的)。如果你注意到上面有正常的引擎关闭日志,可以安全忽略。
...Error: Couldn't find file for package...
...Error: Navmesh bounds are too large!...
...Warning: NiagaraSystem...
LogStreaming: Warning: Failed to read file '../../../FactoryGame/Saved/SaveGames/GameAnalytics.sav' error.
↑ 这些似乎是当前实验性版本游戏的常见错误消息。
registry.cn-shanghai.aliyuncs.com/pterodactyl-images/steamcmd:debian
./Engine/Binaries/Linux/*-Linux-Shipping FactoryGame -Port={{SERVER_PORT}} -ReliablePort={{RELIABLE_PORT}}
| 变量名 | 变量 | 描述 | 默认值 | 规则 | 可查看 | 可编辑 |
|---|---|---|---|---|---|---|
| [主机] 可靠消息传递端口 | RELIABLE_PORT |
此端口用于客户端与服务器之间的初始握手。连接时,客户端应连接到服务器的主端口,而非此端口。 | 8888 |
required|integer|min:0|max:65535
必填 整数 最大 65535 最小 0
|
||
| 自动更新 | AUTO_UPDATE |
启动时快速检查服务器更新,并在必要时进行更新。(1 启用 | 0 禁用) | 1 |
boolean
布尔
|
||
| 轮换自动存档数量 | NUM_AUTOSAVES |
服务器在删除最旧的存档并将其他存档下移之前保留的自动保存会话数量。 | 3 |
required|integer|min:0
必填 整数 最小 0
|
||
| [实验性] 最大玩家数 | MAX_PLAYERS |
服务器和客户端目前未针对支持超过4名玩家进行优化。不过,您可以在此处覆盖此值,但需自行承担性能不佳的风险。 | 4 |
required|integer|min:1
必填 整数 最小 1
|
||
| [高级] 客户端初始连接超时 | INIT_CONNECT_TIMEOUT |
等待新客户端连接建立前销毁连接的超时时间(秒)。 | 30 |
required|numeric|min:1
必填 数字 最小 1
|
||
| [高级] 客户端已建立连接超时 | CONNECT_TIMEOUT |
等待已建立的客户端连接超时的时间(秒)。通常比初始连接等待时间短,因为此连接应已建立,任何中断都应更快被捕获。 | 20 |
required|numeric|min:1
必填 数字 最小 1
|
||
| [高级] 分支名称 | SRCDS_BETAID |
[可接受值:"public"、"experimental",或留空以使用服务器的主分支] 用于下载或切换到游戏服务器的非主分支。若服务器已安装,则必须将"自动更新"和"验证服务器文件"设置为"1"才能切换分支。注意:任何非主分支可能不完全兼容/稳定! | |
string|nullable|in:public,experimental
可选 字符串 选项: public,experimental
|
||
| [修复] 验证服务器文件 | VALIDATE |
留空(无值)表示关闭,或输入 "true" 或 "1" 表示开启。当自动更新启用时,验证所有服务器文件。注意:这将显著增加服务器启动时间,因此建议仅在需要时启用此功能。 | |
string|nullable
可选 字符串
|
||
| [系统] 满意工厂 专用服务器 应用ID | SRCDS_APPID |
用于安装和更新的Steam应用ID。 | 1690800 |
required|integer|in:1690800
必填 整数 选项: 1690800
|
registry.cn-shanghai.aliyuncs.com/pterodactyl-images/installers:debian
/bin/bash
#!/bin/bash
# File: Pterodactyl Satisfactory Egg - egg-satisfactory.json
# Authors: Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord
# Date: 2024/09/10
# License: MIT License
## Download and install SteamCMD
cd /tmp
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
mkdir -p /mnt/server/steamcmd
tar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd
cd /mnt/server/steamcmd
# SteamCMD fails otherwise for some reason, even running as root.
chown -R root:root /mnt
export HOME=/mnt/server
# Install game server using SteamCMD
./steamcmd.sh +force_install_dir /mnt/server +login anonymous +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) validate +exit
# Set up 32 and 64 bit libraries
mkdir -p /mnt/server/.steam/sdk{32,64}
cp -v linux32/steamclient.so /mnt/server/.steam/sdk32/steamclient.so
cp -v linux64/steamclient.so /mnt/server/.steam/sdk64/steamclient.so
## Satisfactory setup
# Check for successful installation and make the server binary executable.
# Use `find` to see if a valid server binary exists using a wildcard, because
# the binary name may change in the future.
# (eg. it changed when the engine was updated from UE4 to UE5)
cd /mnt/server/Engine/Binaries/Linux
count=$(find . -maxdepth 1 -name '*-Linux-Shipping' -type f -executable | wc -l)
if [[ $count -eq 0 ]]; then
echo -e "
SteamCMD failed to install the Satisfactory Dedicated Server!"
echo -e "\tTry reinstalling the server again.
"
exit 1
else
chmod +x *-Linux-Shipping
fi
echo -e "
Satisfactory Dedicated Server successfully installed!
"
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": "https://eggs.pterodactyl.top/eggs/102/download/egg-satisfactory.json"
},
"exported_at": "2024-04-04T10:49:13-07:00",
"name": "Satisfactory",
"author": "red_thirten@yahoo.com",
"description": "《幸福工厂》是一款第一人称开放世界工厂建造游戏,融合了探索与战斗元素。你可以独自或与朋友一起游玩,探索外星行星,建造多层工厂,进入传送带的天堂!",
"features": [
"steam_disk_space"
],
"docker_images": {
"registry.cn-shanghai.aliyuncs.com/pterodactyl-images/steamcmd:debian": "registry.cn-shanghai.aliyuncs.com/pterodactyl-images/steamcmd:debian"
},
"file_denylist": [],
"startup": "./Engine/Binaries/Linux/*-Linux-Shipping FactoryGame -Port={{SERVER_PORT}} -ReliablePort={{RELIABLE_PORT}}",
"config": {
"files": "{\r\n \"FactoryGame/Saved/Config/LinuxServer/Game.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"[/Script/Engine.GameSession].MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n },\r\n \"FactoryGame/Saved/Config/LinuxServer/Engine.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"[/Script/FactoryGame.FGSaveSession].mNumRotatingAutosaves\": \"{{server.build.env.NUM_AUTOSAVES}}\",\r\n \"[/Script/OnlineSubsystemUtils.IpNetDriver].InitialConnectTimeout\": \"{{server.build.env.INIT_CONNECT_TIMEOUT}}\",\r\n \"[/Script/OnlineSubsystemUtils.IpNetDriver].ConnectionTimeout\": \"{{server.build.env.CONNECT_TIMEOUT}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Engine Initialization\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!/bin/bash\r\n\r\n# File: Pterodactyl Satisfactory Egg - egg-satisfactory.json\r\n# Authors: Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord\r\n# Date: 2024/09/10\r\n# License: MIT License\r\n\r\n## Download and install SteamCMD\r\ncd /tmp\r\ncurl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz\r\nmkdir -p /mnt/server/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd\r\ncd /mnt/server/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\nchown -R root:root /mnt\r\nexport HOME=/mnt/server\r\n\r\n# Install game server using SteamCMD\r\n./steamcmd.sh +force_install_dir /mnt/server +login anonymous +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +exit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p /mnt/server/.steam/sdk{32,64}\r\ncp -v linux32/steamclient.so /mnt/server/.steam/sdk32/steamclient.so\r\ncp -v linux64/steamclient.so /mnt/server/.steam/sdk64/steamclient.so\r\n\r\n## Satisfactory setup\r\n# Check for successful installation and make the server binary executable.\r\n# Use `find` to see if a valid server binary exists using a wildcard, because\r\n# the binary name may change in the future.\r\n# (eg. it changed when the engine was updated from UE4 to UE5)\r\ncd /mnt/server/Engine/Binaries/Linux\r\ncount=$(find . -maxdepth 1 -name '*-Linux-Shipping' -type f -executable | wc -l)\r\nif [[ $count -eq 0 ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Satisfactory Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nelse\r\n chmod +x *-Linux-Shipping\r\nfi\r\n\r\necho -e \"\\nSatisfactory Dedicated Server successfully installed!\\n\"",
"container": "registry.cn-shanghai.aliyuncs.com/pterodactyl-images/installers:debian",
"entrypoint": "/bin/bash"
}
},
"variables": [
{
"name": "[主机] 可靠消息传递端口",
"description": "此端口用于客户端与服务器之间的初始握手。连接时,客户端应连接到服务器的主端口,而非此端口。",
"env_variable": "RELIABLE_PORT",
"default_value": "8888",
"user_viewable": true,
"user_editable": false,
"rules": "required|integer|min:0|max:65535",
"field_type": "text"
},
{
"name": "自动更新",
"description": "启动时快速检查服务器更新,并在必要时进行更新。(1 启用 | 0 禁用)",
"env_variable": "AUTO_UPDATE",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "boolean",
"field_type": "text"
},
{
"name": "轮换自动存档数量",
"description": "服务器在删除最旧的存档并将其他存档下移之前保留的自动保存会话数量。",
"env_variable": "NUM_AUTOSAVES",
"default_value": "3",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|min:0",
"field_type": "text"
},
{
"name": "[实验性] 最大玩家数",
"description": "服务器和客户端目前未针对支持超过4名玩家进行优化。不过,您可以在此处覆盖此值,但需自行承担性能不佳的风险。",
"env_variable": "MAX_PLAYERS",
"default_value": "4",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|min:1",
"field_type": "text"
},
{
"name": "[高级] 客户端初始连接超时",
"description": "等待新客户端连接建立前销毁连接的超时时间(秒)。",
"env_variable": "INIT_CONNECT_TIMEOUT",
"default_value": "30",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|min:1",
"field_type": "text"
},
{
"name": "[高级] 客户端已建立连接超时",
"description": "等待已建立的客户端连接超时的时间(秒)。通常比初始连接等待时间短,因为此连接应已建立,任何中断都应更快被捕获。",
"env_variable": "CONNECT_TIMEOUT",
"default_value": "20",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|min:1",
"field_type": "text"
},
{
"name": "[高级] 分支名称",
"description": "[可接受值:\"public\"、\"experimental\",或留空以使用服务器的主分支] 用于下载或切换到游戏服务器的非主分支。若服务器已安装,则必须将\"自动更新\"和\"验证服务器文件\"设置为\"1\"才能切换分支。注意:任何非主分支可能不完全兼容/稳定!",
"env_variable": "SRCDS_BETAID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable|in:public,experimental",
"field_type": "text"
},
{
"name": "[修复] 验证服务器文件",
"description": "留空(无值)表示关闭,或输入 \"true\" 或 \"1\" 表示开启。当自动更新启用时,验证所有服务器文件。注意:这将显著增加服务器启动时间,因此建议仅在需要时启用此功能。",
"env_variable": "VALIDATE",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "[系统] 满意工厂 专用服务器 应用ID",
"description": "用于安装和更新的Steam应用ID。",
"env_variable": "SRCDS_APPID",
"default_value": "1690800",
"user_viewable": false,
"user_editable": false,
"rules": "required|integer|in:1690800",
"field_type": "text"
}
]
}附属文件
暂无附属文件
提交历史
Fork 关系
查看关系图暂无 Fork,成为第一个 Fork 的人吧!