When using Network Profiler most frames that have BP_ProjectM_PlayerController show 100% waste and 0 bytes sent (screenshot below). This means on the server we're checking if any of the replicated properties have been modified and they haven't which is wasted CPU cycles.
[ ] First figure out if we should make AProjectM_PlayerController always dormant or if it makes more sense to use Replication Graph for this. See here for more on dormancy. If we decide to make it dormant, we'll have to decide on an approach for handling RPCs if it's dormant. Discuss with @Leroy231 before implementing.
[ ] Follow the approach here to make our AProjectM_PlayerController always dormant (in constructor) and then anytime we update a replicated UPROPERTY we must call FlushNetDormancy.
[ ] Verify in client net mode when you shoot HUD still updates ammo count.
[ ] Verify in client net mode you can shoot a soldier and they die.
When using Network Profiler most frames that have BP_ProjectM_PlayerController show 100% waste and 0 bytes sent (screenshot below). This means on the server we're checking if any of the replicated properties have been modified and they haven't which is wasted CPU cycles.