Projectiles & Beams

Bullets, homing missiles, arcing bombs and continuous beams — where damage lives and how each is configured.

🔫4 projectile types
⏱️10 min read
♻️Pooled
💥Impact feedback
ASKProjectileBase

Projectiles carry their own damage, speed and lifetime. A weapon level decides how many go out and in what shape; the projectile Blueprint decides what each one does when it arrives. That split is deliberate — it means one projectile can be reused across a dozen weapons.

Every projectile is pooled. They are recycled rather than destroyed, so a bullet-heavy stage does no allocation once it is running.

Core properties

PropertyDefaultPurpose
Damage10Applied to the first opposing pawn it overlaps.
Speed1200Travel speed in units per second.
Lifespan3Seconds before it expires and returns to the pool. This is the hard cap on every shot.
Sphere Radius15The collision size. Generous radii feel better than visually exact ones — players read near misses as hits.
Applied Knockback0How hard the hit shoves its target.
FactionNeutralSet automatically by the firing weapon. Shots ignore their own faction entirely; Neutral hits everyone.
Move Direction1,0,0Direction of travel, set by the weapon on firing.
Despawn When OffscreenOnRecycles shots that have left the view along their travel axis.
Offscreen Margin150How far past the edge before that happens.
Off-screen recycling only tests the top and bottom edges, and only for shots actually travelling that way. There is deliberately no side test: the camera pans sideways with the player, so lateral bounds move — a side check would delete shots that were still perfectly visible the moment the view panned. Side strays are caught by Lifespan instead.

Components

ComponentPurpose
SphereCollision and root. Lives on the SKProjectile object channel, which ignores everything by default so bullets never test against each other or scenery.
MeshThe visible shot. No collision of its own.
Trail FXA Niagara trail that follows the shot. Restarted correctly on every reuse.
You can add your own Niagara components in the Blueprint. Any component with Auto Activate ticked is started and stopped along with the built-in trail on every pooled reuse, so a custom smoke plume behaves exactly like the stock one.

Impact and expiry feedback

A shot that hits and a shot that times out are different events with separate feedback slots. All are optional.

PropertyFires
Impact EffectNiagara, on contact — including contact with an already-dead target, which still absorbs the shot.
Impact SoundSound, on contact.
Impact Camera ShakeShake, on contact.
Expire EffectNiagara, when Lifespan runs out — a fizzle rather than a hit.
Expire SoundSound, on expiry.
Expire Camera ShakeShake, on expiry.

Impact and expiry effects are attached to the scrolling world automatically, so they travel with the ground rather than hanging in mid-air as the level moves past.

Blueprint hooks

EventFires
On Projectile HitOn damaging a live target, with the actor and hit result.
On Projectile ExpiredWhen Lifespan runs out.

Homing missiles

ASKProjectileMissile

A projectile that acquires a target and steers toward it, accelerating as it goes. Use it as a weapon level's Projectile Class like any other.

PropertyDefaultPurpose
Homing Responsiveness5How hard it steers. Higher locks on tightly; lower gives a lazy, arcing pursuit. 0 disables steering entirely.
Homing Delay0.25Seconds of dumb flight before it ignites. The missile coasts at its launch speed, which reads as the moment it drops clear of the ship.
Max Speed1800Speed it builds to once ignited. 0 keeps it at its launch speed.
Acceleration2500How fast it climbs to Max Speed.
Retarget Interval0Seconds between re-picking a target. 0 keeps the first lock for life.
Seek Radius0How far it looks for a target. 0 searches without limit.
Orient To VelocityOnPoints the mesh where it is going.
Target searching is rate-limited internally, so a screen full of missiles with nothing to shoot at does not scan the world every frame. Lock-on and scheduled re-targets are still immediate.

Bombs

ASKBombProjectile

An arcing projectile that lands at the player's position and explodes in an area. Because it commits to a position at launch, it is a telegraphed threat the player can walk out of — the classic mortar attack.

