Ungodly Beach Invasion 1944 AI v1.2.0 · installation guide

Step 03 · optional

Configure it

Everything lives in UngodlyBeachAI.ini, next to the DLL — 213 settings across 20 sections. There is no in-game menu by design. Every entry in the file carries its own description, valid range and default, so the file is its own documentation and this page is only a map of it.

The conventions

Four rules cover the whole file

0 / 1 / 2 tri-states
0 leaves the game's own value alone, 1 forces the feature on, 2 forces it off. Used wherever the sensible default is "do not interfere".
Negative means "do not touch"
Throughout the graphics sections, -1 means leave the engine's own setting alone. That is why AutoExposureBias, which is legitimately negative, gets an explicit ExposureBiasOverride switch instead of a sentinel that would be ambiguous.
Out-of-range values are clamped, not rejected
A bad hand-edit degrades gracefully instead of destabilising anything. The mod loads, clamps the value to the documented range, and carries on.
Every section has its own Enabled
Switch off an entire subsystem with one line, without deleting or commenting out dozens of settings.

The map

All 20 sections

Grouped by what they affect. The number is how many settings that section holds.

Core & safety · 3 sections · 18 settings

  • [General] 7 Master switch, logging level, director tick rate, rescan interval and agent cap.
  • [Discovery] 5 Startup retry behaviour, strict self-validation, and which vtables get hooked (Character, AIController, Actor).
  • [Safety] 6 Skip rules for dead, vehicle, parachuting and inactive pawns, pointer validation, per-tick budget.

AI & pathfinding · 10 sections · 109 settings

  • [Locomotion] 24 Run, swim and crouch speed, acceleration, friction, turn rate, step height, walkable slope, ledge behaviour, jump and air control.
  • [Avoidance] 6 RVO local avoidance on/off, consideration radius, yield weight, per-soldier symmetry-breaking jitter and mass.
  • [Pathfinding] 15 Stuck detection thresholds and the full four-stage unstick ladder, including behaviour-tree restart and destination reassignment.
  • [Cover] 11 Stale reservation reaping, search radius, threat distance band and cover scoring weights.
  • [Targeting] 11 Engagement range, switching hysteresis, distance / player / retaliation weights, focus, strafing and the game's own perception list.
  • [Engagement] 9 Open-fire range scaling, grenade range band and per-soldier cooldown, aim offset.
  • [Squad] 11 Squad radius and size cap, assault / flanker / suppressor split, per-role speed and aggression, decrowding.
  • [Durability] 5 Health scaling. Off by default.
  • [Director] 9 Adaptive intensity bounds, rise and fall rates, and how strongly intensity influences speed and aggression.
  • [Factions] 8 Separate German and Allied multipliers for speed, health and aggression.

Graphics · 6 sections · 69 settings

  • [Graphics] 3 Master switch for the whole graphics half, re-assert interval, apply-once mode.
  • [Scalability] 13 Engine quality buckets, resolution scale, frame rate cap, VSync and commit mode.
  • [PostProcess] 27 Bloom, exposure, motion blur, ambient occlusion, reflections, lens effects, colour grading and screen percentage.
  • [Lighting] 11 Shadow distance, cascade count and distribution, bias, sharpen, sun angular size, indirect and volumetric scattering.
  • [Fog] 9 Height fog density, falloff, opacity and start distance, plus volumetric fog distance and scattering.
  • [Detail] 6 Per-object draw distance multiplier and forced shadow casting.

Gore · 1 sections · 16 settings

  • [Gore] 16 Persistent corpses and their cap, corpse fade, permanent blood, decal persistence and scaling, forced ragdoll.

Total: 212 settings across 20 sections. Every one is wired to code that reads it — the 1.0.2 release audited each setting against its call site and completed the ones that were being parsed and then ignored.

Starting points

Six presets you can paste straight in

Each one changes only the lines shown. Everything else stays at its default, so you can combine them freely — paste the blocks that appeal and leave the rest of the file alone.

Just make them push harder

Faster troops, an assault-heavy role split and a higher intensity ceiling.

UngodlyBeachAI.ini
[Locomotion]
WalkSpeedMultiplier=1.35

[Squad]
RoleAssaultPercent=70
RoleSuppressorPercent=10

[Director]
IntensityMax=1.6

Only the stuck and clumping fixes

Leaves combat behaviour, speed and visuals completely stock. Keep Avoidance, Pathfinding and Cover enabled.

UngodlyBeachAI.ini
[Locomotion]
Enabled=0

[Targeting]
Enabled=0

[Engagement]
Enabled=0

[Director]
Enabled=0

Maximum visual quality

Supersampling, long shadow cascades and quadrupled draw distance. Costs real frames.

UngodlyBeachAI.ini
[PostProcess]
ScreenPercentage=125

[Lighting]
ShadowDistance=45000
ShadowCascades=6

[Detail]
DrawDistanceMultiplier=4.0
ForcePrimitiveShadows=1

Bury the beach in bodies

Five times the corpse cap, doubled decal size and forced ragdoll on every death.

UngodlyBeachAI.ini
[Gore]
MaxPersistentCorpses=1000
DecalSizeMultiplier=2.0
ForceRagdollOnDeath=1

Leave my video settings alone

Disables the entire graphics half in one line. AI and gore continue as normal.

UngodlyBeachAI.ini
[Graphics]
Enabled=0

Relentless human wave, no cover at all

Nobody takes cover, everybody is an assault trooper. Chaotic, and surprisingly hard.

UngodlyBeachAI.ini
[Cover]
CanEnterCoverMode=2

[Squad]
RoleAssaultPercent=100
RoleFlankerPercent=0
RoleSuppressorPercent=0

If frames drop

What to turn down, in order

Cost is not evenly spread. Work down each list and stop when you are happy — the first item in each is by far the largest saving.

Both halves are independent. If the AI is what you came for, the entire graphics half switches off with [Graphics] Enabled=0 and costs you nothing.

Graphics cost
; Graphics, most expensive first
[Fog]
VolumetricFogMode=0

[Detail]
ForcePrimitiveShadows=0
DrawDistanceMultiplier=1.0

[Lighting]
ShadowCascades=-1
ShadowDistance=-1

[PostProcess]
ScreenPercentage=-1
AI cost
; AI, most expensive first
[General]
DirectorHz=10
AgentRescanIntervalMs=800
LogToFile=0

[Safety]
MaxAgentsPerTick=96

Logging

Turn it up when something is wrong, then turn it back down

LogLevelWhat you getWhen to use it
0Errors only.Once everything is stable and you want the smallest possible write load.
1Errors and warnings.Quiet running.
2Startup proofs, discovery results, subsystem status.The default. Leave it here.
3Per-soldier capture, unstick escalations, cover reaping.Diagnosing behaviour. Turn it back to 2 afterwards — this writes a lot.

LogToFile=0 stops the log being written at all. That is worth doing on a busy beach once you are happy with the configuration, since verbose logging during a large landing is a genuine frame cost.