Mods / Stratum - High-performance server software.

Tags:
Utility Tools Server-Specific
Authors:
imtsubaki, Zaldaryon, tehtelev, Garward
Side:
Server
Created:
Jun 9th at 5:56 PM
Last modified:
Aug 3rd at 11:16 PM
Downloads:
1325
For testers:
stratum-1.22.6-stratum.2-win-x64.zip

Stratum logo
Stratum at a glance
A patched server runtime for real Vintage Story multiplayer load.
Stratum changes the server runtime itself, with over 150 direct game-file patches targeting networking, chunk pressure, entities, worldgen, anti-cheat, reports, and per-tick server overhead.
Networking
packet back-pressure, batching, queues, and position updates
World load
chunks, ticks, worldgen, saves, entities, and pathfinding
Anti-cheat
combat, reach, movement, nuker patterns, and packet abuse
Live Stratum statistics
 
Stratum is NOT compatible with Synergy or Tungsten, both of these are implemented directly into Stratum already, using them is very likely to cause issues.
What Stratum is doing under the hood

A lot of Stratum's work is not flashy. It is removing repeated allocations, cutting pointless scans, batching network work, caching values that were being rebuilt constantly, and spreading expensive server jobs across ticks so the server stays steadier under real load.

Less per-tick waste
cached player lists, cached counters, skipped scans, fewer closures, and less repeated work in hot paths
Lower allocation pressure
pooled arrays, pooled path nodes, reused packet wrappers, reused collections, and fewer short-lived objects
Smarter networking
batched TCP packets, tick-end flushing, back-pressure, safer queue handling, and better position update behavior
Chunk and world pressure
chunk priority fixes, join request caps, random tick slicing, region ticking safeguards, and chunk IO smoothing
Entity work
distant entity throttling, tracking hysteresis, AI task gating, pathfinding pooling, and timing attribution
Owner visibility
timings, packet stats, queue stats, player and entity reports, violation reports, and preflight checks
Performance and stability

Built around real server pressure.

Stratum targets the things server owners actually feel: chunk floods, busy joins, packet noise, entity spikes, pathfinding load, save hitches, worldgen cost, and the steady drip of tiny allocations that becomes expensive over time.

Security and abuse

More than just speed.

Stratum includes server-side checks for suspicious combat, reach, movement, NoFall outcomes, blink-style movement, step height abuse, vein-mining patterns, nuker-style behavior, login pressure, and noisy packets.

Anti-cheat and hardening

Stratum's anti-cheat is server-side and conservative by default. It is meant to report and expose suspicious behavior first, with automatic kicking left as an opt-in choice for server owners.

Current checks cover combat and reach, movement outcomes, NoFall behavior, blink-style movement, step height abuse, vein mining, nuker-like breaking, block-break progress, packet limits, oversized custom packets, login protection, and packet back-pressure.

Owner-first defaults
Stratum tries not to punish normal players for edge cases. Reports and violations give staff something to act on instead of guessing from logs.
What Stratum adds around the runtime

The runtime patches are the main point, but Stratum also includes the server-owner tools you normally end up collecting from a stack of separate helper mods. The goal is to make running and debugging a public server less blind.

Profiling and reports
Timings, per-behavior attribution, entity reports, packet stats, queue stats, player reports, health reports, preflight checks, TCP fallback counts, and violation reports.
Staff and moderation
Reports, notes, warns, mutes, jail, freeze, vanish, revive, PvP controls, staff chat, suspicious behavior visibility, and tools for handling problems before they become server drama.
Player basics
Homes, spawn, back, TPA, private messages, seen, near, whois, info commands, role prefixes, nametag styling, join and leave messages, rules, MOTD, and Discord links.
Backups and safety
Scheduled world backups, retention pruning, clearer backup behavior, login protection, bounded report growth, packet back-pressure, and safer handling around noisy clients.
Anti-cheat visibility
Combat and reach checks, movement outcome checks, NoFall, blink-style movement, step height abuse, vein mining, nuker-like behavior, packet limits, and opt-in auto-kicking.
Server presentation
Small quality-of-life pieces that make a server feel finished without distracting from the main purpose: a faster, more observable, more controlled server runtime.

Good fit for

Public servers, heavier modded servers, events, PvP, civ-style play, active communities, and owners who want better visibility into what the server is doing.

Compatibility

Most normal server mods should work, but Stratum changes deeper server internals than a regular mod can.

Players join with the normal client. Test mods that depend on exact timing, packets, or server internals.

Install notes

Download the release that matches your Vintage Story version, extract it, and run the Stratum server launcher. On first launch, Stratum downloads and prepares the matching vanilla server files.

Existing server data folders can be moved over for testing. Make a backup first, especially for live worlds.

Do not install Stratum as a game mod. It is server software.
Want the longer technical list?
The public page stays readable. The wiki is where the larger feature index and technical notes live.

Mod Version Downloads Released Changelog Download
0.3.1 139 Aug 3rd at 11:16 PM stratum-1.22.6-stratum.2-win-x64.zip

Full changelog

Support beams

  • Restored support beam placement with Vintage Story 1.22.6 clients.
  • Derived the placed beam from the server-side active slot instead of a client block ID.
  • Validated the held item when placement finishes.
  • Checked claim access at both beam endpoints.
  • Cleared unfinished placement state when a player disconnects.
  • Fixed nearest stable beam selection.
  • Kept the existing packet field for client and mod compatibility while ignoring it on the server.

Upstream source update

  • Updated the public API, Essentials, and Survival source pins to Anego’s 1.22.5 revisions.
  • Rebased all affected Stratum patches against the newer sources.
  • Removed the API interaction-range patch now supplied upstream.
  • Kept Stratum’s reported game version at 1.22.6.

Interaction security

  • Adopted Anego’s shared range, claim, and interaction validation.
  • Removed duplicate Stratum checks where upstream now owns the same rule.
  • Retained server-opened sessions for containers, traders, writing surfaces, and teleporters.
  • Kept inventory rollback responses for rejected mutations.

Full commit comparison: v1.22.6-stratum.1…v1.22.6-stratum.2

0.3.0 29 Aug 2nd at 9:54 PM stratum-1.22.6-stratum.1-win-x64.zip

What's changed

Worldgen performance and correctness

  • Lock two races cross-stage concurrency exposed: schematic unpack, chunk-db reads by @Zaldaryon in #186
  • Audit every TerrainFeatures generator, fix the two that crash plus one more landmine by @Zaldaryon in #187
  • Let Terrain run several columns at once, with a two-axis mod-safety fallback by @Zaldaryon in #188
  • Let TerrainFeatures run several columns at once, and fix the two things that blocked it by @Zaldaryon in #191
  • Release both claims when the neighbour gate throws, which wedged worldgen by @Zaldaryon in #199
  • Fixed darkened foliage and low-absorption lighting by @tehtelev in #206

Worldgen mod compatibility

  • Keep worldgen mods working when Stratum splits the Terrain pass by @trevorftp in #228
  • Give each worldgen thread its own generator instead of ThreadLocal fields by @trevorftp in #231

Direct fixes and server-owner changes

These changes were committed directly and are included here so they do not disappear from GitHub's generated PR list:

  • Stopped one schematic's remap scratch data from clearing another schematic's permanent block-code map.
  • Protected ServerMapChunk.NewBlockEntities from concurrent worldgen corruption.
  • Guarded pond searches when a neighbouring chunk is unavailable.
  • Fixed GenTerra oversubscription while keeping its internal parallel work.
  • Restored field visibility used by third-party worldgen patches.
  • Fixed map-region cache invalidation and held neighbourhood residency for the full stage claim.
  • Serialized structure placement to prevent overlapping ruins.
  • Updated all server and assembly version metadata for Vintage Story 1.22.6.
  • Rejected incomplete cached server archives during bootstrap.
  • Corrected player counts sent through Stratum server statistics.
  • Added config version 3 and migrated existing chat, appearance, nametag, theme, rules, links, MOTD, and rate-limit settings.
  • Added periodic update checks and in-game notifications for staff with server-control permission.
