Author:
Downloads: 316
File Size: 20.9 KB
Created:
Updated:
Mod ID: 1594561
Categories:

Sheldon Spawn Controller

Block or population-cap any wild creature by class in ASA, even creatures that ordinary spawn configs can't touch.

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 Mode setting: 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 on Both unless you have a reason not to.

Installation

  1. Add the mod to your server's mod list.
  2. Add the [SheldonSpawnController] block to the server's GameUserSettings.ini (below).
  3. 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, or Both. Which mechanism runs. Scan or Both is 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 unless ScanQueryRadius is set. Raise it on larger maps.
  • ScanQueryRadius: size of each sweep query, separate from the region spacing. 0 (default) uses ScanTileRadius, 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 example ScanTileRadius=60000, ScanGridWrap=41, ScanQueryRadius=55000, ScanIntervalSeconds=1. Keep it close to ScanTileRadius so region corners stay covered. Read at server start (v5 or newer).
  • ScanGridWrap: the sweep covers a ScanGridWrap by ScanGridWrap grid of regions. Default 15. Raise it on larger maps so the sweep reaches the edges.
  • bVerboseLog: True or False. Logs to the server game log: SSC controller ready at 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, and SSC sweep tile <n> per sweep step (v5 or newer). Useful while dialing in a block list; leave False for normal operation.
  • bEnableBridge: True or False. Enables the optional WebSocket control (below). Default False.
  • NumEntriesBlock: how many BlockClassN / BlockCapN pairs follow. Must match the count.
  • BlockClassN: the creature's class name. One per numbered entry.
  • BlockCapN: 0 removes the class. N allows 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 DestroyWildDinos to 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 takes ScanGridWrap x ScanGridWrap intervals and a capped class oscillates above its cap between visits as the map refills. Lower ScanIntervalSeconds (or a smaller ScanGridWrap on small maps) tightens it. Hard blocks (cap 0) are instant and unaffected.
  • On very large maps, raise ScanGridWrap or ScanTileRadius so the sweep covers the whole map. If the sweep causes brief hitching, raise ScanIntervalSeconds.
  • On very dense maps, if creatures that should be swept keep surviving, set ScanQueryRadius below ScanTileRadius on a denser grid (v5 or newer) — see Configuration.
  • Settings and defaults may change while the mod is in development.