Multiplayer Shooting Via RepNotify Or RPC?


I am working on a Third Person Multiplayer Project and I have been taking notes from the shooter game for the replication.
One thing I don’t understand or That I am not sure if i am Getting the right point from the Shooter Game is.

How to To Shooting?
There are two ways I achieved this but I am satisfied with none.
First Is the most simple you can find youtubers doing multiplayer shooting via this method its just Do a Line Trace, Put a Authority Check and Depending on your Role Call Multicast or Run On Server → Multicast which Spawns Particles, Sounds etc.
This Works fine unless you Run Network Emulation On Avg or Bad then you will realise the your input is also tied to the Communication speed between client and server to solve this I simply added an illusion Play all the Impacts on The Local Machine without any delay or Server Checks then Request the Server Same thing but this time Ignore the Call on Same Client that Requested it.(To avoid Double Spawning of Emitters and Sounds)

Now I don’t know how good this method is, it just works but this is not what Shooter Game Uses.
In Shooter Game Source code I Noticed they did shooting via RepNotify the Custom USTRUCT which I don’t understand one thing if lets say I hit the same spot Twice the Struct won’t be replicated to the other clients because it never got modified.

If Anyone can clear the shooting method up like what is the professional way of doing this I would be glad.

You should check out Tom Looman. He has a bunch of great C++ Tutorials. He has some Preview Tutorials on his website where he created Multiplayer 3rd person shooter, which is exactly what you need from the sounds of things. The 2nd and 3rd tutorial FOUND HERE go over the Shooting Implementation, which should help get you started.

The CoopHordeShooter is available on GitHub: GitHub - tomlooman/CoopShooterUdemy: C++ Coop Horde Third-person Shooter for Unreal Engine 4 (Udemy Project). You can see all the source code which should get you started. He uses RepNotify and also plays the FX locally before replicating.