Blueprint, CharacterMovementComponent Ability Implementation?

The most robust character movement in ue4 for multiplayer requires the use of ‘CharacterMovementComponent’ specifically ‘AllocateNewMove’ to create a version of ‘FSavedMove_Character’ that stores pending moves that when they are acknowledged by the server the client discards the acknowledged move. When a client receives a correction it is required to correct the previous move and then replay any actions yet to be confirmed by the server.

When implementing a custom movement like a teleport, dash, jump you have to create an override of ‘AllocateNewMove’ that gets saved as a ‘FSavedMove_Character’ so that if a correction is made the movement is called when replaying events!

Request, would it be possible to create a blueprint nodes to allow blueprint developers to implement movement interactions that make use of this functionality is the functionality already available to blueprint development have I missed it?

Question, does the blueprint node ‘launch character’ make use of the above functionality, launch character seems to make use of the functionality at least from its wording “This velocity will be processed on the next character movement component tick” could I just call launch character on the client as the start of a player initiated Jump / Charge and request that the server also calls launch character?

The blueprint teleport node does not seem to make use of this functionality perhaps it should, it targets an actor if that’s the reason it does not make use of this functionality perhaps a new blueprint node that targets a character is in order so that it can make use of this functionality?

Epic is an awesome company and I really appreciate your work guys keep it up!

I added support for this kind of thing to my VR plugin, it uses a 1 bit flag to say that a SavedMovement has additional extra data or not, if it does then it also serializes that extra data when it sends the saved movement to the server.

This lets me pass on things like Teleport actions, launch character, extra velocities, state changes (like crouching) at will and in-line with the SavedMove execution (server plays it back the same and there is no error correction unless a real difference appears). It also exposes the ability to do this to blueprints, which have no other options there AFAIK.

Something like that but with serializing of a series of class structures would likely be a really good fit for the engine at large, wouldn’t even require overriding those functions anymore if there were overridable CanCombineWith, IsImportantMove and PrepMoveFor functions in those serialized classes that could be called.