Wardogs: Experience Configs (rule variants, match-state ini, example server)
Source: Config/Experiences/ (34 JSON files), DefaultMatchState.ini and ServerConfigs/ExampleStandaloneServerConfig.ini. The tables are generated by _tools/experience_config_tables.py (--check to verify). The example server file also holds an admin password field and a banner URL; neither is copied here. The cooked experience packs themselves are in Experiences (feature); the config values that override native defaults are in the Default Game ini data (assets/data/default-game-ini.json).
An experience is a small config file that names a mode: which game feature packs it turns on, which rule flags it sets, which data layers (map content) it loads. Includes stacks one definition on another, so Bakurani_KOTH_01 is KOTH plus the Bakurani map layers.
1. Counts
| Item | Count | |—|—| | Experience definitions | 34 | | Without EditorVisible | 11 | | Legacy and AI scenario definitions | 10 | | With rule flags (FeatureFlags) | 6 |
2. Every definition
Entries with Includes inherit the included definition and add to it. “N entries” means the list is long (enabled features above 8, disabled above 14). Eleven definitions have no EditorVisible flag: the legacy test scenes and the AI scenario prototypes.
| Definition | Alias | Includes | Enables features | Disables features | Rule flags | Disallowed flags | Data layers | Other | |—|—|—|—|—|—|—|—|—| | Africa/Kenya_KOTH_01 | Kenya_KOTH_01 | KOTH | | | | | 1 enabled | | | Deathmatch | ED_Deathmatch | DefaultSet | Deathmatch | | | Experience.Rules.SkipPlayerDeathItemDrop, Experience.Rules.SkipPlayerKnocked | | pawn data WDCore_PlayerData | | Europe/Berlin_KOTH_01 | Berlin_KOTH_01 | KOTH | | | | | 4 enabled | | | Europe/Madrid_KOTH_01 | Madrid_KOTH_01 | KOTH | | | | | 4 enabled | | | Europe/Paris_KOTH_01 | Paris_KOTH_01 | KOTH | | | | | 4 enabled | | | Frontend | ED_Frontend | DefaultSet | | | | Experience.Rules.EnablePresenceJoinOnExperienceLoad | | presence status set | | Gym | ED_Gym | KOTH | FreeVehicleSpawner | | | | | | | KOTH | ED_KOTH | DefaultSet | 11 entries | | Experience.Rules.ReturnToSpawnEnabled | Experience.Rules.SkipPlayerDowned | 1 enabled | pawn data WDCore_PlayerData; presence status set | | KOTH_Hardcore | Hardcore | | | AlternativeCriticalCamera, PlayerHealthBar | Experience.Rules.NoDynamicCrosshair, Experience.Rules.KillfeedSquadOnly, Experience.Rules.NoHudAmmo, Experience.Rules.NoMinimapHealth, Experience.Rules.NoQuickSlots, Experience.Rules.Hardcore | Vehicle.Feature.ThirdPersonCamera | | | | KOTH_InfantryOnly | InfantryOnly | KOTH | | TNK_01, ROT_02, ROT_03_WeaponVariants, WHL_05_Minigun, STN_01, STN_02, STN_05, TNK_04, ROT_04_MachineGun, WHL_02_RingTurret, WHL_05_RingTurret, WHL_07_ArmouredBattle, WHL_08_RingTurret | Experience.Rules.InfantryOnly | | | | | Kavkazi/Bakurani_KOTH_01 | Bakurani_KOTH_01 | KOTH | | | | | 4 enabled | | | Kavkazi/Bakurani_KOTH_02 | Bakurani_KOTH_02 | KOTH | | | | | 4 enabled | | | Kavkazi/Bakurani_SniperShowdown_01 | Bakurani_SniperShowdown_01 | SniperShowdown | | | | | | | | Kavkazi/Mindori_KOTH_01 | Mindori_KOTH_01 | KOTH | | | | | 4 enabled | | | Kavkazi/Tevza_KOTH_01 | Tevza_KOTH_01 | KOTH | | | | | 4 enabled | | | LegacyAIScenarios/HunterKiller | ED_HunterKiller_01 | | DestructionPlayground, Lootable, HunterKiller_01, WDAICover | | | Experience.Rules.SkipPlayerDowned | | pawn data WDCore_PlayerData; not editor visible | | LegacyAIScenarios/ScenarioExample | ED_ScenarioExample | | WDCore, DestructionPlayground, Lootable, ScenarioExample, WDAIPveAICore, Behaviour_Patrol, Behaviour_Besiege | | | Experience.Rules.SkipPlayerDowned | | pawn data WDCore_PlayerData; not editor visible | | LegacyAIScenarios/StrikeDisarm | ED_StrikeDisarm_01 | | DestructionPlayground, Lootable, StrikeDisarm_01, WDAICover, Behaviour_Patrol | | | Experience.Rules.SkipPlayerDowned | | pawn data WDCore_PlayerData; not editor visible | | LegacyAIScenarios/VIPEscort | ED_VIPEscort_01 | | DestructionPlayground, Lootable, VIPEscort_01, WDAICover, Behaviour_Patrol | | | Experience.Rules.SkipPlayerDowned | | pawn data WDCore_PlayerData; not editor visible | | Legacy/ArtWorld | ED_ArtWorld | | WDCore, ArtWorld | | | | | pawn data WDCore_PlayerData; not editor visible | | Legacy/KillKennel | ED_KillKennel | | WDCore, KillKennel | | | | | pawn data WDCore_PlayerData; not editor visible | | Legacy/Lookdev | ED_Lookdev | | WDCore, Lookdev | | | | | pawn data WDCore_PlayerData; not editor visible | | Legacy/Lookdev_KOTH | ED_Lookdev_KOTH | | WDCore, ControlZone, KOTH, Lookdev | | | Experience.Rules.SkipPlayerDowned | | pawn data WDCore_PlayerData; not editor visible | | Legacy/MapPerf | ED_MapPerf | | WDCore, MapPerf | | | | | pawn data WDCore_PlayerData; not editor visible | | Legacy/PerformanceCapture | ED_PerformanceCapture | | WDCore, PerformanceCapture | | | | | pawn data WDCore_PlayerData; not editor visible | | NorthAmerica/Detroit_KOTH_01 | ED_Detroit_KOTH_01 | KOTH | | | | | 4 enabled | | | NorthAmerica/Detroit_SniperShowdown_01 | Detroit_SniperShowdown_01 | SniperShowdown | | | | | | | | Russia/Moscow_KOTH_01 | Moscow_KOTH_01 | KOTH | | | | | 4 enabled | | | Russia/Moscow_SniperShowdown_01 | Moscow_SniperShowdown_01 | SniperShowdown | | | | | | | | ShootingRange | ED_ShootingRange | DefaultSet | ShootingRange, AlternativeCriticalCamera | | Experience.Rules.AutoAssignFactions, Experience.Rules.SpawnVolumesRequireTag, Experience.Rules.ChangeTeamDisabled, Experience.Rules.ReturnToSpawnEnabled, Experience.Rules.POICameraRequiresTag, Experience.Rules.RebuyDisabled | Experience.Rules.SkipPlayerDowned, Experience.Rules.VaultEnabled | | pawn data WDCore_PlayerData; ReturnToSpawnLockTime 0; presence status set | | ShootingRangeTutorial | ED_ShootingRangeTutorial | DefaultSet | ShootingRangeTutorial, AlternativeCriticalCamera | | Experience.Rules.AutoAssignFirstFaction, Experience.Rules.ControlZoneRequiresTag, Experience.Rules.ChangeTeamDisabled, Experience.Rules.ChatboxDisabled, Experience.Rules.GiveUpDisabled, Experience.Rules.RebuyDisabled | Experience.Rules.SkipPlayerDowned, Experience.Rules.VaultEnabled | | pawn data WDCore_PlayerData; presence status set | | ShootingRangeTutorial_Dev | ED_ShootingRangeTutorial_Dev | ShootingRangeTutorial | | | | | disables DL_Destruction | | | SniperShowdown | ED_SniperShowdown | DefaultSet | SniperShowdown, ControlZone, Lootable, Spotting | | Experience.Rules.FreeForAll, Experience.Rules.NoCashFeed | Experience.Rules.SkipPlayerKnocked | 1 enabled | pawn data SniperShowdown_PlayerData | | Tanktown | ED_Tanktown | KOTH | | | | Experience.Rules.SkipPlayerDowned | | pawn data WDCore_PlayerData |
3. Hardcore and Infantry Only
These two are the KOTH variants that the server browser tags as Hardcore and Infantry Only (see the tag rows in Frontend data tables and Tag Display Text).
Hardcore (KOTH_Hardcore, alias Hardcore) turns off these parts of the screen and feedback:
- Rule flags set:
NoDynamicCrosshair,KillfeedSquadOnly,NoHudAmmo,NoMinimapHealth,NoQuickSlotsandHardcore. - Game feature packs disabled:
AlternativeCriticalCameraandPlayerHealthBar. - Feature flag disallowed:
Vehicle.Feature.ThirdPersonCamera. - The file has no
Includesline, so it is a rule layer meant to sit on top of a KOTH definition; how the layer is attached is not in the file.
Infantry Only (KOTH_InfantryOnly, alias InfantryOnly) includes KOTH, sets the rule flag InfantryOnly and disables 13 vehicle and emplacement packs:
| Disabled feature pack | Vehicle or emplacement it holds | |—|—| | TNK_01 | Heavy, artillery and anti-air tank bodies (L2A6, SPH-2, Flakpanzer Gepard) | | ROT_02 | Havoc attack helicopter | | ROT_03_WeaponVariants | Armed AH-6 variants (AH-6M [Miniguns], AH-6R [Rockets]) | | WHL_05_Minigun | Humvee [Minigun] | | STN_01 | Talon 9K SAM | | STN_02 | Vanguard CIWS | | STN_05 | Stingray | | TNK_04 | T-72B3 | | ROT_04_MachineGun | Z20 Lakota [Miniguns] | | WHL_02_RingTurret | Kodiak [M249] | | WHL_05_RingTurret | Humvee [M249] | | WHL_07_ArmouredBattle | Ural Defender [M249] | | WHL_08_RingTurret | Wolf-110 [M2 Browning] |
The packs that are not on this list (for example the base Humvee, Kodiak, Ural, Wolf-110, Z20 Lakota and MH-6 packs) stay enabled by this file. What the InfantryOnly flag itself does to those is native code and not read from data, so whether unarmed vehicles can still be spawned in this mode is not known from the files.
4. Other small definitions
ShootingRangeTutorial_DevincludesShootingRangeTutorialand disables theDL_Destructiondata layer.Bakurani_SniperShowdown_01,Detroit_SniperShowdown_01andMoscow_SniperShowdown_01includeSniperShowdownand add no layers of their own.- The Legacy and LegacyAIScenarios definitions (
ArtWorld,KillKennel,Lookdev,Lookdev_KOTH,MapPerf,PerformanceCapture,HunterKiller,ScenarioExample,StrikeDisarm,VIPEscort) enableWDCoreor scenario packs with the core player pawn data. They look like older test and prototype entries (noEditorVisibleflag); the PvE packs are described in PvE.
5. Legacy match-state ini
DefaultMatchState.ini names three match-state classes that are not in the current SDK; the states in use are the MatchState.* sections of the Default Game ini data (post-match 45 s there against 35 s here). The numbers are real file content, but their consumer is not shown, so treat them as legacy.
| Section | Key | Value | |—|—|—| | WDMatchStateWaitingToStart | StateTimeLimit | 5.0 | | WDMatchStateWaitingToStart | bCanPurchase | false | | WDMatchStateWaitingToStart | bCanSpawnVehicles | false | | WDMatchStateWaitingToStart | bShouldTrackStats | false | | WDMatchStateWaitingToStart | bCanEarnCash | false | | WDMatchStateInProgress | StateTimeLimit | 0 | | WDMatchStateEnding | StateTimeLimit | 35.0 | | WDMatchStateBase | bCanPurchase | true | | WDMatchStateBase | bCanSpawnVehicles | true | | WDMatchStateBase | bShouldTrackStats | true | | WDMatchStateBase | bCanEarnCash | true |
In words: the waiting state lasts 5 s and blocks purchases, vehicle spawns, stat tracking and cash earning; the in-progress state has no limit; the ending state lasts 35 s; everything else defaults to purchases, vehicle spawns, stats and cash on.
6. Example standalone server config
Whitelisted keys only. MinimumRequiredPlayers 20 and ScorePeriod 24 here override the project defaults (60 and 22 s). Zero for the cash, level and ping limits means no limit.
| Section | Key | Example value | |—|—|—| | WDGame.WDGameSession | ServerName | My Community Server | | WDGame.WDGameSession | ServerMinPlayerCash | 0 | | WDGame.WDGameSession | ServerMaxPlayerCash | 0 | | WDGame.WDGameSession | ServerMinPlayerLevel | 0 | | WDGame.WDGameSession | ServerMaxPlayerLevel | 0 | | WDGame.WDGameSession | MaxReservedSlots | 0 | | MatchState.PreMatch.WaitingForPlayers.PlayerCount | MinimumRequiredPlayers | 20 | | MatchState.Playing.KOTH | ScorePeriod | 24 | | WDGame.WDGameStateSession | bLockOverpopulatedTeamsConfig | true | | WDGame.WDGameStateSession | OverpopulatedTeamThresholdConfig | 2 | | WDGame.WDServerLifecycleSubsystem | RestartTimeUtc | (empty) | | WDGame.WDServerMapRotationSettings | bEnabled | True | | WDGame.WDServerMapRotationSettings | RotationMode | Ordered | | HighPingKickRuntime.WDHighPingKickSettings | MaxAveragePingMilliseconds | 0 | | HighPingKickRuntime.WDHighPingKickSettings | bSoftBanKickedPlayers | True | | HighPingKickRuntime.WDHighPingKickSettings | WarmupSeconds | 15 | | HighPingKickRuntime.WDHighPingKickSettings | StallSeconds | 0.5 | | HighPingKickRuntime.WDHighPingKickSettings | MaximumWarmupSeconds | 60 | | HighPingKickRuntime.WDHighPingKickSettings | MeasurementSeconds | 120 | | HighPingKickRuntime.WDHighPingKickSettings | SampleIntervalSeconds | 5 | | HighPingKickRuntime.WDHighPingKickSettings | MinimumSampleIntervalSeconds | 5 | | HighPingKickRuntime.WDHighPingKickSettings | ServerHitchSeconds | 0.1 | | HighPingKickRuntime.WDHighPingKickSettings | MinimumServerFramesPerSecond | 20 | | HighPingKickRuntime.WDHighPingKickSettings | DiscardHighestSampleFraction | 0.15 | | HighPingKickRuntime.WDHighPingKickSettings | PendingSampleLifetimeSeconds | 600 | | WDRCON.WDRCONSettings | bEnabled | true | | WDRCON.WDRCONSettings | Port | 7776 | | WDRCON.WDRCONSettings | bEventFeedEnabled | false |
Example map rotation
The example uses an ordered rotation through all combinations of map, lighting preset and zone alternator.
72 rotation entries.
| Map | Experience | Entries |
|---|---|---|
| Europe | Madrid_KOTH_01 | 24 |
| Kavkazi | Bakurani_KOTH_01 | 24 |
| NorthAmerica | Detroit_KOTH_01 | 24 |
| Lighting preset | Entries |
|---|---|
DayClear | 12 |
DayEarlyClear | 12 |
DayEarlyFog | 12 |
DayLateClear | 12 |
DayLateGray | 12 |
DayLateGrayFog | 12 |
| Zone alternator | Entries | |—|—| | ZoneAlternator.Bakurani.Default.Circle | 6 | | ZoneAlternator.Bakurani.Farmland.Circle | 6 | | ZoneAlternator.Bakurani.Lumberyard.Circle | 6 | | ZoneAlternator.Bakurani.River.Circle | 6 | | ZoneAlternator.Ozeti.Church.Circle | 6 | | ZoneAlternator.Ozeti.Default.Circle | 6 | | ZoneAlternator.Ozeti.Farmland.Circle | 6 | | ZoneAlternator.Ozeti.River.Circle | 6 | | ZoneAlternator.Zestafona.Default.Circle | 6 | | ZoneAlternator.Zestafona.Houses.Circle | 6 | | ZoneAlternator.Zestafona.SmallFactory.Circle | 6 | | ZoneAlternator.Zestafona.WaterTreatment.Circle | 6 |