๐ฌ Join the AnkleBreaker Community! ๐ฌ
Got a question, feedback, or a feature you'd love to see? Join our Discord - we actively improve our assets based on your input, and it's where we drop our latest announcements and run giveaways.
- ๐ฅ Discord: ๐ https://discord.gg/2D36VUmsYN
- ๐ Website: ๐ anklebreaker-consulting.com
๐ฅ Every Projectile, In One System ๐ฅ
Shooters, action games and physics sandboxes all need the same thing: spawn, simulate and pool projectiles, resolve hits, and present muzzle, impact and explosion FX - usually rebuilt from scratch on every project.
Gatling ships that whole stack as ScriptableObject-authored, damage-agnostic content. You author weapons, projectiles, impact behaviours and surface materials as assets, drop one rig in the scene, and fire - from a component, from three lines of code, or from your own netcode. Everything runs on a central fixed-step simulation with swept, anti-tunnelling collision, so a round never passes through a wall because the frame was long.
It never applies damage. An impact is an event on a bus carrying the physical context - speed, energy, angle, surface, damage multiplier - and your game decides what a hit means. There is no health component to inherit from and no assumption about your gameplay.
And going online later is not a rewrite. This package is networking-agnostic by design: it carries no networking dependency at all, so a solo project never sees a line of networking code - but it does carry the seams a netcode needs. Server-authoritative multiplayer is the separate AnkleBreaker Gatling FishNet module, which drives these exact same assets. It is not included here, and no assembly in this package references FishNet.
๐ฏ Real Ballistics, Out of the Box ๐ฏ
- Ballistic zeroing - you configure a hit distance, never an angle. Set a weapon to zero at 50 m and the solver finds the launch angle for you, in 2D or 3D, and it holds at any simulation step rate. Four modes (Absolute, Adjustable, Adaptive, None), plus a high-arc solver for mortars and catapults and a quantised solution cache so it stays cheap. In third person the muzzle sits off to the side of a centred crosshair - the shot still converges on what you aimed at.
- Hitscan and travel time in one pipeline. The same weapon asset can resolve instantly up close and simulate beyond. Hitscan fast-forwards the real trajectory through the same maths, so a tracer draws the arc the shot flew instead of the straight chord between its ends.
- Impact behaviours you compose, not code. Stop, Stick, Bounce, Ricochet, Explode, Penetrate - ordered, shareable rule assets, gated by surface layer, impact speed, energy and grazing angle, and falling through to the next rule when one cannot apply. The same round skips off a plate it grazes and drills the plate it meets square, because the gate is the angle and not the prop.
- Penetration that reads the wall. Surface materials carry an entry threshold, a flat and a per-metre speed loss, a maximum penetrable thickness and an exit floor. Thickness is measured on the collider's own shape, so a round travelling along a beam is not mistaken for a round going through it. AP ammunition becomes a data change - unlimited material types, at zero Unity-layer cost.
- Wind that bends the shot after it leaves the muzzle. Author it as a preset, a scene component, a Unity WindZone with no integration code to write, or a box or sphere volume for a wind that only exists somewhere. It is a pure function of the simulation clock - no state, no random - so a gust is reproducible, and it runs across the job system: Burst-compiled when Burst is installed, ordinary C# jobs when it is not.
- 2D and 3D, not 3D with a 2D mode. One SimulationSpace toggle switches the gravity source and the collision backend. Zeroing, penetration, ricochet, wind, tracers, pooling - every feature works in both dimensions, with dedicated 2D side-view and 2D top-down samples.
๐งฉ Core Building Blocks ๐งฉ
- ProjectileSimulati
Description sourced from the Unity Asset Store listing.