Sheldon Spawn Controller
Remove or cap wild creatures by class. Configured through INI on the server.
Under development. This is an early release. Settings and some behavior may change in later versions. Test with a small block list before applying one to a full server.
What it does
Sheldon Spawn Controller removes or limits wild creatures by class name. It acts on the creatures themselves, as they spawn and through a timed background sweep, rather than by editing spawn tables. Because of this it can remove creatures that spawn-config settings such as spawn-weight multipliers or NPC replacements cannot reach, including creatures added by other content mods.
You supply a list of class names. The mod applies the same rules to vanilla creatures, modded creatures, or any other creature class.
Features
- Hard-block a class: set its cap to 0 and it is removed the moment it spawns.
- Cap a class: set its cap to N and up to N are allowed; the sweep removes the rest.
- Acts on the creatures directly, reaching modded creatures that spawn-config edits cannot.
- Two mechanisms, selected with the
Modesetting: removal on spawn and a timed background sweep. - A follow-up check shortly after spawn catches creatures that change class as they spawn, such as creatures converted by another content mod (v5 or newer).
- The sweep processes one region of the map at a time, so it never scans the whole map in one step.
- The block list uses numbered INI keys, so a long list is not limited by line length.
- Optional verbose logging: one server-log line per removal, from both mechanisms (v4 or newer).
- Optional WebSocket control for managing the block list on a running server without a restart. Off by default (v4 or newer).
Modes
The Mode setting selects which mechanism runs.
Buff: creatures on the block list are removed when they spawn. No background sweep runs, so caps are not enforced.Scan: sweep-only. On-spawn removal is disabled; the background sweep removes hard-blocked creatures it finds and trims classes over their cap. Required for caps.Both(default): on-spawn removal plus the sweep. Leave it onBothunless you have a reason not to.
Installation
- Add the mod to your server's mod list.
- Add the
[SheldonSpawnController]block to the server'sGameUserSettings.ini(below). - Restart the server.
The mod affects newly spawned creatures. To remove creatures already in the world, run cheat DestroyWildDinos once after configuring; they respawn under the new rules.
Configuration
Add this to GameUserSettings.ini on the server:
[SheldonSpawnController]
Mode=Both
ScanIntervalSeconds=30
ScanTileRadius=42000
ScanQueryRadius=0
ScanGridWrap=15
bVerboseLog=False
bEnableBridge=False
NumEntriesBlock=2
BlockClass1=Dodo_Character_BP_C
BlockCap1=0
BlockClass2=Bronto_Character_BP_C
BlockCap2=3
Include all of these keys. If a key is missing it falls back to a default: a missing Mode behaves like Both, a missing ScanIntervalSeconds is 0, which disables the sweep, a missing ScanQueryRadius is 0, which uses ScanTileRadius as the query size, a missing bVerboseLog or bEnableBridge is False, and a missing NumEntriesBlock means an empty block list.
Mode:Buff,Scan, orBoth. Which mechanism runs.ScanorBothis required for caps.ScanIntervalSeconds: seconds between sweep steps. Must be above 0 for the sweep to run.ScanTileRadius: spacing of the swept regions, and the size of each sweep query unlessScanQueryRadiusis set. Raise it on larger maps.ScanQueryRadius: size of each sweep query, separate from the region spacing.0(default) usesScanTileRadius, matching earlier versions. On very dense maps a very large query may not return every creature in range — if blocked creatures keep surviving the sweep, use smaller queries on a denser grid, for exampleScanTileRadius=60000,ScanGridWrap=41,ScanQueryRadius=55000,ScanIntervalSeconds=1. Keep it close toScanTileRadiusso region corners stay covered. Read at server start (v5 or newer).ScanGridWrap: the sweep covers aScanGridWrapbyScanGridWrapgrid of regions. Default 15. Raise it on larger maps so the sweep reaches the edges.bVerboseLog:TrueorFalse. Logs to the server game log:SSC controller readyat startup,SSC buff cull <Class>per on-spawn removal,SSC sweep cull <Class>per sweep removal (v4 or newer; earlier versions logged nothing on dedicated servers),SSC buff recheck cull <Class>per follow-up removal, andSSC sweep tile <n>per sweep step (v5 or newer). Useful while dialing in a block list; leaveFalsefor normal operation.bEnableBridge:TrueorFalse. Enables the optional WebSocket control (below). DefaultFalse.NumEntriesBlock: how manyBlockClassN/BlockCapNpairs follow. Must match the count.BlockClassN: the creature's class name. One per numbered entry.BlockCapN:0removes the class.Nallows up to N; the sweep removes extras.
Block list
Entries are numbered, so a long list is not limited by line length:
NumEntriesBlock=3
BlockClass1=Dodo_Character_BP_C
BlockCap1=0
BlockClass2=Raptor_Character_BP_C
BlockCap2=5
BlockClass3=Argent_Character_BP_C
BlockCap3=0
NumEntriesBlock must equal the number of pairs. BlockCapN=0 removes the class; BlockCapN=5 allows up to five, which requires Mode=Scan or Both.
Class names
A class name is the creature's generated class, ending in _C, such as Dodo_Character_BP_C or Rex_Character_BP_C. For modded creatures, check the mod's documentation or confirm the class in game with cheat GMSummon "<ClassName>" 1. Names must match exactly. A wrong name matches nothing and reports no error.
WebSocket control (optional)
Requires v4 or newer — earlier versions could not open the link (fixed in v4).
The mod can connect to an external service to receive block list changes on a running server, with no restart. It is off by default. Enable it only if you run a compatible controller:
bEnableBridge=True
BridgeURL="ws://your-controller-host:port"
BridgeAuthToken=your-shared-token
The BridgeURL value must be quoted. The game truncates an unquoted value at the double slash.
The mod dials out to the address you set and authenticates with the token; it never listens for inbound connections. Over the link a controller can replace, add to, remove from, or clear the block list, switch Mode, adjust the sweep, and query status and per-class removal counts from both mechanisms. Messages are plain delimited text. ScanQueryRadius is read from the INI at server start and is not adjustable over the link.
Notes
- Runs on the server. All configuration is server-side; there is no client-side setup.
- Affects newly spawned creatures. Run
cheat DestroyWildDinosto clear existing ones. - Class names must match exactly.
- Removed creatures despawn with no corpse or loot.
- ARK refills the wild population toward its target, so removing a class does not lower the overall wild count. Other creatures take the freed slots.
- Caps are soft: the sweep visits one region per
ScanIntervalSeconds, so a full pass takesScanGridWrapxScanGridWrapintervals and a capped class oscillates above its cap between visits as the map refills. LowerScanIntervalSeconds(or a smallerScanGridWrapon small maps) tightens it. Hard blocks (cap 0) are instant and unaffected. - On very large maps, raise
ScanGridWraporScanTileRadiusso the sweep covers the whole map. If the sweep causes brief hitching, raiseScanIntervalSeconds. - On very dense maps, if creatures that should be swept keep surviving, set
ScanQueryRadiusbelowScanTileRadiuson a denser grid (v5 or newer) — see Configuration. - Settings and defaults may change while the mod is in development.