Skip to content
Zaldaryon edited this page Jul 7, 2026 · 14 revisions

FAQ

Is this a mod?

No. Optimum is a standalone client. It replaces the engine DLLs, not a zip in your Mods folder.

Do I need to install anything on the server?

No. Optimum works with any server running the matching Vintage Story version.

Will I get banned for using Optimum?

Optimum does not give gameplay advantages. It renders the same world the same way, just faster. Server admins cannot detect it because it does not modify network behavior. That said, check your server's rules if you are unsure. Some servers have blanket "no modified clients" policies.

Can I use my existing worlds?

Yes. Optimum reads the same data folder format as vanilla. Point it at your existing data path with --dataPath or let it use its own. You can switch between Optimum and vanilla on the same world without migration.

Do I download a prebuilt client?

No. Optimum is distributed as source. You download the source, run the build script for your platform, and the build downloads the official client (~590-610 MB) on your machine and produces a ready-to-run folder. Optimum itself ships no game files, so the source download is small.

Does Optimum work on ARM Linux / ARM Windows?

The build targets x64 on Linux and Windows because Vintage Story has no official ARM client for those platforms. On ARM hardware, the x64 build runs via emulation (box64 on Linux, Windows-on-ARM). macOS Apple Silicon uses the native osx-arm64 client.

The macOS build gives a Gatekeeper warning.

Expected. A build produced without an Apple Developer certificate is unsigned. Right-click the app, select Open, confirm the dialog. This happens once. To sign it, build on macOS with an Apple Developer certificate.

How do I go back to vanilla?

Run your original Vintage Story client. Your worlds and account are untouched. Optimum writes settings under Optimum* keys in clientsettings.json; vanilla ignores them.

How much FPS improvement should I expect?

It depends on your hardware, view distance, and scene complexity. Frame pacing improvements are noticeable on any hardware (stutter reduction). GPU-bound players in water-heavy biomes or with SSAO enabled see the most shader-side gains. CPU-bound players with high entity counts benefit from the distance gates.

Can I contribute?

The source is GPL-3.0 with the Commons Clause. Pull requests are welcome. Read Building from Source to set up the dev environment.

I got a "Client Thread Crash" on world load with 0.2.1.

Known bug in 0.2.1: the chunkculling thread died on every world load with Field not found: 'ClientWorldMap.chunksLock'. Fixed in 0.2.2. Reinstall from the 0.2.2 release; the broken DLL lives in your install folder, so updating requires a rebuild.

The game crashed at startup with a shader error (e.g. blur.vsh ... unexpected $end).

A partially extracted or corrupted game download poisoned the build cache. Since 0.2.2 the installer detects truncated files, discards the bad extraction, and asks you to re-run. On older versions, delete the .vanilla folder next to the installer (or the Optimum install) and reinstall.

The installer picks the wrong Vintage Story version (I have multiple installs).

Fixed in 0.2.3. The installer now scans all registry entries and common filesystem paths, then picks the install matching the required version. If you have 1.21.x and 1.22.3 side by side, it selects 1.22.3 automatically. If auto-detection still fails (non-standard install path), use the Browse button or pass -VsPath "C:\path\to\your\1.22.3" on the command line.

Build fails with "OptimumConfig does not exist" / "OptimumDiagnostics does not exist".

The GameVersion.cs.patch failed to apply, which blocked the sources overlay step. This happened to users who downloaded the 0.2.2 zip from ModDB before the hotfix landed. Re-download from the GitHub release page or git clone the repo. The 0.2.3 release has the corrected patch.

Temperature shows "°C" instead of "°C".

Fixed in 0.2.2 (hotfix) and included in 0.2.3. The lang file merge step read UTF-8 files through the system codepage on Windows PowerShell 5.1, corrupting non-ASCII characters. The scripts now use explicit UTF-8 encoding on every file read/write.

The game crashes at startup with "blur.vsh ... unexpected $end" even after reinstalling.

The .vanilla cache from a previous install holds a truncated shader that survives reinstalls. Since 0.2.3, the installer validates shader content (not just file size) and discards a corrupt cache automatically. If you hit this on an older version, delete the .vanilla folder next to the Optimum source and re-run the installer.

The handbook crashes or loads blank with many mods (NullReferenceException in GetHeldItemInfo).

Fixed in 0.2.3. A mod's Harmony patch throwing inside GetHeldItemInfo no longer kills the handbook loading thread. The affected item is skipped and the mod named in the client log.

The game crashes when I open Settings (ArgumentException: duplicate key "optimum").

Fixed in 0.2.4. The IL hook that injects the Optimum tab button fired at two sites in the same composition pass, adding the toggle button twice to the same GuiComposer dictionary. The hook now checks whether it already inserted the call before injecting again.

The Linux installer says .NET 10 SDK is missing, but I installed it.

Fixed in 0.2.4. Previous versions only checked the system PATH. If you installed via dotnet-install.sh --install-dir ~/.dotnet without exporting PATH, the installer missed it. It now probes ~/.dotnet, /usr/share/dotnet, /usr/lib/dotnet, and /snap/dotnet-sdk/current in addition to PATH.

Build from source fails with JSON encoding errors on Arch Linux (Makefile path).

Fixed in 0.2.4. The make deploy lang merge used Python open() without an encoding argument. Under a C or POSIX locale (no UTF-8 default), the merge failed or corrupted non-ASCII characters. The Makefile now passes encoding='utf-8-sig' on reads and encoding='utf-8' on writes, matching the packaging scripts.

Clone this wiki locally