Server crash on dinolevels. Recent ARK updates removed a game function the level report relied on. The report now gets the same information a different way.
No more surprise crashes after a game update. The plugin now checks everything it needs when the server starts. If an ARK update breaks something, only that one feature switches off, with a clear line in the log saying what and why. The rest keeps working.
Level changes are confirmed, not assumed. Every change the plugin makes to a creature's level table is read back and checked before the spawn is rolled. If it did not apply, the spawn quietly falls back to ARK's normal roll instead of being reported as changed.
Within-band interpolation now works. The optional feature added in the 1.2 preview was reading the wrong place in memory on some builds. It now measures the correct location from the running game every time the server starts, and turns itself off for that session if it cannot.
New
ConfigDesigner.html is included in the download. Open it in any browser, no internet needed. It previews your level spread, checks your settings, imports an existing config and gives you a finished config.json.
Readable level report.dinolevels now also writes a -pretty.txt file laid out as Level - Creature - Count with the tiers spaced out, so you can actually read it. The original file is unchanged for anyone using scripts.
Optional Ragnarok-style levels within each band, scoped to a specific map and creature. Ships disabled, with a ready-to-enable Aberration Rock Drake example.
Optional extended level ranges for creatures that use ARK's wider 1-38 layout. Also off by default.
Requirements
Windows ASA dedicated server with AsaApi 2.02 or newer.
Tested on ARK 92.25
Recommended: add "HooksDoNotThrow": true to the settings block of ShooterGame\Binaries\Win64\config.json. If a future ARK update renames the function this plugin attaches to, ArkAPI's default is to stop your whole server. With that setting, the plugin simply reports the problem and stays inactive while your server keeps running.
Trying the new settings
Both are off by default. Add them to your existing config.json, then run reloadspawns. If you get anything wrong the plugin tells you exactly which setting and keeps your last working config running, so it is safe to experiment.
By default a creature rolling into the top band can land anywhere in it. This pushes it toward the top of whichever band it landed in, which is what makes Ragnarok's high-level creatures feel different. It does not change how often each band is picked.
Amount runs from just above 0 to 1.0. Use 0.5 for a noticeable but natural result, or 1.0 to pin every creature to its band maximum, which is the fastest way to confirm your rule is matching.
ConfigVersion 3 is required for this section. Patterns are case-insensitive and accept * and ?. Add more entries to the list for other maps or creatures; where two rules both match, the more specific one wins. This only applies to creatures using ARK's wider level layout, so most creatures are untouched.
Some creatures use a wider level layout than the standard one. Turning this on scales your configured ranges to fit it, so your four bands apply to those creatures too instead of them keeping vanilla ranges.
With the shipped ranges, 3-5 / 9-12 / 17-20 / 26-30 becomes 4-7 / 12-16 / 22-26 / 33-38.
Some valid-looking settings could push an unusable level table into the game. These are now caught up front, and the plugin always falls back to the normal ARK roll rather than risk a bad spawn or a server fault.
The plugin can no longer let an error slip out while loading or unloading, so a future ARK or API update can't leave it stuck half-loaded.
If config.json is missing or invalid when the server starts, the plugin now stays disabled (spawns untouched) until you fix the file and reload, instead of quietly using built-in defaults.
Changed
The currentsettings command now shows the distribution actually in effect for the current map, including whether a map override is active.
Configuration mistakes are now rejected with a clear, specific message, for example a misspelled setting name, instead of being silently ignored.
Switching a rule's mode now cleanly applies that mode's defaults instead of carrying over leftover values from the previous mode.
Improved
The dino level report (the dinolevels command) no longer risks stalling the server: it is rate-limited, writes in the background, and ships with a safer default limit on how many creatures it scans.
Level distribution is now even across creatures whose level tables have an unusual number of entries.
The spawnstats counters are more accurate and easier to read, including a new count of any rare restore failures.