PropertyDefaultPurpose
Flight Time1.5Seconds from launch to impact. This is the reaction window.
Arc Height500Peak height of the lob.
Explosion Radius250Area of effect on landing.
Damage FalloffOnFull damage at the centre, tapering to nothing at the edge. Off deals full damage across the whole radius.
Explosion Effect / Sound / Camera ShakeFeedback on detonation.

The landing marker

The telegraph is what makes a bomb fair. A marker mesh is placed at the target point for the whole flight so the player can read the threat and move.

PropertyDefaultPurpose
Landing MarkerThe marker mesh. Leave it unset for an untelegraphed bomb.
Marker Z Offset20Height above the ground, to avoid z-fighting with terrain.
Animate MarkerOnGrows and pulses as impact approaches.
Marker Start Scale0.35Size at launch, growing to full by impact.
Marker Pulse Amount0.15Depth of the pulse.
Marker Pulse Speed4Pulses per second.
Marker Flash ParamFlashScalar parameter driven on the marker's material for a final warning flash.

Laser beams

ASKLaserBeam

A beam is not a projectile — it is one continuous swept trace that damages everything along its length. Set a weapon level's Beam Class and that level becomes a beam weapon; projectile, burst and spread settings are then ignored.

PropertyDefaultPurpose
Damage Per Second60Damage per second of continuous contact. This is where beam damage lives — not on the weapon.
Damage Interval0.1Seconds between damage ticks. Each tick applies the damage banked since the last one, so totals are identical at 60 or 144 FPS. 0 damages every frame.
Max Length2000How far the beam reaches.
Growth Speed2000How fast it extends to full length.
Retract On DeactivateOnPulls back when released instead of vanishing.
Stop At First HitOnThe beam is blocked by the first target. Turn it off to pierce everything in line.
Trace Radius20Thickness of the swept trace.
Laser SoundPlayed while active. Beams use this rather than the weapon level's fire sound.

Driving the visuals

PropertyDefaultPurpose
Beam End Param NameLaserEndThe Niagara user parameter the beam writes its end point to. Your beam system needs a vector parameter of this name.
Beam End In World SpaceOnWhether that end point is written in world or local space — match whichever your Niagara system expects.
Colour Param NameColourColour parameter driven on the beam system.
If a beam deals no damage, check Damage Per Second on the beam Blueprint. A Blueprint child overrides the C++ default, and a zero there is by far the most common cause — the weapon asset carries no damage figure at all.

Building a projectile

1

Create the Blueprint

New Blueprint Class → SKProjectileBase, or SKProjectileMissile / SKBombProjectile for those behaviours. Set the Mesh and the Sphere Radius.

2

Set damage and travel

Damage, Speed and Lifespan. Keep Lifespan tight — it is the safety net that returns strays to the pool, and a long one keeps shots alive off screen for no benefit.

3

Add feedback

Assign the Trail FX system, plus Impact and Expire effects and sounds. Leave the camera shakes empty on small-arms fire and save them for something with weight.

4

Reference it from a weapon level

Set it as Projectile Class on a weapon level asset. Faction and direction are injected by the firing mount, so the same projectile works for the player and for enemies.

Common fixes

  • Shots pass through targets — the projectile's Faction matches the target's, or the target's capsule doesn't overlap the SKProjectile channel
  • Trails vanish on recycled shots — a custom Niagara component needs Auto Activate ticked to be managed by the pool
  • Explosions hang in the air as the level scrolls — the Niagara emitter needs Local Space enabled
  • Missiles fly straight — Homing Responsiveness is 0, or nothing valid is within Seek Radius
  • A beam does nothing — Damage Per Second is 0 on the beam Blueprint

Where next

Weapons

The mounts and levels that fire these.

Read →

Object Pooling

How reuse works, and the one rule to follow.

Read →

Enemies

Give an enemy a weapon that fires these.

Read →