Smooth Sync: Sync your Transforms Smoothly across the network

@e3pojedi

  1. No clue really, I don’t see why there would be a limit on players unless you are completely overloading the networking that Unreal’s networking allows. SmoothSync provides you with the ability to lower the send rate to really low and still be smooth so I’d imagine a decent amount of players could be had.
    Here’s Smooth Sync multiple object syncing in comparison to Unreal’s Replicate Movement at low send rate with same priority for both: https://www.youtube.com/watch?v=RYo2…=youtu.be&t=31

  2. If you mean like playback of old States(position, rotation, etc.), it does not. There is a list of old States that are kept in the stateBuffer] though that you have access to.

  3. Depends on your settings and what your ping and SendRate was before. The most important part is that you set your InterpolationBackTime to be a set amount of time in the past. If you ever don’t receive a State update for the amount of InterpolationBackTime, it will start extrapolating (extrapolation can also be turned off and the object will just not move if receiving no new States).
    After it receives a new State again, it will move towards the new State’s position and rotation.
    I’ve got no video, but if you have an easy way to simulate packet loss percentage and changes in ping, I’ll see if I can make one.

@e3pojedi
Oh yeah, some more info:
3. Smooth Sync will adjust to new ping rates as well. So if you start out at 100ms then go to 200ms in the middle of the game and stay at 200ms, it’ll adjust depending on the TimeCorrectionSpeed variable, which you can set. Then you’ll only have to worry about the packet loss making it go beyond your InterpolationBackTime.

Let me know if you want further explanations on anything.

@ Thanks for the info! You should be able to test lag using the console by typing “Net PktLag=200” (test latency in ms) and “Net PktLoss=20” (test % of lost packets) - Finding Network-based Exploits - Unreal Engine
Also, are there Anti-Cheat Systems for this plugin?

@e3pojedi
Awesome, I didn’t know Unreal was able to do that so easily. Thanks for teaching me about it.
Video of packet loss and packet lag: https://www.dropbox.com/s/p7441m51m0…17-51.mp4?dl=0
This is using the default SmoothSync settings.
You can see the output when I press the button to start simulation.

There are no anti-cheat systems built in but you can do your own checks on the RPC server_validate methods and see if they are moving too fast or anything.

You, sir, are truly a life-saver!! Just purchased it and it works!! I am so happy right now, my car-based game was super laggy and unplayable and now it’s as smooth as butter. I can’t thank you enough!
@

@e3pojedi
Good to hear! If you like my product, every 5 star review helps it get noticed a bit more. :slight_smile:

Let me know if you have any suggestions or anything. Cheers.

Quick Question - If any more than 2 players join then they are not showing up - How do I fix this? @](https://forums.unrealengine.com/member/1103217-)

@e3pojedi
What do you mean “they are not showing up”? The actors don’t exist? They exist but movement isn’t being synced?
I’m not seeing this issue in templates like ThirdPerson. Some of the templates aren’t made to be controlled in multiplayer though so you may have ownership and control issues depending on the template. Let me know which template you are using, if you are using one, and I can know more of what’s going on.

@](https://forums.unrealengine.com/member/1103217-) I figured out what it was - The player would not be “synced” with the other clients unless he had stopped moving fully. The instant that happens then the player appears, but the position and rotation is not tracked - I’m using a modified version of the kart template here (Without PhysX) - 3D Projects - Elhoussine Mehnik - MMBug1.mp4 - Google Drive

@e3pojedi
Hmm, that’s a weird one. Make sure Unreal’s Replicate Movement is unchecked and that Unreal’s Component Replicates is unchecked. Replicates should be checked on the Actor though.

If it’s not that, I’ll get some time to check out that kart template tomorrow. It should be easy to track down with an example like that. I’ll message you then.

@e3pojedi
That Kart Template you linked works for me.

Steps:

  1. On BP_KartPawnPlayer, uncheck Unreal’s Replicate Movement. Then “add component” SmoothSync.
  2. This isn’t set up for multiplayer so make a BluePrint GameModeBase class and set the “default pawn class” to BP_KartPawnPlayer. Change the GameMode to the new GameMode.
  3. ActivePlayerMode->Number of Players to whatever number you want.

Let me know how it goes.

@ Making a new project and re-importing everything worked! Thanks!

**Version 1.11 **is now up on the Marketplace.

Changes:

  • Fixed issue with syncing actors without primitive components.
  • Fixed issue with receiving a teleport as the first received State.

@ I’m using the version currently on the marketplace for a dedicated server multiplayer game with vehicles and the skeletal mesh of the vehicle isn’t updating it’s rotations at all. Everything else seems to work nicely. I also get teleport flag warnings on endplay. I noticed this was reported in the comment section on the plugin page and you responded saying it was fixed, any ideas on this?

[USER=“870957”]Sinn Studio Inc.[/USER]
The fix has been sent to your email. Thanks for letting me know about the problem.

Very fast replies and solutions.
5 stars.

I use this plugin in a crossplatform multiplayer VR game. oof
(htc vive, htc focus, fps mode on windows, oculus , oculus go)

4 smoothsyncs per pawn, actived or not according to the client’s platform. (actor, camera, motioncontroller 1 & 2)

Works perfectly !

@Megurine
Awesome! Glad to hear you like it. If you have any suggestions, let me know.

**Version 1.12 **is now up on the Marketplace.

Changes:

  • Fixed being unable to sync simulated skeletal meshes.

**Version 1.13 **is now up on the Marketplace.

Changes:

  • Made moving out of rest smoother.

Hey @, I’m curious about your plugin. Specifically, I’m wondering how it deals with situations like two player owned actors running into each other. If two players both owned a car actor for example, then what would happen when they crashed into each other? Considering a player can only update the transform for the actors they own they, will this cause some sort of desynchronization? From what I can gather in the trailer footage this seems to be handled somehow but I thought I’d ask to be sure.

Also, is this plugin compatible with other engine features like the new replication graph or the steam online subsystem?

Thanks for the help!