Ungodly Blasphemous install guide

Station 08

When something is wrong

The log lines that are harmless, the ones that are not, and a fix for every failure these two plugins can produce.

Always

Start with the log§

Almost every problem on this page is diagnosed in the first thirty lines of one text file.

<game folder>\BepInEx\LogOutput.log

Open it in Notepad and answer three questions in order. Stop at the first no — everything after it is downstream of that failure.

QuestionLook forIf no
Did BepInEx load?Chainloader initializedThe loader never ran. Go to station 03’s diagnosis list. No plugin can help.
Did it find the DLLs?2 plugins to loadThey are in the wrong folder. They belong loose in BepInEx\plugins, not in a subfolder, not in the game root.
Did each one start?A Loading […] banner per pluginThe DLL was found but its constructor threw. The exception is printed immediately below the banner — read it.

The log is overwritten every launch

If you are chasing something intermittent, copy LogOutput.log somewhere else before starting the game again, or you will be reading the wrong run.

False alarms

Log lines that are supposed to be there§

Three things in that file look like failures and are not. Ruling them out first saves a lot of time.

AccessTools.Property: Could not find property for type UnityEngine.Application and name isBatchMode

Not from either plugin. That line comes from HarmonyX during BepInEx’s own preloader, before any plugin is loaded — you can see it sitting above Chainloader ready. Application.isBatchMode arrived in Unity 2018.2 and Blasphemous is built on 2017.4.40, so BepInEx probes for it, does not find it, and carries on. Harmless, and there is nothing to fix.

The Action "Submit" does not exist

Also not from either plugin. That is Rewired, the game’s own input library, and it appears on a completely clean install with no mods at all.

You can only call GUI functions from inside OnGUI

This one was real, and it was fixed in Ungodly Difficulty 1.1.1. If you still see it, you are running 1.1.0 or earlier. The banner at the top of the log tells you which version loaded.

No BepInEx, no plugins, no log

Nothing happens at all§

CauseFix
winhttp.dll is not beside Blasphemous.exeBy far the most common. The proxy only works from the game’s own directory. Move the four extracted items up a level so the DLL and the EXE are siblings.
The x86 build of BepInExA 32-bit proxy cannot load into a 64-bit process, and it fails silently. Remove everything and install the x64 zip.
A BepInEx 6 buildBepInEx 6 does not load BepInEx 5 plugins. Both Ungodly plugins are BepInEx 5 plugins. Install BepInEx 5.
The IL2CPP buildBlasphemous is a Unity Mono game. The IL2CPP loader has nothing to attach to.
Antivirus quarantined the proxyCheck quarantine for winhttp.dll. Restore it and exclude the game folder rather than disabling protection.
The game is under C:\Program FilesWindows redirection can stop the game writing its own folders back out. Move the install to a drive or folder you own.
An overlay hooks the process firstUncommon. Close capture and overlay tools and try one clean launch to rule it out.

Plugin loaded, no panel

The hotkeys do nothing§

If the log shows the banner but F7 or F10 produces nothing, the plugin is running and something else is eating the keypress.

  • Recording and capture software. Bandicam, OBS, ShadowPlay, Fraps and the Xbox Game Bar all like binding function keys. Check their hotkey settings for F7, F8, F10 and F11 specifically.
  • Laptop function-key rows. Many laptops send media keys unless Fn is held, or unless an Fn-Lock is engaged. Try holding Fn.
  • The game must have focus. Obvious, but a panel that opened while you were alt-tabbed is drawing behind the window you are looking at.
  • Change the key. Both plugins expose their hotkeys in their config file — section 02 in Ungodly Difficulty, section 01 in Ungodly GFX. Close the game, set something unused, and launch.

Check the readout key too

If F8 or F11 brings up a corner readout but the panel key does nothing, the plugin is definitely alive and the problem is definitely that one key binding.

A solved bug worth understanding

The panel is a blank rectangle§

A solid dark box with no text, no tabs and no controls has one specific cause, and both plugins already ship the fix switched on.

Blasphemous ships PlayMaker. PlayMakerGUI.OnGUI() assigns GUI.skin, GUI.color, GUI.backgroundColor and GUI.contentColor from its own serialised fields and never restores them. Those four are global IMGUI statics: every OnGUI that runs later in the same frame inherits whatever it left behind. When the inherited GUI.color carries an alpha of zero, every style background and every glyph is composited at zero opacity.

CheckWhere
ForceGuiStateReset is trueUngodly GFX config, section 01. It is the fix, and it is on by default. Turn it off only to reproduce the bug deliberately.
The same guard in Ungodly DifficultySection 02. Each plugin carries its own copy rather than relying on the other having run one first, because BepInEx does not guarantee load order between two plugins.
The Diagnostics tabBoth panels show the exact interface state that arrived from the game each frame, and tell you whether it came in dirty. If a colour with alpha near zero is reported, the guard is what is saving you.

If the panel is legible but too small or too faint