0.2.0 77 Jul 26th at 10:39 PM stratum-1.22.5-stratum.1-win-x64.zip

Due to how version numbers work here this reads a v0.2.0 but it's v1.22.5-stratum.1

What's Changed

  • Implemented combat cheat detection and improved reach checks by @trevorftp in #104
  • Reworking the lighting system by @tehtelev in #105
  • Reduce per-tick overhead: cached counters, frozen registry, spawner reuse, tracking hysteresis by @Zaldaryon in #106
  • Throttle position packets for distant entities by @Zaldaryon in #107
  • Fix CS0122 in tracking hysteresis: use public EntityPos X/Y/Z accessors by @Zaldaryon in #108
  • Skip per-tick allocations in BuildStratumPlayerPositions by @Zaldaryon in #109
  • Eliminate per-tick allocations in climate queries and mechanical power by @Zaldaryon in #110
  • Eliminate per-tick allocations in AllOnlinePlayers and PhysicsManager by @Zaldaryon in #111
  • Improvements to the Compression class by @tehtelev in #112
  • Cache event invocation lists, enable Server GC, cache AllLoadedMapRegions by @Zaldaryon in #114
  • Pool entity position batch arrays in SendPositionsAndAnimations by @Zaldaryon in #115
  • Document region ticking stability, improve config comment by @Zaldaryon in #116
  • Fixed issues with packets being skipped, clarified stratum backups. by @trevorftp in #117
  • Ascii85 Improvements by @tehtelev in #118
  • Optimization of FirstCodePart and LastCodePart by @tehtelev in #119
  • Taking out the trash in BlockPatch by @tehtelev in #120
  • Per-behavior timing attribution for player entities by @Zaldaryon in #121
  • Count TCP position fallback clients in perf stats by @Zaldaryon in #122
  • Cap RequestJoin processing to N per tick by @Zaldaryon in #123
  • Cache ToPacketForOtherPlayers per player between state changes by @Zaldaryon in #124
  • Slice random tick pass into N sub-passes by @Zaldaryon in #125
  • Anticheat will now report violations but auto-kicking is opt-in by @trevorftp in #127
  • Stride CollectEntities scan to every Nth tick by @Zaldaryon in #126
  • Deduplicate unload candidate scan with HashSet by @Zaldaryon in #128
  • Cap physics activation queue drain to N per tick by @Zaldaryon in #131
  • Fix NRE in EntityPlayer.SetName for first-time players by @Zaldaryon in #134
  • Add adaptive chunk send radius controller by @Zaldaryon in #133
  • Fix UDP position packet race from 6a68d93 by @Zaldaryon in #135
  • Fix join deadlock in SendPreparedBytes flush bypass by @Zaldaryon in #136
  • TreeGen Optimization by @tehtelev in #137
  • Disable StratumNetworkFlush, fix client crashes on join by @Zaldaryon in #138
  • Optimization of genBlockColumn and WeightsAt by @tehtelev in #139
  • Another improvement to RegistryObject by @tehtelev in #140
  • Update contribution readme and solution file to unblock dev work for newcomers by @xeljel in #143
  • Add recurring dropped item cleanup task by @xeljel in #142
  • Update extract-patches scripts to print what they are doing by @xeljel in #144
  • Edits to chunkilluminator by @tehtelev in #145
  • Reimplement network flush as a single-writer send queue by @Zaldaryon in #149
  • Fix NRE in UDP fallback for clients that skip the login token query by @Zaldaryon in #150
  • Preserve packet order across deferred joins by @Zaldaryon in #152
  • Pool bulk position packet arrays instead of allocating per batch by @Zaldaryon in #153
  • Cleanup and fixes in ServerSystemUnloadChunk by @trevorftp in #148
  • Pool container content-stacks lists instead of allocating per call by @Zaldaryon in #154
  • Exclude mod-domain entities from tick throttling by @Zaldaryon in #156
  • Fixed issue with windows timer overshooting with Sleep() by @trevorftp in #155
  • Add scheduled chat announcements by @Zaldaryon in #157
  • Fix physics worker thread kept alive by @trevorftp in #158
  • Load sidecar configs even on a fresh stratum.json by @Zaldaryon in #159
  • Improved multithreaded performance of the chunk generator by @tehtelev in #161
  • Skip HashSet rebuild in prospecting pick ore-bearing check by @Zaldaryon in #160
  • Log mod-owned Harmony patches at startup by @Zaldaryon in #162
  • Minor changes to StratumPregenManager by @tehtelev in #163
  • Restore BlockPatch.cs.patch dropped in dfe165b by @Zaldaryon in #164
  • Refactored and rewrote how Stratum installs by @trevorftp in #165
  • Optimization of the microblock storage structure in memory by @tehtelev in #166
  • Notify Discord for fork PRs too by @Pixnop in #169
  • Restore preflight fixes accidentally dropped by the Nimbus removal by @Pixnop in #167
  • Pass the Anego manifest to python via a file, not argv by @Pixnop in #168
  • Bump actions/setup-dotnet to v6 on indev by @Pixnop in #174
  • Build the server assets packet synchronously at boot by @Pixnop in #172
  • Chunk generation now occurs through the Dispatcher -> Workers system by @tehtelev in #175
  • Fix indev's broken bootstrap, harden the chunk dispatcher, restore mod compatibility by @Zaldaryon in #177
  • Increased some default values ​​in the chunk pre-generator by @tehtelev in #178
  • Fix mechanical networks freezing under concurrent chunk load by @Zaldaryon in #180
  • Fix corrupt hunk headers in ServerMain.cs.patch by @Zaldaryon in #181
  • Close cross-column landmines in TerrainFeatures and Vegetation generators, plus two build/test tooling fixes by @Zaldaryon in #183
  • ChunkIlluminator received directional absorption by @tehtelev in #185
  • Let PreDone run several columns at once, with a two-axis mod-safety fallback by @Zaldaryon in #190
  • Let TerrainLate run several columns at once, with a two-axis mod-safety fallback by @Zaldaryon in #189
  • Release/v1.22.5-stratum.1 by @trevorftp in #193

New Contributors

Full Changelogv1.22.3-stratum.15...v1.22.5-stratum.1

0.1.5 376 Jul 10th at 1:07 AM stratum-1.22.3-stratum.15-win-x64.zip

## What's Changed
* Updated indev. by @trevorftp in https://github.com/StratumServer/Stratum/pull/98
* Update patches and make indev latest by @trevorftp in https://github.com/StratumServer/Stratum/pull/101
* Implemented combat cheat detection and improved reach checks by @trevorftp in https://github.com/StratumServer/Stratum/pull/104
* Implemented NoFall detection by outcome by @trevorftp in https://github.com/StratumServer/Stratum/pull/104/changes/34fe8e87b4c225b0fc7682c0b77e3ec097adb9bd
* Detect vein mining and nuker type cheats by @trevorftp in https://github.com/StratumServer/Stratum/pull/104/changes/fa7c5d1934d263e8c6b43c8aafcba86c4147fb02
* Added ability to detect blink or small movement cheats and step height cheats by @trevorftp in https://github.com/StratumServer/Stratum/pull/104/changes/31ee43028edfe9f1bf505b00b60e4e4f235b2de7
* Reworking the lighting system by @tehtelev in https://github.com/StratumServer/Stratum/pull/105
* Reduce per-tick overhead: cached counters, frozen registry, spawner reuse, tracking hysteresis by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/106
* Throttle position packets for distant entities by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/107
* Fix CS0122 in tracking hysteresis: use public EntityPos X/Y/Z accessors by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/108
* Skip per-tick allocations in BuildStratumPlayerPositions by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/109
* Eliminate per-tick allocations in climate queries and mechanical power by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/110
* Eliminate per-tick allocations in AllOnlinePlayers and PhysicsManager by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/111
* Improvements to the Compression class by @tehtelev in https://github.com/StratumServer/Stratum/pull/112
* Cache event invocation lists, enable Server GC, cache AllLoadedMapRegions by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/114
* Pool entity position batch arrays in SendPositionsAndAnimations by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/115
* Document region ticking stability, improve config comment by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/116
* Fixed issues with packets being skipped, clarified stratum backups. by @trevorftp in https://github.com/StratumServer/Stratum/pull/117
* Changed default config settings for anticheat and packet backpressure by @trevorftp in https://github.com/StratumServer/Stratum/commit/ea99ba9a3a3265d381a063df835b66c897ac275f4
* Ascii85 Improvements by @tehtelev in https://github.com/StratumServer/Stratum/pull/118
* Optimization of FirstCodePart and LastCodePart by @tehtelev in https://github.com/StratumServer/Stratum/pull/119
* Taking out the trash in BlockPatch by @tehtelev in https://github.com/StratumServer/Stratum/pull/120
* Per-behavior timing attribution for player entities by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/121
* Count TCP position fallback clients in perf stats by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/122
* Cap RequestJoin processing to N per tick by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/123
* Cache ToPacketForOtherPlayers per player between state changes by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/124
Slice random tick pass into N sub-passes by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/125
Anticheat will now report violations but auto-kicking is opt-in by @trevorftp in https://github.com/StratumServer/Stratum/pull/127
Stride CollectEntities scan to every Nth tick by @Zaldaryon in https://github.com/StratumServer/Stratum/pull/126


