[Multiplayer] How to get smooth character interpolation on moving platforms without jittering

Hello,

it seems epic still didn’t solve the network code for relative rotational networked movement replication. Sorry for the late reply.
I need to download an unreal version 4.18.x and download my old files from cloud. Can take a while, but you guys could send me a discord link and I could show you a direct comparison between the original and the modified CharacterMovementComponent. But I can’t promise, we get it right working from the beginning. Was quite a bit of trial and error until it worked.
I didn’t keep working on it further (clean up etc.) because I discovered another annoying bug, which epic didn’t solve until today.

They renamed my original issue title, which was definitely the better description:
“Client player slides over rotating platform, instead to move relatively with it”

If you rotate your platform at a really slow rate (can’t remember at which rate), the player will hover/sliding over the platform, as if it wasn’t rotating, which the platform keeps rotating. It isn’t a big deal, if you aren’t a perfectionist like me. But I gave up on UE until they get those bugs fixed.
If I remember correctly, it was a network issue. You should able to test it with the example project I linked in the first few posts.
edit: here’s the link to the original bug report on answers.unrealengine:
https://answers.unrealengine.com/que…rm-instea.html

So, if you still want to solve the rotation thingy, we can take a look at the changes I made. I was just really disappointed, because I couldn’t reach out any offical epic guy, to help me with this issue. The jittering one, or the sliding one. I’m still curious how other games did approach those issues.

Yeah I’d still like to solve the rotation issue. PM’ed you a discord link if you’d like to show the changes you made or discuss ideas for solutions.

Downloaded the project you posted in this thread. I’m fairly determined to solve the problem so that I can have characters walking on the surface of moving vehicles.

I’m in the same boat (no pun intended) here.

I’m creating a mini-game for Metal Heads which is perhaps the most complex mini-game yet, since it’s 8 players local OR online, on a train with multiple carriages, moving at great speed.

I have tried moving the whole world, but that is only good for one train carriage, and terrible for performance, especially with a splinemesh, it just destroys frame-rate, and the spline-mesh I would be creating will be rather long, since the mini-game goes for 3 minutes tops.

I have synchronized the server and client train almost exactly using lag compensation since the train moves at a predictable, pre-defined speed, and using delta-time so that even if one has a lower frame-rate, they will still be moving at the same rate.

The problem I have is that it seems like the client is being teleported ahead every tick, and then teleporting back to where they should be, thus creating this weird warping effect. This also happens for the client characters on the server, but the server character itself is perfectly fine.
This video is from the client’s perspective.

The character jumping is faked, that’s why I’m able to jump without being launched off the train. Technically the player is still standing on the train, just the character mesh is hopping up and down using a timeline.

I have tried a bunch of things now without getting into any C++ programming, and came across this thread.

I had a thought today that I could probably get away with this by using proxies or dummies, and actually spawning the players out of sight, on a non moving version of the train. The server then uses the character’s relative location from the proxy carriage they are standing on (the one out of sight), and moves the dummy/fake character on the on-screen train this way.
I hope that makes sense…

Alternatively, I see it has been suggested to use “Can be Base for Character”, but I can’t find that anywhere in blueprints, I can only find it in the source code. Is this now just “Can Character Step Up On”?

Am I over-complicating this?

I am also using 4.23 github source. Is this issue resolved in the current version of UE4? If so, it might be the one big reason for me to actually take the plunge and convert the project to the new version (I HATE updating to a new version).

I have to wonder how Sea of Thieves got it working with their ships…hmmm

I also think I remember seeing a video a while ago for Assassins Creed Black Flag on how they got the character to walk around on the boat without issues. I know it’s a singleplayer game, but still relevant.

The way I solved this:

  1. Wrote my platforms so that they are deterministic, 100% driven off of world time seconds instead of using DeltaTime.
  2. Make sure the client’s clock is accurately synched up to the servers, use this article as a starting point (there’s an error in their code and will it will fail if there is packet loss, but you should be able to work out a solution to this :wink: ) https://medium.com/@invicticide/accu…k-87a3f9262594
  3. This bit will give you your first improvement, forward predict on your client the position of the platform (GetServerWorldTimeSeconds + ExactPing).
  4. This is your second improvement, override ServerExceedsAllowablePositionError, ServerShouldUseAuthoritativePosition so that when you jump on/off a moving platform, you create a short window of time where you increase the loc diff tolerance to half a meter.

Did you fix it and if so how?