feat: game templates, schemas and validator
Validate game templates / validate (push) Successful in 10m6s
Validate game templates / validate (push) Successful in 10m6s
Public game templates for GBR Hosting, one games/<id>/game.yaml per game, imported from the panel. A Go tool validates them against JSON Schemas and checks for credentials, private addresses and consents that default to accepted; CI runs it on every push. Admin/RCON passwords are no longer shared defaults: they are blank with x-generate so the panel creates one per server, and Palworld/ARK no longer publish their RCON/REST ports. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
822b44e2e5
20 files changed
+2283
No files matched your search
@@ -0,0 +1,562 @@
|
||||
# yaml-language-server: $schema=../../schema/game.schema.json
|
||||
id: palworld
|
||||
name: Palworld
|
||||
defaultDockerImage: cm2network/steamcmd
|
||||
defaultStartupCommand: ./PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -publiclobby
|
||||
requiredMemoryMb: 8000
|
||||
requiredDiskMb: 20000
|
||||
defaultPorts:
|
||||
- 8211:8211/udp
|
||||
installMethod: STEAMCMD
|
||||
installConfig:
|
||||
appId: "2394010"
|
||||
defaultConfig:
|
||||
AdminPassword: ""
|
||||
AllowConnectPlatform: Xbox,Steam
|
||||
AutoResetGuildTimeNoOnlinePlayers: "2160.000000"
|
||||
BanListURL: https://api.palworldgame.com/api/banlist.txt
|
||||
BaseCampMaxNum: 128
|
||||
BaseCampMaxNumInGuild: 10
|
||||
BaseCampWorkerMaxNum: 30
|
||||
BuildObjectDamageRate: "1.000000"
|
||||
BuildObjectDeteriorationDamageRate: "1.000000"
|
||||
CollectionDropRate: "1.000000"
|
||||
CollectionObjectHpRate: "1.000000"
|
||||
CollectionObjectRespawnSpeedRate: "1.000000"
|
||||
CoopPlayerMaxNum: 4
|
||||
CrossplayPlatforms: Xbox,Steam
|
||||
DayTimeSpeedRate: "1.000000"
|
||||
DeathPenalty: All
|
||||
Difficulty: None
|
||||
DropItemAliveMaxHours: "1.000000"
|
||||
DropItemMaxNum: 3000
|
||||
DropItemMaxNum_UNKO: 100
|
||||
EnemyDropItemRate: "1.000000"
|
||||
ExpRate: "1.000000"
|
||||
GuildPlayerMaxNum: 20
|
||||
LogFormatType: Text
|
||||
NightTimeSpeedRate: "1.000000"
|
||||
PalAutoHPRegeneRate: "1.000000"
|
||||
PalAutoHpRegeneRateInSleep: "1.000000"
|
||||
PalCaptureRate: "1.000000"
|
||||
PalDamageRateAttack: "1.000000"
|
||||
PalDamageRateDefense: "1.000000"
|
||||
PalEggDefaultHatchingTime: "3.000000"
|
||||
PalSpawnNumRate: "1.000000"
|
||||
PalStaminaDecreaceRate: "1.000000"
|
||||
PalStomachDecreaceRate: "1.000000"
|
||||
PlayerAutoHPRegeneRate: "1.000000"
|
||||
PlayerAutoHpRegeneRateInSleep: "1.000000"
|
||||
PlayerDamageRateAttack: "1.000000"
|
||||
PlayerDamageRateDefense: "1.000000"
|
||||
PlayerStaminaDecreaceRate: "1.000000"
|
||||
PlayerStomachDecreaceRate: "1.000000"
|
||||
PublicIP: ""
|
||||
PublicPort: 8211
|
||||
RCONEnabled: true
|
||||
RCONPort: 25575
|
||||
RESTAPIEnabled: true
|
||||
RESTAPIPort: 8212
|
||||
Region: ""
|
||||
ServerDescription: Powered by GBR Hosting
|
||||
ServerName: GBRHosting - {SERVER_NAME}
|
||||
ServerPassword: ""
|
||||
ServerPlayerMaxNum: 32
|
||||
SupplyDropSpan: 180
|
||||
WorkSpeedRate: "1.000000"
|
||||
bActiveUNKO: false
|
||||
bAllowGlobalPalboxExport: true
|
||||
bAllowGlobalPalboxImport: true
|
||||
bAutoResetGuildNoOnlinePlayers: false
|
||||
bCanPickupOtherGuildDeathPenaltyDrop: false
|
||||
bEnableAimAssistKeyboard: false
|
||||
bEnableAimAssistPad: true
|
||||
bEnableDefenseOtherGuildPlayer: false
|
||||
bEnableFastTravel: true
|
||||
bEnableFriendlyFire: false
|
||||
bEnableInvaderEnemy: true
|
||||
bEnableNonLoginPenalty: false
|
||||
bEnablePlayerToPlayerDamage: false
|
||||
bExistPlayerAfterLogout: false
|
||||
bIsMultiplay: true
|
||||
bIsPvP: false
|
||||
bIsStartLocationSelectByMap: true
|
||||
bIsUseBackupSaveData: true
|
||||
bShowPlayerList: true
|
||||
bUseAuth: true
|
||||
configSchema:
|
||||
properties:
|
||||
AdminPassword:
|
||||
default: ""
|
||||
description: Password for in-game admin (/AdminPassword) and for GBR actions (kick, ban, save, metrics via the REST API). Leave blank and GBR generates an easy one for your server.
|
||||
showOnDeploy: true
|
||||
title: Admin Password
|
||||
type: string
|
||||
x-savedValue:
|
||||
key: GAME_ADMIN_PASSWORD
|
||||
label: Game admin password
|
||||
secret: true
|
||||
x-generate:
|
||||
type: password
|
||||
replace:
|
||||
- Admin6!
|
||||
AllowConnectPlatform:
|
||||
default: Xbox,Steam
|
||||
description: Platforms permitted to connect to this server.
|
||||
enum:
|
||||
- Steam
|
||||
- Xbox
|
||||
- None
|
||||
- Xbox,Steam
|
||||
title: Allowed Platforms
|
||||
type: string
|
||||
AutoResetGuildTimeNoOnlinePlayers:
|
||||
default: "2160.000000"
|
||||
description: Hours of inactivity before an empty guild is deleted (2160.0 = 90 days).
|
||||
title: Guild Inactivity Disband Hours
|
||||
type: string
|
||||
BaseCampMaxNum:
|
||||
default: 128
|
||||
description: Total base camps permitted across the entire server.
|
||||
title: Max Base Camps Worldwide
|
||||
type: integer
|
||||
BaseCampMaxNumInGuild:
|
||||
default: 10
|
||||
description: Maximum base camps a single guild is allowed to construct.
|
||||
title: Max Bases Per Guild
|
||||
type: integer
|
||||
BaseCampWorkerMaxNum:
|
||||
default: 30
|
||||
description: Maximum number of active Pals assigned to work in each base camp.
|
||||
title: Max Working Pals Per Base
|
||||
type: integer
|
||||
BuildObjectDamageRate:
|
||||
default: "1.000000"
|
||||
description: Multiplier for damage taken by built structures.
|
||||
title: Structure Damage Multiplier
|
||||
type: string
|
||||
BuildObjectDeteriorationDamageRate:
|
||||
default: "1.000000"
|
||||
description: Decay damage applied to structures outside base boundaries (0.0 to disable decay).
|
||||
title: Structure Decay Rate
|
||||
type: string
|
||||
CollectionDropRate:
|
||||
default: "1.000000"
|
||||
description: Multiplier for materials gathered from trees, rocks, and ore nodes.
|
||||
title: Resource Gathering Yield
|
||||
type: string
|
||||
CollectionObjectHpRate:
|
||||
default: "1.000000"
|
||||
description: Health multiplier of gatherable trees and rocks.
|
||||
title: Resource Node Durability
|
||||
type: string
|
||||
CollectionObjectRespawnSpeedRate:
|
||||
default: "1.000000"
|
||||
description: Speed at which mined trees and ore deposits reappear.
|
||||
title: Resource Respawn Speed
|
||||
type: string
|
||||
CrossplayPlatforms:
|
||||
default: Xbox,Steam
|
||||
description: Platforms enabled for crossplay connectivity.
|
||||
enum:
|
||||
- Steam
|
||||
- Xbox
|
||||
- None
|
||||
- Xbox,Steam
|
||||
showOnDeploy: true
|
||||
title: Crossplay Platforms
|
||||
type: string
|
||||
DayTimeSpeedRate:
|
||||
default: "1.000000"
|
||||
description: Multiplier for daylight progression speed.
|
||||
title: Daytime Speed Multiplier
|
||||
type: string
|
||||
DeathPenalty:
|
||||
default: All
|
||||
description: 'Items dropped upon death: None, Item (materials only), ItemAndEquipment, or All.'
|
||||
enum:
|
||||
- None
|
||||
- Item
|
||||
- ItemAndEquipment
|
||||
- All
|
||||
title: Death Penalty
|
||||
type: string
|
||||
Difficulty:
|
||||
default: None
|
||||
description: Base difficulty preset (None recommended when using custom multipliers).
|
||||
enum:
|
||||
- None
|
||||
- Easy
|
||||
- Normal
|
||||
- Hard
|
||||
title: Difficulty Preset
|
||||
type: string
|
||||
DropItemAliveMaxHours:
|
||||
default: "1.000000"
|
||||
description: Hours before dropped items on the ground disappear.
|
||||
title: Dropped Item Despawn Time (Hours)
|
||||
type: string
|
||||
EnemyDropItemRate:
|
||||
default: "1.000000"
|
||||
description: Quantity multiplier for items dropped by defeated Pals and bosses.
|
||||
title: Enemy Item Drop Rate
|
||||
type: string
|
||||
ExpRate:
|
||||
default: "1.000000"
|
||||
description: Multiplier for player and Pal XP gained from all sources.
|
||||
title: Experience Multiplier
|
||||
type: string
|
||||
GuildPlayerMaxNum:
|
||||
default: 20
|
||||
description: Maximum player members per guild.
|
||||
title: Max Players Per Guild
|
||||
type: integer
|
||||
NightTimeSpeedRate:
|
||||
default: "1.000000"
|
||||
description: Multiplier for nighttime progression speed.
|
||||
title: Nighttime Speed Multiplier
|
||||
type: string
|
||||
PalCaptureRate:
|
||||
default: "1.000000"
|
||||
description: Multiplier for successful Pal capture chances with Pal Spheres.
|
||||
title: Pal Capture Rate Multiplier
|
||||
type: string
|
||||
PalDamageRateAttack:
|
||||
default: "1.000000"
|
||||
description: Multiplier for damage dealt by Pals.
|
||||
title: Pal Attack Multiplier
|
||||
type: string
|
||||
PalDamageRateDefense:
|
||||
default: "1.000000"
|
||||
description: Multiplier for damage taken by Pals.
|
||||
title: Pal Defense Multiplier
|
||||
type: string
|
||||
PalEggDefaultHatchingTime:
|
||||
default: "3.000000"
|
||||
description: Time in hours for huge eggs to incubate (e.g. 72.0 default, 1.0 to 3.0 for fast hatching).
|
||||
title: Egg Hatching Time (Hours)
|
||||
type: string
|
||||
PalSpawnNumRate:
|
||||
default: "1.000000"
|
||||
description: Multiplier for the number of wild Pals that spawn in the world.
|
||||
title: Pal Spawn Density
|
||||
type: string
|
||||
PalStaminaDecreaceRate:
|
||||
default: "1.000000"
|
||||
description: Rate at which Pal stamina drains while working or riding.
|
||||
title: Pal Stamina Drain
|
||||
type: string
|
||||
PalStomachDecreaceRate:
|
||||
default: "1.000000"
|
||||
description: Rate at which Pal hunger drains.
|
||||
title: Pal Hunger Rate
|
||||
type: string
|
||||
PlayerDamageRateAttack:
|
||||
default: "1.000000"
|
||||
description: Multiplier for damage dealt by players.
|
||||
title: Player Attack Multiplier
|
||||
type: string
|
||||
PlayerDamageRateDefense:
|
||||
default: "1.000000"
|
||||
description: Multiplier for damage taken by players (lower = tankier).
|
||||
title: Player Defense Multiplier
|
||||
type: string
|
||||
PlayerStaminaDecreaceRate:
|
||||
default: "1.000000"
|
||||
description: Rate at which player stamina depletes (lower = more stamina).
|
||||
title: Player Stamina Drain
|
||||
type: string
|
||||
PlayerStomachDecreaceRate:
|
||||
default: "1.000000"
|
||||
description: Rate at which player hunger depletes (lower = less hungry).
|
||||
title: Player Hunger Rate
|
||||
type: string
|
||||
PublicPort:
|
||||
default: 8211
|
||||
description: UDP game port clients connect to.
|
||||
title: Public Game Port
|
||||
type: integer
|
||||
RCONEnabled:
|
||||
default: true
|
||||
description: Enables Remote Console administration port.
|
||||
title: RCON Enabled
|
||||
type: boolean
|
||||
RCONPort:
|
||||
default: 25575
|
||||
description: Port used for RCON connections.
|
||||
title: RCON Port
|
||||
type: integer
|
||||
RESTAPIEnabled:
|
||||
default: true
|
||||
description: Enables Palworld's built-in HTTP REST API for dashboards and metrics.
|
||||
title: REST API Enabled
|
||||
type: boolean
|
||||
RESTAPIPort:
|
||||
default: 8212
|
||||
description: Port used for HTTP REST API access.
|
||||
title: REST API Port
|
||||
type: integer
|
||||
ServerDescription:
|
||||
default: Powered by GBR Hosting
|
||||
description: Description displayed to players when viewing server details.
|
||||
title: Server Description
|
||||
type: string
|
||||
ServerName:
|
||||
default: GBRHosting - {SERVER_NAME}
|
||||
description: Name shown in the in-game server browser. Defaults to "GBRHosting - <your server name>".
|
||||
showOnDeploy: true
|
||||
title: Server Name
|
||||
type: string
|
||||
ServerPassword:
|
||||
default: ""
|
||||
description: Password required for players to connect.
|
||||
showOnDeploy: true
|
||||
title: Server Password
|
||||
type: string
|
||||
x-savedValue:
|
||||
key: GAME_JOIN_PASSWORD
|
||||
label: Game join password
|
||||
secret: true
|
||||
ServerPlayerMaxNum:
|
||||
default: 32
|
||||
description: Maximum concurrent player connections.
|
||||
title: Max Players
|
||||
type: integer
|
||||
SupplyDropSpan:
|
||||
default: 180
|
||||
description: Interval in minutes between meteorite and supply drop events (default 180).
|
||||
title: Supply Drop Frequency (Minutes)
|
||||
type: integer
|
||||
WorkSpeedRate:
|
||||
default: "1.000000"
|
||||
description: Speed at which Pals craft, build, and farm inside bases.
|
||||
title: Base Work Speed Multiplier
|
||||
type: string
|
||||
bAllowGlobalPalboxExport:
|
||||
default: true
|
||||
description: Allows players to export Pals to other worlds.
|
||||
title: Allow Palbox Export
|
||||
type: boolean
|
||||
bAllowGlobalPalboxImport:
|
||||
default: true
|
||||
description: Allows players to import Pals from other worlds.
|
||||
title: Allow Palbox Import
|
||||
type: boolean
|
||||
bAutoResetGuildNoOnlinePlayers:
|
||||
default: false
|
||||
description: Disbands guilds when all members remain offline past timeout.
|
||||
title: Auto-Disband Inactive Guilds
|
||||
type: boolean
|
||||
bCanPickupOtherGuildDeathPenaltyDrop:
|
||||
default: false
|
||||
description: Allows players from other guilds to pick up items dropped on death.
|
||||
title: Loot Other Guild Death Drops
|
||||
type: boolean
|
||||
bEnableFastTravel:
|
||||
default: true
|
||||
description: Allows fast traveling between unlocked Great Eagle statues.
|
||||
title: Enable Fast Travel
|
||||
type: boolean
|
||||
bEnableFriendlyFire:
|
||||
default: false
|
||||
description: Allows players in the same guild to damage each other.
|
||||
title: Enable Friendly Fire
|
||||
type: boolean
|
||||
bEnableInvaderEnemy:
|
||||
default: true
|
||||
description: Enables enemy NPCs and wild Pal raids attacking player bases.
|
||||
title: Enable Raids
|
||||
type: boolean
|
||||
bIsPvP:
|
||||
default: false
|
||||
description: Enables combat and damage between opposing players.
|
||||
title: Enable PvP
|
||||
type: boolean
|
||||
bIsStartLocationSelectByMap:
|
||||
default: true
|
||||
description: Allows players to choose their respawn location from the map.
|
||||
title: Select Respawn Location By Map
|
||||
type: boolean
|
||||
bShowPlayerList:
|
||||
default: true
|
||||
description: Displays connected players in the server player list.
|
||||
title: Show Player List
|
||||
type: boolean
|
||||
bUseAuth:
|
||||
default: true
|
||||
description: Enforces valid Steam account authentication upon connection.
|
||||
title: Require Steam Authentication
|
||||
type: boolean
|
||||
type: object
|
||||
configFilePath: Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
|
||||
configFileFormat: STANDARD
|
||||
configFormatOptions:
|
||||
assignment: =
|
||||
falseValue: "False"
|
||||
footer: )
|
||||
header: |-
|
||||
[/Script/Pal.PalGameWorldSettings]
|
||||
OptionSettings=(
|
||||
quoteStrings: true
|
||||
separator: ','
|
||||
trueValue: "True"
|
||||
unquotedKeys:
|
||||
- Difficulty
|
||||
- RandomizerType
|
||||
- DeathPenalty
|
||||
- CrossplayPlatforms
|
||||
- AllowConnectPlatform
|
||||
- LogFormatType
|
||||
- DenyTechnologyList
|
||||
- DayTimeSpeedRate
|
||||
- NightTimeSpeedRate
|
||||
- ExpRate
|
||||
- PalCaptureRate
|
||||
- PalSpawnNumRate
|
||||
- PalDamageRateAttack
|
||||
- PalDamageRateDefense
|
||||
- PlayerDamageRateAttack
|
||||
- PlayerDamageRateDefense
|
||||
- PlayerStomachDecreaceRate
|
||||
- PlayerStaminaDecreaceRate
|
||||
- PlayerAutoHPRegeneRate
|
||||
- PlayerAutoHpRegeneRateInSleep
|
||||
- PalStomachDecreaceRate
|
||||
- PalStaminaDecreaceRate
|
||||
- PalAutoHPRegeneRate
|
||||
- PalAutoHpRegeneRateInSleep
|
||||
- BuildObjectHpRate
|
||||
- BuildObjectDamageRate
|
||||
- BuildObjectDeteriorationDamageRate
|
||||
- CollectionDropRate
|
||||
- CollectionObjectHpRate
|
||||
- CollectionObjectRespawnSpeedRate
|
||||
- EnemyDropItemRate
|
||||
- DropItemAliveMaxHours
|
||||
- AutoResetGuildTimeNoOnlinePlayers
|
||||
- PalEggDefaultHatchingTime
|
||||
- WorkSpeedRate
|
||||
- AutoSaveSpan
|
||||
- ItemWeightRate
|
||||
- ServerReplicatePawnCullDistance
|
||||
- EquipmentDurabilityDamageRate
|
||||
- ItemContainerForceMarkDirtyInterval
|
||||
- PlayerDataPalStorageUpdateCheckTickInterval
|
||||
- ItemCorruptionMultiplier
|
||||
- MonsterFarmActionSpeedRate
|
||||
- AutoTransferMasterCheckIntervalSeconds
|
||||
- BlockRespawnTime
|
||||
- RespawnPenaltyDurationThreshold
|
||||
- RespawnPenaltyTimeScale
|
||||
- VoiceChatMaxVolumeDistance
|
||||
- VoiceChatZeroVolumeDistance
|
||||
uppercaseKeys: false
|
||||
agnosticCommandConfig:
|
||||
actions:
|
||||
Ban:
|
||||
body:
|
||||
message: '{reason}'
|
||||
userid: '{target}'
|
||||
endpoint: /v1/api/ban
|
||||
passwordKey: AdminPassword
|
||||
portKey: RESTAPIPort
|
||||
type: REST_POST
|
||||
user: admin
|
||||
Broadcast:
|
||||
body:
|
||||
message: '{message}'
|
||||
endpoint: /v1/api/announce
|
||||
passwordKey: AdminPassword
|
||||
portKey: RESTAPIPort
|
||||
type: REST_POST
|
||||
user: admin
|
||||
Kick:
|
||||
body:
|
||||
message: '{reason}'
|
||||
userid: '{target}'
|
||||
endpoint: /v1/api/kick
|
||||
passwordKey: AdminPassword
|
||||
portKey: RESTAPIPort
|
||||
type: REST_POST
|
||||
user: admin
|
||||
Save:
|
||||
body: {}
|
||||
endpoint: /v1/api/save
|
||||
passwordKey: AdminPassword
|
||||
portKey: RESTAPIPort
|
||||
type: REST_POST
|
||||
user: admin
|
||||
Shutdown:
|
||||
body:
|
||||
message: '{message}'
|
||||
waittime: 60
|
||||
endpoint: /v1/api/shutdown
|
||||
passwordKey: AdminPassword
|
||||
portKey: RESTAPIPort
|
||||
type: REST_POST
|
||||
user: admin
|
||||
chatRegex: \[CHAT\] <(.*?)> (.*)
|
||||
commandMap:
|
||||
Ban: BanPlayer {target}
|
||||
Broadcast: Broadcast {message}
|
||||
Kick: KickPlayer {target}
|
||||
Save: Save
|
||||
Shutdown: DoExit
|
||||
metricsConfig:
|
||||
endpoint: /v1/api/metrics
|
||||
fields:
|
||||
- decimals: 1
|
||||
key: serverfps
|
||||
label: Server Tickrate
|
||||
suffix: ' FPS'
|
||||
- decimals: 1
|
||||
key: serverframetime
|
||||
label: Frame Time
|
||||
suffix: ' ms'
|
||||
- key: currentplayernum
|
||||
label: Active Players
|
||||
- key: maxplayernum
|
||||
label: Max Capacity
|
||||
- key: days
|
||||
label: World Day
|
||||
- key: basecampnum
|
||||
label: Base Camps
|
||||
- format: duration
|
||||
key: uptime
|
||||
label: Uptime
|
||||
passwordKey: AdminPassword
|
||||
portKey: RESTAPIPort
|
||||
type: REST_API
|
||||
user: admin
|
||||
playerConfig:
|
||||
actions:
|
||||
- destructive: false
|
||||
name: Kick
|
||||
title: Kick Player
|
||||
- destructive: true
|
||||
name: Ban
|
||||
title: Ban Player
|
||||
fields:
|
||||
- key: level
|
||||
prefix: 'Lvl '
|
||||
- decimals: 0
|
||||
key: ping
|
||||
suffix: ms
|
||||
- decimals: 0
|
||||
key: location_x
|
||||
label: X
|
||||
- decimals: 0
|
||||
key: location_y
|
||||
label: "Y"
|
||||
queryType: REST_API
|
||||
restEndpoint: /v1/api/players
|
||||
restPasswordKey: AdminPassword
|
||||
restPortKey: RESTAPIPort
|
||||
restUser: admin
|
||||
backupPaths:
|
||||
- Pal/Saved/SaveGames/*
|
||||
- Pal/Saved/Config/LinuxServer/*
|
||||
- Pal/Saved/Config/WindowsServer/*
|
||||
maxBackupSizeMb: 5000
|
||||
publicIpConfigKey: PublicIP
|
||||
maxPlayersConfigKey: ServerPlayerMaxNum
|
||||
Reference in new issue
Block a user