**Full Changelog**: https://github.com/StratumServer/Stratum/compare/v1.22.3-stratum.14...v1.22.3-stratum.15

0.1.5 5 Jul 10th at 12:01 AM Release Retracted

Retraction Reason:

Patcher error

Changelog:

What's Changed

  • Updated indev. by @trevorftp in #98
  • Update patches and make indev latest by @trevorftp in #101
  • Implemented combat cheat detection and improved reach checks by @trevorftp in #104
  • Implemented NoFall detection by outcome by @trevorftp in 34fe8e8
  • Detect vein mining and nuker type cheats by @trevorftp in fa7c5d1
  • Added ability to detect blink or small movement cheats and step height cheats by @trevorftp in 31ee430
  • Reworking the lighting system by @tehtelev in #105
  • Reduce per-tick overhead: cached counters, frozen registry, spawner reuse, tracking hysteresis by @Zaldaryon in #106
  • Throttle position packets for distant entities by @Zaldaryon in #107
  • Fix CS0122 in tracking hysteresis: use public EntityPos X/Y/Z accessors by @Zaldaryon in #108
  • Skip per-tick allocations in BuildStratumPlayerPositions by @Zaldaryon in #109
  • Eliminate per-tick allocations in climate queries and mechanical power by @Zaldaryon in #110
  • Eliminate per-tick allocations in AllOnlinePlayers and PhysicsManager by @Zaldaryon in #111
  • Improvements to the Compression class by @tehtelev in #112
  • Cache event invocation lists, enable Server GC, cache AllLoadedMapRegions by @Zaldaryon in #114
  • Pool entity position batch arrays in SendPositionsAndAnimations by @Zaldaryon in #115
  • Document region ticking stability, improve config comment by @Zaldaryon in #116
  • Fixed issues with packets being skipped, clarified stratum backups. by @trevorftp in #117
  • Changed default config settings for anticheat and packet backpressure by @trevorftp in ea99ba9
  • Ascii85 Improvements by @tehtelev in #118
  • Optimization of FirstCodePart and LastCodePart by @tehtelev in #119
  • Taking out the trash in BlockPatch by @tehtelev in #120
  • Per-behavior timing attribution for player entities by @Zaldaryon in #121
  • Count TCP position fallback clients in perf stats by @Zaldaryon in #122
  • Cap RequestJoin processing to N per tick by @Zaldaryon in #123
  • Cache ToPacketForOtherPlayers per player between state changes by @Zaldaryon in #124
    Slice random tick pass into N sub-passes by @Zaldaryon in #125
    Anticheat will now report violations but auto-kicking is opt-in by @trevorftp in #127
    Stride CollectEntities scan to every Nth tick by @Zaldaryon in #126

 

Full Changelogv1.22.3-stratum.14...v1.22.3-stratum.15

0.1.4 123 Jul 3rd at 11:40 PM stratum-1.22.3-stratum.14-win-x64.zip

What's Changed

  • Restore generation-based AI task gating by @Zaldaryon in #78
  • Optimize GenTerra by @tehtelev in #79
  • Refine NewNormalizedSimplexFractalNoise by @tehtelev in #77
  • Add scheduled world backup with retention pruning by @Zaldaryon in #80
  • Skip SendDirtySlots scan when no inventory changed by @Zaldaryon in #81
  • Pool BlockPos in random tick loop by @Zaldaryon in #82
  • Reuse intermediate lists in Block.GetDrops by @Zaldaryon in #83
  • Reuse collections in deleteChunkColumns by @Zaldaryon in #84
  • Cache AllOnlinePlayers and AllPlayers per tick by @Zaldaryon in #85
  • Batch small TCP packets per connection, flush at tick end by @Zaldaryon in #86
  • Fixed issues with movement detection and world chunk settings by @trevorftp in #87
  • Refactor TcpNetConnection and StratumNetworkFlush by @trevorftp in #88
  • Reuse intermediate lists in chunk unload methods by @Zaldaryon in #89
  • Reuse collections in periodic server systems by @Zaldaryon in #90
  • Reuse DbChunk batch list across save methods by @Zaldaryon in #91
  • Reuse packet wrappers in GetBulkEntityAttributesPacket by @Zaldaryon in #92
  • Replace per-client LINQ closures in broadcast methods by @Zaldaryon in #93
  • Eliminate LINQ in connection admission and queue processing by @Zaldaryon in #94
  • Eliminate LINQ iterators and list allocations in RecipeBase by @Zaldaryon in #95
  • Fixed issue with race and thread-safety in StratumNetworkFlush by @trevorftp in #96

Full Changelogv1.22.3-stratum.12...v1.22.3-stratum.14

0.1.4 1 Jul 3rd at 5:17 PM Release Retracted

Retraction Reason:

fml

Changelog:

What's Changed

  • Restore generation-based AI task gating by @Zaldaryon in #78
  • Optimize GenTerra by @tehtelev in #79
  • Refine NewNormalizedSimplexFractalNoise by @tehtelev in #77
  • Add scheduled world backup with retention pruning by @Zaldaryon in #80
  • Skip SendDirtySlots scan when no inventory changed by @Zaldaryon in #81
  • Pool BlockPos in random tick loop by @Zaldaryon in #82
  • Reuse intermediate lists in Block.GetDrops by @Zaldaryon in #83
  • Reuse collections in deleteChunkColumns by @Zaldaryon in #84
  • Cache AllOnlinePlayers and AllPlayers per tick by @Zaldaryon in #85
  • Batch small TCP packets per connection, flush at tick end by @Zaldaryon in #86
  • Fixed issues with movement detection and world chunk settings by @trevorftp in #87
  • Refactor TcpNetConnection and StratumNetworkFlush by @trevorftp in #88
  • Reuse intermediate lists in chunk unload methods by @Zaldaryon in #89
  • Reuse collections in periodic server systems by @Zaldaryon in #90
  • Reuse DbChunk batch list across save methods by @Zaldaryon in #91
  • Reuse packet wrappers in GetBulkEntityAttributesPacket by @Zaldaryon in #92
  • Replace per-client LINQ closures in broadcast methods by @Zaldaryon in #93
  • Eliminate LINQ in connection admission and queue processing by @Zaldaryon in #94
  • Eliminate LINQ iterators and list allocations in RecipeBase by @Zaldaryon in #95
  • Fixed issue with race and thread-safety in StratumNetworkFlush by @trevorftp in #96

Full Changelogv1.22.3-stratum.12...v1.22.3-stratum.14

0.1.4 Jul 3rd at 11:42 AM Release Retracted

Retraction Reason:

Patching file causing issues.

Changelog:

