Left 4 Dead

Left 4 Dead dedicated server on steam.

Ansible Role: steam

Left 4 Dead dedicated server.

  • Role handles all steps that are provided in this documentation.

  • Authoritative list of CVars is in role.

  • Metamod and Sourcemod are automatically installed.

None

Role Details: Updated: 2022-10-10 service docs PRIVATE

Ports

---
###############################################################################
# Ports Configuration
###############################################################################
# Ports should be managed externally via an OS role.
#
# Conan Exiles dedicate server no longer uses steam for discovery, but keeps
# the port for backwards compatibility for server queries.
#
# Reference:
# * https://www.conanexiles.com/dedicated-servers/
# * https://conanexiles.fandom.com/wiki/Dedicated_Server_Setup:_Linux_and_Wine
# * https://r-pufky.github.io/docs/game/conan/index.html
# * https://forums.funcom.com/t/hosting-a-dedicated-server-for-isle-of-siptah/136857/4

ports:
  - {proto: 'udp', from_ip: 'any', to_port: 7777,  direction: 'in', comment: 'conan exiles main game connections'}
  - {proto: 'udp', from_ip: 'any', to_port: 7778,  direction: 'in', comment: 'conan exiles ping port for server browser (always main port +1)'}
  - {proto: 'udp', from_ip: 'any', to_port: 27015, direction: 'in', comment: 'conan exiles server query port'}
  - {proto: 'tcp', from_ip: 'any', to_port: 7777,  direction: 'in', comment: 'conan exiles mod transfers to clients'}
  - {proto: 'tcp', from_ip: 'any', to_port: 25575, direction: 'in', comment: 'conan exiles remote administration (rcon)'}

Defaults

---
###############################################################################
# Conan Exiles (+10GB)
###############################################################################
# Players  CPU           Memory   Disk
# 10       2c/2t @3.0Ghz 8GB      35Gb
# 35       4c/4t @3.1Ghz 8GB      35Gb
# 50       4c/8t @3.5Ghz 12GB     35Gb
# 70       4c/8t @4.0Ghz 12GB     35Gb
#
# Reference:
# * https://www.conanexiles.com/dedicated-servers/
# * https://conanexiles.fandom.com/wiki/Dedicated_Server_Setup:_Linux_and_Wine
# * https://r-pufky.github.io/docs/game/conan/index.html
# * https://github.com/r-pufky/steam/blob/master/docs/examples/conan-exiles.md

# Install preconfigured Conan Exiles server?
steam_conan_enable: true

# Root install location.
steam_conan_dir: '/home/steam/conan'

# Additional steamcmd options to use during app_update. Default: ''.
steam_conan_app_extras: ''

# Update steamcmd. Default: true.
steam_conan_update_steamcmd: true

# Update Conan Exiles server. Default: true.
steam_conan_update_server: true

# Full path to Backup Conan Exiles Databases (daily). Default: '' (disabled).
steam_conan_backup_dir: ''

###############################################################################
# Conan Exiles Mods
###############################################################################
# Conan mods may be manually downloaded via steamcmd. Note that the ID used is
# the BASE game, not the expansion / complete ID's.
#
#   steamcmd +login anonymous
#   workshop_download_item 440900 2869834350
#

# Target location of mods (.pak) to install on ansible host. Empty disables.
# e.g. host_vars/host/files/mods. Default: ''.
steam_conan_mods_source: ''

# Mods to enable. Modlist generated in order specified. Empty disables.
# '*' is automatically pre-pended to the mod name for loading. Default: [].
steam_conan_mods: []

###############################################################################
# Game.ini Settings
###############################################################################
# Only defined values are enforced in the configuration file.
#
# steam_conan_settings_game:
#   - {section: '{SECTION}', key: '{KEY}', value: '{VALUE}', state: '{STATE}'
#
#   * state: must be 'present' or 'absent'.
#   * empty values may be used for value, creation or deletion.
#   * Use vault for passwords.
#
# Reference:
# * https://conanexiles.fandom.com/wiki/Dedicated_Server_Setup:_Linux_and_Wine#Game.ini

steam_conan_settings_game:
  - {section: 'Settings.Gameplay',                 key: 'showContextualControls',       value: 'True',    state: 'present'}
  - {section: 'Settings.Gameplay',                 key: 'SendNewItemsToShortcutsWheel', value: 'True',    state: 'present'}
  - {section: 'RconPlugin',                        key: 'RconPort',                     value: '25575',   state: 'present'}
  - {section: '/script/engine.gamenetworkmanager', key: 'TotalNetBandwidth',            value: '4000000', state: 'present'}
  - {section: '/script/engine.gamenetworkmanager', key: 'MaxDynamicBandwidth',          value: '100000',  state: 'present'}
  - {section: '/script/engine.gamenetworkmanager', key: 'MinDynamicBandwidth',          value: '40000',   state: 'present'}
  - {section: 'Miscellaneous',                     key: 'inThirdPerson',                value: 'True',    state: 'present'}
  - {section: '/script/engine.gamesession',        key: 'MaxPlayers',                   value: '20',      state: 'present'}

###############################################################################
# Engine.ini Settings
###############################################################################
# Only defined values are enforced in the configuration file.
#
# steam_conan_settings_engine:
#   - {section: '{SECTION}', key: '{KEY}', value: '{VALUE}', state: '{STATE}'
#
#   * state: must be 'present' or 'absent'.
#   * empty values may be used for value, creation or deletion.
#   * Use vault for passwords.
#
# To enable the Isle of Siptah expansion, set the default map. this enables
# extra options in the ServerSettings configuration (below).
#
#  - {section: '/Script/EngineSettings.GameMapsSettings', key: 'ServerDefaultMap', value: '/Game/DLC_EXT/DLC_Siptah/Maps/DLC_Isle_of_Siptah', state: 'present'}
#
# Reference:
# * https://conanexiles.fandom.com/wiki/Dedicated_Server_Setup:_Linux_and_Wine#Engine.ini
# * https://www.conanexiles.com/dedicated-servers/
# * https://forums.funcom.com/t/hosting-a-dedicated-server-for-isle-of-siptah/136857/4

steam_conan_settings_engine:
  - {section: 'OnlineSubsystem',                          key: 'ServerName',                         value: 'Conan Exiles Server', state: 'present'}
  - {section: 'OnlineSubsystem',                          key: 'ServerPassword',                     value: 'changeme',            state: 'present'}
  - {section: 'URL',                                      key: 'Port',                               value: '7777',                state: 'present'}
  - {section: 'OnlineSubsystemNull',                      key: 'GameServerQueryPort',                value: '27015',               state: 'present'}
  - {section: '/Script/ConanSandbox.SystemSettings',      key: 'ModFileDownload.DownloadPortOffset', value: '0',                   state: 'present'}
  - {section: '/Script/EngineSettings.GameMapsSettings',  key: 'ServerDefaultMap',                   value: '/Game/DLC_EXT/DLC_Siptah/Maps/DLC_Isle_of_Siptah', state: 'present'}
  - {section: 'OnlineSubsystem',                          key: 'bHasVoiceEnabled',                   value: 'False',               state: 'present'}
  - {section: 'Voice',                                    key: 'bEnabled',                           value: 'False',               state: 'present'}
  - {section: '/script/onlinesubsystemutils.ipnetdriver', key: 'MaxClientRate',                      value: '100000',              state: 'present'}
  - {section: '/script/onlinesubsystemutils.ipnetdriver', key: 'MaxInternetClientRate',              value: '100000',              state: 'present'}

###############################################################################
# ServerSettings.ini Settings
###############################################################################
# Only defined values are enforced in the configuration file.
#
# steam_conan_settings_server:
#   - {section: '{SECTION}', key: '{KEY}', value: '{VALUE}', state: '{STATE}'
#
#   * state: must be 'present' or 'absent'.
#   * empty values may be used for value, creation or deletion.
#   * Use vault for passwords.
#
# Updated defaults may be found in Config/DefaultServerSettings.ini
#
# Reference:
# * https://conanexiles.fandom.com/wiki/Dedicated_Server_Setup:_Linux_and_Wine#ServerSettings.ini
# * https://forums.funcom.com/t/hosting-a-dedicated-server-for-isle-of-siptah/136857/4

