feat(games): add Satisfactory #24

Closed
gbr-bot wants to merge 1 commits from draft/satisfactory into main
pull from: draft/satisfactory
Member

Drafted by the GBR AI builder. Review before merging: check the settings, ports and descriptions against the game's documentation.

  • Game: Satisfactory — Satisfactory Dedicated Server (SteamCMD / Linux)
  • Image: cm2network/steamcmd, Steam app 1690800
  • Model rounds: 3

Checked for real

  • image cm2network/steamcmd exists
  • Steam app 1690800 is "Satisfactory Dedicated Server"
  • it ships a Linux server, so the SteamCMD option (installing it into /server) is recommended
  • first boot of cm2network/steamcmd: running and quiet for 121s after 153s; stopped gracefully
  • boot test with the node-agent: PASSED: READY: [2026.10.26-03.52.37:993][899]LogServer: Display: Server startup time elapsed and saving/level loading is done, auto-pause is allowed to proceed from now on (if enabled in server settings). WorldTimeSeconds = 30.07

Notes from research: Native Linux build (FactoryServer.sh) — no Proton needed. Install with: steamcmd +force_install_dir /server +login anonymous +app_update 1690800 validate +quit. Experimental branch: add -beta experimental to the app_update command. No console crossplay (PC Steam/Epic only). 8–16 GB RAM recommended; heavily favors single-core CPU. Mod support via ficsit.app (SML). Server is free to download; no game purchase required for the server itself.

Sources

Replaces #21 (closed, branch deleted).

Drafted by the GBR AI builder. **Review before merging**: check the settings, ports and descriptions against the game's documentation. - Game: **Satisfactory** — Satisfactory Dedicated Server (SteamCMD / Linux) - Image: `cm2network/steamcmd`, Steam app 1690800 - Model rounds: 3 **Checked for real** - image cm2network/steamcmd exists - Steam app 1690800 is "Satisfactory Dedicated Server" - it ships a Linux server, so the SteamCMD option (installing it into /server) is recommended - first boot of cm2network/steamcmd: running and quiet for 121s after 153s; stopped gracefully - boot test with the node-agent: PASSED: READY: [2026.10.26-03.52.37:993][899]LogServer: Display: Server startup time elapsed and saving/level loading is done, auto-pause is allowed to proceed from now on (if enabled in server settings). WorldTimeSeconds = 30.07 **Notes from research:** Native Linux build (FactoryServer.sh) — no Proton needed. Install with: steamcmd +force_install_dir /server +login anonymous +app_update 1690800 validate +quit. Experimental branch: add -beta experimental to the app_update command. No console crossplay (PC Steam/Epic only). 8–16 GB RAM recommended; heavily favors single-core CPU. Mod support via ficsit.app (SML). Server is free to download; no game purchase required for the server itself. **Sources** - https://satisfactory.wiki.gg/wiki/Dedicated_servers - https://steamdb.info/app/1690800/info/ - https://satisfactory.fandom.com/wiki/Dedicated_servers - https://hub.docker.com/r/wolveix/satisfactory-server Replaces #21 (closed, branch deleted).
gbr-bot added 1 commit 2026-10-26 03:52:40 +00:00
feat(games): draft Satisfactory
Validate game templates / validate (push) Successful in 20s
Validate game templates / boot-test (push) Successful in 1m47s
Validate game templates / publish (push) Skipped
80529396fd
Drafted and boot-tested by the GBR builder (job f8e6011f-a280-4260-85cb-6d28a11b65ff).
git_ai_bot left a comment
Member

🤖 AI Code Review

1. Blocking issues

None. The boot test passed and the configuration is internally consistent. The switch from robtme/satisfactory-server (which wrote files to unexpected paths and crashed) to a plain cm2network/steamcmd image with a manual SteamCMD install into /server is a sound fix for the issues in #21.

2. Non-blocking suggestions

  • Port 7777/tcp is almost certainly unnecessary. The Satisfactory dedicated server communicates over UDP 7777 only (confirmed by the wiki and the wolveix/satisfactory-server image docs). Opening TCP 7777 exposes an extra attack surface for no benefit. I'd drop it from defaultPorts to just 7777/udp.

  • requiredMemoryMb: 16384 sits at the top of the 8–16 GB recommendation band. If this field is presented to customers as a hard minimum or used for capacity planning, a single-player or low-activity server will run comfortably in 8 GB. Consider 8192 as the "required" floor and surface 16 GB as a recommended value (if the schema supports that distinction). If the platform's semantics already treat this as "recommended allocation," this is fine as-is.

  • Duplicate game directory. The repo tree shows both games/satisfactory/ (this PR) and games/satisfactory-vanilla-stable/. If these are meant to be two separate offerings (e.g., stable vs. experimental branch), that's fine, but it's worth a one-line comment in each game.yaml or the README to explain the distinction. If satisfactory-vanilla-stable is a leftover from an earlier iteration, it should be removed to avoid confusion in the game picker.

  • Config application path — verify. defaultStartupCommand is ./FactoryServer.sh -Port=7777, yet defaultConfig lists MaxPlayers, ServerName, Password, bAutoPause, bIsPublic, and bIsPvP. Satisfactory accepts these as CLI flags or via Config/LinuxServer/Game.ini, but the startup command as written only sets the port. Please confirm the platform's runner either (a) appends the config values to the startup command, or (b) writes a Game.ini before exec. If neither happens, the non-port settings will silently be ignored. A quick grep of the runner code or a second boot test with a non-default ServerName would close this out.

  • ServerName placeholder GBRHosting - {SERVER_NAME}. This looks like a platform template variable. Just make sure the runner actually performs this substitution and doesn't pass the literal string GBRHosting - {SERVER_NAME} to the server (which would show up in the in-game browser as-is).