What's Changed

  • Restore generation-based AI task gating by @Zaldaryon in #78
  • Optimize GenTerra by @tehtelev in #79
  • Refine NewNormalizedSimplexFractalNoise by @tehtelev in #77
  • Add scheduled world backup with retention pruning by @Zaldaryon in #80
  • Skip SendDirtySlots scan when no inventory changed by @Zaldaryon in #81
  • Pool BlockPos in random tick loop by @Zaldaryon in #82
  • Reuse intermediate lists in Block.GetDrops by @Zaldaryon in #83
  • Reuse collections in deleteChunkColumns by @Zaldaryon in #84
  • Cache AllOnlinePlayers and AllPlayers per tick by @Zaldaryon in #85
  • Batch small TCP packets per connection, flush at tick end by @Zaldaryon in #86
  • Fixed issues with movement detection and world chunk settings by @trevorftp in #87
  • Refactor TcpNetConnection and StratumNetworkFlush by @trevorftp in #88
  • Reuse intermediate lists in chunk unload methods by @Zaldaryon in #89
  • Reuse collections in periodic server systems by @Zaldaryon in #90
  • Reuse DbChunk batch list across save methods by @Zaldaryon in #91
  • Reuse packet wrappers in GetBulkEntityAttributesPacket by @Zaldaryon in #92
  • Replace per-client LINQ closures in broadcast methods by @Zaldaryon in #93
  • Eliminate LINQ in connection admission and queue processing by @Zaldaryon in #94
  • Eliminate LINQ iterators and list allocations in RecipeBase by @Zaldaryon in #95
  • Fixed issue with race and thread-safety in StratumNetworkFlush by @trevorftp in #96

Full Changelogv1.22.3-stratum.12...v1.22.3-stratum.14

0.1.3 12 Jul 2nd at 3:22 PM Release Retracted

Retraction Reason:

Bugged 

Changelog:

  • Restore generation-based AI task gating by @Zaldaryon in #78
  • Optimize GenTerra by @tehtelev in #79
  • Refine NewNormalizedSimplexFractalNoise by @tehtelev in #77
  • Add scheduled world backup with retention pruning by @Zaldaryon in #80
  • Skip SendDirtySlots scan when no inventory changed by @Zaldaryon in #81
  • Pool BlockPos in random tick loop by @Zaldaryon in #82
  • Reuse intermediate lists in Block.GetDrops by @Zaldaryon in #83
  • Reuse collections in deleteChunkColumns by @Zaldaryon in #84
  • Cache AllOnlinePlayers and AllPlayers per tick by @Zaldaryon in #85
  • Batch small TCP packets per connection, flush at tick end by @Zaldaryon in #86
  • Fixed issues with movement detection and world chunk settings by @trevorftp in #87
  • Refactor TcpNetConnection and StratumNetworkFlush by @trevorftp in #88

Full Changelogv1.22.3-stratum.12...v1.22.3-stratum.13

0.1.2 99 Jun 30th at 5:38 PM stratum-1.22.3-stratum.12-win-x64.zip
  • Add smoke test and Makefile by @Zaldaryon in #73
  • Add region ticking entity filter and automatic fallback by @Zaldaryon in #74
  • Fix corrupted patch headers in EntitySimulation and GenPartial BOM by @Zaldaryon in #75
  • Added and improved the anticheat and detections by @trevorftp in #72
  • Fix/command output tags by @trevorftp in #76

Full Changelogv1.22.3-stratum.11...v1.22.3-stratum.12

0.1.1 75 Jun 28th at 10:22 PM stratum-1.22.3-stratum.11-win-x64.zip
  • Null-guard PathNode.Equals to fix NRE from node pool reuse by @Zaldaryon in #70
  • Overhaul prefix/nametag system with entitlement tags and /prefix command by @trevorftp in 2883098
  • Remove Nimbus proxy integration from Stratum by @trevorftp in a3a5b33

Full Changelogv1.22.3-stratum.10...v1.22.3-stratum.10.1

0.1.0 55 Jun 28th at 2:19 PM stratum-1.22.3-stratum.10-win-x64.zip
  • Optimize DiscDepositGenerator by @tehtelev in #33
  • Fix data loss race in StratumEntityBehaviorTimings.Drain by @Zaldaryon in #45
  • Document Linux/macOS bootstrap and extract-patches scripts by @Zaldaryon in #46
  • bootstrap.sh: auto-download missing client refs by @Zaldaryon in #47
  • Normalize csproj paths to forward slashes, drop PowerShell from deploy prune by @Zaldaryon in #48
  • Revert "Document Linux/macOS bootstrap and extract-patches scripts" by @trevorftp in #51
  • Revert "Normalize csproj paths to forward slashes, drop PowerShell from deploy prune" by @trevorftp in #49
  • Revert "bootstrap.sh: auto-download missing client refs" by @trevorftp in #50
  • Cache mute state to skip per-message JSON deserialization by @Zaldaryon in #57
  • Correct entity caps despawn doc comment by @Zaldaryon in #52
  • Remove unused RemainingSeconds field from login protection by @Zaldaryon in #53
  • Fix corrupt hunk headers in 3 patch files by @Zaldaryon in #55
  • Cap retained closed reports to bound report store growth by @Zaldaryon in #54
  • Skip per-tick JSON deserialization in jail enforcement by @Zaldaryon in #56
  • Reconcile stale entity tick-state entries by @Zaldaryon in #58
  • Expand timings profiler with per-type and hierarchical report by @Zaldaryon in #44
  • Fix corrupt hunk headers in ServerSystemEntitySimulation patch by @Zaldaryon in #60
  • Skip registering disabled Stratum commands by @Zaldaryon in #61
  • Skip collision resolution for stationary creatures by @Zaldaryon in #63
  • Optimize GenCaves and fix bugs by @tehtelev in #69
  • Pool PathNode allocations in AStar search by @Zaldaryon in #66
  • Skip full resync on no-op RemoveAttribute by @Zaldaryon in #64
  • Chunk priority perf fix, worldgen regression fix, server perf patches by @trevorftp in 832558b
0.0.9 111 Jun 22nd at 4:18 PM stratum-1.22.3-stratum.9-win-x64.zip

What's Changed

Full Changelogv1.22.3-stratum.8...v1.22.3-stratum.9

0.0.8 84 Jun 20th at 12:53 PM stratum-1.22.3-stratum.8-win-x64.zip

What's Changed

  • Optimize the FillPlaceHolder method by @tehtelev in https://github.com/trevorftp/Stratum/pull/23
  • Optimize RegisterBlock method by @tehtelev in https://github.com/trevorftp/Stratum/pull/24
  • Optimize ModRegistryObjectTypeLoader as much as possible by @tehtelev in https://github.com/trevorftp/Stratum/pull/25
  • Optimize WildcardUtil.Match by @tehtelev in https://github.com/trevorftp/Stratum/pull/27
  • Bump actions/checkout from 4 to 7 by @dependabot in https://github.com/trevorftp/Stratum/pull/28
  • Fix spawn radius distribution bias in LocateRandomPosition by @Zaldaryon in https://github.com/trevorftp/Stratum/pull/30
  • Patch GameVersion to report 1.22.3 instead of 1.22.2 by @Zaldaryon in https://github.com/trevorftp/Stratum/pull/31

 

New Contributors

 

Full Changelog

0.0.7 129 Jun 9th at 6:44 PM stratum-1.22.3-stratum.7-win-x64.zip

88 Comments (oldest first | newest first) (threaded | flat)

Molyporph, 3 days ago

have you thought about adding to your loginprotection the ability to let people float in water so they dont drown while loggin in? like a raft or something

MediocreMitch, Aug 7th at 12:46 AM

Are there any plans to possibly make this a docker container?

 

I run several different games off a minipc server in my home and being able to keep everything as containers has stopped a lot of issues I ran into with different games installing a bunch of dependencies.

imtsubaki , Aug 3rd at 11:18 PM

Released v1.22.6-stratum.2, it's a smaller patch aimed at keeping everything up to date with Anego.

