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
0leaves the game's own value alone,1forces the feature on,2forces it off. Used wherever the sensible default is "do not interfere".- Negative means "do not touch"
- Throughout the graphics sections,
-1means leave the engine's own setting alone. That is whyAutoExposureBias, which is legitimately negative, gets an explicitExposureBiasOverrideswitch 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.
[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.
[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.
[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.
[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.
[Graphics]
Enabled=0
Relentless human wave, no cover at all
Nobody takes cover, everybody is an assault trooper. Chaotic, and surprisingly hard.
[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, most expensive first
[Fog]
VolumetricFogMode=0
[Detail]
ForcePrimitiveShadows=0
DrawDistanceMultiplier=1.0
[Lighting]
ShadowCascades=-1
ShadowDistance=-1
[PostProcess]
ScreenPercentage=-1
; 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
| LogLevel | What you get | When to use it |
|---|---|---|
| 0 | Errors only. | Once everything is stable and you want the smallest possible write load. |
| 1 | Errors and warnings. | Quiet running. |
| 2 | Startup proofs, discovery results, subsystem status. | The default. Leave it here. |
| 3 | Per-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.