11 When it goes wrong

About & credits

Who made this, what changed between versions, and the legal position on all of it.

Both mods and this guide are by StixsworldHD (StixsmasterHD4k). Everything here is unofficial, unaffiliated, and free.

OverviewWhat this package is

ComponentVersionNotes
Ungodly Bendy Enhancedv1.2.0Graphics, resolution, UI scaling and frame pacing. 222 settings, an in-game window on F7, and a config file.
Ungodly Bendy Community Patchv1.1.3Seventeen modules, thirty patch points. No configuration of any kind.
This installation guide—Twelve pages of PHP and CSS with no dependencies and no database. Host it anywhere, or open it locally.
BepInEx5.4.23.5Not mine, not redistributed here. An independent open-source project you download from its own release page.

Both mods target Bendy and the Ink Machine (Steam AppID 622650) on BepInEx 5, x64, Mono. The screenshots throughout this guide were captured on game build v1.5.2.2 at 1920×1080.

ChangelogUngodly Bendy Enhanced — version history

v1.2.0 — subtitle synchronisation

222 settings, up from 217, and a new Subtitles tab.

  • Fixed subtitles drifting behind the voice acting. The voice queue advances every (clip length − one physics timestep); the subtitle queue advances every (clip length). The difference accumulates at one timestep per line and never self-corrects — 580 ms behind by line 30 in vanilla, past the noticeable threshold by line 7. A Harmony prefix matches the intervals, removing the accumulating term entirely.
  • Made it self-correcting. The subtitle timer is compared against the real playback position of the voice clip and snapped back past a tolerance, but only when both queues are provably on the same line.
  • Fixed a bug this mod had introduced. The config window set Time.timeScale = 0 without pausing audio, so opening it mid-conversation desynced subtitles for the rest of that conversation. It now pauses the audio listener too, togglable as Also Pause Audio.
  • Added a manual ±2 second offset for audio hardware latency.

v1.1.0 — smoothness and frame pacing

Driven by community bug reports.

  • Fixed the camera jitter. Player movement runs in FixedUpdate at 50 Hz while the view rotates at render rate, and CharacterController does not interpolate — so the world translated in 50 Hz steps regardless of framerate. The physics rate is now matched to your refresh rate by default.
  • Compensated the game's gravity unit bug so raising the physics rate cannot alter jump height or fall speed. Gravity and ground-stick scale linearly; jump speed is solved numerically to preserve the vanilla apex to 0.00000%. If compensation cannot be applied, the physics rate is left untouched.
  • Added a framerate cap mode, defaulting to your refresh rate, with a JustBelowRefreshRate option for variable-refresh displays.
  • Added incremental garbage collection with a configurable time slice.
  • Added a maximum frame time cap to prevent the catch-up stutter spiral after a stall.
  • Added background loading priority control for streaming hitches.
  • Added optional shader pre-compilation.
  • Added head bobbing and camera swaying overrides that bypass the vanilla options screen's broken bobbing toggle.
  • New Smoothness tab. Existing config section numbering is unchanged, so upgrading does not orphan your settings.

v1.0.1 — layout correctness

A pass on the in-game window driven by a live screenshot of 1.0.0 running at 1920×1080.

  • Fixed option buttons clipping their own text — the UI Scaling Mode row was rendering MatchHeigh and ExpandToFil. Buttons are now measured with CalcSize and given their exact required width.
  • Fixed the selected option being measured with the wrong style. The highlighted button used a bold style wider than the unselected one, so an option could clip only while selected.
  • Fixed reset buttons being 24 px wide for a glyph needing 26.
  • Setting-name labels now scale with window width and word-wrap rather than clip.
  • Long status text in the sidebar now wraps instead of running off the panel.

v1.0.0

Initial release.

ChangelogUngodly Bendy Community Patch — version history

v1.1.3 — current

A seventeenth module. Thirty patch points.

  • Scripted sequences no longer break. Bendy stages most of its story through the same AI thought machine that drives ordinary patrolling, and four defects lived in it: a wait callback with no try/catch that stranded the AI permanently if it threw; the same callback firing every frame when one Wait follows another; a scripted walk abandoned the moment the AI spots the player, so its arrival callback never fires; and arrival dead-ending when two moves are scripted in a row.
  • Fixed a regression of this patch’s own. AI unstick, the Miracle Station attack block and the respawn grace window all reached into AI state without knowing whether a sequence was running — dragging enemies off scripted marks, stomping scripted attacks and cancelling staged chases. All three now consult a shared IsScripted() check, and every thought change and target clear routes through helpers that refuse while a script owns the AI.