steam_conan_settings_server:
  - {section: 'ServerSettings', key: 'NPCMindReadingMode',                   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'MaxNudity',                            value: '0',               state: 'present', comment: '2=Full, 1=Partial, 0=None'}
  - {section: 'ServerSettings', key: 'ServerCommunity',                      value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'ConfigVersion',                        value: '10',              state: 'present'}
  - {section: 'ServerSettings', key: 'BlueprintConfigVersion',               value: '25',              state: 'present'}
  - {section: 'ServerSettings', key: 'PurgeNPCBuildingDamageMultiplier',     value: '(5.0, 5.0, 10.0, 15.0, 20.0, 25.0)',        state: 'present'}
  - {section: 'ServerSettings', key: 'BuildingPVPWhitelist',                 value: '("80901","80111","80112","80915","80912")', state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerKnockbackMultiplier',            value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'NPCKnockbackMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StructureDamageMultiplier',            value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StructureHealthMultiplier',            value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'NPCRespawnMultiplier',                 value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'NPCHealthMultiplier',                  value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerDamageMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerDamageTakenMultiplier',          value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'MinionDamageMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'MinionDamageTakenMultiplier',          value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'NPCDamageMultiplier',                  value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'NPCDamageTakenMultiplier',             value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerEncumbranceMultiplier',          value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerEncumbrancePenaltyMultiplier',   value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerMovementSpeedScale',             value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerStaminaCostSprintMultiplier',    value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerSprintSpeedScale',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerStaminaCostMultiplier',          value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerHealthRegenSpeedScale',          value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerXPRateMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerXPKillMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerXPHarvestMultiplier',            value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerXPCraftMultiplier',              value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerXPTimeMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'DogsOfTheDesertSpawnWithDogs',         value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'CrossDesertOnce',                      value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallExclusionRadius',                value: '500.000000',      state: 'present'}
  - {section: 'ServerSettings', key: 'MaxAggroRange',                        value: '9000.000000',     state: 'present'}
  - {section: 'ServerSettings', key: 'FriendlyFireDamageMultiplier',         value: '0.250000',        state: 'present'}
  - {section: 'ServerSettings', key: 'CampsIgnoreLandclaim',                 value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarDomeDurationMultiplier',         value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarDomeDamageMultiplier',           value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'NPCMaxSpawnCapMultiplier',             value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PvPMountEnduranceDamageMultiplier',    value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'serverRegion',                         value: '0',               state: 'present', comment: '3=Asia, 2=Americas, 1/0=Europe'}
  - {section: 'ServerSettings', key: 'PVPEnabled',                           value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'RestrictPVPTime',                      value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'RestrictPVPBuildingDamageTime',        value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeMondayStart',                   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeTuesdayStart',                  value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeWednesdayStart',                value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeThursdayStart',                 value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeFridayStart',                   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeSaturdayStart',                 value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeSundayStart',                   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeMondayEnd',                     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeTuesdayEnd',                    value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeWednesdayEnd',                  value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeThursdayEnd',                   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeFridayEnd',                     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeSaturdayEnd',                   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPTimeSundayEnd',                     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPEnabledMonday',                     value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPEnabledTuesday',                    value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPEnabledWednesday',                  value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPEnabledThursday',                   value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPEnabledFriday',                     value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPEnabledSaturday',                   value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPEnabledSunday',                     value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeMondayStart',     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeTuesdayStart',    value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeWednesdayStart',  value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeThursdayStart',   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeFridayStart',     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeSaturdayStart',   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeSundayStart',     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeMondayEnd',       value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeTuesdayEnd',      value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeWednesdayEnd',    value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeThursdayEnd',     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeFridayEnd',       value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeSaturdayEnd',     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageTimeSundayEnd',       value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageEnabledMonday',       value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageEnabledTuesday',      value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageEnabledWednesday',    value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageEnabledThursday',     value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageEnabledFriday',       value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageEnabledSaturday',     value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'PVPBuildingDamageEnabledSunday',       value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'DisableBuildingDuringTimeRestrictedPVP', value: 'False',         state: 'present'}
  - {section: 'ServerSettings', key: 'VocalVisibilityDurationInMinutes',     value: '5',               state: 'present'}
  - {section: 'ServerSettings', key: 'CombatModeModifier',                   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'ContainersIgnoreOwnership',            value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'LandClaimRadiusMultiplier',            value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'DisableLandclaimNotifications',        value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'BuildingPreloadRadius',                value: '80.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'CanDamagePlayerOwnedStructures',       value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'DynamicBuildingDamage',                value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'DynamicBuildingDamagePeriod',          value: '1800',            state: 'present'}
  - {section: 'ServerSettings', key: 'CreativeModeServer',                   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'ServerPassword',                       value: '',                state: 'present'}
  - {section: 'ServerSettings', key: 'ServerMessageOfTheDay',                value: '',                state: 'present'}
  - {section: 'ServerSettings', key: 'KickAFKPercentage',                    value: '80',              state: 'present'}
  - {section: 'ServerSettings', key: 'KickAFKTime',                          value: '2700',            state: 'present'}
  - {section: 'ServerSettings', key: 'OfflinePlayersUnconsciousBodiesHours', value: '168',             state: 'present'}
  - {section: 'ServerSettings', key: 'CorpsesPerPlayer',                     value: '10',              state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerCorpseLifeTime',                 value: '1800.000000',     state: 'present'}
  - {section: 'ServerSettings', key: 'NPCCorpseLifeTime',                    value: '600.000000',      state: 'present'}
  - {section: 'ServerSettings', key: 'ItemConvertionMultiplier',             value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallConversionMultiplier',           value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'FuelBurnTimeMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'CraftingCostMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StaminaRegenerationTime',              value: '3.750000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StaminaExhaustionTime',                value: '3.750000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StaminaStaticRegenRateMultiplier',     value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StaminaMovingRegenRateMultiplier',     value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerStaminaRegenSpeedScale',         value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StaminaOnConsumeRegenPause',           value: '1.500000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StaminaOnExhaustionRegenPause',        value: '2.750000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallScoutingTimeMinutes',            value: '10.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallMinDistanceAwayFromHome',        value: '5000.000000',     state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallTeleportingCooldown',            value: '10.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'MinionPopulationBaseValue',            value: '50',              state: 'present'}
  - {section: 'ServerSettings', key: 'MinionPopulationPerPlayer',            value: '5',               state: 'present'}
  - {section: 'ServerSettings', key: 'MinionOverpopulationCleanup',          value: '60',              state: 'present'}
  - {section: 'ServerSettings', key: 'MinionOverpopulationAllowed',          value: '10',              state: 'present'}
  - {section: 'ServerSettings', key: 'UseMinionPopulationLimit',             value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'EnableFollowerRescueOnLandClaimOnly',  value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'EnableFollowerRescueInBuildExclusionZone', value: 'False',       state: 'present'}
  - {section: 'ServerSettings', key: 'FollowerRescueCooldown',               value: '3600',            state: 'present'}
  - {section: 'ServerSettings', key: 'DamageCooldownBeforeRescue',           value: '600',             state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallCorruptionRemovalMultiplier',    value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerCorruptionGainMultiplier',       value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerCorruptionGainFromSorceryMultiplier', value: '1.000000',   state: 'present'}
  - {section: 'ServerSettings', key: 'AnimalPenCraftingTimeMultiplier',      value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'FeedBoxRangeMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'BuildingDamageMultiplier',             value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PathFollowingSendsAngularVelocity',    value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'UnconsciousTimeSeconds',               value: '1800.000000',     state: 'present'}
  - {section: 'ServerSettings', key: 'ConciousnessDamageMultiplier',         value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallDamageToPlayersMultiplier',      value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'MaxBuildingDecayTime',                 value: '1296000.000000',  state: 'present'}
  - {section: 'ServerSettings', key: 'MaxDecayTimeToAutoDemolish',           value: '604800.000000',   state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallDecayTime',                      value: '1296000.000000',  state: 'present'}
  - {section: 'ServerSettings', key: 'DisableThrallDecay',                   value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'BuildingDecayTimePerScore',            value: '5400.000000',     state: 'present'}
  - {section: 'ServerSettings', key: 'BuildingDecayTimeMultiplier',          value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'DecayCleanupTimeMultiplier',           value: '2.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'DecayBonusTimeRate',                   value: '600.000000',      state: 'present'}
  - {section: 'ServerSettings', key: 'DecayShowBuildingScore',               value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'EnableAutoFacingOnAttack',             value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'EnableTargetLock',                     value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'CachedLandClaimRadiusMultiplier',      value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ValidatePhysNavWalkWithRaycast',       value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'LocalNavMeshVisualizationFrequency',   value: '-1.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'LocalLandClaimVisualizationFrequency', value: '-1.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'LocalLandClaimVisualizationRadius',    value: '3000',            state: 'present'}
  - {section: 'ServerSettings', key: 'LocalLandClaimVisualizationChannel',   value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'UseLocalQuadraticAngularVelocityPrediction', value: 'False',     state: 'present'}
  - {section: 'ServerSettings', key: 'LQAVPUseTime',                         value: '0.150000',        state: 'present'}
  - {section: 'ServerSettings', key: 'LQAVPFadeTime',                        value: '0.100000',        state: 'present'}
  - {section: 'ServerSettings', key: 'LQAVPMethod',                          value: '2',               state: 'present'}
  - {section: 'ServerSettings', key: 'NetworkSimulatedSmoothRotationTimeWithLQAVP', value: '0.100000', state: 'present'}
  - {section: 'ServerSettings', key: 'EnableClanMarkers',                    value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'ValidatePlayerStats',                  value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'AllowedTimeUndermesh',                 value: '-1.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'AllowedDistanceUndermeshSquared',      value: '490000.000000',   state: 'present'}
  - {section: 'ServerSettings', key: 'CapCharacterLayoutScalarParams',       value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'EventLogCauserPrivacy',                value: '1',               state: 'present'}
  - {section: 'ServerSettings', key: 'serverVoiceChat',                      value: '1',               state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarsDisabled',                      value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'RestrictAvatarSummoningTime',          value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarSummoningTimeWeekdayStart',      value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarSummoningTimeWeekdayEnd',        value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarSummoningTimeWeekendStart',      value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarSummoningTimeWeekendEnd',        value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarLifetime',                       value: '60.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'AvatarSummonTime',                     value: '60.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'MaxDeathMapMarkers',                   value: '3',               state: 'present'}
  - {section: 'ServerSettings', key: 'IsBattlEyeEnabled',                    value: 'False',           state: 'present', comment: 'Disable for linux'}
  - {section: 'ServerSettings', key: 'IsVACEnabled',                         value: 'True',            state: 'present', comment: 'Disable for linux'}
  - {section: 'ServerSettings', key: 'CanImportDirectlyFromSameServer',      value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'ServerTransferServersWhitelist',       value: '',                state: 'present'}
  - {section: 'ServerSettings', key: 'MaxAllowedPing',                       value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'AllowFamilySharedAccount',             value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionAllowAfrica',                    value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionAllowAsia',                      value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionAllowCentralEurope',             value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionAllowEasternEurope',             value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionAllowWesternEurope',             value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionAllowNorthAmerica',              value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionAllowOceania',                   value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionAllowSouthAmerica',              value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'RegionBlockList',                      value: '',                state: 'present'}
  - {section: 'ServerSettings', key: 'ServerModList',                        value: '',                state: 'present'}
  - {section: 'ServerSettings', key: 'InitialPurgeDelay',                    value: '15.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'BuildingPickupEnabled',                value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'PoiProtectionEnabled',                 value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'EventSystemEnabled',                   value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'StabilityLossMultiplier',              value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'AllowBuildingAnywhere',                value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'HealthbarVisibilityDistance',          value: '15000.000000',    state: 'present'}
  - {section: 'ServerSettings', key: 'ServerMergeOutgoingTime',              value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'ServerMergeDestination',               value: '',                state: 'present'}
  - {section: 'ServerSettings', key: 'DisableChatFormatting',                value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'EnableLoginQueue',                     value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'DisconnectionGraceTime',               value: '180',             state: 'present'}
  - {section: 'ServerSettings', key: 'bCanBeDamaged',                        value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'LogoutCharactersRemainInTheWorld',     value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'OverrideDecayMaxBuildingPieces',       value: '6',               state: 'present'}
  - {section: 'ServerSettings', key: 'OverrideDecayTime',                    value: '3600',            state: 'present'}
  - {section: 'ServerSettings', key: 'AdminPassword',                        value: 'changeme',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerFoodMultiplier',                 value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerWaterMultiplier',                value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerIdleThirstMultiplier',           value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerActiveThirstMultiplier',         value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerOfflineThirstMultiplier',        value: '0.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerIdleHungerMultiplier',           value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerActiveHungerMultiplier',         value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerOfflineHungerMultiplier',        value: '0.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ShieldDurabilityMultiplier',           value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'NoOwnership',                          value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'BuildingRadialDestructionForceMultiplier', value: '500.000000',  state: 'present'}
  - {section: 'ServerSettings', key: 'DurabilityMultiplier',                 value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'DropEquipmentOnDeath',                 value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'EverybodyCanLootCorpse',               value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'TetheringMinLimit',                    value: '12000.0',         state: 'present'}
  - {section: 'ServerSettings', key: 'TetheringMaxLimit',                    value: '102000.0',        state: 'present'}
  - {section: 'ServerSettings', key: 'CoopTetheringLimit',                   value: '52000.0',         state: 'present'}
  - {section: 'ServerSettings', key: 'TetheringRangeDelta',                  value: '2000.0',          state: 'present'}
  - {section: 'ServerSettings', key: 'DayCycleSpeedScale',                   value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'DayTimeSpeedScale',                    value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'NightTimeSpeedScale',                  value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'DawnDuskSpeedScale',                   value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ClientCatchUpTime',                    value: '10.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'UseClientCatchUpTime',                 value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerHealthMultiplier',               value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerStaminaMultiplier',              value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StaminaCostMultiplier',                value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ItemSpoilRateScale',                   value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'HarvestAmountMultiplier',              value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ResourceRespawnSpeedMultiplier',       value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ChatHasGlobal',                        value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'ChatLocalRadius',                      value: '5000.000000',     state: 'present'}
  - {section: 'ServerSettings', key: 'ChatMaxMessageLength',                 value: '512',             state: 'present'}
  - {section: 'ServerSettings', key: 'ChatFloodControlAheadCounter',         value: '10',              state: 'present'}
  - {section: 'ServerSettings', key: 'EnableSandStorm',                      value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'ClanMaxSize',                          value: '30',              state: 'present'}
  - {section: 'ServerSettings', key: 'IsLoadErrorsFatal',                    value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'DisableBuildingAbandonment',           value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'IPBlackList',                          value: '("8.8.8.8","8.8.4.4")', state: 'present'}
  - {section: 'ServerSettings', key: 'PurgeLevel',                           value: '6',               state: 'present'}
  - {section: 'ServerSettings', key: 'PurgeDelay',                           value: '5',               state: 'present'}
  - {section: 'ServerSettings', key: 'RestrictPurgeTime',                    value: 'false',           state: 'present'}
  - {section: 'ServerSettings', key: 'PurgeRestrictionWeekdayStart',         value: '1800',            state: 'present'}
  - {section: 'ServerSettings', key: 'PurgeRestrictionWeekdayEnd',           value: '2200',            state: 'present'}
  - {section: 'ServerSettings', key: 'PurgeRestrictionWeekendStart',         value: '1800',            state: 'present'}
  - {section: 'ServerSettings', key: 'PurgeRestrictionWeekendEnd',           value: '2200',            state: 'present'}
  - {section: 'ServerSettings', key: 'MinPurgeOnlinePlayers',                value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'ClanPurgeTrigger',                     value: '42000',           state: 'present'}
  - {section: 'ServerSettings', key: 'ClanScoreUpateFrequency',              value: '15',              state: 'present'}
  - {section: 'ServerSettings', key: 'PurgeDuration',                        value: '30',              state: 'present'}
  - {section: 'ServerSettings', key: 'PurgePreparationTime',                 value: '10',              state: 'present'}
  - {section: 'ServerSettings', key: 'AllowBuilding',                        value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'EnablePurge',                          value: 'True',            state: 'present'}
  - {section: 'ServerSettings', key: 'PlayerBuildingDamageMultiplier',       value: ' = 0.01',         state: 'present'}
  - {section: 'ServerSettings', key: 'OverrideDecayTime',                    value: '3600',            state: 'present'}
  - {section: 'ServerSettings', key: 'EnableWhitelist',                      value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'EnableBanCheck',                       value: 'True',            state: 'present'}
  # Isle of Siptah expanded options
  - {section: 'ServerSettings', key: 'StormEnabled',                         value: 'true',            state: 'present'}
  - {section: 'ServerSettings', key: 'ElderThingsEnabled',                   value: 'true',            state: 'present'}
  - {section: 'ServerSettings', key: 'ElderThingsIdleLifespan',              value: '30.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'SiegeElderThingsEnabled',              value: 'false',           state: 'present'}
  - {section: 'ServerSettings', key: 'StormCooldown',                        value: '105.000000',      state: 'present'}
  - {section: 'ServerSettings', key: 'StormAccumulationTime',                value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StormDuration',                        value: '15.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'StormDissipationTime',                 value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StormEnduranceDrainMultiplier',        value: '0.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'ElderThingSpawnRate',                  value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StormTimeWeekdayStart',                value: '0000',            state: 'present'}
  - {section: 'ServerSettings', key: 'StormTimeWeekdayEnd',                  value: '2359',            state: 'present'}
  - {section: 'ServerSettings', key: 'StormTimeWeekendStart',                value: '0000',            state: 'present'}
  - {section: 'ServerSettings', key: 'StormTimeWeekendEnd',                  value: '2359',            state: 'present'}
  - {section: 'ServerSettings', key: 'StormMinimumOnlinePlayers',            value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'StormBuildingAllowed',                 value: 'true',            state: 'present'}
  - {section: 'ServerSettings', key: 'StormMapBlocker',                      value: 'true',            state: 'present'}
  - {section: 'ServerSettings', key: 'EnableBuildingDestructionCapsules',    value: 'false',           state: 'present'}
  - {section: 'ServerSettings', key: 'ServerTransferEnabled',                value: 'false',           state: 'present'}
  - {section: 'ServerSettings', key: 'ThrallDamageToNPCsMultiplier',         value: '1.0',             state: 'present'}
  # These are feat ID's to blacklist, format: ("ID", "ID", "ID")
  - {section: 'ServerSettings', key: 'FeatsBlacklist',                       value: '',                state: 'present'}
  - {section: 'ServerSettings', key: 'CanDamagePlayerOwnedStructuresPeriod', value: '120',             state: 'present'}
  - {section: 'ServerSettings', key: 'ElderThingSiegeDamageMultiplier',      value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'MinimumBuildingSizeToBeSieged',        value: '41',              state: 'present'}
  - {section: 'ServerSettings', key: 'AmbientElderThingRespawnRate',         value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'SiegeElderThingRespawnRate',           value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'StormBuildingDamageRateMultiplier',    value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'MaxAmbientElderThings',                value: '700',             state: 'present'}
  - {section: 'ServerSettings', key: 'MaxSiegeElderThings',                  value: '5',               state: 'present'}
  - {section: 'ServerSettings', key: 'MaxAmbushElderThings',                 value: '200',             state: 'present'}
  - {section: 'ServerSettings', key: 'ElderThingSiegeBuildingSizeMultiplier', value: '1.000000',       state: 'present'}
  - {section: 'ServerSettings', key: 'StormBuildingDamageEnabled',           value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'SiegeElderThingMapMarkers',            value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'MinimumStormDamageBuildingPieces',     value: '0',               state: 'present'}
  - {section: 'ServerSettings', key: 'StormBuildingDamageMultiplier',        value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'VaultRefreshTime',                     value: '10',              state: 'present'}
  - {section: 'ServerSettings', key: 'VaultRefreshDeviation',                value: '2',               state: 'present'}
  - {section: 'ServerSettings', key: 'SurgeDeviationMin',                    value: '60',              state: 'present'}
  - {section: 'ServerSettings', key: 'SurgeDeviationMax',                    value: '60',              state: 'present'}
  - {section: 'ServerSettings', key: 'SurgeSacrificeRequirementMultiplier',  value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'SurgeDespawnTimer',                    value: '90',              state: 'present'}
  - {section: 'ServerSettings', key: 'AltarModuleActiveTimeMultiplier',      value: '1.000000',        state: 'present'}
  - {section: 'ServerSettings', key: 'RandomSurgesCountMin',                 value: '6',               state: 'present'}
  - {section: 'ServerSettings', key: 'RandomSurgesCountMax',                 value: '10',              state: 'present'}
  - {section: 'ServerSettings', key: 'DecoupleSurgeFromStorm',               value: 'False',           state: 'present'}
  - {section: 'ServerSettings', key: 'DecoupledSurgeCooldown',               value: '5',               state: 'present'}