StixsworldHD Songs of Conquest mods

Troubleshooting & FAQ

Ninety percent of problems are answered by one file: BepInEx\LogOutput.log. It's rewritten on every launch, it's plain text, and both mods narrate themselves into it. Open it first, then find your symptom below.

How to read the log like a modder

A healthy launch with both mods installed contains, in order:

[Message:   BepInEx] BepInEx 5.4.23.3 - SongsOfConquest (…)        ← loader alive
…
[Info   :   BepInEx] 2 plugins to load                              ← both DLLs found
[Info   :SoC Ultra Graphics Suite] SoC Ultra Graphics Suite v1.0.1 by StixsworldHD (StixsmasterHD4k) loaded. Press F10 …
[Info   :…] [Patch] OK -> …                                         ← one line per hook
[Message:   BepInEx] Chainloader startup complete

The Graphics Suite prints one [Patch] OK line per hook. A SKIPPED line means a game update renamed something — that single feature idles while everything else keeps working. That's the graceful-degradation design, not a crash.

BepInEx layer

No LogOutput.log is created at all
BepInEx never started. In order of likelihood:
  • winhttp.dll is not directly beside SongsOfConquest.exe — the classic nested-folder extract. Part I, step 3 shows the correct layout with a screenshot.
  • You downloaded the x86 or BepInEx 6 build. Re-download BepInEx_win_x64_5.4.x.zip.
  • Windows “blocked” the extracted DLLs — right-click winhttp.dll → Properties → Unblock.
  • Antivirus quarantined it — restore and whitelist the game folder.
  • Microsoft Store / Game Pass build — doorstop can't hook UWP packaging; the guide and mods target Steam and GOG.
Log exists but says 0 plugins to load (and you installed the mods)
The DLLs aren't where BepInEx looks. Confirm the exact paths BepInEx\plugins\StixsworldHD.SoCUltraGraphics.dll and BepInEx\plugins\StixsworldHD.SoCDifficultyDirector.dll — a common slip is a second nested BepInEx\BepInEx\plugins made by dragging a whole folder. Also unblock the DLLs (Properties → Unblock) if they came from a browser download.
Game crashes on launch right after installing BepInEx
Almost always a mixed install (old core files + new). Delete the BepInEx folder plus the four doorstop files, then redo Part I cleanly with a fresh zip.

Menus & hotkeys

F10 / F9 does nothing
Check the log for each mod's “loaded. Press …” line. If it's there, the key likely collides with an overlay (GeForce/Radeon overlays, screen recorders love F9–F12) — both hotkeys are rebindable in each mod's Overlay & Menu tab / config section. If the line is missing, you're in the “0 plugins” case above.
The menu opens but clicks hit the game underneath
By design the game still sees clicks under the window — the menu's own footer tip says it: drag the window aside. Both menus are draggable and scalable.
Both mods at once — any conflict?
None, by design: distinct GUIDs, distinct hotkeys (F9 vs F10 — F10 is deliberately left free by the director), distinct window IDs, and completely disjoint patch targets (graphics touches URP/rendering; the director touches server gameplay). Run both.

Graphics Suite

Terrain / grass turned black at night
Set CascadeCount back to 0 (Shadows tab) — fixed instantly, no restart. Why: changing cascade count flips a global shader variant (_MAIN_LIGHT_SHADOWS_CASCADE), and Songs of Conquest's custom curved-world terrain shaders may not include that variant in your build. Without it the terrain samples the shadow atlas with the wrong math and reads “fully shadowed” everywhere — black ground at night while props stay lit. v1.0.1 defaults cascade count, shadow distance, soft shadows and bias to GameDefault specifically so this can never happen out of the box; they're opt-ins for builds that support them.
A color/effect slider seems to do nothing
Set ForcePostProcessing = ForceOn (Effects tab) — you likely have post-processing disabled in the game's own options. For anything else, check the log's [Patch] lines for a SKIPPED.
Decoration/flora density didn't change immediately
Scatter is generated as terrain chunks build. Re-enter or reload the map to see the new density everywhere.
Upgraded from v1.0.0 and nights look wrong
Your old .cfg still carries the v1.0.0 shadow defaults. Delete it (it regenerates) or set CascadeCount=0, ShadowDistance=0, ShadowDepthBias=-1, ShadowNormalBias=-1, SoftShadows=GameDefault.
Does the Fog toggle break fog of war?
No. That toggle is the atmospheric haze render pass only — exploration hiding is a different system and is never modified.

Difficulty Director

Badge stuck on “dormant — waiting for a match”
Normal outside a running match (main menu, lobby, map editor). In multiplayer as a guest it's also correct — the director only ever runs on the host.
It's round 2 and nothing has happened
GraceRounds (default 3) is the opening honeymoon — zero actions before that round. Also check EvaluateEveryNRounds and that DryRun is off (DryRun logs decisions without acting). The Telemetry tab's action log shows everything it has done, with round stamps.
I want it to help/hurt one specific team only
Telemetry tab → one-click Exclude/Include per team row (edits ExcludedTeamNames live), or use the per-team bias ledger in Multiplayer + Safety.
Is it cheating for the AI?
Everything flows through the game's own validated commands and server-side difficulty hooks — the same machinery the lobby slider uses, just steered continuously and fairly in both directions. Turn on action toasts and DryRun and audit it yourself.
What's StixsworldHD.DirectorState in my config folder?
The cross-save memory sidecar: a few hundred bytes per match, keyed to the match seed, newest 24 kept, deleted when a match ends. Your save files are never touched. Safe to delete anytime (the director just rebuilds from live state).

Remove one mod, both, or everything

GoalDelete
Graphics Suite only BepInEx\plugins\StixsworldHD.SoCUltraGraphics.dll (+ its .cfg for a clean slate)
Difficulty Director only BepInEx\plugins\StixsworldHD.SoCDifficultyDirector.dll (+ its .cfg and config\StixsworldHD.DirectorState\)
Everything incl. BepInEx BepInEx\ folder, winhttp.dll, doorstop_config.ini, .doorstop_version, changelog.txt

No other files were ever created or modified. Saves, options, and the game's own installation are untouched in every case — Steam's Verify integrity of game files isn't needed, but it's always safe to run for peace of mind.

Grab BepInEx\LogOutput.log from a fresh launch that reproduces the problem — that one file lets the author see the loader version, both plugin versions, every hook result and every director decision. Include your game version (bottom bar of the main menu; this guide was verified on 1.10.4_a515e789d6_master_steam_release) and what you expected vs. what happened.