Files
gbr-games/games/satisfactory-vanilla-stable/game.yaml
T
gregandClaude Opus 5.5 e9ff989246
Validate game templates / validate (push) Successful in 9m32s
Validate game templates / publish (push) Canceled after 0s
Validate game templates / boot-test (push) Canceled after 5m15s
ci: boot-test changed games before publishing
Only games whose folder changed are boot-tested (against the previous
main commit, or against main on branches; manual runs pick games). Each
one is deployed by the node-agent's real deploy code on a dedicated
game-test runner, in a network that can reach the internet but not the
LAN. Publishing to the panel runs only if they all booted.

- boottest-payload builds the DEPLOY_SERVER message the panel would send
- readyPattern/failPatterns in game.yaml; readyExample in test.yaml is
  checked against the pattern during validation
- secrets in test.yaml come from CI; a game missing one is skipped
- Minecraft gets a ready pattern; Dragonwilds needs DRAGONWILDS_OWNER_ID
- RUNNER.md + scripts/runner: runner, isolated network, systemd unit

Also fixes newline values ("\n" separators/footers) that yaml.v3 wrote
as "" on import, which would have broken ARK and Dragonwilds config
files once synced, and adds a round-trip test for the importer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 17:49:19 -04:00

191 lines
5.5 KiB
YAML

# yaml-language-server: $schema=../../schema/game.schema.json
id: satisfactory-vanilla-stable
name: Satisfactory (Vanilla Stable)
defaultDockerImage: wolveix/satisfactory-server:latest
requiredMemoryMb: 8192
requiredDiskMb: 16384
defaultPorts:
- 7777/tcp
- 7777/udp
- 8888/tcp
installMethod: NONE
defaultConfig:
AUTOSAVENUM: 5
DEBUG: false
DISABLESEASONALEVENTS: false
LOG: false
MAXOBJECTS: 2162688
MAXPLAYERS: 4
MAXTICKRATE: 30
MULTIHOME: '::'
PGID: 1000
PUID: 1000
SERVERGAMEPORT: 7777
SERVERMESSAGINGPORT: 8888
SERVERSTREAMING: true
SKIPUPDATE: false
STEAMBETA: false
STEAMBETAID: ""
STEAMBETAKEY: ""
TIMEOUT: 30
VMOVERRIDE: false
configSchema:
$schema: http://json-schema.org/draft-07/schema#
properties:
AUTOSAVENUM:
category: World & Environment
default: 5
description: The number of rotating autosave files to keep in the save folder.
title: Autosave Rotation Count
type: integer
DEBUG:
category: System & General
default: false
description: Prints diagnostic environment and system details on startup, then stops.
title: Debug Mode
type: boolean
DISABLESEASONALEVENTS:
category: Gameplay & Rules
default: false
description: Disables seasonal in-game events such as FICSMAS holiday events.
title: Disable Seasonal Events
type: boolean
LOG:
category: System & General
default: false
description: Disables automatic pruning of previous Satisfactory server log files on container startup.
title: Retain Old Logs
type: boolean
MAXOBJECTS:
category: World & Environment
default: 2162688
description: Unreal Engine garbage collector UObject limit to support large late-game factories.
title: Max Objects Limit
type: integer
MAXPLAYERS:
category: System & General
default: 4
description: Sets the maximum number of concurrent players allowed on the server.
title: Max Players
type: integer
MAXTICKRATE:
category: System & General
default: 30
description: Sets the maximum simulation tick rate for the server in Hz.
title: Max Tick Rate
type: integer
MULTIHOME:
category: System & General
default: '::'
description: 'Network interface binding IP address (defaults to :: for dual-stack IPv4/IPv6).'
title: Multihome Address
type: string
PGID:
category: System & General
default: 1000
description: Sets the Linux group ID under which the dedicated server process runs.
title: Process Group ID
type: integer
PUID:
category: System & General
default: 1000
description: Sets the Linux user ID under which the dedicated server process runs.
title: Process User ID
type: integer
SERVERGAMEPORT:
category: System & General
default: 7777
description: Primary game port for UDP and TCP network communication.
title: Server Game Port
type: integer
SERVERMESSAGINGPORT:
category: System & General
default: 8888
description: Port used for reliable server messaging and beacon network traffic.
title: Server Messaging Port
type: integer
SERVERSTREAMING:
category: System & General
default: true
description: Toggles whether the game server utilizes Unreal Engine World Partition asset streaming.
title: Server Streaming
type: boolean
SKIPUPDATE:
category: System & General
default: false
description: Skips automatic SteamCMD game file update checks on container startup.
title: Skip Update
type: boolean
STEAMBETA:
category: System & General
default: false
description: When enabled, updates and runs the Experimental branch instead of the stable release.
title: Steam Beta Branch
type: boolean
STEAMBETAID:
category: System & General
default: ""
description: Specific beta branch identifier to download via SteamCMD.
title: Steam Beta Branch Name
type: string
STEAMBETAKEY:
category: Security & Access
default: ""
description: Password required to access a private Steam beta branch.
title: Steam Beta Password
type: string
TIMEOUT:
category: System & General
default: 30
description: Client network connection timeout threshold in seconds.
title: Connection Timeout
type: integer
VMOVERRIDE:
category: System & General
default: false
description: Skips CPU model checking on hypervisors to prevent crash warnings on KVM/QEMU hosts.
title: VM CPU Check Override
type: boolean
required: []
type: object
configFileFormat: INI
configFormatOptions:
assignment: =
falseValue: "false"
footer: ""
header: ""
quoteStrings: false
separator: "\n"
trueValue: "true"
unquotedKeys: []
uppercaseKeys: false
agnosticCommandConfig:
actions:
Ban:
type: UNSUPPORTED
Broadcast:
type: UNSUPPORTED
Kick:
type: UNSUPPORTED
Save:
type: UNSUPPORTED
pingPort: null
pingPortKey: null
playerJoinRegex: '.*Join succeeded: (\S+).*'
playerLeaveRegex: .*UNetConnection::Close:.*?\[PlayerName:\s*([^\]]+)\].*
playersCommand: null
playersFormat: null
playersRegex: null
queryPortKey: null
queryType: LOG_ONLY
rconPasswordKey: null
rconPortKey: null
restEndpoint: null
restPasswordKey: null
restPortKey: null
restUser: null
backupPaths:
- saved
maxBackupSizeMb: 1024
maxPlayersConfigKey: MAXPLAYERS