Need advice on how you guys make bullet tracers for an FPS game. I have questions about niagara effects and problems of tracers flickering in high speeds.

So I made bullet tracers from a long cylinder with a glowing material. The design is simple as just attach the tracer shooting component on the muzzle of the gun and shoot forward. I made a Niagara effects and an actor projectile version. I have some questions and need help with answers for both but if you can only answer one then that is fine too.

Questions about Niarage vs moving actor methods:

  1. Is the Niagara effects tracer method more efficient as running on the GPU than using a normal moving actor tracer which I assume is running on the CPU? I say less efficient as if multiple bullets flying on screen, the moving actor tracer version may face bottleneck right?
  2. For the Niagara effects tracer, I know they don’t really interact with the world as it is mainly superficial, thus why I have a line trace for damage. But I need the Niagara tracer to disappear when hit something so I add and use a ‘collision’ module in the Niagara system graph node but it says it’s using a CPU ray trace? Does it make this method overall still more efficient than the actor tracer method or no difference?
  3. For the moving actor tracer, is it better or more efficient to use a blueprint to make it move or the ProjectileMovement component?

Questions about tracer flickering at high speeds

  1. For both Niagara effects and moving actor tracer methods, both tracers moving at high speeds have this flickering effect and I need help to get rid of it but don’t know how.
  • Here is a google drive vid link of normal tracers when their speed is small with the value set to 5,000 (each unit is apparently 1 cm to 5000cm/s is 50m/s). As you can see the tracer look normal as the tip of the tracer up close never goes past the center of the screen and just shrinks.
  • Here is a google drive vid link of normal tracers when their speed is small with the value set to 30,000 or 300m/s. And the tracers still looks normal as the tip of the tracer up close never goes past the center of the screen and just shrinks
  • Here is avid link and pic of normal tracers when their speed is small with the value set to 50,000 or 500m/s. And the tracers has this ghosting flickering effect as you can see the tip of this tracer DOES goes past the center of the screen and then everything shrinks in the distance.
  • My question is why this happen and how to fix it, or is this an innate issue with unreal and the only solution to make it slower?

Spawned or obj pooled?

Spawned and destroyed fast actors (rate of fire) will dip FPS pretty hard. This will cause artifacts.

Notice that too, that is why I thought might be good to use line trace and superficially niagara particle effect tracers. Is that a good idea?

Niagara does run on the CPU. You can run some aspects on the GPU though.

Overall you want to Pool your projectiles vs spawn and destroy for each shot. This will drastically increase performance when using projectile movement component, or any system that moves anything.

My system uses pooled projectiles. Each Proxy (Autonomous, Simulated, Authority) has it’s own Pool that’s managed by an actor component. All the code for firing them, resetting and disabling is coded there.

The projectiles themselves are vastly different per proxy. The Clients (Autonomous) have a sphere collision (root) and a mesh (no collision) for the visuals. The mesh uses an emissive material with no shadows. Works pretty good. Servers is just a collision, no fx. It only runs on the server and handles authoritative hits. Sims have a collision and an audio component. The audio component handles the whizz sound from near misses on the local autonomous.