Base Space


ATLAS has added new functionality for World Space particles to be “based” on another actor’s transform, such as a ship!

Particle ‘Base Space’ is basically how Atlas does ‘World Space’ behavior for particles when on a moving ship. A fast moving ship will leave particles behind in World Space, but ‘Base Space’ allows those particles to stay in the coordinate space of the ship and have the particles behave in a realistic manner relative to players on board the ship.

For World Space particles, it’s just a matter of setting:

  1. LocalSpace=true on the emitters
  2. bLocalSpaceUsesParticleBase=true on the particle system

Local Space & Base Space together:

Because Base Space overrides Local Space in this way, if a visual effect requires both Base Space and Local Space emitters, it must be separated into two particle systems - one for Base Space only and one for Local Space only - using new child particle system spawning functionality. So this means that the Base Space Effect will be the main particle system and it will point to a ‘Child Particle System’ like below. When the Effect is triggered, only the Main Base Space Emitter needs to be called and both will trigger.


Important Note: This technique is useful for VFX that fire in a burst (like a Muzzle Flash) and need to be aligned properly with the parent it is assigned to (like a Weapon), but if the effect needs to emit over a period of time, the BaseSpace Emitter as set up above will not move with the parent object (it will stay positioned and oriented to where it was initially fired). To have Base Space Emitters emit over a period of time and stay connected to the parent object as its position moves, see below under “Moving Emitters or Projectile Trails”- although in this case, the orientation will not update if the parent rotates, etc. An Emitter that emits particles over time and stays connected to the parent as it animates and stays aligned in direction with a rotating parent object is currently not supported.

  • Examples
    • ParticleSystem'/Game/PrimalEarth/Effects/Particles/Weapons/RocketLauncher/P_RocketLauncher_Projectile.P_RocketLauncher_Projectile'
    • ParticleSystem'/Game/PrimalEarth/Effects/Particles/Weapons/WeapPistol/Muzzle/pistolMuzzle_01_TPV_SpaceBased.pistolMuzzle_01_TPV_SpaceBased'
    • ParticleSystem'/Game/PrimalEarth/Effects/Particles/Weapons/WeapPistol/Muzzle/pistolMuzzle_01_FPV.pistolMuzzle_01_FPV'
    • ParticleSystem'/Game/PrimalEarth/Effects/Particles/Weapons/WeapPistol/Muzzle/pistolMuzzle_01_FPV_SpaceBased.pistolMuzzle_01_FPV_SpaceBased'
    • ParticleSystem'/Game/PrimalEarth/Effects/Particles/Weapons/WeapPistol/Muzzle/pistolMuzzle_01_TPV.pistolMuzzle_01_TPV'
    • ParticleSystem'/Game/PrimalEarth/Effects/Particles/Weapons/RocketLauncher/P_RocketLauncher_Impact.P_RocketLauncher_Impact'
    • ParticleSystem'/Game/PrimalEarth/Effects/Particles/Dust/PS_DFootImp_MED.PS_DFootImp_MED'


The pistol effects above are split into two particle systems: one that is true Local Space and the other using Base Space.

Moving Emitters or Projectile Trails

For Projectile Trail particle systems or Emitters that need to follow the parent object, instead of bLocalSpaceUsesParticleBase=true, set:

“Dynamic Local Space Emitter Base”=true.

Projectile trails and Emitters that need to follow the Parent Object needed a different bool because they have to properly update a distinct emitter location as the projectile moves relative to the base. Test the rockets to see that they have correct local trail on a moving ship.

  • Example
    • ParticleSystem'/Game/PrimalEarth/Effects/Particles/Weapons/RocketLauncher/P_RocketLauncher_Projectile.P_RocketLauncher_Projectile'


Projectile Trails still need the UseLocalSpace=true, and spawn-per-unit doesn’t work with that of course, so we can just have bigggg spawn rates!


Every character- or structure-spawned particle effect should have:

  • bUseLocalSpace=true
  • bLocalSpaceUsesParticleBase=true

Any true Local Space emitters should be moved into their own child particle systems with

  • bLocalSpaceUsesParticleBase=false.

Any projectile trails or emitters that need to move with parent objects, should have:

  • bUseLocalSpace=true
  • bLocalSpaceUsesParticleBase=false
  • Dynamic Local Space Emitter Base=true.

Quick Run down

If you want to emit something that is oriented to the parent like a MuzzleFlash, but is just a QUICK BURST (not following the parent object over time) use the standard ‘Local Space Uses Particle Base’ If you want the particles to emit from a moving parent in BaseSpace continuously over time, but NOT FOLLOW IT’S ORIENTATION- use the ‘Dynamic Local Space Emitter” option. Right now we don’t have a solution for Base Space that will allow an emitter to follow the parent’s motion AND orientation over time.

This is where the ‘Dynamic Local Space; option is: