Ungodly Nazi Zombies Install guide · BepInEx 6 + two mods
6.0.0-be.785 v1.0.0

Reference Read in any order

Settings and tuning

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.

SettingSectionWhat 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.

The system

SectionWhat lives here
[General] Master switches — ModEnabled, ReplaceStockAI, DifficultyScale, EnableInOffline / EnableInOnline, OnlyDriveAsHost, DriveSpecials, ErrorsBeforeSelfDisable.
[Performance] 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.

SectionMovesetIts signature module
[Ability - Claw Strike] Type 1 · Claws Crit — ClawStrikeCritChance, ClawStrikeCritMultiplier
[Ability - Heavy Swipe] Type 1 · Claws Knockback — HeavySwipeKnockbackDistance, HeavySwipeKnockbackOdds, HeavySwipeShake
[Ability - Grave Grasp] Type 1 · Claws Slow — GraveGraspSlowPercent, GraveGraspSlowSeconds
[Ability - Lunge] Type 2 · Frenzy Condition — LungeMinRange, LungeMaxRange, LungeSpeedMultiplier
[Ability - Frenzy Howl] Type 2 · Frenzy Area of effect — FrenzyHowlRadius, FrenzyHowlSpeedBuff, FrenzyHowlDamageBuff, FrenzyHowlBuffSeconds
[Ability - Acid Spit] Type 2 · Frenzy Damage over time — AcidSpitProjectileSpeed, AcidSpitDodgeRadius, AcidSpitDotDamage, AcidSpitDotTicks

Everything else

SectionWhat 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.
[GUI] GuiToggleKey, GuiScale, GuiOpacity, GuiPauseGame, ShowOverlay, OverlayCorner, OverlayShowsPerf.
[Debug] 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.

Turn up the pressure
[General]
DifficultyScale   = 1.6

[Movement]
SpeedMultiplier   = 1.25

[Combat]
GlobalDamageScale = 1.3
AttackDuration    = 0.9        # slightly slower swings — readable, still brutal

Buy back frames on huge endless waves

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.

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.

If something is not working