Phase Two · Plugin 2 of 3
UngodlyBallistics v3.0.0
Vanilla Easy Red 2 flies every projectile on a drag-free vacuum parabola and hands the damage system an impact speed that is always the muzzle velocity — verified line-by-line in the game's own disassembly. A rifle round “arrives” at 900 m with the energy it left the barrel with. UngodlyBallistics replaces all of it with genuine exterior + terminal ballistics, built from each round's real in-game data — the devs shipped authentic grain weights and calibers, and this mod finally uses them.
What it changes
In flight
- G1 / G7 standard-projectile drag from published Cd-vs-Mach tables — small arms ride G7, MG/autocannon and shells ride G1; every bullet bleeds speed along its true aerodynamic curve.
- ISA atmosphere — air thins exponentially with altitude, so mountain maps genuinely shoot flatter; temperature-driven speed of sound places the transonic drag spike (and the sonic-crack cutoff) where physics puts them, from −40 °C fronts to +50 °C deserts.
- Deterministic wind — a per-match crosswind (steady + gusts) seeded from the Photon room name, so every modded client integrates the identical trajectory. Plus deterministic muzzle-velocity spread and Litz spin drift for rifled small arms.
- Real impact velocity everywhere — the integrated arrival speed is written back into the game's own pipeline, so damage, penetration, ricochet checks and effects all see the truth.
On impact
- Energy-based damage — lethality is the kinetic energy the round actually arrives with (½·m·v² from real mass and integrated speed), shaped by a fully configurable curve.
- Velocity-scaled penetration — kinetic rounds follow a DeMarre-style
pen = rating · (v/v₀)^klaw; HE and HEAT keep full bite at any range, exactly like real chemical energy. - Real armor angles — per-family slope-effect exponents, caliber overmatch (a 75 mm shell treats an angled 10 mm roof as flat steel) and a sane grazing cap.
- Behind-armor residual damage + interior spall — squeaking through a plate wounds; overmatching it 3× delivers the full internal massacre, injected through the game's own internal-module ray and explosion system.
- Physical ricochets — per-family critical-graze bands, angle-based speed retention, a deterministic scatter cone — and the survivor keeps flying under full physics with honestly decayed penetration across every skip. Skip-fire off a road into a halftrack flank is now a real, teachable technique.
- Flak fuse correction — airbursts are re-timed against the real speed profile so AA brackets planes where the gunner intends; and the supersonic-only crack means subsonic SMG fire whooshes while spent long-range rounds arrive eerily quiet.
Install
Prerequisite: BepInEx 6 Bleeding Edge (IL2CPP x64) installed and run once — the same build UngodlyGFX and UngodlyAI use (BE.785 tested).
Field Order 01Open the mod archive
Grab EasyRed2_UngodlyBallistics_v3_0_0_StixsworldHD.rar from the
Downloads page:
EasyRed2_UngodlyBallistics_v3_0_0_StixsworldHD.rar
|- StixsworldHD.EasyRed2.UngodlyBallistics.dll <- the entire mod
'- README.md <- full manual & 78-setting reference
Field Order 02Drop the DLL into plugins
Extract the DLL so it lands at:
Easy Red 2\BepInEx\plugins\StixsworldHD.EasyRed2.UngodlyBallistics.dll
Field Order 03Launch and verify
- Start the game. The BepInEx console lists 18 individually-guarded Harmony patches as the plugin loads.
- In-game, press F7 for the configuration window — solid background, hover any setting for its full battlefield explanation, sliders apply LIVE, SAVE writes to disk, REBIND captures a new hotkey.
- First launch writes the fully-commented
BepInEx\config\com.stixsworldhd.easyred2.ungodlyballistics.cfg(~30 KB), editable in any text editor.
The in-game window (F7, rebindable)
- Eleven tabs: Overview / Flight / Wind & Air / Damage / Zones / Penetration / Armor / Ricochet / Explosives / Audio / Perf & MP.
- 78 documented settings, every one with min / max and a battlefield explanation — the hover panel and the
.cfgcarry identical documentation. - Instant vanilla A/B: flip
MASTER: Enable UngodlyBallistics — every patch hard passes through
with the switch off, no restart needed. The footer shows live simulated-bullet usage
(
bullets 0/600).
Tuning recipes (starting points)
- “Marksman's war” — WindSpeed 6, WindGustiness 0.5, MuzzleVelocityVariation 0.02, HeadMultiplier 8, HelmetProtection 0.35, DamageBase 105. Long shots become a craft.
- “Tank-duel realism” — PenVelocityExponent 1.6, SlopeEffectAP 1.25, OvermatchRatio 3.0, EnableSpall ON, SpallDamage 30, ResidualExponent 1.0. Close the distance or flank.
- “Cinematic arcade+” — DragScale 0.6, WindSpeed 2, RicochetAngleWidth 12, MaxRicochets 4, ExplosionRadiusScale 1.3. Tracers everywhere, still honest underneath.
- “Tournament vanilla” — DisableInMultiplayer ON. Offline you train real; online you match stock.
Multiplayer — shooter-authoritative, deterministic, verified
Easy Red 2 projectiles are shooter-authoritative — verified in the
disassembly. The firing client creates the one real BulletInstance
(canDamage = true) and runs the entire flight → hit →
damage pipeline locally; remote clients only ever spawn cosmetic duplicates via
Projectile.FakeShoot that physically cannot touch health, armor or
modules.
This mod adds, removes, reorders or reformats zero network messages — it
only changes the local numbers the shooter's client was already trusted to compute, exactly
like the vanilla difficulty multipliers it stacks on top of. All mod randomness is
deterministic (spread from the shot's own fire position + direction, wind from the Photon room
name, ricochet jitter from the bullet's seed), so two modded clients integrate byte-identical
trajectories. Mixed lobbies stay fully playable — worst case is a purely visual tracer
divergence on unmodded screens at long range. Want strict tournament parity anyway?
[11. Performance & MP] DisableInMultiplayer = true hard-reverts
everything the moment you're in a Photon room and re-arms when you leave.
Performance
Zero managed allocations on the hot path (pooled per-bullet state keyed by the bullet's IL2CPP
pointer, static drag tables, ~40-flop gust noise); adaptive, meter-capped substeps (default
1.5 m cap ⇒ <1% trajectory error); and a hard ceiling with graceful fallback — beyond
MaxSimulatedBullets (default 600, more than the base game + all DLC can
realistically fly at once) extra projectiles silently keep the vanilla parabola instead of ever
spiking a frame.
Compatibility
Designed alongside and verified against the other Ungodly mods — the three patch sets are fully
disjoint. UngodlyBallistics patches only the ballistics / damage / penetration /
armor / ricochet / explosion chain (ProjectilesManager,
BulletInstance, BulletData,
VehicleDamagablePart + its three subclasses,
BodyPart, Explosion). It contains zero patches
on Photon, Syncher, movement, AI or spawn code. Run all three together freely — and with
UngodlyAI v2.17.0 installed, the two link up: AI marksmen read this
mod's wind by skill.
Disable / uninstall
- Instant vanilla A/B: flip
[1. Master] EnableMod— no restart needed. - Full removal: delete
BepInEx\plugins\StixsworldHD.EasyRed2.UngodlyBallistics.dll.