Check out the changes here

imtsubaki , Aug 2nd at 9:57 PM

Well that was fast, v1.22.6-stratum.1 is here!

Here's the latest scoop

imtsubaki , Aug 2nd at 6:32 PM

It's me again! There is a new indev build for 1.22.6! It fixes a vast majority of world gen mod problems! And allows things like rivers, terra pretty, watersheds, better ruins and more to work!
Check it out here

Alex_Greyfrost, Aug 1st at 6:06 PM

I've been personally hosting a server and I'd like to prototype this to see how it performs. I've hosted a few headless servers for friends before, but I wouldn't call myself an expert on server hosting. I made a copy of the existing server folder (world, mods, and server config) and made a shortcut of the Stratum VintageStoryServer executable which I pointed toward the Server's world folder and the Stratum folder similar to how I'd set up a usual server, but it crashes with an unhandled exception error stating that a vintage story lib file couldn't be found.

I'm guessing it may not be as easy as just launching the server and pointing it to a copy of the original server setup, is there any documentation on how a normal VS server can be relocated to this? Or would I simply drag and drop the Server contents into the Stratum folder?

imtsubaki , Aug 2nd at 7:15 PM
@Alex_Greyfrost: I've been personally hosting a server and I'd like to prototype this to see how it performs. I've hosted a few headless servers for friends before, but I wouldn't call myself an expert on server hosting. I made a copy of the existing server folder (world,

You should be able to download Stratum and place the exe into any folder you wish, I would do a new one. Then copy your other servers entire 'data' folder to that root, Stratum will detect it on startup and youll retain all the original server saves, player data, mods etc.

Alex_Greyfrost, Aug 3rd at 4:30 AM
@imtsubaki: You should be able to download Stratum and place the exe into any folder you wish, I would do a new one. Then copy your other servers entire 'data' folder to that root, Stratum will detect it on startup and youll retain all the original server saves, play

Ah, that did it! I'm surprised, I guess I honestly expected it to be a bit more complicated. Great release, my server generates and loads significantly quicker for fast (glider) travel!

Rythillian, Jul 31st at 11:01 AM

Has anyone set this up using ptyodacyl server panel before? Curious what the setup needed is.

Michaloid , Jul 31st at 2:56 AM

I'd like to point out that the graph is obscuring the download button.

MineAnPlay, Jul 27th at 12:27 PM

A change between the latest indev for 1.22.5 and the latest release causes the terrain to not generate the top layer grass/dirt/vegetation on a heavily modded environment. I have confirmed that reverting versions fixes the issue. Looking at the commit history there are some changes in terrain generation since the latest indev build. I am playing on a very heavily modded server (if there is a major mod, I most likely have it), I can provide more information later if required. 

imtsubaki , Jul 26th at 10:50 PM

v1.22.5-stratum.1 is out and it's a big one! Read all the changes here. 🎉

https://stratumvs.dev/news/release-v1225-stratum1/

imtsubaki , Jul 24th at 3:35 PM

Latest indev build, fixes issues with mechicanal systems, chunk / world saving, hotbar and inventory items visually not updating and more! A major release will be out as soon as we make sure this branch is stable! At the moment we seem to have ironed out every major issue reported in the past week or so.

https://github.com/StratumServer/Stratum/releases/tag/v1.22.5-stratum.1-indev.2

MrEevee, Jul 24th at 12:44 PM

Not sure if this is a stratum issue but wanted to report since cant replicate it, after a while of playing alot of animals in base just started to walk in place and teleporting. But server definetly sees them as moving normally since im getting hit by a sheep 6 blocks away. Doesnt affect drifters at all weirdly enough.

imtsubaki , Jul 24th at 3:36 PM
@MrEevee: Not sure if this is a stratum issue but wanted to report since cant replicate it, after a while of playing alot of animals in base just started to walk in place and teleporting. But server definetly sees them as moving normally since im getting hit by a s

Sounds like it is, there is a system that will adjust how animals tick. Hostile mobs are never adjusted to prevent any weird glitching with them, but 'passive' mobs are. Will look into it more

MrEevee, Jul 25th at 10:24 AM (modified Jul 25th at 1:11 PM)
@imtsubaki: Sounds like it is, there is a system that will adjust how animals tick. Hostile mobs are never adjusted to prevent any weird glitching with them, but 'passive' mobs are. Will look into it more

I checked the config and found out its the throttle creature setting. its a bit aggressive considering only like 10 farm animals made it start happening. Turned it off and they move around fine now

Edit: nvm its still happening even with entitiy ticking fully off.

Bonehead123, Jul 23rd at 7:56 PM

Sizing mismatch flood from pooled Packet_BulkEntityPosition in PhysicsManager

Stratum version: v1.22.3-stratum.15
Base game version: v1.22.3


Stack Trace

Exception: Sizing mismatch: 193 != 194
at Packet_UdpPacketSerializer.SerializeWithSize(CitoStream stream, Packet_UdpPacket instance)
at Packet_ServerSerializer.Serialize(CitoStream stream, Packet_Server instance)
at Vintagestory.Server.ServerMain.SendPacket(Int32 clientId, Packet_Server packet)
at Vintagestory.Server.Systems.ServerUdpQueue.DedicatedThreadLoop()
 

Recurs continuously under load, deltas vary (150≠140196≠3900≠5490≠89...).


Suspected Cause

PhysicsManager.SendPositionsAndAnimations pools its Packet_BulkEntityPosition and backing array per physics thread via [ThreadStatic] fields to avoid per-batch allocation.
Each batch/client overwrites the same instance and hands it to ServerUdpNetwork.SendPacket_Threadsafe, which enqueues it onto ServerUdpQueue for asynchronous serialization on DedicatedThreadLoop — not synchronous.

Vanilla allocates a fresh Packet_BulkEntityPosition/array per call, so a queued packet is immutable by the time the queue thread serializes it.
With pooling, the physics thread mutates the same shared object for the next client/batch while the queue thread may still be mid-SerializeWithSize on it — size computed from one state, bytes written from another.


Location: patches/VintagestoryLib/Vintagestory.Server/PhysicsManager.cs.patchSendPositionsAndAnimations
                          ~lines 960–1011 (both the count > 8 batched loop and count > 0 single-send branch).

Dae_Blackheart, Jul 23rd at 5:44 PM

what happened to Statum UI? i have it downloaded and was looking for the mod that has its commands not realizing its this and i cant even use this with my server ;-;

Nekonserva, Jul 22nd at 5:25 PM (modified Jul 22nd at 5:25 PM)

All the kinetic mechanisms on my server are just frozen in a "T-Pose", nothing works. Even if the windmill is connected to literally nothing, it still not moves, not even by 1 pixel. Stratum 0.1.5, Game 1.22.3

Bonehead123, Jul 23rd at 3:18 PM (modified Jul 23rd at 3:19 PM)
@Nekonserva: All the kinetic mechanisms on my server are just frozen in a "T-Pose", nothing works. Even if the windmill is connected to literally nothing, it still not moves, not even by 1 pixel. Stratum 0.1.5, Game 1.22.3

I am experiencing the same exact issue with Stratum, it entirely freezes windmills even during storm level winds.

The windmill itself is reading the appropriate power, i.e. "Wind speed: 125%", but enabling .clientConfig showEntitydebuginfo 1 displays "speed: 0".

Using admin commands like "/weather setw <lightbreeze/mediumbreeze/still/storm/strongbreeze>" temporarily resolve this but is not a fix.

Edit: This breaks both vanilla and millwright windmills.

Bonehead123, Jul 23rd at 7:01 PM
@tehtelev: We're already looking into it. Thanks for the feedback.

I've also noticed blocks floating when I drop them or specifically when chopping trees and mining.. Do you know what might be causing this? I believe this also to be related to Stratum.

imtsubaki , Jul 20th at 9:51 PM

Until the major release if you want to use Stratum with 1.22.4 here you are! Testing on this version has proven to be pretty stable so far.

 

v1.22.4-Stratum.1-indev.1

imtsubaki , Jul 19th at 9:35 PM

Stratum v16 is coming soon, we are doing extensive testing in the indev builds to try to make sure we have no issues on the next release! If you'd like to test indev builds you can find them on the Github!

MayaPapaya, Jul 14th at 4:04 AM (modified Jul 14th at 4:04 AM)

Howdy! Attempting to use Stratum 0.1.5 on my server but it fails to load. I was previously attempting to load Stratum alongside Synergy like a goof but have since removed Synergy. I still get the same error without synergy installed. I also removed the Synergy config and tried but to no avail. The error (and my modlist) are as follows

Spoiler!
14.7.2026 06:02:39 [Server Error] [stratum-1.22.3-stratum.15-win-x64.zip] An exception was thrown trying to to load the ModInfo:
14.7.2026 06:02:39 [Server Error] [stratum-1.22.3-stratum.15-win-x64.zip] Exception: Object reference not set to an instance of an object.
   at Vintagestory.Common.ModContainer.LoadModInfo(ModCompilationContext compilationContext, ModAssemblyLoader loader) in VintagestoryLib\Common\API\ModContainer.cs:line 344
14.7.2026 06:02:40 [Server Notification] Found 206 mods (1 disabled)
14.7.2026 06:02:40 [Server Notification] Mods, sorted by dependency: walkingstick, astriaporta, awearablelight, backpackpackplusfg, betterarrows, betterbearmeat, bettercrates, woodlogstack64, birthsignsfresh, blackbronzebeehivekiln, blackguardadditions, bola, butcheringmatcompat, catchledge, chickenfeed, cbr, chiseltools, creaturefootsteps, customcropspeed, dodgemaster, hqzlights, elshadowsp, eternalstew, extrachests, extraruins, forlornadditions, bovinae, capreolinae, elephantidae, pantherinae, fruitrefreshed, grindablearrows, hidearmor, immersivelight, interestingoregen, jsonpatcheslib, kilnshelves, lessaggressivebears, limeslargersaddlebags, longtermfood, longclaybricks, materialaging, millwright, overhaulliblegacycompat, overhaullib, primitivesurvival, prospecttogether, resmeltableslightfix, rockstratavariety, irongears, shelfobsessed, sortablestorage, specialexpandedbags, spinningwheel, stackedmetals, stonequarryrepckfipil, stratumui, tankardsandgoblets, temporaldoctor, tradersrevised2patch, vastlyenoughitems, game, vsimgui, weaponpackalphareb, abyssaldepths, aculinaryartillery, adastra, admirableattire, alchemy, ancienttoolsfork, animalcages, animationslib, anvilperformanceoptimization, attributerenderinglibrary, egocaribautomapmarkers, betterclothes, betterentitytooltip, bettererprospecting, betterjonasdevicesfixedagain, betterruins, bloodtrail, butchering, cancrops, carryon, climbmountain, configlib, configurableroomsize, downed, durableservings, entitynametag, fairfish, fendragonbcs, firearmsfork, fixperishrate, foodshelves, footprints, heavyforlonarmor, fromgoldencombs, genelib, grassroots, icebreaker, iceisice, immersivecorpsedrop, immersiverope122, ithaniacannedgoods, jaunt, kitchenfuel, knapster, knitting, lanternsathome, locustsforall, losslesswaterwheel, lunchbox, madcrowglider, manifest, mngeology, materialneeds, metalpots, meteoricsteel, moldsplus, navi, nomorewrenchtooltip, oneclaims, overlapclaims, petai, pigroast, playercorpseforkedazu, playermodellib, claywheel, progressionframework, projectiletracker, purposefulstorage, restfulsit, rivers, roomtools, ropetiable121, shadehouse, shipwright, smithingplus, stackedtemporalgear, stainedartifice, staminamod, steepandbrew, stonebakeoven, substrate, temporalamulets, tentbagreworked122plus, terraprety, territorialpause, improvedmetallurgy, toolsmith, tradersbuycrops, treetapredux, unchiseledpatch, universalhusbandry, vanity, creative, vsecomachina, vsroofing, survival, waypointtogetherreborn, waypointbeacon, wildfarmingfork, woodenshuttersandmore, xlibfork, bigcatstaming, bloomeryquicklime, bounties, butcheringpoultry, cats, densegroundstorage, draconis, moredragons, equus, em, featherborn, fseraph, fotsabutcheringcompat, imtoolcompat, koboldrdx, lootfilter, lupines, medievalarchitecture, nobonearrows, petmapmarkers, purposefulstoragebits, raiders, seafarer, shearlib, storagelectern, tailorsdelight, waterwheelriver, wolftaming, xskillsfork, aldiclasses, bricklayers, draconisrhinocroma, dressmakers, femalelupines, normalfriendlycats, seafarerltfcompat, seafarercroppatch, wool, xskillsgilded, shearregret
imtsubaki , Jul 19th at 9:35 PM
@MayaPapaya: Howdy! Attempting to use Stratum 0.1.5 on my server but it fails to load. I was previously attempting to load Stratum alongside Synergy like a goof but have since removed Synergy. I still get the same error without synergy installed. I also removed the Sy

Hey! Stratum is not a mod, and must be ran as the server software itself! Extract the EXE to a folder you'd like and run it, itll generate everything needed. From there you can place your existing mods and world data in the ./Data folder.

imtsubaki , Jul 20th at 5:57 AM
@MayaPapaya: Ah. Thank you. That is not an option for me though as I use a third-party host for my server.

Depending on the host, quite a few are offering Stratum support now! Including SUHosting, Creeper, and BisectHosting.

ButahBabter, Jul 10th at 2:14 PM (modified Jul 10th at 2:16 PM)

EDIT Found the problem it was Stratum Back packet protection for some reason, disabled that the issues poofed, idk if it was just something on my world causing it to freak or if it was the setting itself.

So after a bit of time playing on the server, i will get booted mid activity wioth this error message "The connection closed unexpectedly, The Server closed down the socket without response, The server may be password protected or Whitelisted" the server isnt gfoing down, nor is it password protected, and it was not doing this until i updated to .15 any ideas of what it could be?

imtsubaki , Jul 10th at 4:24 PM
@ButahBabter: EDIT Found the problem it was Stratum Back packet protection for some reason, disabled that the issues poofed, idk if it was just something on my world causing it to freak or if it was the setting itself. So after a bit of time playing on the server, i wi

Yes! This is something that's being looked into, and the latest release disables all anti-cheat and protection guards that Stratum added by default, unfortunately old configs from prior versions still may have it enabled. Glad you got it figured out!

Oolon, Jul 10th at 9:33 AM

Good news, after updating to newest version, fruit presses and Better crates appears to be fixed. But windmills no longer spin or provide power

imtsubaki , Jul 10th at 1:42 PM
@Oolon: Good news, after updating to newest version, fruit presses and Better crates appears to be fixed. But windmills no longer spin or provide power

Great to hear about those! And I just tested both rotor and sail types on v0.1.5 and they appear to be working. If you can get anymore info or recreate your issue please do and let me know! May even be best to open an issue as we are alerted. Thank you

https://github.com/StratumServer/Stratum/issues

imtsubaki , Jul 10th at 12:04 AM (modified Jul 10th at 1:07 AM)

v1.22.3-stratum.15 (v0.1.5) is released! This version brings a large amount of optimizations, as well as bringing some fixes on prior issues and defaulting all 'anticheat' options to disabled.

More Here

Blink, Jul 7th at 6:11 PM

There is an issue with the better crates mod not working correctly with this. Items can be placed into the crate but not removed.

Fruit presses do not press/squeeze either, and no mods have been added that touch that functionality.

Backups have been enabled in stratum.json but no backups are ever created.

I've disabled all anti-cheat and packet related settings with no change in crate or fruit press behavior.

Blink, Jul 7th at 8:23 PM
@ButahBabter: Which Version are you using? I'm using 0.12 and having the fruitpress problem none of the other ones though

I was using .14.

We've rolled back to using Tungsten and Synergy for now.

We definitely appreciate all the authors for their work in making servers more performant though and will keep an eye on development of this.

Oolon, Jul 7th at 9:04 PM (modified Jul 7th at 9:16 PM)
@Blink: There is an issue with the better crates mod not working correctly with this. Items can be placed into the crate but not removed. Fruit presses do not press/squeeze either, and no mods have been added that touch that functionality. Backups have been enabl

Im having this exact same issue. Ive been doing tests over and over for it. 
Vinconomy also is effected.
I have found out at least on my server that the client and server are picking up that the fruit press is indeed recieving that the client is holding it down. Its just not completing the interaction. 

The worst part is that with the exact same modlist, running a lan server on my main PC the problem does not persist. It only happens when clients connect from outside networks. 

Ive swapped out ALL mods that interact with fruit press. 
Im at a loss

imtsubaki , Jul 8th at 8:56 PM (modified Jul 8th at 8:57 PM)
@Blink: There is an issue with the better crates mod not working correctly with this. Items can be placed into the crate but not removed. Fruit presses do not press/squeeze either, and no mods have been added that touch that functionality. Backups have been enabl

Good catch! It seems when we patched a vanilla game exploit related to packets and inventory stuff we accidentally caused an issue that drops other packets such as PacketIdScrewStart, PacketIdScrewContinue, and PacketIdUnscrew. This is a simple fix and will be taken care of in the next update! Likely this is a similar cause or issue to why the Better Crates mod also is not working.

Blink, Jul 8th at 9:26 PM
@imtsubaki: Good catch! It seems when we patched a vanilla game exploit related to packets and inventory stuff we accidentally caused an issue that drops other packets such as PacketIdScrewStart, PacketIdScrewContinue, and PacketIdUnscrew. This is a simple fix and wi

Interesting that you think it's a similar cause for Better Crates. I assumed it was due to block break protection for those since removing items from a Better Crate uses left-click which usually triggers a block break for most blocks. Nice to know it should be a simple fix though!

Any thoughts on the backups not firing?

imtsubaki , Jul 8th at 9:29 PM
@Blink: Interesting that you think it's a similar cause for Better Crates. I assumed it was due to block break protection for those since removing items from a Better Crate uses left-click which usually triggers a block break for most blocks. Nice to know it shou

What was the duration on your backup? I did not directly add the backup functionality, but it looks like it doesn't first fire until whatever the duration was. So if it was 6 hours and enabled your server would need to be up for 6 hours to make a backup. I did modify this some to help be less confusing and also make an initial backup.

Blink, Jul 9th at 4:08 AM
@imtsubaki: What was the duration on your backup? I did not directly add the backup functionality, but it looks like it doesn't first fire until whatever the duration was. So if it was 6 hours and enabled your server would need to be up for 6 hours to make a backup.

It was set for 3.5 hours. We restart every 4 hours and I didn't see anything in the logs regarding a backup. I know the feature was recently added to Stratum so it could have just been a weird quirk with my instance.

 

For additional context, I created an egg for Pelican and was running the server there. Not sure if that makes a difference for the backups or not. I haven't taken the time to look at the source files to see how the backup fires.

YourAKingGG [currently restricted], Jul 6th at 2:25 AM

this garbage is literally malware
>server just gets started
>immediately everyone and the server host start rubber banding
>you've been kicked by stratum movement protection
>can't rejoin because i get kicked again every time i join since im in a falling cycle
MOOOODS REMOVE THIS BULLSHIT! Why the fuck do we need a shitty anticheat in a game nobody cheats in?

imtsubaki , Jul 6th at 4:28 PM (modified Jul 6th at 4:32 PM)
@YourAKingGG: this garbage is literally malware>server just gets started>immediately everyone and the server host start rubber banding>you've been kicked by stratum movement protection>can't rejoin because i get kicked again every time i join since im in a falling cycl

Disable the anticheat, It is in the settings :) Some mods aren't compatible with the anticheat, it will be fixed in time. Every single feature and optimization can be edited and toggled in the settings. 

Im sorry you think it's Malware, but Stratum most definitely is not.

 

Spoiler!

yurajoh, Jul 12th at 7:49 AM (modified Jul 12th at 7:50 AM)
@YourAKingGG: this garbage is literally malware>server just gets started>immediately everyone and the server host start rubber banding>you've been kicked by stratum movement protection>can't rejoin because i get kicked again every time i join since im in a falling cycl

Lots of people cheat in Vintage Story, actually. There's just absolutely no meaningful anticheat out there so it's completely undetected.

 

There are multihack clients for the game, you don't even need to look hard.

yurajoh, Jul 4th at 3:01 AM

Question, I noticed there's some GenTerra optimizations Stratum makes. Will a server running Stratum be compatible with something like World Painter or another mod that overhauls GenTerra entirely?

imtsubaki , Jul 4th at 4:10 PM
@yurajoh: Question, I noticed there's some GenTerra optimizations Stratum makes. Will a server running Stratum be compatible with something like World Painter or another mod that overhauls GenTerra entirely?

We have not seen any issues or been told about anything involving issues with Terrain generation mods, and there are a few larger servers out there running 150-300 mods with no major issues at the moment. I do know there is no issue with World Painter that I have seen.

imtsubaki , Jul 3rd at 5:21 PM

Sorry everyone, the github action was marking as finished and success although the patches were applying. Stratum has no issues, it just was releasing a half patched server and caused weird crashes. All is good now on v14 (0.1.4).