3. Tests

  • The single boot test (PASSED in CI) covers the happy path: install → start → ready-log-line. Good.
  • Suggested addition: a boot-test variant with a non-default config (e.g. ServerName: "GBR Test Server", MaxPlayers: 8, bIsPvP: true) to verify the platform actually injects those values. The current config: {} only proves defaults work.
  • Negative test (lower priority): confirm that setting a Password in config results in a server that rejects unauthenticated connections. This guards against the config being silently dropped.

4. Overall assessment

The configuration is correct and the boot test confirms the server starts and reaches the ready state. The switch to a generic SteamCMD image cleanly resolves the path-mangling problem from #21. The main thing I'd want verified before merge is the config-application path (suggestion above) to make sure the six defaultConfig keys actually reach the running server, and I'd drop the unused TCP port. Neither is a hard blocker, but the config-injection question is worth a 30-second confirmation so customers don't get a server that ignores their settings.


Automated review by AI Git Bot

## 🤖 AI Code Review ## 1. Blocking issues None. The boot test passed and the configuration is internally consistent. The switch from `robtme/satisfactory-server` (which wrote files to unexpected paths and crashed) to a plain `cm2network/steamcmd` image with a manual SteamCMD install into `/server` is a sound fix for the issues in #21. ## 2. Non-blocking suggestions - **Port 7777/tcp is almost certainly unnecessary.** The Satisfactory dedicated server communicates over UDP 7777 only (confirmed by the wiki and the `wolveix/satisfactory-server` image docs). Opening TCP 7777 exposes an extra attack surface for no benefit. I'd drop it from `defaultPorts` to just `7777/udp`. - **`requiredMemoryMb: 16384` sits at the top of the 8–16 GB recommendation band.** If this field is presented to customers as a hard minimum or used for capacity planning, a single-player or low-activity server will run comfortably in 8 GB. Consider 8192 as the "required" floor and surface 16 GB as a recommended value (if the schema supports that distinction). If the platform's semantics already treat this as "recommended allocation," this is fine as-is. - **Duplicate game directory.** The repo tree shows both `games/satisfactory/` (this PR) and `games/satisfactory-vanilla-stable/`. If these are meant to be two separate offerings (e.g., stable vs. experimental branch), that's fine, but it's worth a one-line comment in each `game.yaml` or the README to explain the distinction. If `satisfactory-vanilla-stable` is a leftover from an earlier iteration, it should be removed to avoid confusion in the game picker. - **Config application path — verify.** `defaultStartupCommand` is `./FactoryServer.sh -Port=7777`, yet `defaultConfig` lists `MaxPlayers`, `ServerName`, `Password`, `bAutoPause`, `bIsPublic`, and `bIsPvP`. Satisfactory accepts these as CLI flags *or* via `Config/LinuxServer/Game.ini`, but the startup command as written only sets the port. Please confirm the platform's runner either (a) appends the config values to the startup command, or (b) writes a `Game.ini` before exec. If neither happens, the non-port settings will silently be ignored. A quick grep of the runner code or a second boot test with a non-default `ServerName` would close this out. - **`ServerName` placeholder `GBRHosting - {SERVER_NAME}`.** This looks like a platform template variable. Just make sure the runner actually performs this substitution and doesn't pass the literal string `GBRHosting - {SERVER_NAME}` to the server (which would show up in the in-game browser as-is). ## 3. Tests - The single boot test (PASSED in CI) covers the happy path: install → start → ready-log-line. Good. - **Suggested addition:** a boot-test variant with a non-default `config` (e.g. `ServerName: "GBR Test Server"`, `MaxPlayers: 8`, `bIsPvP: true`) to verify the platform actually injects those values. The current `config: {}` only proves defaults work. - **Negative test (lower priority):** confirm that setting a `Password` in config results in a server that rejects unauthenticated connections. This guards against the config being silently dropped. ## 4. Overall assessment The configuration is correct and the boot test confirms the server starts and reaches the ready state. The switch to a generic SteamCMD image cleanly resolves the path-mangling problem from #21. The main thing I'd want verified before merge is the config-application path (suggestion above) to make sure the six `defaultConfig` keys actually reach the running server, and I'd drop the unused TCP port. Neither is a hard blocker, but the config-injection question is worth a 30-second confirmation so customers don't get a server that ignores their settings. --- *Automated review by AI Git Bot*
greg closed this pull request 2026-10-26 13:49:44 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gbreed-public/gbr-games#24