Ends Today: Save up to 95% on the Time Travel Mega Bundle!

Documentation

What is this?

The built in networking solution in Unreal is generally geared towards giving the server full authority over everything; the biggest and most important aspect of this is of course the playable Character’s movement.

This plugin reverses that idea, giving each Client full authority over their own Character’s movement.


Why would I want this?

There are several pros and cons of both approaches, and which one is most appropriate for your game depends a lot on what type of game you’re making.


No jarring corrections from the server

In networked games, you will always have to live with a bit of lag, desyncs and poor synchronization. More so if your players have subpar internet connections. This leads to discrepancies in what a Client sees on their screen compared to what the Server sees, and it’s your job as the developer to hide this as well as possible.

So what happens when things don’t quite line up? Well, with Server Authoritative movement, the server will see that the Client has done something different, which it deems incorrect, and will then send a correction to the Client to get it back to the correct location. These corrections are very jarring for the player when they happen as you suddenly start teleporting to correct the error, which a user will see as significant lag.

These types of corrections are of course unavoidable in networked games. But if the Client is Authoritative over their own movement, they wont ever get any corrections, and what they see on the screen will be what actually happens for their character.

Instead, those corrections to your own character will only be seen by other players, which is significantly easier to hide with some smoothing. Additionally, since the other players that see your character wont be controlling it themselves, they likely wont even notice any discrepancies, as it can be very hard to tell the difference between what they saw happen and what the controlling Client saw.


Significantly easier to make custom movement modes

Since we now basically just replicate position and velocity, creating custom movement modes is significantly easier.

Normally we’d have to make sure that the Server simulates the character exactly the same way the Client did, which is not a trivial task. It requires adding new data to replicate and save, as well as making sure that the new movement logic works with Unreal’s networking rewind and replay system, etc. All this requires deep knowledge about how Unreal’s C++ movement replication works, and even then it takes a lot of tinkering and iterating to get everything working smoothly. This is especially true for really unique and complex movement modes that are vastly different from the normal walking mode.

With a Client Authoritative approach, we can essentially modify the movement however we want, similar to how we could do it in a single player game. Anything from building custom MovementComponents, to just directly modifying the Character’s location and velocity in Blueprints will work perfectly, without having to consider complicated replication issues.


Cheating

The drawback is of course that the Server is no longer Authoritative, which theoretically makes it a lot easier for Clients to cheat and develop teleportation hacks.

But this is only really a problem if you’re making a truly competitive game, in which case you probably shouldn’t be using this plugin.

Technical Details

[1.0.2]

  • Fixed issue where movement smoothing would sometimes not be as smooth as it should have been.
  • Fixed issue where Character would sometimes desync when standing on a rotated base (Fixed for 4.27 & 5.0 & 5.1).
  • Fixed occasional crash issue when Character was unpossessed.

[1.0.1]

  • Fixed issue where Character would sometimes desync when standing on a rotated base (Only fixed for 5.1).


Features:

  • Makes Character movement replication Client Authoritative.
  • Easy to implement as it functions as drop-in replacements for the normal Character & PlayerController classes.
  • Allows you to implement custom movement modes much simpler, without thinking about replication issues.
  • Includes (optional) helpers for creating custom RootMotionSources for custom Client Authoritative movement together with the Gameplay Ability System.


Code Modules:

  •  ClientAuthoritativeCharacterSystem (Runtime)


Number of Blueprints: 0

Number of C++ Classes: 5

Network Replicated: Yes

Supported Development Platforms: Any Platform

Supported Target Build Platforms: Any Platform

Documentation: Link

AH
Anton Hesselbom
All Assets by Author
39.09 
Platforms Android, iOS, Linux, MacOS, Other, Oculus, Windows 32-bit, Windows 64-bit
UE Versions 4.27, 5.0 - 5.1
Tags CHARACTER MOVEMENT, ONLINE, NETWORK, MULTIPLAYER, REPLICATION, NETWORK REPLICATED, CLIENT, REPLICATED MOVEMENT, NETWORKING
Release date 22.02.2023

Similar products

Image
Sign In
Image
Sign Up
Image
Recovery