161 settings across 17 sections, and where to start with them.
These are the zombie AI’s settings. The mystery box has none at all — it configures itself.
161 settings sounds like homework. It is not, because you do not have to
read them: the panel explains every row as you look at it, and one dial in
[General] moves the whole system at once. This page is for when you want more
control than that.
Pick one
Two ways to change anything
Recommended
The in-game panel
Press F7. Changes apply live, mid-wave, so you can feel
the difference immediately instead of restarting to find out. Every row shows its
range, its default and a plain-English explanation.
Save writes the file. Defaults (Tab) and
Defaults (All) undo experiments.
Also fine
The config file
BepInEx\config\UngodlyEmeraldZombieAI.cfg, in any text editor. Edit the line
under a block, save, and either restart or press Reload File in
the panel.
Values outside a range are clamped, not refused. Text that is not a value at
all is ignored with a warning and the previous value is kept.
!
The file is rewritten when you save from the panel
Hand-written comments you add to UngodlyEmeraldZombieAI.cfg do not survive a save. The
explanations already in the file are generated from the mod itself, which is exactly why
they can never drift out of step with what the code actually reads.
Settings the mod does not recognise — left over from a different version, say
— are preserved at the end of the file rather than silently discarded.
Start here
The four dials worth trying first
If you change nothing else, change one of these. Between them they cover almost everything
people actually want to adjust.
Setting
Section
What it does
DifficultyScale
[General]
One knob for the whole system — scales zombie speed, aggression pacing and outgoing damage together. 0.5 is a relaxed shamble, 1 is the tuned baseline, 2 is a genuinely frightening horde, 3 is for people who hate themselves.
SpeedMultiplier
[Movement]
Global multiplier on every zombie’s movement speed, on top of the per-gait multipliers and DifficultyScale. The fastest single way to make the horde scarier or sillier.
FieldOfView
[Detection]
360 means they sense you in every direction, like the stock game — they smell you, they do not watch you. Drop it to 140–180 and you can genuinely sneak behind the horde, which changes the whole feel of a round.
MaxBrainThinksPerFrame
[Performance]
The heavy thinking budget. Lower it if huge waves dip your framerate — the horde reacts a beat slower but costs far less CPU.
◆
And one switch for comparing
ModEnabled in [General] turns the whole thing off without
uninstalling anything: the game’s stock zombie AI runs exactly as shipped. Flip it in
the panel mid-wave to compare old and new brains back to back. It is the quickest way to
see what the mod is actually doing.
The map
All 17 sections
The config file and the panel use the same 17 sections, in the same
order. This is what each one governs.
Shared budgets and think rates — MaxBrainThinksPerFrame, MaxRaycastsPerFrame, near/mid/far think rates and distances, destination throttling, MaxTrackedZombies, SkipFarPolish, CacheRefreshSeconds.
[Detection]
DetectionRadius, FieldOfView, LineOfSightRequired and its grace range, TargetMemorySeconds, HearingGunshotRadius, DownedPlayerIgnoreRadius, PreferRecentAttacker, TargetSwitchCooldown.
[Movement]
Global and per-gait speed multipliers (walk, jog, run, sprint, crawl), stock-or-custom wave thresholds, acceleration, turn speed, stopping and direct-chase distances, stuck recovery, crowd spread, navmesh avoidance priorities.
[Combat]
GlobalDamageScale, attack range padding and height tolerance, AttackDuration and the hit-window fractions, animation variants, barricade damage and interval, IncomingDamageScale, the facing gate.
[Weapon Types]
One or Two mode, starting type, None / Timed / Distance switching with its distances, timers and cooldown, and per-type pick behaviour (Order, Random or Odds).
The six abilities
One section each, and every module of every ability is exposed: odds, cooldowns, ranges,
damage scales, crit chance and multiplier, knockback distance and odds, slow percent and
duration, howl radius and buffs, spit speed, dodge radius, impact and burn.
Area of effect — FrenzyHowlRadius, FrenzyHowlSpeedBuff, FrenzyHowlDamageBuff, FrenzyHowlBuffSeconds
[Ability - Acid Spit]
Type 2 · Frenzy
Damage over time — AcidSpitProjectileSpeed, AcidSpitDodgeRadius, AcidSpitDotDamage, AcidSpitDotTicks
Everything else
Section
What lives here
[Actions]
Enable, odds and cooldown per action, plus each action’s own knobs — dodge radius, angle and mitigation; brace duration and mitigation; strafe lengths; random-move offset; rush interval, speed and duration.
[Status FX]
HandleZapStatus, plus AllowPlayerPush, AllowPlayerSlow and AllowCameraShake — master switches for every body-effect module at once.
[Events]
EventsMasterLog plus per-category console logging: lifecycle, detection, combat, damage, movement, wave and ability events. Logging only — the events always fire.
VerboseLog and LogWiringReport — the startup audit that prints every setting and confirms live code actually reads it.
Paste-ready
Four tuning recipes
Each of these is a small set of changes with a specific outcome. Apply them in the panel or
in the file — the setting names are identical in both.
A horde that hunts you rather than smelling you
The single biggest change to how a round feels. Zombies now have to actually see you, so
corners, props and windows become real cover and sneaking behind the pack becomes possible.
Stealth-flavoured detection
[Detection]
FieldOfView = 160 # from 360 — they watch, not smell
LineOfSightRequired = true # walls hide you until they get close
TargetMemorySeconds = 6 # they hunt your last known spot, then give up
HearingGunshotRadius = 30 # but shooting still gives you away
Faster, meaner, more dangerous
Two dials do most of it, and the third stops it becoming unfair by letting you feel a hit
landing before it lands.
The horde reacts a beat slower and you almost certainly will not notice, because most of
these zombies are far away and merely walking toward you.
Cheaper horde
[Performance]
MaxBrainThinksPerFrame = 12 # lower the heavy decision budget
MaxRaycastsPerFrame = 20 # lower the shared sight budget
FarThinkRate = 1.2 # distant zombies think less often
SkipFarPolish = true # no cosmetic facing polish past mid range
[Movement]
DestinationUpdateRate = 0.4 # fewer path requests per zombie
Claws only, no ranged pressure
If the spit and the lunge are not to your taste, you do not have to disable abilities one
by one — just lock every zombie to the Type 1 moveset.
Melee-only horde
[Weapon Types]
WeaponTypeMode = One # Type 1 (Claws) only
StartingWeaponType = Type1
WeaponSwitchMode = None
While you tune
The debug overlay
ShowOverlay in [GUI] puts a small always-on readout in a corner
of your choice: how many zombies are being driven, what states they are in, and —
with OverlayShowsPerf on — live per-frame budget numbers for both the
think pool and the raycast pool.
That last part is what turns performance tuning from guesswork into measurement. If the
think budget is pegged at its ceiling every frame during a big wave, lowering
MaxBrainThinksPerFrame will not help — raising
FarThinkRate so fewer zombies ask for a think in the first place will.
i
Handy while tuning, cluttered while playing
Both the overlay and VerboseLog are worth turning on while you are dialling
things in and worth turning back off before a serious run. The overlay is also where the
mod tells you if it has stood itself down after repeated internal errors.
Worth knowing
Settings that behave differently online
These are the ones affected by the engine boundary described on
the co-op page. They work fully offline, and online they
apply to the machine’s own player. Every one of them says so in its own description
in the file and on the panel.
AllowPlayerPush and HeavySwipeKnockbackDistance / HeavySwipeKnockbackOdds — the shove.
AllowPlayerSlow, GraveGraspSlowPercent / GraveGraspSlowSeconds — the slows.
AcidSpitDamage and the burn ticks — direct spit damage and its lingering acid.
AllowCameraShake and HeavySwipeShake — local camera kick.
!
One setting everyone should match
IncomingDamageScale scales the damage zombies receive from players.
Each machine reports the damage it deals, so in online co-op every player should run the
same value or the horde will feel inconsistent depending on who is shooting.