Core Concepts

Read this once. It explains why the settings are split the way they are.

A projectile is a Mass entity, not an actor

Each projectile is a few dozen bytes of state in the Mass Entity system. There is no actor, component, or Niagara emitter per bullet. Worker threads simulate flight and collision in batches, and the game thread draws everything with a few persistent Niagara systems. That is how 100,000 live rounds fit in a frame budget.

The life of a shot

 Blueprint / C++                     Mass (worker threads)                    Game thread (once per frame)
 ───────────────                     ─────────────────────                    ────────────────────────────
 Spawn Projectiles ──► entities ──►  Sim processor                      ┌──►  Hits → decals, impact sounds, impulses
   (type asset +                     gravity · drag · wind              │     Hits → On Projectile Hit (authority only)
    fire event)                            │                            │     Flybys → whiz sounds
                                     Collision processor                │     Visualizer → tracers, impact bursts, smoke
                                     swept traces on the                │
                                     Projectile channel ────────────────┘
                                     ricochet / penetrate / stop
  1. You fire. A fire event (origin, direction, count, spread, speed, seed) plus a projectile type asset goes to Spawn Projectiles. One call can spawn one round or 20,000.
  2. Mass simulates. Each round integrates gravity, quadratic air drag and wind, then sweeps a trace along the path it covered. Distant rounds trace less often, but the sweep covers every skipped frame, so nothing tunnels.
  3. Surfaces respond. On a blocking hit, the physical surface's response row decides between Stop, Ricochet, or Penetration (enter → travel through the material → exit).
  4. The game thread reacts. Hits become decals, sounds, physics impulses, and the On Projectile Hit event, which you use for damage. Tracers, impact bursts and smoke go to the visualizer.

Four places to author

Keep each kind of data in its layer. Nothing is duplicated between them.

Layer Where Holds
Ammo Projectile type asset EC_Projectile_* (a Mass Entity Config) Ballistics, damage, tracer look, flyby audio, per-surface decals/sounds
World Project Settings → Plugins → Mass Projectile Subsystem Surface physics, budgets, decal/audio limits, networking
Visuals Project Settings → Plugins → Mass Projectile Niagara The three Niagara systems every type draws with
Weapon Mass Projectile Fire component (or your own Blueprint) Which type to fire, RPM, muzzle, pellets, spread

Two distinctions trip people up:

  • World Surfaces vs. Projectile Surface FX. World Surfaces (Project Settings) is material physics: how hard metal is, how far wood lets a round through. Surface FX (on the type) is what a given round looks and sounds like when it hits that material.
  • Replicated Types is not an ammo list. It is a numbered catalog that lets a fire event name a type in one byte over the network. You never edit ballistics there.

Projectile types are Mass Entity Config assets

A type is a Mass Entity Config data asset with these traits:

Trait Required Controls
Projectile Ballistics Yes Speed, drag, lifetime, trace channel, ricochet/penetration limits, impulses, Base Damage
Projectile Visual No Tracer colour/size/trail, bullet mesh, smoke trail
Projectile Audio No Flyby whiz sound and trigger radius
Projectile Surface FX No Per-surface impact/ricochet/exit decals and sounds, impact burst tint

Three types ship: Rifle (fast, flat, penetrating), Shell (slow, heavy, heavy smoke), Plasma (bright, energy-style). Duplicate one to make your own. See Projectile Types.

Impact types

Every hit has one of four impact types. You will branch on them for damage.

Impact type Meaning Counts as gameplay damage?
Stop The round was absorbed (or buried inside the material) Yes
Ricochet The round bounced off No, by default
Penetration Enter The round punched into the surface Yes
Penetration Exit The round came out the far side No, by default

Is Gameplay Damage Impact returns true for Stop and Penetration Enter, so a round passing through one wall damages it once rather than twice.

Authority and cosmetics

Standalone Listen server Dedicated server Client
Simulation & collision ✔ ✔ ✔ ✔ (deterministic mirror)
On Projectile Hit (damage) ✔ ✔ ✔ —
Physics impulses ✔ ✔ ✔ Unreplicated bodies only
Tracers, decals, sounds ✔ ✔ — ✔

Damage is always server-authoritative. Clients re-simulate the same seeded shots only for visuals. See Multiplayer.

Need help? Contact support.