STW suite connection
STW Civilians Spawner is a server-authoritative STW (ScienceTechWorks) system for automatic civilian settlement zones. It is designed to work with the ordinary Ambient Civilians system while managing the locations it creates itself. No player-side setup is required.
What it adds
After a short startup delay, the server scans terrain buildings and settlement signals to create small, medium, and large civilian zones. It recognises ordinary building groups as well as qualifying isolated houses and farms, church-centred villages, and house clusters that cross normal scan-cell boundaries.
Settlement-first detection
Building counts, cluster radii, and density thresholds determine zone size. Additional urban centers can improve coverage in large towns and cities.
Controlled exclusion areas
Airport, military, and optional harbour exclusions prevent inappropriate zones, while dense genuine settlements can be allowed through selected outer safety bands.
Restart-safe recovery
Calculated zones can be cached per scenario and map. Restoring is delayed and batched by default to avoid competing with server startup.
For players
There is no player menu or client-side configuration. Civilian zones are part of the server’s active scenario. If the administrator enables them, zone markers display when the map is at or above the configured zoom threshold.
For Game Masters and scenario hosts
This mod manages automatic civilian zones from the server world; it does not add a manual placement tool. removeExistingAutomaticZones defaults to true, and disableAmbientCiviliansAutomaticZones defaults to true: the latter sets Ambient Civilians’ automatically discovered location counts to zero while retaining STW zones and civilian vehicles.
Use settlementCacheRevision to deliberately force a new terrain scan after changing detection logic or when you want to invalidate an existing calculated-zone cache.
Server setup
- Install and enable STW Civilians Spawner on the server, then start the intended scenario and map once.
- The mod creates
$profile:STW/Civilians/STWCiviliansConfig.json. - Stop the server before editing the file. Back it up, make valid JSON changes, and restart.
- Values are validated on startup; cached zones are either restored or newly calculated as the settings require.
Configuration
The main configuration is $profile:STW/Civilians/STWCiviliansConfig.json. The file is generated after the first server start. Defaults below are the current code defaults; older files are migrated and validated on startup. Distances are metres unless stated otherwise.
Startup, markers, persistence, and activation
| Parameter | Default | What it does |
|---|---|---|
generationDelaySeconds | 12 | Waits this many seconds after startup before scanning and generating settlement zones. |
showCivilianMarkers | true | Displays generated civilian-zone markers on the map. |
markerZoomThreshold | 1.5 | Minimum map zoom, in pixels per metre, at which markers are shown. Set to 0 to remove the zoom filter. |
removeExistingAutomaticZones | true | Removes previously existing automatically generated civilian zones before STW creates its managed zones. |
disableAmbientCiviliansAutomaticZones | true | Sets Ambient Civilians' automatically discovered location counts to zero. STW zones and civilian vehicles remain active. |
persistenceEnabled | true | Saves calculated zones and reuses them after restarting the same scenario and map. |
settlementCacheRevision | 21 | Version tag for the calculated-zone cache. Increase it to force a fresh terrain scan after changing detection or coverage settings. |
persistenceRecoveryDelaySeconds | 120 | Additional delay before cached zones are restored. Set to 0 to restore immediately after the normal startup delay. |
persistenceRecoveryBatchSize | 1 | Number of cached zones created in each recovery batch. |
persistenceRecoveryBatchDelayMilliseconds | 1000 | Pause between recovery batches, reducing startup load. |
dynamicZoneActivationEnabled | true | Enables distance-based activation and deactivation of generated zones around players. |
dynamicZoneActivationRadius / dynamicZoneDeactivationRadius | 300 / 450 | Zones activate within the smaller radius and deactivate only after players are beyond the larger radius, preventing rapid toggling at the boundary. |
maximumZones | 128 | Global upper limit for generated civilian zones. |
Settlement detection
| Parameter | Default | What it does |
|---|---|---|
scanCellSize / buildingQueryHeight | 180 / 120 | Sets the horizontal scan-cell size and the vertical extent used when querying buildings. |
minimumBuildingsPerCell | 3 | Minimum buildings in a normal scan cell before it is considered settlement evidence. |
detectIsolatedHousesAndFarms / isolatedBuildingDetectionRadius | true / 120 | Includes qualifying isolated homes and farms, looking for nearby building evidence within this radius. |
useChurchesAsSettlementAnchors / churchSettlementAnchorRadius / churchSettlementMinimumBuildings | true / 250 / 3 | Uses churches as village anchors when at least the specified number of buildings is found within the anchor radius. |
useHouseClustersAsSettlements / houseClusterSettlementRadius / minimumHousesForSettlement | true / 250 / 3 | Recognises a settlement when the specified number of recognised houses cluster within the radius, even across scan-cell boundaries. |
mediumBuildingThreshold / largeBuildingThreshold | 6 / 32 | Building-count thresholds used to classify medium and large settlement zones. |
mediumCountRadius / largeCountRadius | 260 / 430 | Radii in which buildings are counted for medium and large classification. |
maximumDistanceFromBuilding | 90 | Maximum distance a generated zone centre may be from a qualifying building. |
Coverage, spacing, and urban centres
| Parameter | Default | What it does |
|---|---|---|
prioritizeSettlementCoverage / initialSettlementCoverageSeparation | true / 300 | Prioritises broad settlement coverage first, keeping initial selected centres at least this far apart. |
minimumSmallZoneSeparation / minimumMediumZoneSeparation / minimumLargeZoneSeparation | 260 / 360 / 460 | Minimum spacing between small, medium, and large zone centres. |
enableAdditionalUrbanCenters | true | Adds multiple useful centres inside large urban settlements. |
additionalSmallCenterSeparation / additionalMediumCenterSeparation / additionalLargeCenterSeparation | 100 / 160 / 220 | Spacing used when placing additional small, medium, and large urban centres. |
zoneDistributionGridSize / maximumSmallZonesPerDistributionRegion | 4 / 4 | Divides the map into a grid for regional budget balancing, and caps generic small zones in each region so other settlement types retain capacity. |
scanDelayMilliseconds | 2 | Pause between scan operations, allowing the server to share time with other work. |
populationInfrastructureExclusionRadius / buildingSampleMinimumSeparation | 35 / 8 | Controls exclusion around population infrastructure and the minimum spacing between sampled buildings used by the detector. |
authoredCityCoverageRadius / maximumZonesPerAuthoredCity / authoredCityZoneCoverageRadius / authoredCityCenterSeparation / authoredMultiCenterMinimumBuildings | 900 / 6 / 180 / 180 / 64 | Controls recognition and subdivision of authored cities: coverage radius, per-city zone cap, zone coverage radius, centre spacing, and the building count required for multi-centre treatment. |
Restricted areas and dense-settlement overrides
| Parameter | Default | What it does |
|---|---|---|
excludeAirports / airportExclusionRadius / airportHardCoreRadius | true / 400 / 180 | Suppresses zones around airports using a normal exclusion radius and a smaller hard-core radius. |
allowDenseSettlementsNearAirports / allowDenseAuthoredSettlementsInAirportHardCore / airportSettlementOverrideBuildingCount | true / true / 12 | Allows sufficiently dense genuine settlements near airports, including authored settlements in the hard core when the building threshold is met. |
excludeMilitaryAreas / militaryExclusionRadius / minimumMilitaryExclusionAnchors | true / 250 / 3 | Suppresses zones around military areas when at least the specified number of military anchors supports the exclusion. |
excludeHarbours / harbourExclusionRadius / minimumHarbourExclusionAnchors | false / 300 / 2 | Optionally suppresses zones around harbours when enough harbour anchors are detected. |
allowDenseSettlementsNearHarbours / harbourSettlementOverrideBuildingCount | true / 9 | Allows dense civilian settlements near excluded harbours when the building count reaches the override threshold. |
settlementCacheRevision after changing detection, coverage, or exclusion settings. Raising maximumZones, lowering separation values, or weakening exclusions can increase civilian coverage and server work substantially.Persistence
Persistence is enabled by default. Calculated settlement zones are saved under $profile:STW/Persistence/STW_Civilians_SCENARIO_MAP.json and reused after restarts of the same scenario and map. Increase settlementCacheRevision to force a fresh scan rather than reuse the cache.
To reset one cached zone set safely, stop the server, identify and back up only its matching civilian persistence file, then move or delete it before restarting.
Captain Sprocket community

Captain Sprocket
Arma Reforger server: STW Reforger
Community: https://discord.gg/T2AZp6GGMJ
More STW manuals: STW Online Manuals