Difference between revisions of "Server Configuration/Body"

From Holdfast: Nations At War
Jump to navigation Jump to search
m
 
(7 intermediate revisions by 3 users not shown)
Line 2: Line 2:
 
[[File:Hfconfig.png|thumb|right|Example Configuration File]]
 
[[File:Hfconfig.png|thumb|right|Example Configuration File]]
  
Server configuration files are plain text files containing settings defining the server setup and the maps/game modes available in rotation. There are three types of line:
+
Server configuration files are plain text files containing settings defining the server setup and the maps/game modes available in rotation. There are three types of lines:
 
* Setting lines: <code>&lt;setting&gt; &lt;value&gt;</code> – the important ones.
 
* Setting lines: <code>&lt;setting&gt; &lt;value&gt;</code> – the important ones.
 
* Comment lines: starting with <code>#</code> – ignored; good for notes and saved rotations.
 
* Comment lines: starting with <code>#</code> – ignored; good for notes and saved rotations.
Line 47: Line 47:
 
! Parameter !! Usage
 
! Parameter !! Usage
 
|-
 
|-
| LowBandwidth || Reduced packet rate on close range (high player count). Default.
+
| Standard || Reduced packet rate on close range (high player count). Default.
 
|-
 
|-
| HighAccuracy || Increased packet rate on close range (low player count).
+
| Competitive || Highest bandwidth; use only for Melee Arena with lower player counts. (Max of 64 players)
|-
 
| Balanced || Between LowBandwidth and HighAccuracy; good for larger servers on strong hardware.
 
|-
 
| UltraHighAccuracy || Slightly lighter than Realtime; recommended only for Melee; higher caps than Realtime.
 
|-
 
| Realtime || Highest bandwidth; use only for Melee Arena with lower player counts.
 
 
|}
 
|}
 
Example:
 
Example:
<pre class="hf-code"><nowiki>network_broadcast_mode LowBandwidth</nowiki></pre>
+
<pre class="hf-code"><nowiki>network_broadcast_mode Standard</nowiki></pre>
  
 
'''Artillery respawn (seconds). Defaults are 120s:'''
 
'''Artillery respawn (seconds). Defaults are 120s:'''
Line 66: Line 60:
 
</nowiki></pre>
 
</nowiki></pre>
  
'''Artillery anti-grief:'''
+
'''Artillery dynamic spawns'''
<pre class="hf-code"><nowiki>antigriefing_enabled false</nowiki></pre>
+
 
 +
Artillery dynamic spawns are setup for official maps, these are mostly used to allow event hosts to remove specific artillery pieces in their config without having to use a spawnable object to "block" the piece from being used. You can obtain the dynamic spawn ids from the server log when the map loads. Section ids always start from 0
 +
{| class="wikitable"
 +
! ArtilleryType !! Usage
 +
|-
 +
| FieldGun || Spawns 9PDR
 +
|-
 +
| Howitzer || Spawns Howitzer
 +
|-
 +
|RocketLauncher
 +
|Spawns Rocket Launcher
 +
|-
 +
|Mortar
 +
|Spawns Motar
 +
|-
 +
|None
 +
|Nothing spawns
 +
|-
 +
|Random
 +
|Spawns random artillery piece. Pieces able to spawn are pre-set per spawn point by map developers.
 +
|-
 +
|RandomSymmetric
 +
|Spawns random artillery piece, artillery spawn sections that share the same RandomSymetric ID will spawn the same artillery piece.
 +
|}
 +
<pre class="hf-code"><nowiki>artillery_spawn_override <slotId> <ArtilleryType></nowiki></pre>
  
 
'''Population thresholds''' (gate maps by player counts):
 
'''Population thresholds''' (gate maps by player counts):
Line 76: Line 94:
 
</nowiki></pre>
 
</nowiki></pre>
  
'''Warnings & rotation randomisation:'''
+
'''Warnings & rotation randomization:'''
 
<pre class="hf-code"><nowiki>
 
<pre class="hf-code"><nowiki>
 
show_serverperformance_warning true
 
show_serverperformance_warning true
Line 90: Line 108:
 
</nowiki></pre>
 
</nowiki></pre>
  
==Fro
+
==Frontlines specific commands==
 +
Use this to set the game type to Frontlines (defaults to false).
 +
[[File:Frontlines Config Example.png|thumb|Example frontlines config]]
 +
<pre class="hf-code"><nowiki>frontlines_mode true</nowiki></pre>
 +
 
 +
== Auto Shutdown/Restart System ==
 +
