Various networking/replication questions!

In the past I have worked on networked games in other engines, but tat has been around 10 years ago and to be honest I’m rusty on many of the concepts. Never having done it in UE4 before, I’m hoping for some guidance or links to learning resources to get things going!

  1. Replicated Movement. Is it true that the UE4 Character controller is configured for replication by default? Does this include accurate prediction on the client side?

  2. Following up #1, if movement is replicated, what about if adding new movement abilities (such as dashes, double jumps, etc). I assume those will all have to be manually added, correct?

  3. If I would like to make a fully authoritative server, are there any major changes I would need to make to the character controller? Would there be any potential pitfalls in terms of latency/input lag that I should be aware of?

  4. Does this system have client prediction that is able to handle characters that move at a very fast speed? Meaning, if the authoritative server has to make a “correction”, does it blend properly/smoothly on the client? Or will it result in “jerky” movement?

  5. For character abilities, is there any way for UE4 to add lag compensation? For example, if I have a ability that is a teleport with a 0.5 second startup animation, is there any way for the server to compensate for latency so that the movement will accurately complete at 0.5 seconds from the client triggering the ability (rather than 0.5 seconds from when the server receives the command)? I’m sure I could, for example, manually add a time stamp to the server, but this sounds very insecure. I’m not sure if UE4 has anything built in to assist with this? Does the UE4 replication have any form of ‘time stamp’ that could not be insecure/faked? Or might a viable option be using the users latency? For example, if the players latency is 50ms, having the ability cast with a 450 ms delay on the server?

  6. I seen the “UE4 Gameplay Ability System” and it mentions being useful for replication. Would this be useful for the situation I explain in #5? Does the replication actually support lag compensation and client prediction?

  7. Collision for abilities at high speeds. As mentioned in #4, I plan for the combat to be very fast paced. I’m concerned with how to handle accurate collision at high speeds? For example, when moving at high speeds, other players might not be accurately displayed in the exact spot they are on the server. I know the traditional techniques of showing the VFX on the client and allowing the server to handle actual collisions/damage, but I suspect some “magic” may be required to have abilities look correct to the player/clients. For example, if you have a circular aiming recticle on the ground on your screen and hit fire with your enemy moving in the center, it would be hurtful to the gameplay if the player is at a slightly different location on the server and it misses, even though on the client it obviously hit. Are there any techniques I should be aware of to assist with this?

Phew. That’s a lot of questions, and some are likely related to each other. Apologies in advanced!

Long story short, my goal is a fast paced combat game that is secure, so I assume authoritative servers will be the best option for security. It sounds to me as if the biggest obstacles will be client side prediction/latency compensation/collision for fast paced gameplay. But I need to be aware of any techniques/learning resources/UE4 features that will help me achieve this in UE4’s engine! Any information that would help me with this would be very appreciated!