That is not this bug. Ungodly GFX has GuiScale (0.5–3.0 — try 1.4 to 1.8 on a 4K panel or a TV) and GuiOpacity (0.5–1.0). Ungodly Difficulty has equivalents in section 02.

Ungodly GFX

Graphics problems§

SymptomCause and fix
The picture flickers, tears or goes black after raising the render scalePost-processing and a high GameRenderScale are both driving the same camera’s target texture. Use one or the other — set post-processing to Untouched, or drop the render scale back to Off.
Framerate collapsed after raising the multiplierCost rises with the square of the number: 4× is sixteen times the pixels of vanilla. Step down to 3 or 2.
The upscale looks soft or the pixels are unevenSet upscale filtering to Point and the fit mode to PixelPerfectInteger. Fractional scale factors like 1366×768 cannot produce uniform pixels by definition.
The HUD is too small on a 16:10, 5:4 or 4:3 monitorThat is the shipped interface-aspect bug. Make sure FixUiCameraAspect is on — it is by default. Full explanation.
Exclusive fullscreen will not move to my second monitorEngine limitation. Unity 2017.3 locks exclusive fullscreen to the primary display. Use BorderlessFullscreen instead, which can target any monitor.
Ambient light resets itselfThe game’s own options menu overwrites the same value whenever it opens. The plugin re-asserts it on an interval; if you opened options mid-change, give it a moment.
Memory climbs over a long sessionLeave ReleaseOrphanedTargets on. The game reallocates both render targets whenever a level’s shared objects reload and never frees the previous pair.
I want a sharper upscale filter or SMAANot possible from a plugin. New shaders have to be compiled into an AssetBundle by the Unity Editor. Stated plainly in the limitations.

Ungodly Difficulty

Difficulty problems§

SymptomCause and fix
Enemies are unkillableCheck MinimumDamageToEnemy is at least 1, and check you have not stacked EnemyFlatArmour with a low EnemyIncomingDamage. The game rounds enemy damage down to a whole number, so a hit can round to zero.
Difficulty never movesCheck Director → Mode is not Off; check DirectorOnlyMovesInCombat is not holding it (the Overview tab tells you when it is frozen and why); and check your minimum and maximum are not the same number.
Enemies occasionally spawn at vanilla speedRaise ApplyDelaySeconds to about 0.4. The movement controller finished its own setup later than usual on your machine, and new enemies wait in a pending queue for exactly this reason.
The boss health bar jumps mid-fightTurn FreezeDirectorDuringBoss on. If it is a mini-boss the plugin did not detect, add its ID to ExtraBossIds.
A mini-boss is tuned like a regular enemyCheck DetectBossesByBalanceData is on. If it is still not caught, open the Bosses tab while it is loaded, read its ID off the roster, and add that to ExtraBossIds.
A boss ignores my settingsOpen the Bosses tab during the fight. Listed with hp x1.00 means it is not being detected. Listed with the right multipliers but still feeling wrong usually means the damage is coming from a spawned hazard — make sure BossOwnsUntracedDamage is on.
Animation speed drifts back to normal in long fightsMake sure ReassertAnimatorSpeed is on. The game resets animation speed after certain hit-freeze effects.
Damage multipliers do nothingIf you are playing PE02 (Bleeding Heart), that is correct. That penitence replaces damage with fixed health stocks at a point after this plugin’s scaling runs, so every hit costs exactly one stock by design. Everything else still applies.
Damage is far higher than the number I setYou have stacked section 08’s raw stat dials on top of EnemyDamage. They multiply. Put EnemyStrengthStat and EnemyDamageMultiplierStat back to 1.00 and tune with EnemyDamage alone.

When frames are the problem

Performance§

  • Render scale first. It is the only setting here with a real cost, and the cost is quadratic. Drop it a step before touching anything else.
  • MSAA next. 8 samples on a large internal buffer is a lot of bandwidth for the edges of rotated sprites.
  • Turn the BepInEx console off if you enabled it. It costs a little every frame and it is not doing anything you cannot get from the Diagnostics tabs.
  • Ungodly Difficulty is essentially free. A settled game with forty enemies costs about forty integer comparisons per sweep, twice a second. Raising SweepIntervalSeconds is available, but because the sweep already skips up-to-date enemies it rarely buys real frames.

Make it easy to fix

What to include if you report a problem§

Four things turn a report that cannot be acted on into one that can:

  1. The whole LogOutput.log, from the run where it went wrong — not an excerpt, and not from a later launch that overwrote it.
  2. Both plugin versions from the banner lines, and the BepInEx version from the top of the log.
  3. The relevant config section pasted as text. For a difficulty problem that is usually section 04, 07 or 12; for graphics it is usually 03 or 07.
  4. What you were doing. Which room, which boss, what you pressed, and whether it happens every time or once.

Rule out both plugins in one step

Move both DLLs out of BepInEx\plugins to your desktop and launch. If the problem persists with an empty plugins folder, it is not these plugins — and knowing that immediately is worth the thirty seconds.