Files
gbr-games/games/runescape-dragonwilds-native-linux/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

118 lines
3.8 KiB
YAML

# yaml-language-server: $schema=../../schema/game.schema.json
id: runescape-dragonwilds-native-linux
name: 'RuneScape: Dragonwilds (Native Linux Server)'
defaultDockerImage: cm2network/steamcmd:root
defaultStartupCommand: ./RSDragonwildsServer.sh -log -Port=7777
requiredMemoryMb: 10240
requiredDiskMb: 20480
defaultPorts:
- 7777/udp
- 8888/udp
installMethod: STEAMCMD
installConfig:
appId: "4019830"
defaultConfig:
AdminPassword: ""
DefaultWorldName: '{SERVER_NAME}'
OwnerId: ""
PlatformPolicy: Crossplay
ServerName: GBRHosting - {SERVER_NAME}
WorldPassword: ""
configSchema:
$schema: http://json-schema.org/draft-07/schema#
properties:
AdminPassword:
category: Security & Access
default: ""
description: Password required to access the Server Management screen in-game.
showOnDeploy: true
title: Admin Password
type: string
x-savedValue:
key: GAME_ADMIN_PASSWORD
label: Game admin password
secret: true
DefaultWorldName:
category: World & Environment
default: '{SERVER_NAME}'
description: Players find your server in Dragonwilds under Worlds → Public by searching this name. Defaults to your server's name in GBR; type any short name to change it.
showOnDeploy: true
title: World Name (what players search for)
type: string
OwnerId:
category: Security & Access
default: ""
description: 'Your RuneScape: DragonWilds Player ID (bottom of in-game Settings). Required for server to boot.'
showOnDeploy: true
title: Owner Player ID
type: string
x-savedValue:
key: DRAGONWILDS_PLAYER_ID
label: Dragonwilds Player ID
PlatformPolicy:
category: Security & Access
default: Crossplay
description: Controls platform authorization and crossplay access policies.
enum:
- Crossplay
- PC
- PlayStation
- Xbox
- Nintendo
title: Platform Policy
type: string
ServerName:
category: System & General
default: GBRHosting - {SERVER_NAME}
description: Display name of the dedicated server. Defaults to "GBRHosting - <your server name>".
showOnDeploy: true
title: Server Name
type: string
WorldPassword:
category: Security & Access
default: ""
description: Optional password for players to join. Leave empty for public access.
showOnDeploy: true
title: World Password
type: string
x-savedValue:
key: GAME_JOIN_PASSWORD
label: Game join password
secret: true
required:
- OwnerId
- AdminPassword
type: object
configFilePath: RSDragonwilds/Saved/Config/LinuxServer/DedicatedServer.ini
configFileFormat: STANDARD
configFormatOptions:
assignment: =
falseValue: "False"
footer: "\n"
header: |
[/Script/Dominion.DedicatedServerSettings]
quoteStrings: false
separator: "\n"
trueValue: "True"
uppercaseKeys: false
agnosticCommandConfig:
actions:
Ban:
type: UNSUPPORTED
Broadcast:
type: UNSUPPORTED
Kick:
type: UNSUPPORTED
Save:
type: UNSUPPORTED
playerJoinRegex: 'LogNet: Join succeeded: ([^\r\n]+)'
playerLeaveRegex: 'LogNet: UNetConnection::.*Player(?: name)?:\s*([^,\r\n]+)'
queryType: LOG_ONLY
logFilePath: RSDragonwilds/Saved/Logs/RSDragonwilds.log
backupPaths:
- RSDragonwilds/Saved
maxBackupSizeMb: 5000
publicIpConfigKey: MULTIHOME
maxPlayersConfigKey: MaxPlayers
aiCoverPrompt: 'A cinematic wide shot of Ashenfall in the fantasy world of Gielinor from RuneScape: Dragonwilds. Ancient stone spires and forgotten fortresses rise amidst untamed wilderness. Colossal ancient dragons circle through stormy twilight skies illuminated by magical embers, while adventurers gather around a runic encampment wielding enchanted sorcery and survival gear.'