GDS UNGODLY MOD SUITE Installation Guide · by StixsworldHD (StixsmasterHD4k)

PART 1 OF 3 · THE FOUNDATION

Install the BepInEx 6 loader

BepInEx is the loader that runs both plugins. This package is not the stock download — it has been configured specifically for Game Dev Story, so the usual first-launch pitfalls (wrong flavour, wrong architecture, stalled library download) are already solved before you extract a single file.

The archive for this part

BepInEx 6.0.0 Bleeding Edge build 785 (6abdba4), Unity IL2CPP flavour, win-x86 — pre-seeded with the Unity 2022.3.62 base libraries.

BepInEx-Unity_IL2CPP-win-x86-6_0_0-be_785_6abdba4.rar

Download 27.5 MB

What makes this package "specially configured"

CONFIGURED PACKAGE vs STOCK builds.bepinex.dev ZIP
ItemIn this packageWhy it matters
BepInEx\unity-libs\2022.3.62.zip Pre-seeded (~2.4 MB) Stock BepInEx BE downloads the Unity base libraries matching the game's engine version from the internet on first launch. This package ships them for Unity 2022.3.62 — the exact engine Game Dev Story 2.71 runs on — so the first run works fully offline and never stalls waiting on a server.
Flavour & architecture Unity.IL2CPP · win-x86 The game's GameAssembly.dll is 32-bit. The x64 build silently does nothing, and stable BepInEx 5 (Mono) cannot load IL2CPP games at all. This is the one correct combination, already picked for you.
doorstop_config.ini Pre-wired Target assembly already points at BepInEx\core\BepInEx.Unity.IL2CPP.dll; the bundled .NET CoreCLR runtime paths (dotnet\coreclr.dll) are set. Nothing to edit.
BepInEx\plugins\ & BepInEx\patchers\ Pre-created (empty) The folders Parts 2 and 3 drop their DLLs into already exist — no guessing where files go.
Runtime Bundled (186-file dotnet\ folder) IL2CPP BepInEx runs plugins on its own .NET runtime, shipped inside the package. You do not need to install .NET separately.

Installation, step by step

  1. Open the game folder

    In Steam: right-click Game Dev Story in your library → ManageBrowse local files. A window opens at the game folder — on the reference machine that is:

    F:\SteamLibrary\steamapps\common\GameDevStory

    Yours may live under C:\Program Files (x86)\Steam\steamapps\common\GameDevStory or another library drive. The folder you want contains GameAssembly.dll and the game's executable — KairoGames.exe on the current Steam build. Keep this window open.

  2. Extract the archive — contents, not the folder

    Open BepInEx-Unity_IL2CPP-win-x86-6_0_0-be_785_6abdba4.rar in 7-Zip or WinRAR. Inside is a single top-level folder named BepInEx-Unity_IL2CPP-win-x86-6_0_0-be_785_6abdba4. Enter it, select everything inside it, and extract into the game folder from step 1:

    what you extract (the contents of the archive's top-level folder):
    BepInEx\            ← core, patchers, plugins, unity-libs
    dotnet\             ← the bundled .NET runtime (186 files)
    .doorstop_version   ← "4.5.0"
    changelog.txt
    doorstop_config.ini
    winhttp.dll         ← the injector — must sit NEXT TO KairoGames.exe
    THE #1 INSTALL MISTAKE

    If you drag the archive's folder in instead of its contents, you end up with ...\GameDevStory\BepInEx-Unity_IL2CPP-win-x86-...\winhttp.dll and the loader never runs. The test is simple: winhttp.dll must end up in the same folder as KairoGames.exe. If Windows asks to merge or overwrite folders, say yes.

  3. Check the result against the reference

    Your game folder should now look exactly like this (click the screenshot for full size). The five game-owned items — KairoGames_Data, saves, baselib.dll, GameAssembly.dll, KairoGames.exe, UnityCrashHandler32.exe, UnityPlayer.dll — are joined by the six loader items you just extracted.

    Windows Explorer showing the Game Dev Story folder after installing BepInEx: BepInEx, dotnet, KairoGames_Data and saves folders alongside doorstop_config.ini, winhttp.dll, GameAssembly.dll and KairoGames.exe.
    The game folder after extraction: BepInEx\ and dotnet\ folders plus .doorstop_version, changelog.txt, doorstop_config.ini and winhttp.dll sitting next to KairoGames.exe and GameAssembly.dll.
  4. First launch — let BepInEx build its interop layer

    Launch the game normally through Steam. The very first modded start does one-time work:

    • Doorstop loads winhttp.dll, which boots BepInEx before the game.
    • The pre-seeded unity-libs\2022.3.62.zip is unpacked locally — this is the step that needs the internet on stock BepInEx, and doesn't here.
    • Cpp2IL + Il2CppInterop read GameAssembly.dll and generate the interop assemblies into BepInEx\interop\. This is the slow part — allow a minute or so; the game window may take noticeably longer than usual to appear. That's normal, and it only happens once (and again after a game update).

    When the title screen appears, quit the game. The loader is now fully baked.

    CONSOLE WINDOW & ANTIVIRUS

    A separate BepInEx console window may open alongside the game depending on the [Logging.Console] setting in the auto-generated BepInEx\config\BepInEx.cfg — either way, everything is also written to BepInEx\LogOutput.log. And because winhttp.dll is a proxy DLL, an overzealous antivirus can quarantine it; if the game starts completely vanilla with no log file, check your AV's quarantine and whitelist the game folder.

  5. Verify the first run

    Open the BepInEx folder. Alongside the core, patchers, plugins and unity-libs folders you extracted, the first run has generated cache, config, interop and LogOutput.log:

    Windows Explorer showing the BepInEx folder after the first run: cache, config, core, interop, patchers, plugins and unity-libs folders plus ErrorLog.log and LogOutput.log.
    BepInEx\ after the first launch — cache, config and interop were generated automatically. A small ErrorLog.log can exist too; see the note below before worrying about it.

    Inside BepInEx\unity-libs\ you can see the offline trick at work: the shipped 2022.3.62.zip has been unpacked into the full set of Unity engine assemblies — 53 items, no download required:

    Windows Explorer showing BepInEx unity-libs with the 2022.3.62.zip archive and the extracted UnityEngine module DLLs.
    BepInEx\unity-libs\ after the first run — the pre-seeded 2022.3.62.zip sits beside the 53 Unity assemblies it unpacked. On stock BepInEx this zip would have been fetched from the internet.

    Open BepInEx\LogOutput.log in Notepad. A healthy first run begins with the BepInEx banner naming this exact build and the game:

    [Message:   BepInEx] BepInEx 6.0.0-be.785 - KairoGames
    ...
    [Info   :   BepInEx] 0 plugins to load

    "0 plugins to load" is correct at this stage — Parts 2 and 3 fill that in.

    ONE HARMLESS WARNING, DOCUMENTED UP FRONT

    You may see [Warning:Il2CppInterop] Class::Init signatures have been exhausted, using a substitute! in the log (and a small ErrorLog.log may exist). This is emitted by BepInEx's own interop runtime while bootstrapping against Unity 2022.3.62, before any plugin loads. It is a known, harmless notice on this engine version — not a fault in your install, and nothing a plugin can produce or remove.

PART 1 COMPLETE

The loader is installed and baked. The plugin folder at ...\GameDevStory\BepInEx\plugins\ is standing by — on to Part 2: UngodlyEndless.