Nitrometan, Jul 3rd at 12:40 PM

A modded Client seems to crash in WeatherSystem upon connecting to moded Stratum v14 server, do let me know if this is a me-problem, although it has been running with the same mods on Stratum v12 with the same save file.

Crash log

Running on 64 bit Windows 10.0.19045.0 with 65462 MB RAM
Game Version: v1.22.3 (Stable)
03/07/2026 14:37:14: Critical error occurred
Loaded Mods: hardcorewaterforked@1.4.6-rc.1, craftablecompanion@1.5.4, creaturefootsteps@1.3.0, immersivequicklime@0.1.7, kilnshelves@1.1.7, morebanners@1.3.1, overhaulliblegacycompat@1.1.2, prospecttogether@2.2.1, spinningwheel@1.2.12, sticksfromfirewoodmallow@2.0.1, stonequarryrepckfipil@3.6.2, woodveneer@22.0.3, vhfp@1.22.2, vresp@1.22.2, game@1.22.3, vsimgui@1.2.4, abyssaldepths@1.0.18, airthermomod@0.5.0, algernonsterrainsampler@1.2.1, attributerenderinglibrary@3.1.5, beamtweaksmod@2.1.1, bellowsfix@1.0.3, betterruins@0.6.3, bloodtrail@1.2.4, boattags@1.2.2, butchering@1.13.4, carryon@1.14.2, clothierheirloomsmod@1.1.0, commonlibforked@2.8.1, configlib@1.12.0, cooperativecombatrework@1.1.0, decoclockrevival@1.22.2, extrainfo@2.2.0, farseer@1.4.0, fillmybloomery@1.0.3, barrelhoop@1.0.1, kscartographytable@2.0.2, losslesswaterwheel@1.0.0, mwi@1.7.0, trailmodmaro@1.3.21, placeonslabs@1.1.3, realsmoke@1.3.1, rebuildablebloomery@1.0.6, scarecrow@1.8.2, schematicaplus122@1.0.4, shadehouse@1.2.3, statushudcont@4.3.1, stonebakeoven@1.3.5, stringsense@2.4.0, improvedmetallurgy@1.1.8, tintedanimalgenerations@0.1.0, visibleoresandminerals@1.3.1, vsairshipmod@1.1.3, creative@1.22.3, vsroofing@1.5.6, survival@1.22.3, watersheds@6.3.5, waypointtogetherreborn@2.4.1, woodenshuttersandmore@1.3.3, em@3.5.1, heraldry@2.0.0, medievalarchitecture@1.1.1, playercorpseforked@1.14.1, quiversfork@0.8.35, shearlib@1.3.0, tailorsdelight@2.2.2, terrainslabs@1.0.16, heraldrybanners@2.0.0, wool@1.9.2
System.NullReferenceException: Object reference not set to an instance of an object.
at Vintagestory.GameContent.WeatherSystemClient.OnRenderFrame(Single dt, EnumRenderStage stage) in VSEssentials\Systems\Weather\WeatherSystemClient.cs:line 150
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 257
at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\ClientMain.cs:line 858
at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 910
at Vintagestory.Client.NoObf.ClientMain.MainGameLoop(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 782
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 173
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 742
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 686
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 112
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 354
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 131
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95

Event Log entries for Vintagestory.exe, the latest 3
==================================
{ TimeGenerated = 03/07/2026 14:37:16, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.22.3.0, time stamp: 0x691d0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0x52a4
Faulting application start time: 0x01dd0ae8965d1d2f
Faulting application path: E:\Hry\Vintagestory (1.22)\Vintagestory.exe
Faulting module path: E:\Hry\Vintagestory (1.22)\Lib\openal32.dll
Report Id: d03a34c2-d7a7-460b-96cd-3b8b162bb788
Faulting package full name:
Faulting package-relative application ID: }
--------------
{ TimeGenerated = 03/07/2026 14:35:58, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.22.3.0, time stamp: 0x691d0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0x3c0c
Faulting application start time: 0x01dd0ae71a648c10
Faulting application path: E:\Hry\Vintagestory (1.22)\Vintagestory.exe
Faulting module path: E:\Hry\Vintagestory (1.22)\Lib\openal32.dll
Report Id: 6344c82f-0c8a-4cb1-b1a6-4a566483f24b
Faulting package full name:
Faulting package-relative application ID: }
--------------
{ TimeGenerated = 21/06/2026 14:15:11, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.22.3.0, time stamp: 0x691d0000
Faulting module name: KERNELBASE.dll, version: 10.0.19041.7291, time stamp: 0x41c47fd8
Exception code: 0xe0434352
Fault offset: 0x0000000000025369
Faulting process id: 0x5100
Faulting application start time: 0x01dd01674675680d
Faulting application path: E:\Hry\Vintagestory (1.22)\Vintagestory.exe
Faulting module path: C:\Windows\System32\KERNELBASE.dll
Report Id: 836885b5-3065-4f40-8c52-d689235b4bbd
Faulting package full name:
Faulting package-relative application ID: }

TheFunkyFeetMan, Jul 1st at 12:49 PM

Hey, ive been having an issue with the "Stratum Movement Protection" on my server, Whenever I try to get onto either a boat or a horse or anything, my screen shakes violently and then kicks me for suspicious movement, is there a way to turn this off or maybe a way to find out whats causing the instability? i should mention that everything worked perfectly fine until there was a server crash now we cant use a boat or deactivate stratum.

imtsubaki , Jul 2nd at 1:52 PM
@TheFunkyFeetMan: Hey, ive been having an issue with the "Stratum Movement Protection" on my server, Whenever I try to get onto either a boat or a horse or anything, my screen shakes violently and then kicks me for suspicious movement, is there a way to turn this off or ma

Yes you can disable it in the stratum.json config It's under Anticheat -> Movement -> Enabled, or you can disable the Anticheat itself. I will look into this issue as well though, because vanilla behavior should be unaffected.

Jadesy, Jun 29th at 3:53 AM

Does this work in a Pterodactyl container system?

yurajoh, Jun 25th at 7:47 AM

We use AMP for instance management with VS, would this play nice you think?

berryland, Jun 22nd at 8:15 PM

Can this tool disable text channels for a server? I want to disable global/general chat, group chat, etc. To encourage proxy voice use and stop breaking RP.

PrinceSora, Jun 22nd at 6:40 AM

This looks great! Do you know if there are plans to support things like Discord-hooks, timed backups/restarts, etc...? 

imtsubaki , Jun 22nd at 4:15 PM
@PrinceSora: This looks great! Do you know if there are plans to support things like Discord-hooks, timed backups/restarts, etc...?

None at the moment, but it can be arranged surely. Feel free to open or post any suggestions in Discord on on the GitHub!

FAIV, Jun 20th at 8:43 PM

If I want to try this on my already set up Linux server could I just install it locally, copy over the servers data folder and put it back on the linux server?

Nitrometan, Jun 19th at 4:45 PM

Just a heads-up: On my modded Stratum server, Block Break hardening keeps kicking me out when mining clay deposits with steel shovel with +10% mining speed bonus from quenching at default Stratum settings. Don't really have time to test this in vanilla setup, so if anybody can confirm the issue that'd be great !

imtsubaki , Jun 20th at 11:37 AM
@Nitrometan: Just a heads-up: On my modded Stratum server, Block Break hardening keeps kicking me out when mining clay deposits with steel shovel with +10% mining speed bonus from quenching at default Stratum settings. Don't really have time to test this in vanilla se

Good to know it's still being problematic in some cases, it can be disabled in the config and some values tweaked if needed. I will look into it more, thank you.

r0zemary, Jun 18th at 9:23 PM

Does anyone know if singleplayer worlds with lots of mods (>200) might benefit from being run locally under this software?

ShubiMaja, Jun 12th at 6:37 AM

Are there plans to integrate with https://mods.vintagestory.at/temporalog (shipping metrics to influxdb) so we can view metrics in Grafana? Or at least expose a prometheus endpoint for scraping?

Rob0tmessiah, Jun 12th at 4:32 AM

When I use this with th3 essentials mod, essentials fails to load because both stratum and essentials are trying to use the serverinfo command. I understand both essentials and stratum have a bit of overlap with some of the functionality, but I really only use essentials for discord intergration and auto restarts/backups. Not sure if this would be something you would be willing to help with or give insight on, but I figured I'd reach out and give it a shot. 

imtsubaki , Jun 20th at 11:39 AM
@Rob0tmessiah: When I use this with th3 essentials mod, essentials fails to load because both stratum and essentials are trying to use the serverinfo command. I understand both essentials and stratum have a bit of overlap with some of the functionality, but I really onl

This is something I will keep in mind, while you can disable commands in the config I don't think this will fill your issue as based off how adding commands works, but we will come up with a fix.

Gazpa, Jun 10th at 1:55 AM

And here I was thinking I'd escape paper...

imtsubaki , Jun 20th at 11:38 AM
@Gazpa: And here I was thinking I'd escape paper...

You may never, paper always wins!

propaneko, Jun 9th at 9:48 PM

Is there a chance for an pterodactyl egg to use?

imtsubaki , Jun 10th at 12:22 PM
@propaneko: Is there a chance for an pterodactyl egg to use?

I believe there will be! Someone had mentioned they were going to make one, as soon as I know I will add it here! :)

Kotl, Jun 13th at 12:10 PM
@propaneko: Is there a chance for an pterodactyl egg to use?

I managed to run it on pterodactyl. I can share the egg.

propaneko, Jun 20th at 1:34 PM
@Kotl: I managed to run it on pterodactyl. I can share the egg.

Can you create a github gist for example?

Saint_Marcos, Jul 26th at 7:13 AM
@propaneko: Can you create a github gist for example?

hey did you ever get somewhere with this? I've been looking for a pterodactyl egg for this too

qlVegetalp, Jun 9th at 8:39 PM (modified Jun 9th at 8:40 PM)

How do I use this on a paid server host also is this a replacement for synergy and tungsten and optitime or should it be used in conjunction with them

imtsubaki , Jun 9th at 8:44 PM
@qlVegetalp: How do I use this on a paid server host also is this a replacement for synergy and tungsten and optitime or should it be used in conjunction with them

I would not assume Synergy and Tungsten are compatible as they likely will try to patch things already tweaked or edited, Stratum includes optimizations very similar to both. And currently I do not believe any Vintagestory server hosts will allow it out of the box, maybe try emailing them and once some attention catches on it maybe theyll include it.