2026-10-05 · THE SERPENT LIES STILL

Tuning the Low tier, and a bot that plays overnight

A character level-of-detail bug that made every character draw at full detail is fixed, the Low tier is retuned from measurements, and an unattended overnight run of the AI Watch mode found a crash pattern tied to reloading the Church level.

Two threads over the last few days: getting the vertical slice to run on a modest integrated GPU, and letting the game play itself for hours and write down what goes wrong.

A level-of-detail bug that hid in plain sight

Character outfit pieces were copying the level of detail of a hidden base mesh. That base mesh never changes, so every character always drew its most detailed version, whatever the distance. Fixing it cut skinned vertices per frame from about 4.5 million to about 0.6 million.

It is the kind of bug that measurement finds and eyes do not: nothing looked wrong, the frame time was simply paying for detail nobody could see.

The Low tier, retuned

The game now starts in Low graphics mode on every machine, because Low is the tier that gets tuned first. Players can raise it in Options.

The retune came from measurements, not guesses: 50 percent render resolution, no screen-space ambient occlusion, FXAA instead of temporal anti-aliasing, cheaper volumetric fog and fewer shadow casters. On integrated GPUs, characters are now skinned in the vertex shader rather than through the GPU skin cache.

Steady-state frame time, measured with no window open:

ViewBeforeAfter
Yard62 msabout 34 ms
Nave68 ms31.5 ms

Most Church views are now at or near 30 fps. The slowest, the fog gate, is at about 36 ms.

One crash fell out of the same work. Hardware occlusion queries made the integrated GPU's driver hang in a visible window, so they are now off for integrated GPUs.

AI Watch, left running

The title screen's WATCH AI PLAY mode now loops on its own: after the boss it returns to the bonfire, the boss respawns, and it goes again. A launcher keeps it going for hours, and if the game crashes or hangs, the launcher records the reason and restarts it. A background recorder writes per-second telemetry plus every game event and error, and a report tool groups the problems by type so they can be fixed afterwards.

The bot plays with the same inputs a player has: movement, rolls, light and heavy attacks, lock-on, flasks and interacting. It reads enemy attack timings to dodge, hunts backstabs and parry-ripostes, farms enemies and levels up.

What the first overnight run showed

An unattended run of more than 3 hours played at about 29 fps between restarts. Every crash and freeze came shortly after the Church level had been reloaded several times in one session. In the editor build, each reload rebuilt the character meshes while the machine was short on memory. The fix for the bot is to restart the whole process instead of reloading the level. Whether repeated reloads degrade the game itself for a player is still being looked into.

The logs also produced three bot fixes:

  • It no longer abandons a whole run when one item is out of reach.
  • It can path back through fog gates.
  • One item that only a player could reach is now reachable by the bot too.