v1.1.2 — superseded

Coordinated with Enhanced v1.2.0. Seventeen modules across thirty patch points.

  • The subtitle module now stands down. Its backlog cap was a mitigation; Enhanced v1.2.0 found and fixed the actual cause. Because Enhanced’s resync only runs while both queues hold the same number of entries, and this module’s trim removes entries from one of them, running both would have silently disabled the cure. The module now checks Harmony.GetPatchInfo at startup and disables itself entirely if anything else has already patched ShowSubtitles, logging that it has done so.

v1.2.1 — superseded

Maintenance pass over the v1.2.0 subtitle and localization work.

v1.2.0 — subtitles and localization

Two new modules; sixteen total, now across twenty-nine patch points.

  • Subtitles no longer drift out of sync with their audio. Dialogue audio and its subtitle went into two separate queues advanced by two unrelated clocks, with nothing comparing them — and because the subtitle clock is scaled and clamped while audio streams in real time, the error only ever accumulated in one direction. Subtitles are now bound to the AudioObject their own line created and displayed for exactly as long as it plays, which is sync by construction rather than by arithmetic. A side effect worth having: subtitles are now immune to frame pacing, so nothing Enhanced does to physics rate or delta clamping can move a line relative to its audio.
  • Raw localization keys are no longer shown as dialogue. When a translation lookup missed, the variable was left holding the raw term and the raw term was drawn — producing OBJECTIVES/CH1_OBJ_01 on screen. The miss is a startup race, so successful lookups are memoised and a miss schedules a sweep that retroactively repairs text already displayed. Only if both fail is the term humanised, so the worst case is Ch1 Obj 01 rather than a debug path.

v1.1.1 — physics-rate adaptation

Adapts two modules to Enhanced v1.1.0 raising Time.fixedDeltaTime.

  • Ragdoll stability was tuned for Unity's default 0.02 s step. At a 144 Hz timestep the physics loop runs almost three times as often, so fixed solver iterations and continuous collision detection would cost roughly three times as much — landing precisely in the Butcher Gang death moments where the vanilla lag spike already lives. Both now scale to the actual timestep, and at vanilla 50 Hz the behaviour is byte-for-byte what it was.
  • AI unstick needed no change — it accumulates real Time.fixedDeltaTime rather than counting steps, so its 1.5-second window was already rate-independent by construction.

Earlier

Seventeen modules across thirty patch points. Every root cause was independently confirmed against the decompiled shipping assemblies before a line was written; the bug inventory was cross-referenced against the Bendy Wiki bug list, PCGamingWiki, and the Steam community bug and softlock megathreads. The full write-up for each fix is in the archive's README.

The siteAbout this guide

Twelve pages of plain PHP and CSS. No framework, no build step, no database, no JavaScript dependencies. Requires PHP 8.0 or newer and nothing else.

How it is put together

  • config/site.php is the single source of truth. Versions, the navigation tree, download mirrors, checksums and every screenshot caption live there, so a version bump is one edit rather than twelve.
  • includes/functions.php is a small component library — callouts, code blocks, tables, the step rail, the screenshot figures.
  • The previous/next links and the on this page rail are both generated, not hand-maintained, so they cannot drift out of sync with the content.
  • Asset URLs are cache-busted from file modification time, so a CSS change is never served stale.

Design

The page is aged ochre studio stock with ink type, and the code blocks are styled as the mod's own dark configuration window sitting on top of it — the same relationship those two surfaces have in the screenshots. The numbered rail beside each install step is an animator's exposure sheet, which felt like the right structural device for a guide about a game set in a 1930s animation studio.

Typefaces are Ultra for display, Special Elite for labels and frame numbers, Libre Franklin for body text and Courier Prime for code. All four load from Google Fonts, with fallback stacks that keep the layout intact offline.

Accessibility and offline use

  • Every screenshot is a plain link to the full-size image, so the lightbox is an enhancement rather than a requirement. With JavaScript off, clicking one still opens it.
  • Keyboard navigable throughout, with visible focus rings and a skip link.
  • prefers-reduced-motion is respected — all transitions and the step reveal are disabled.
  • There is a print stylesheet. The whole guide prints cleanly, with link URLs expanded.

Getting in touchContact

https://stixsworldhd.com

If you are reporting a problem, the reporting section lists the four things that make a report actionable. The short version: verbose log, a screenshot of the About tab, and whether it still happens with Master Enable off.