Skip to content

[Bug] Overlay installs cannot enter a world on 0.3.19: Optimum.GameContent.dll is missing from the overlay #129

Description

@Pixnop

Reported by a player (plorant) on the RiftLauncher ModDB page on 2026-10-01. Their logs are in a document they shared publicly: https://docs.google.com/document/d/1pi-qv_1OIG3AyuGQLzdbC1Y82A4YbOMToiwW73drkVc/edit

Environment

  • Windows (win32), Vintage Story 1.22.7, Optimum 0.3.19
  • Installed by RiftLauncher 1.7.0-beta.12 from the win-x64 overlay: the four assemblies patched in place, the game started through the vanilla executable
  • No third-party mods: the server log lists game, creative, survival only

What happens

Creating a new world or entering an existing one fails every time. The same install runs fine once Optimum is removed.

The integrated server starts normally. Its log opens with Game Version: v1.22.7 (Stable) + Optimum v0.3.19, world generation runs (the Optimum worldgen pass timing lines are there), and then:

[Event] Begin game ticking...
[Notification] Entering runphase RunGame
[Notification] Server stop requested, begin shutdown sequence. Stop reason: Exception thrown by server during startup or process

That stop is the consequence, not the cause. The client is what dies. RiftLauncher's verbose log captured the game's output:

Unhandled exception. System.Exception: Coding error: Mods must not get assets before AssetsLoaded stage - do not load assets in a Start() method!
   at Vintagestory.Client.NoObf.TextureAtlasManager.LoadBitmap(ClientMain game, AssetLocationAndSource textureLoc)
   at Vintagestory.Client.NoObf.TextureAtlasManager.LoadCompositeBitmap(ClientMain game, AssetLocationAndSource compositeTextureLocation, Dictionary`2 cache)
   at Vintagestory.Client.NoObf.TextureAtlasManager.LoadBitmaps(BakedBitmap[] bitmaps)
   at Vintagestory.Client.NoObf.TextureAtlasManager.<>c__DisplayClass66_0.<PopulateTextureAtlassesFromTextures>b__0()
   at Vintagestory.API.Util.AsyncHelper.Multithreaded.OnWorkerThread(Action task)
   at Vintagestory.API.Util.AsyncHelper.Multithreaded.<>c__DisplayClass3_0.<StartWorkerThread>b__0()
   at Vintagestory.API.Common.TyronThreadPool.<>c__DisplayClass11_0.<QueueTask>b__0(Object _)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
   at System.Threading.Thread.StartCallback()

What I could and could not check

  • The trace is on a worker thread inside PopulateTextureAtlassesFromTextures, so it reads like texture loading running before the asset manager has flagged its assets as loaded. With no mod in the picture, the message's own advice (a mod loading assets in Start()) does not apply.
  • I have not reproduced it. A Windows test on our side applied and removed Optimum 0.3.19 through the same launcher without an error, but that run did not enter a world, so it says nothing about this path.
  • The same player could not build Optimum with its own installer either (their two earlier comments on the Optimum page, MSB4025 on 0.3.18 and CS0246 on 0.3.19), so there is no run of the packaged build on that machine to compare with.

Questions

  1. Can the atlas population race the asset stage, on some machines only (core count, disk speed)?
  2. Does an overlay-patched folder started through the vanilla executable miss anything Optimum's own launcher sets up before the game starts?

If the second is true, every RiftLauncher install of Optimum is exposed, and the fix or a guard belongs on the launcher side as well.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIncorrect behaviorcrashClient crash, thread death, or NREwindowsWindows-specific

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions