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>
191 lines
5.5 KiB
YAML
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
|