Projectiles & Beams
Bullets, homing missiles, arcing bombs and continuous beams — where damage lives and how each is configured.
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
| Property | Default | Purpose |
|---|---|---|
| Damage | 10 | Applied to the first opposing pawn it overlaps. |
| Speed | 1200 | Travel speed in units per second. |
| Lifespan | 3 | Seconds before it expires and returns to the pool. This is the hard cap on every shot. |
| Sphere Radius | 15 | The collision size. Generous radii feel better than visually exact ones — players read near misses as hits. |
| Applied Knockback | 0 | How hard the hit shoves its target. |
| Faction | Neutral | Set automatically by the firing weapon. Shots ignore their own faction entirely; Neutral hits everyone. |
| Move Direction | 1,0,0 | Direction of travel, set by the weapon on firing. |
| Despawn When Offscreen | On | Recycles shots that have left the view along their travel axis. |
| Offscreen Margin | 150 | How far past the edge before that happens. |
Components
| Component | Purpose |
|---|---|
| Sphere | Collision and root. Lives on the SKProjectile object channel, which ignores everything by default so bullets never test against each other or scenery. |
| Mesh | The visible shot. No collision of its own. |
| Trail FX | A Niagara trail that follows the shot. Restarted correctly on every reuse. |
Impact and expiry feedback
A shot that hits and a shot that times out are different events with separate feedback slots. All are optional.
| Property | Fires |
|---|---|
| Impact Effect | Niagara, on contact — including contact with an already-dead target, which still absorbs the shot. |
| Impact Sound | Sound, on contact. |
| Impact Camera Shake | Shake, on contact. |
| Expire Effect | Niagara, when Lifespan runs out — a fizzle rather than a hit. |
| Expire Sound | Sound, on expiry. |
| Expire Camera Shake | Shake, 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
| Event | Fires |
|---|---|
| On Projectile Hit | On damaging a live target, with the actor and hit result. |
| On Projectile Expired | When Lifespan runs out. |
Homing missiles
ASKProjectileMissileA 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.
| Property | Default | Purpose |
|---|---|---|
| Homing Responsiveness | 5 | How hard it steers. Higher locks on tightly; lower gives a lazy, arcing pursuit. 0 disables steering entirely. |
| Homing Delay | 0.25 | Seconds 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 Speed | 1800 | Speed it builds to once ignited. 0 keeps it at its launch speed. |
| Acceleration | 2500 | How fast it climbs to Max Speed. |
| Retarget Interval | 0 | Seconds between re-picking a target. 0 keeps the first lock for life. |
| Seek Radius | 0 | How far it looks for a target. 0 searches without limit. |
| Orient To Velocity | On | Points the mesh where it is going. |
Bombs
ASKBombProjectileAn 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.
| Property | Default | Purpose |
|---|---|---|
| Flight Time | 1.5 | Seconds from launch to impact. This is the reaction window. |
| Arc Height | 500 | Peak height of the lob. |
| Explosion Radius | 250 | Area of effect on landing. |
| Damage Falloff | On | Full damage at the centre, tapering to nothing at the edge. Off deals full damage across the whole radius. |
| Explosion Effect / Sound / Camera Shake | — | Feedback 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.
| Property | Default | Purpose |
|---|---|---|
| Landing Marker | — | The marker mesh. Leave it unset for an untelegraphed bomb. |
| Marker Z Offset | 20 | Height above the ground, to avoid z-fighting with terrain. |
| Animate Marker | On | Grows and pulses as impact approaches. |
| Marker Start Scale | 0.35 | Size at launch, growing to full by impact. |
| Marker Pulse Amount | 0.15 | Depth of the pulse. |
| Marker Pulse Speed | 4 | Pulses per second. |
| Marker Flash Param | Flash | Scalar parameter driven on the marker's material for a final warning flash. |
Laser beams
ASKLaserBeamA 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.
| Property | Default | Purpose |
|---|---|---|
| Damage Per Second | 60 | Damage per second of continuous contact. This is where beam damage lives — not on the weapon. |
| Damage Interval | 0.1 | Seconds 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 Length | 2000 | How far the beam reaches. |
| Growth Speed | 2000 | How fast it extends to full length. |
| Retract On Deactivate | On | Pulls back when released instead of vanishing. |
| Stop At First Hit | On | The beam is blocked by the first target. Turn it off to pierce everything in line. |
| Trace Radius | 20 | Thickness of the swept trace. |
| Laser Sound | — | Played while active. Beams use this rather than the weapon level's fire sound. |
Driving the visuals
| Property | Default | Purpose |
|---|---|---|
| Beam End Param Name | LaserEnd | The Niagara user parameter the beam writes its end point to. Your beam system needs a vector parameter of this name. |
| Beam End In World Space | On | Whether that end point is written in world or local space — match whichever your Niagara system expects. |
| Colour Param Name | Colour | Colour parameter driven on the beam system. |
Building a projectile
Create the Blueprint
New Blueprint Class → SKProjectileBase, or SKProjectileMissile /
SKBombProjectile for those behaviours. Set the Mesh and the Sphere Radius.
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.
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.
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
SKProjectilechannel - 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