Repository navigation
Compatibility
Optimum is client-only. It connects to any Vintage Story server running a matching game version (1.22.7). The server does not need any modification. From the server's perspective, Optimum looks like a standard client.
Each Optimum build targets one Vintage Story version. Running Optimum built for 1.22.7 against a 1.22.2 or 1.23.x server will fail at the version handshake, same as vanilla. Check the release notes for the supported version.
When Vintage Story updates, Optimum's cache auto-invalidates on the next launch and re-patches against the new DLLs. If a game update changes an internal API that Optimum patches, the patcher reports the failure, restores built-in vanilla mods, and exits before game startup.
Optimum v0.3.18 targets Vintage Story 1.22.7. Install Vintage Story 1.22.7 first. Optimum does not update your Vintage Story installation. See Installation for setup instructions.
Most client-side mods work with Optimum. Mods that add items, blocks, recipes, or UI elements through the standard modding API load without issues.
Mods that may conflict:
- Mods using Harmony to patch the same methods Optimum transplants via Cecil. The patched DLL already contains the optimization, so a Harmony patch targeting the same code path may hit unexpected IL.
- Mods that hook into entity rendering internals (custom renderers, shader injection).
- Mods that replace engine shader files or patch shader loading.
- Mods that replace the frame-limiting or game-loop logic.
If a mod causes problems, disable it and test. Most issues are detectable at startup (crash or log error on method resolution).
| Mod | Status | Notes |
|---|---|---|
| Komet | Coordinates adaptive radius | When both mods expose vsmod-interop/1, Komet can request that Optimum yield its adaptive chunk-radius controller while Komet's adaptive chunk inflow is active. Optimum restores the saved setting when Komet releases the request. Optimum keeps its render-path guard enabled because render-path overlap is not negotiated. |
| OptiTime | Overlaps | Optimum is the successor. Disable OptiTime. |
| SheyderMod | Requires testing | Replaces engine shader files and patches shader loading. Optimum records the ownership conflict and disables affected optional shader features, but the combined render stack still needs a visual test. |
| Salty's Immersive Light | Requires testing | Changes client lighting data without replacing a shader file. Test lighting and shadow output with the current release. |
| Natural Foliage | Compatible | Texture-only package in the audited release. It does not replace an Optimum shader file. |
| TerraTag | Compatible | Map overlay labels render correctly. Seam-fix and mipmap patches work since 0.3.6. |
| Coria Ender Shaders | Incompatible | Patches the same OIT render stage Optimum guards. Crashes with NullReferenceException in BeforeOIT.OnRenderFrame. Use Ancestral Bliss or Sheyder instead. |
| Eco Machina | Compatible | Optimum preserves IL slot layout in CalculateVisibleFaces
|
| VS Roofing | Compatible | LOD gate respects canChisel attribute |
| SmithingPlus | Compatible | Creative search cache crash is contained |
| Waypoint icon packs | Compatible | SVG reload fix prevents icon loss |
| Mods using Harmony/MonoMod | Partially incompatible | MonoMod's JIT hook layer references .NET 6 assemblies (e.g. PresentationFramework 6.0.2.0) that don't exist on the .NET 10 runtime Optimum ships. Harmony patches to gameplay code generally apply fine; the failure surfaces when a MonoMod-hooked path loads a missing .NET 6 assembly. |
Optimum does not modify save formats, world generation, or block/item data. You can open the same world folder with Optimum and vanilla interchangeably.
The Vintage Story server protocol does not change, and remote servers do not need Optimum. Optimum coordinates selected local runtime features with compatible client mods through vsmod-interop/1; this does not change multiplayer networking or guarantee compatibility with every mod.
If a required patch, assembly validation, or JIT preflight fails, Optimum prints an error and exits. The launcher invalidates incomplete cache data, restores built-in vanilla mods, records Launch aborted in Logs/optimum-launcher.log, and returns a nonzero exit code. It does not launch Vintagestory.exe as a fallback. Your data path, worlds, and account remain intact. Optimum stores its settings in ModConfig/optimum.json in your data path, which vanilla ignores. Launch Vintagestory.exe yourself when you need an independent vanilla run.
Optimum never modifies vanilla files. The patched DLL lives in .optimum/cache/, a separate directory. Uninstalling Optimum or verifying game integrity leaves vanilla in the exact state it was before.