An auto-shutdown and auto-restart system can be configured in the config or via the [https://docs.google.com/document/d/1eljq4DgrJ1sD44rWTKnGzYgckh7EBs5AlfKABzGwclM VapuriLoadTester] launcher.
 +
 
 +
=== Auto Shutdown ===
 +
The server can shut itself down after a set number of minutes (doesn’t require VLT). VLT helper also closes on shutdown.
 +
 
 +
Define the interval:
 +
<pre class="hf-code"><nowiki>server_autoshutdown_interval_minutes 240</nowiki></pre>
 +
 
 +
If the round is still running, the server won’t wait; it proceeds after ''interval + overtime''. Make sure players get warned.
 +
<pre class="hf-code"><nowiki>server_autoshutdown_overtime_minutes 10</nowiki></pre>
 +
 
 +
Broadcast message and frequency:
 +
<pre class="hf-code"><nowiki>
 +
server_autoshutdown_broadcasted_message Server will be shutting down.
 +
server_autoshutdown_broadcasted_message_interval_minutes 2
 +
</nowiki></pre>
 +
 
 +
=== Auto Restart ===
 +
Restarts the server every N minutes (doesn’t require VLT). It waits for round end unless overtime is hit.
 +
 
 +
Interval:
 +
<pre class="hf-code"><nowiki>server_autorestart_interval_minutes 320</nowiki></pre>
 +
 
 +
Overtime and messaging:
 +
<pre class="hf-code"><nowiki>
 +
server_autorestart_overtime_minutes 10
 +
server_autorestart_broadcasted_message Auto restart at the end of the round.
 +
server_autorestart_broadcasted_message_interval_minutes 2
 +
</nowiki></pre>
 +
 
 +
=Map Rotations=
 +
A number of example configs ship with the server files. Big Mamba also compiled AGS examples: [https://github.com/ankit2951/holdfast-config here].
 +
 
 +
==Basic Map Settings==
 +
'''In Progress''' – common per-rotation keys:
 +
<pre class="hf-code"><nowiki>
 +
map_name
 +
game_mode
 +
game_type
 +
round_time_minutes
 +
ships_respawn_timer
 +
allow_midround_spawning
 +
allow_faction_switching
 +
allow_spectating
 +
max_player_respawns
 +
deathmatch_max_kills
 +
reinforcements_per_faction
 +
minimum_players
 +
maximum_players
 +
melee_weapons_only
 +
faction_balancing
 +
faction_balancing_discrepancy_amount
 +
max_accumulated_faction_points
 +
ships_preset
 +
faction_attacking
 +
faction_defending
 +
max_tickets
 +
ships_spawn
 +
rowboat_cooldown_timer
 +
rowboat_cooldown_while_sinking_timer
 +
ships_spacemode
 +
sappers_buildlimit
 +
sappers_attacking_starting_materials
 +
sappers_defending_starting_materials
 +
max_player_respawn
 +
officers_spawn_mounted
 +
</nowiki></pre>
 +
 
 +
Spawn wave timers (defaults shown). ''vehicle'' = Cavalry; ''dynamic'' = Frontlines tables.
 +
<pre class="hf-code"><nowiki>
 +
wave_spawn_time_seconds 10
 +
wave_spawn_vehicle_time_seconds 20
 +
wave_spawn_dynamic_time_seconds 15
 +
</nowiki></pre>
 +
 
 +
Spawn immunity (max 5s):
 +
<pre class="hf-code"><nowiki>spawn_immunity_timer 5</nowiki></pre>
 +
 
 +
== Melee Arena Settings ==
 +
First round grace to let players load/spawn:
 +
<pre class="hf-code"><nowiki>round_spawn_close_timer_seconds 45</nowiki></pre>
 +
Subsequent rounds:
 +
<pre class="hf-code"><nowiki>round_spawn_close_timer_seconds_between_rounds 15</nowiki></pre>
 +
Rounds to win:
 +
<pre class="hf-code"><nowiki>amount_of_rounds 50</nowiki></pre>
 +
 
 +
===Maps===
 +
Visit [[Maps|Maps]] or [[Server Configuration Enums|Server Configuration Enums]] for a full list of all maps.
 +
 
 +
==Officer orders==
 +
Enable/disable officer orders system:
 +
<pre class="hf-code"><nowiki>class_system_orders <true/false></nowiki></pre>
 +
Enable/disable reinforcement system (flag in NaW, table in Frontlines):
 +
<pre class="hf-code"><nowiki>class_system_orders_reinforce <true/false></nowiki></pre>
 +
Reinforcement cooldown (seconds):
 +
<pre class="hf-code"><nowiki>class_system_orders_reinforce_cooldown 240</nowiki></pre>
 +
Spawn limit on placed flag (set to -1 on Frontlines):
 +
<pre class="hf-code"><nowiki>class_system_orders_reinforce_limit 25</nowiki></pre>
 +
 
 +
Cooldowns (seconds):
 +
<pre class="hf-code"><nowiki>
 +
class_system_orders_reinforce_cooldown
 +
class_system_orders_charge_cooldown
 +
class_system_orders_formline_cooldown
 +
class_system_orders_breakrankandfollow_cooldown
 +
class_system_orders_fireatwill_cooldown
 +
class_system_orders_makeready_cooldown
 +
class_system_orders_fireorder_cooldown
 +
class_system_orders_ceasefire_cooldown
 +
class_system_orders_sergeantformline_cooldown
 +
class_system_orders_sergeantrally_cooldown
 +
class_system_orders_sergeantfireatwill_cooldown
 +
class_system_orders_sergeantfireorder_cooldown
 +
class_system_orders_sergeantceasefire_cooldown
 +
class_system_orders_sergeantmakeready_cooldown
 +
class_system_orders_sergeantbreakrankandfollow_cooldown
 +
</nowiki></pre>
 +
 
 +
==Conquest config==
 +
(Also applies to Frontlines **Offensive**.)
 +
<pre class="hf-code"><nowiki>
 +
conquest_tick_reward 3
 +
conquest_ticker_time_seconds 1
 +
conquest_tickets_per_capture 100
 +
conquest_max_tickets 7500
 +
conquest_territory_lock_time_seconds 0
 +
</nowiki></pre>
 +
 
 +
==Weather and time of day==
 +
Preset on map load (set to <code>none</code> for random valid presets):
 +
<pre class="hf-code"><nowiki>nature_preset none</nowiki></pre>
 +
 
 +
==Friendly fire==
 +
Enable FF:
 +
<pre class="hf-code"><nowiki>friendly_fire <true/false></nowiki></pre>
 +
Melee “bounce” when FF is off:
 +
<pre class="hf-code"><nowiki>friendly_fire_melee_bounce <true/false></nowiki></pre>
 +
Reflect % of FF damage back to attacker:
 +
<pre class="hf-code"><nowiki>damage_split 50</nowiki></pre>
 +
 
 +
==Frontlines==
 +
Domination time (Offensive):
 +
<pre class="hf-code"><nowiki>frontline_offensive_domination_duration_seconds 120</nowiki></pre>
 +
 
 +
Capture point override:
 +
<pre class="hf-code"><nowiki>capture_point_override <objective> <num_respawns> <time_for_1_person_to_capture> <max_people_affecting_time></nowiki></pre>
 +
Example:
 +
<pre class="hf-code"><nowiki>
 +
capture_point_override A 150 30 1
 +
capture_point_override B 175 30 1
 +
capture_point_override C 350 60 2
 +
capture_point_override D -1 90 3
 +
</nowiki></pre>
 +
 
 +
==Automatic Console Commands==
 +
You can issue any [[Remote_Console_Commands|RCON]] at rotation start to reset defaults, spawn bots, or stage scenarios.
 +
 
 +
<div class="mw-collapsible">
 +
; '''Override Commands'''
 +
Server administrators can craft RP scenarios: limits per class, spawn lists per point, starting equipment, racks, props, artillery, etc.
 +
 
 +
=== Land ===
 +
====Class Limit Override On Spawn Points====
 +
[[File:200 Carpenters vs 200 Rifleman.png|thumb|right|Tahir Desert Army Battlefield – 200 Carpenters vs 200 Riflemen]]
 +
;<code>spawn_override &lt;Spawn Point&gt; &lt;[[Server_Configuration_Enums#Class|Class]]&gt; &lt;Class Limit&gt;</code>
 +
* <code>&lt;Spawn Point&gt;</code> = A/B/C… (see spawn menu)
 +
* Overwrites the classes available at that point.
 +
 
 +
Example (200 Carpenters vs 200 Riflemen):
 +
<pre class="hf-code"><nowiki>
 +
# Override Commands
 +
spawn_override A Carpenter 200
 +
spawn_override B Rifleman 200
 +
</nowiki></pre>
 +
 
 +
'''exclusive_modded_uniforms''' – restrict to mod uniforms:
 +
<pre class="hf-code"><nowiki>exclusive_modded_uniforms british french</nowiki></pre>
 +
 
 +
'''Starting Weapon Override'''
 +
<pre class="hf-code"><nowiki>
 +
starting_weapons_selection_override <Faction> <Class> <MaxFirearms> <MaxMelee> <WeaponClass1>* <WeaponClass2>* <WeaponClass3>*
 +
</nowiki></pre>
 +
Multiple types in a slot: separate with commas.
 +
Example:
 +
<pre class="hf-code"><nowiki>
 +
# Override Commands
 +
starting_weapons_selection_override British Grenadier 4 2 Rifle
 +
starting_weapons_selection_override French  Grenadier 4 3 Rifle Pike,Spontoon,Sword Pistol
 +
</nowiki></pre>
 +
 
 +
'''Starting Weapon Bayonet Override'''
 +
<pre class="hf-code"><nowiki>starting_weapons_bayonet_enabled <Faction> <Class> <true/false></nowiki></pre>
 +
 
 +
'''Firearm Ammo Override'''
 +
<pre class="hf-code"><nowiki>firearm_ammo_override <Faction> <Class> <Firearm> <StartingAmmo> <LoadedInBarrel> <MaxCarry></nowiki></pre>
 +
Example:
 +
<pre class="hf-code"><nowiki>
 +
# Override Commands
 +
firearm_ammo_override British LightInfantry Musket_NewLandPatternBrownBess 2 0
 +
firearm_ammo_override French  LightInfantry Musket_NewLandPatternBrownBess 0 1
 +
</nowiki></pre>
 +
 
 +
'''Weapon Class Ammo Override'''
 +
<pre class="hf-code"><nowiki>weapon_class_ammo_override <Faction> <Class> <WeaponClass> <StartingAmmo> <LoadedInBarrel> <MaxCarry></nowiki></pre>
 +
 
 +
'''Sapper Buildable Defences – Limits'''
 +
<pre class="hf-code"><nowiki>sappers_buildlimit <EmplacementType> <attacking|defending> <Limit></nowiki></pre>
 +
Example:
 +
<pre class="hf-code"><nowiki>
 +
# Sapper Configuration Commands
 +
sappers_buildlimit ExplosiveBarrel defending 0
 +
</nowiki></pre>
 +
 
 +
'''Sapper Starting Materials'''
 +
<pre class="hf-code"><nowiki>
 +
sappers_attacking_starting_materials <MaterialLimit>
 +
sappers_defending_starting_materials <MaterialLimit>
 +
</nowiki></pre>
 +
Example:
 +
<pre class="hf-code"><nowiki>
 +
# Sapper Configuration Commands
 +
sappers_attacking_starting_materials 50
 +
sappers_defending_starting_materials 200
 +
</nowiki></pre>
 +
 
 +
'''Spawn Overrides (land)'''
 +
<pre class="hf-code"><nowiki>
 +
objects_override spawnsection <Position> <Rotation> <ID>,<Spawn_Name>,<Category>,<Attacking|Defending|Neutral>,<SizeX>,<SizeY>
 +
</nowiki></pre>
 +
Categories: BaseSpawn, FortifiedPosition, OpenPlains, Farm, Field, Village, Camp, Lodge, Church, Ruins, Port, Ship.
 +
 
 +
=== Naval ===
 +
====Class Limit Override On Ships====
 +
<pre class="hf-code"><nowiki>ships_spawn_detail_override <ShipType> <Faction> <Class> <ClassLimit></nowiki></pre>
 +
Example:
 +
<pre class="hf-code"><nowiki>
 +
# Override Commands
 +
ships_spawn_detail_override Frigate50gun British Rifleman 200
 +
ships_spawn_detail_override Frigate50gun French  Rifleman 200
 +
</nowiki></pre>
 +
 
 +
====Ship Spawning & Custom Ship Presets====
 +
Set <code>ships_preset 37</code> first, then:
 +
<pre class="hf-code"><nowiki>ships_spawn <ShipType> <Amount> <Faction> <Color> <ShipName></nowiki></pre>
 +
Example:
 +
<pre class="hf-code"><nowiki>
 +
# Override Commands
 +
ships_preset 37
 +
ships_spawn Frigate50gun 1 British 0
 +
ships_spawn Rocketboat 10 French 4
 +
</nowiki></pre>
 +
 
 +
====Health Override For Ships====
 +
<pre class="hf-code"><nowiki>ships_health_detail_override <ShipType> <Faction> <HP></nowiki></pre>
 +
Defaults: Frigate 5500; 12GunBrigg 3000; 8GunSchooner 2000; 2GunSchooner 1250; Gunboat 500; Rocketboat 500.
 +
Example:
 +
<pre class="hf-code"><nowiki>
 +
# Override Commands
 +
ships_health_detail_override Frigate50gun British 20000
 +
ships_health_detail_override Frigate50gun French 70
 +
</nowiki></pre>
 +
 
 +
====Ship Spacemode====
 +
<pre class="hf-code"><nowiki>ships_spacemode true</nowiki></pre>
 +
 
 +
====Spawn Overrides (naval)====
 +
<pre class="hf-code"><nowiki>objects_override shipspawnsection <Position> <Rotation></nowiki></pre>
 +
</div>
 +
 
 +
===Object Override===
 +
Objects can be added following [[Map_Editing#Positioning|Map Editing]].
 +
 
 +
=Map Voting=
 +
<div class="mw-collapsible">
 +
==Basics==
 +
Global settings (not in a rotation):
 +
<pre class="hf-code"><nowiki>
 +
map_voting_enabled true
 +
map_voting_duration 15
 +
map_voting_allow_same_map false
 +
map_voting_history_count 3
 +
map_voting_max_choices 3
 +
map_voting_gameplay_modes ArmyBattlefield ArmyBattlefield ArmyConquest ArmySiege
 +
map_voting_log_file_path logs_output/mapvotinglogs.txt
 +
</nowiki></pre>
 +
 
 +
==Help my map can't be voted for==
 +
Per-rotation flags (buckets by player count & mode). Set all to <code>false</code> to ignore; set all to <code>true</code> to allow regardless of count.
 +
<pre class="hf-code"><nowiki>
 +
population_verylow_playable  <true/false>
 +
population_low_playable      <true/false>
 +
population_medium_playable  <true/false>
 +
population_high_playable    <true/false>
 +
</nowiki></pre>
 +
Note: load order matters—put modded maps first in the mod load order.
 +
 
 +
==Map vote history by population==
 +
<pre class="hf-code"><nowiki>
 +
map_voting_history_count_verylow 1
 +
map_voting_history_count_low    2
 +
map_voting_history_count_medium  4
 +
map_voting_history_count_high    10
 +
</nowiki></pre>
 +
 
 +
==Can I manually trigger map voting?==
 +
Not directly. Workaround: end the round via a win-condition object or the dynamic win-condition flag.
 +
 
 +
==Including a “Random” option==
 +
<pre class="hf-code"><nowiki>map_voting_include_random_choice <true/false></nowiki></pre>
 +
</div>
 +
 
 +
= Workshop Mods =
 +
For creators, see [[Script Modding Guide]].
 +
 
 +
== Install mods ==
 +
Global (not in a rotation):
 +
<pre class="hf-code"><nowiki>
 +
mods_installed_server_only <steamid>
 +
mods_installed <steamid>
 +
</nowiki></pre>
 +
Per-rotation (requires the SteamID to be installed on server):
 +
<pre class="hf-code"><nowiki>
 +
load_mod <steamid>              # loads on client and server
 +
load_mod_client_only <steamid>  # loads only on clients
 +
load_mod_server_only <steamid>  # loads only on server
 +
</nowiki></pre>
 +
 
 +
== Mod Variables ==
 +
<pre class="hf-code"><nowiki>
 +
mod_variable <string>        # global; not in a rotation
 +
mod_variable_local <string>  # only for the rotation it’s in
 +
</nowiki></pre>
 +
 
 +
=Discord Admin Webhook Logger=
 +
==Basics==
 +
Enable Discord developer mode (Settings → Advanced). 
 +
Warnings show admin PMs, slays, kicks, revives, slaps. 
 +
Banmutes log config-writing actions (kicks, VOIP/text mutes, VOIP spammer).
 +
 
 +
<pre class="hf-code"><nowiki>
 +
discord_webhook_warning_tag_admin <@!ID> | <@!ID>
 +
discord_webhook_warning_id <webhookID>
 +
discord_webhook_warning_token <webhookToken>
 +
 
 +
discord_webhook_banmute_tag_admin <@!ID> | <@!ID>
 +
discord_webhook_banmute_id <webhookID>
 +
discord_webhook_banmute_token <webhookToken>
 +
</nowiki></pre>
 +
 
 +
==How to setup==
 +
* Put these in the '''global''' settings area (not inside a rotation).
 +
* Create two webhooks in Discord (one for warnings, one for ban/mute).
 +
* Click **Copy Webhook URL** and open it; extract the <code>id</code> and <code>token</code> and paste into the *_id/*_token settings.
 +
* <code>_tag_admin</code> lets you prefix text or pings. To ping a user, enable Dev Mode, right-click → **Copy ID** and use <code>&lt;@!USERID&gt;</code>.
 +
 
 +
If configured correctly, each admin action posts:
 +
* Action performed
 +
* Title from <code>_tag_admin</code>
 +
* Admin (linked to Steam)
 +
* Target user (linked to Steam)
 +
* Server name
 +
* Reason
 +
* Date/time
 +
 
 +
{|style="margin: 0 auto;"
 +
| [[File:DiscordWebhookCopyUrl.png|thumb|Where to create webhooks]]
 +
| [[File:DiscordWebhookURL.png|thumb|Where to find the id and token]]
 +
| [[File:DiscordWebhookPreview.png|thumb|Discord admin webhook example]]
 +
|}

Latest revision as of 23:12, 11 December 2025

Server Configuration Files

Example Configuration File

Server configuration files are plain text files containing settings defining the server setup and the maps/game modes available in rotation. There are three types of lines:

  • Setting lines: <setting> <value> – the important ones.
  • Comment lines: starting with # – ignored; good for notes and saved rotations.
  • Empty lines: spacing only – ignored.

The usual layout: global server settings at the top, followed by a list of map-rotation settings. Further examples ship with the server (see Server Hosting).

Server-Wide Settings

These define how the server shows up to players, how it talks to the server browser, and basic restrictions.

Ports – all must be unique per instance on the same machine:

server_port 20100
steam_communications_port 8700
steam_query_port 27000

Display & access:

server_name New Server - Army Battlefield
server_welcome_message Welcome to my new game server!
server_region europe
server_admin_password ChangeThisPassword
#server_password ChangeThisPassword
server_intro_title Welcome to my server!
server_intro_body Greetings fellow humans
  • server_password is optional (leave commented to keep the server public).
  • server_admin_password is used for Remote Console Commands.
  • server_intro_* shows a join popup.

Server regions (shown in the browser):

Region codes
europe usa usaeast usawest australia
china japan russia southkorea brazil

Broadcast mode – network usage focus for close-range combat:

Parameter Usage
Standard Reduced packet rate on close range (high player count). Default.
Competitive Highest bandwidth; use only for Melee Arena with lower player counts. (Max of 64 players)

Example:

network_broadcast_mode Standard

Artillery respawn (seconds). Defaults are 120s:

artillery_fieldgun_respawn_timer 120
artillery_rocketlauncher_respawn_timer 120

Artillery dynamic spawns

Artillery dynamic spawns are setup for official maps, these are mostly used to allow event hosts to remove specific artillery pieces in their config without having to use a spawnable object to "block" the piece from being used. You can obtain the dynamic spawn ids from the server log when the map loads. Section ids always start from 0

ArtilleryType Usage
FieldGun Spawns 9PDR
Howitzer Spawns Howitzer
RocketLauncher Spawns Rocket Launcher
Mortar Spawns Motar
None Nothing spawns
Random Spawns random artillery piece. Pieces able to spawn are pre-set per spawn point by map developers.
RandomSymmetric Spawns random artillery piece, artillery spawn sections that share the same RandomSymetric ID will spawn the same artillery piece.
artillery_spawn_override <slotId> <ArtilleryType>

Population thresholds (gate maps by player counts):

population_low_min_players 30
population_medium_min_players 50
population_high_min_players 100

Warnings & rotation randomization:

show_serverperformance_warning true
map_rotation_start_randomise true

Objective capture (Conquest/flag modes):

conquest_stealthcap_reqplayers_verylow 0
conquest_stealthcap_reqplayers_low 2
conquest_stealthcap_reqplayers_medium 3
conquest_stealthcap_reqplayers_high 4

Frontlines specific commands

Use this to set the game type to Frontlines (defaults to false).

Example frontlines config
frontlines_mode true

Auto Shutdown/Restart System

An auto-shutdown and auto-restart system can be configured in the config or via the VapuriLoadTester launcher.

Auto Shutdown

The server can shut itself down after a set number of minutes (doesn’t require VLT). VLT helper also closes on shutdown.

Define the interval:

server_autoshutdown_interval_minutes 240

If the round is still running, the server won’t wait; it proceeds after interval + overtime. Make sure players get warned.

server_autoshutdown_overtime_minutes 10

Broadcast message and frequency:

server_autoshutdown_broadcasted_message Server will be shutting down.
server_autoshutdown_broadcasted_message_interval_minutes 2

Auto Restart

Restarts the server every N minutes (doesn’t require VLT). It waits for round end unless overtime is hit.

Interval:

server_autorestart_interval_minutes 320

Overtime and messaging:

server_autorestart_overtime_minutes 10
server_autorestart_broadcasted_message Auto restart at the end of the round.
server_autorestart_broadcasted_message_interval_minutes 2

Map Rotations

A number of example configs ship with the server files. Big Mamba also compiled AGS examples: here.

Basic Map Settings

In Progress – common per-rotation keys:

map_name
game_mode
game_type
round_time_minutes
ships_respawn_timer
allow_midround_spawning
allow_faction_switching
allow_spectating
max_player_respawns
deathmatch_max_kills
reinforcements_per_faction
minimum_players
maximum_players
melee_weapons_only
faction_balancing
faction_balancing_discrepancy_amount
max_accumulated_faction_points
ships_preset
faction_attacking
faction_defending
max_tickets
ships_spawn
rowboat_cooldown_timer
rowboat_cooldown_while_sinking_timer
ships_spacemode
sappers_buildlimit
sappers_attacking_starting_materials
sappers_defending_starting_materials
max_player_respawn
officers_spawn_mounted

Spawn wave timers (defaults shown). vehicle = Cavalry; dynamic = Frontlines tables.

wave_spawn_time_seconds 10
wave_spawn_vehicle_time_seconds 20
wave_spawn_dynamic_time_seconds 15

Spawn immunity (max 5s):

spawn_immunity_timer 5

Melee Arena Settings

First round grace to let players load/spawn:

round_spawn_close_timer_seconds 45

Subsequent rounds:

round_spawn_close_timer_seconds_between_rounds 15

Rounds to win:

amount_of_rounds 50

Maps

Visit Maps or Server Configuration Enums for a full list of all maps.

Officer orders

Enable/disable officer orders system:

class_system_orders <true/false>

Enable/disable reinforcement system (flag in NaW, table in Frontlines):

class_system_orders_reinforce <true/false>

Reinforcement cooldown (seconds):

class_system_orders_reinforce_cooldown 240

Spawn limit on placed flag (set to -1 on Frontlines):

class_system_orders_reinforce_limit 25

Cooldowns (seconds):

class_system_orders_reinforce_cooldown
class_system_orders_charge_cooldown
class_system_orders_formline_cooldown
class_system_orders_breakrankandfollow_cooldown
class_system_orders_fireatwill_cooldown
class_system_orders_makeready_cooldown
class_system_orders_fireorder_cooldown
class_system_orders_ceasefire_cooldown
class_system_orders_sergeantformline_cooldown
class_system_orders_sergeantrally_cooldown
class_system_orders_sergeantfireatwill_cooldown
class_system_orders_sergeantfireorder_cooldown
class_system_orders_sergeantceasefire_cooldown
class_system_orders_sergeantmakeready_cooldown
class_system_orders_sergeantbreakrankandfollow_cooldown

Conquest config

(Also applies to Frontlines **Offensive**.)

conquest_tick_reward 3
conquest_ticker_time_seconds 1
conquest_tickets_per_capture 100
conquest_max_tickets 7500
conquest_territory_lock_time_seconds 0

Weather and time of day

Preset on map load (set to none for random valid presets):

nature_preset none

Friendly fire

Enable FF:

friendly_fire <true/false>

Melee “bounce” when FF is off:

friendly_fire_melee_bounce <true/false>

Reflect % of FF damage back to attacker:

damage_split 50

Frontlines

Domination time (Offensive):

frontline_offensive_domination_duration_seconds 120

Capture point override:

capture_point_override <objective> <num_respawns> <time_for_1_person_to_capture> <max_people_affecting_time>

Example:

capture_point_override A 150 30 1
capture_point_override B 175 30 1
capture_point_override C 350 60 2
capture_point_override D -1 90 3

Automatic Console Commands

You can issue any RCON at rotation start to reset defaults, spawn bots, or stage scenarios.

Override Commands

Server administrators can craft RP scenarios: limits per class, spawn lists per point, starting equipment, racks, props, artillery, etc.

Land

Class Limit Override On Spawn Points

Tahir Desert Army Battlefield – 200 Carpenters vs 200 Riflemen
spawn_override <Spawn Point> <Class> <Class Limit>
  • <Spawn Point> = A/B/C… (see spawn menu)
  • Overwrites the classes available at that point.

Example (200 Carpenters vs 200 Riflemen):

# Override Commands
spawn_override A Carpenter 200
spawn_override B Rifleman 200

exclusive_modded_uniforms – restrict to mod uniforms:

exclusive_modded_uniforms british french

Starting Weapon Override

starting_weapons_selection_override <Faction> <Class> <MaxFirearms> <MaxMelee> <WeaponClass1>* <WeaponClass2>* <WeaponClass3>*

Multiple types in a slot: separate with commas. Example:

# Override Commands
starting_weapons_selection_override British Grenadier 4 2 Rifle
starting_weapons_selection_override French  Grenadier 4 3 Rifle Pike,Spontoon,Sword Pistol

Starting Weapon Bayonet Override

starting_weapons_bayonet_enabled <Faction> <Class> <true/false>

Firearm Ammo Override

firearm_ammo_override <Faction> <Class> <Firearm> <StartingAmmo> <LoadedInBarrel> <MaxCarry>

Example:

# Override Commands
firearm_ammo_override British LightInfantry Musket_NewLandPatternBrownBess 2 0
firearm_ammo_override French  LightInfantry Musket_NewLandPatternBrownBess 0 1

Weapon Class Ammo Override

weapon_class_ammo_override <Faction> <Class> <WeaponClass> <StartingAmmo> <LoadedInBarrel> <MaxCarry>

Sapper Buildable Defences – Limits

sappers_buildlimit <EmplacementType> <attacking|defending> <Limit>

Example:

# Sapper Configuration Commands
sappers_buildlimit ExplosiveBarrel defending 0

Sapper Starting Materials

sappers_attacking_starting_materials <MaterialLimit>
sappers_defending_starting_materials <MaterialLimit>

Example:

# Sapper Configuration Commands
sappers_attacking_starting_materials 50
sappers_defending_starting_materials 200

Spawn Overrides (land)

objects_override spawnsection <Position> <Rotation> <ID>,<Spawn_Name>,<Category>,<Attacking|Defending|Neutral>,<SizeX>,<SizeY>

Categories: BaseSpawn, FortifiedPosition, OpenPlains, Farm, Field, Village, Camp, Lodge, Church, Ruins, Port, Ship.

Naval

Class Limit Override On Ships

ships_spawn_detail_override <ShipType> <Faction> <Class> <ClassLimit>

Example:

# Override Commands
ships_spawn_detail_override Frigate50gun British Rifleman 200
ships_spawn_detail_override Frigate50gun French  Rifleman 200

Ship Spawning & Custom Ship Presets

Set ships_preset 37 first, then:

ships_spawn <ShipType> <Amount> <Faction> <Color> <ShipName>

Example:

# Override Commands
ships_preset 37
ships_spawn Frigate50gun 1 British 0
ships_spawn Rocketboat 10 French 4

Health Override For Ships

ships_health_detail_override <ShipType> <Faction> <HP>

Defaults: Frigate 5500; 12GunBrigg 3000; 8GunSchooner 2000; 2GunSchooner 1250; Gunboat 500; Rocketboat 500. Example:

# Override Commands
ships_health_detail_override Frigate50gun British 20000
ships_health_detail_override Frigate50gun French 70

Ship Spacemode

ships_spacemode true

Spawn Overrides (naval)

objects_override shipspawnsection <Position> <Rotation>

Object Override

Objects can be added following Map Editing.

Map Voting

Basics

Global settings (not in a rotation):

map_voting_enabled true
map_voting_duration 15
map_voting_allow_same_map false
map_voting_history_count 3
map_voting_max_choices 3
map_voting_gameplay_modes ArmyBattlefield ArmyBattlefield ArmyConquest ArmySiege
map_voting_log_file_path logs_output/mapvotinglogs.txt

Help my map can't be voted for

Per-rotation flags (buckets by player count & mode). Set all to false to ignore; set all to true to allow regardless of count.

population_verylow_playable  <true/false>
population_low_playable      <true/false>
population_medium_playable   <true/false>
population_high_playable     <true/false>

Note: load order matters—put modded maps first in the mod load order.

Map vote history by population

map_voting_history_count_verylow 1
map_voting_history_count_low     2
map_voting_history_count_medium  4
map_voting_history_count_high    10

Can I manually trigger map voting?

Not directly. Workaround: end the round via a win-condition object or the dynamic win-condition flag.

Including a “Random” option

map_voting_include_random_choice <true/false>

Workshop Mods

For creators, see Script Modding Guide.

Install mods

Global (not in a rotation):

mods_installed_server_only <steamid>
mods_installed <steamid>

Per-rotation (requires the SteamID to be installed on server):

load_mod <steamid>              # loads on client and server
load_mod_client_only <steamid>  # loads only on clients
load_mod_server_only <steamid>  # loads only on server

Mod Variables

mod_variable <string>        # global; not in a rotation
mod_variable_local <string>  # only for the rotation it’s in

Discord Admin Webhook Logger

Basics

Enable Discord developer mode (Settings → Advanced). Warnings show admin PMs, slays, kicks, revives, slaps. Banmutes log config-writing actions (kicks, VOIP/text mutes, VOIP spammer).

discord_webhook_warning_tag_admin <@!ID> | <@!ID>
discord_webhook_warning_id <webhookID>
discord_webhook_warning_token <webhookToken>

discord_webhook_banmute_tag_admin <@!ID> | <@!ID>
discord_webhook_banmute_id <webhookID>
discord_webhook_banmute_token <webhookToken>

How to setup

  • Put these in the global settings area (not inside a rotation).
  • Create two webhooks in Discord (one for warnings, one for ban/mute).
  • Click **Copy Webhook URL** and open it; extract the id and token and paste into the *_id/*_token settings.
  • _tag_admin lets you prefix text or pings. To ping a user, enable Dev Mode, right-click → **Copy ID** and use <@!USERID>.

If configured correctly, each admin action posts:

  • Action performed
  • Title from _tag_admin
  • Admin (linked to Steam)
  • Target user (linked to Steam)
  • Server name
  • Reason
  • Date/time
Where to create webhooks
Where to find the id and token
Discord admin webhook example