Currently AI soldier entities don't get represented as an actor on the server so when a player shoots at them on the server we are just checking for projectile collision with a capsule. This leads to issues such as dealing damage to a soldier when shooting between their legs. To resolve this we can:
[ ] When our projectile collision processor detects a collision from a player's projectile with another entity we should force the entity to become an actor on the server (UMassPawnServerRepresentationLODProcessor already has similar logic to make all player controlled entities actors on server). We should delay processing the hit until the entity is represented as an actor. Note that in case our actor pool is all used up and we need to spawn a new actor it could take a few frames as Mass limits how much time it will spend spawning actors each frame. We should at most delay a few frames. If it takes longer we can fall back to the capsule collision check.
[ ] In order to know if a projectile is from a player we have FProjectileDamageFragment.bIsFromPlayer but right now this doesn't get set because of an if check in FMassSpawnUtils::SpawnProjectile. We should remove that check.
[ ] When reusing actor from the pool we should probably call USkeletalMeshComponent::InitAnim to reset the anim BP.
[ ] We may need to do something so that the anim BP for our character runs on server, unclear if this will just work automatically.
Currently AI soldier entities don't get represented as an actor on the server so when a player shoots at them on the server we are just checking for projectile collision with a capsule. This leads to issues such as dealing damage to a soldier when shooting between their legs. To resolve this we can:
See notes about this here (ask Leroy for permission if needed): https://docs.google.com/document/d/1rURjgvXpF2hIKrNlX9w9NNDWc-RP8RCQwKL7df-Ho1g/edit?usp=sharing