Announcement

Collapse
No announcement yet.

Smooth Sync: Sync your Transforms Smoothly across the network

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    In other words, this plugin is good for smoothing actors so long as the player doesn't directly interact with those actors (ie pushing them)? For instance, a ball falling down a mountain would be smoothed well. However, a soccer ball that is being physics simulated on the server being pushed around by the client would not smooth properly with high ping.

    Leave a comment:


  • replied
    I think maybe I understand what you meant by client prediction. For example, with this plugin, if the client were to push a cube that is simulated on the server, that client player would lag into the cube because of the delay, correct? And the fix would be client prediction?

    Leave a comment:


  • replied
    Originally posted by fuestrine View Post
    GuacFrog
    No problem at all, feel free to ask questions any time.

    Smooth Sync won't send any information across the network if actors are not moving, but I'm honestly not sure how it'll fair. I've been meaning to try to figure out the limits for my Plugin anyway so I'll take a look at it sometime this week and get back to you.
    Upon further research, if the data being transmitted is compressed, I think this plugin should work for what I want to do. If this plugin is not transmitting data for every object UNLESS the object has moved, then it should work with thousands of objects so long as only a few of them move at once, right?

    I'm going to purchase the plugin and give it a shot. I'l let you know how it goes.

    Leave a comment:


  • replied
    GuacFrog
    No problem at all, feel free to ask questions any time.

    Smooth Sync won't send any information across the network if actors are not moving, but I'm honestly not sure how it'll fair. I've been meaning to try to figure out the limits for my Plugin anyway so I'll take a look at it sometime this week and get back to you.

    Leave a comment:


  • replied
    Originally posted by fuestrine View Post
    GuacFrog
    You are correct, the physics will only be simulated by one system. It can be either the server or any client, but not more than one system at once. The position, rotation, etc. will then be interpolated on all other systems.

    I'm not really sure how the other way would act unfortunately.
    Thanks for the time you have taken to address my concerns. One last point that I want to stress to make sure that we are on the same page (last question I promise ). You said it wouldn't work for thousands of objects, but what if the players only interact with a single object at a time (ie moves a box around the warehouse) and occasionally throws a box which might move around a few more. Do you think this plugin is still not suited for a situation like that? Thanks again for the time you have taken to respond.

    Leave a comment:


  • replied
    GuacFrog
    You are correct, the physics will only be simulated by one system. It can be either the server or any client, but not more than one system at once. The position, rotation, etc. will then be interpolated on all other systems.

    I'm not really sure how the other way would act unfortunately.

    Leave a comment:


  • replied
    Correct me if I am misunderstanding, but with this plugin, physics can't be simulated on both the client and server, but rather only by the server which then replicates the transforms and the client interpolates between them? Do you happen to know how that would perform as opposed to having a client and server simulation with the client correcting it's object's simulations?

    Leave a comment:


  • replied
    Originally posted by fuestrine View Post
    GuacFrog
    It does. I'm just not sure about thousands of objects at once. Also all of the physics objects would need to be determined by the same system. A game like Rocket League has all physics determined by the server, but they also have a fair bit of player-prediction/client-prediction which makes it seem like it isn't, which Smooth Sync doesn't have.
    Hmm. Thousands of objects in the warehouse but the player will only be interacting with 1 or two at a time. Would there be a way to use this plugin and optimize it so that it doesn't send information for every object but instead only the objects that have moved? Because most of the objects won't be moving on the server.

    Leave a comment:


  • replied
    GuacFrog
    It does. I'm just not sure about thousands of objects at once. Also all of the physics objects would need to be determined by the same system. A game like Rocket League has all physics determined by the server, but they also have a fair bit of player-prediction/client-prediction which makes it seem like it isn't, which Smooth Sync doesn't have.

    Leave a comment:


  • replied
    Originally posted by fuestrine View Post
    GuacFrog
    We haven't updated to 4.23 yet but we are planning on it when we get time. I'd expect we'd be able to get to it within a week.

    If you want to be notified when we release a 4.23 version, let me know.
    Oh, I see. I assumed that this plugin allowed replication of physics objects without lag / jumps.

    Leave a comment:


  • replied
    GuacFrog
    We haven't updated to 4.23 yet but we are planning on it when we get time. I'd expect we'd be able to get to it within a week.

    If you want to be notified when we release a 4.23 version, let me know.

    Leave a comment:


  • replied
    GuacFrog
    I don't think it would work for exactly what you are trying to do.

    Smooth Sync works by having one client (or non-client server) determine the position of an actor. If the actor tries to deviate from this on the non position determining client (or non-client server) the object will not move.

    I wouldn't count on Smooth Sync being able to handle potentially thousands of objects. It does seem to handle more objects at a lower send rate than Unreal's position replication does (like shown in the Smooth Sync trailer), but I wouldn't expect it to handle any super large amounts. Smooth Sync does take into account Unreal's Net Cull Distance Squared though for network optimization.

    Let me know if that helped at all.

    Leave a comment:


  • replied
    fuestrine Another quick question. Does this plugin support 4.23?

    Leave a comment:


  • replied
    fuestrine I am interested in your plugin. I have a couple of questions about it.

    The game that I am making takes place in a large warehouse with around 10 connected players (listen server), and there are potentially thousands of objects that simulate physics on the server. My issue with the default UE4 replicate movement is the fact that clients see and get teleported around when interacting with physics objects.

    My solution to this problem would be simulating physics on the client and the server, and having the server send the client the actor's' position and the client "nudges" the actor's position towards the server position. This way there is no teleporting as the client simulates everything, but it also means that the location and rotation of every object is the same across client and server.

    Does your plugin work in this manner? And will it be able to handle a large amount of objects? I planned on making optimizations such as only replicating the actor's transform if the player is within certain distance or looking the a certain direction.

    Let me know your thoughts, thanks!

    Leave a comment:


  • replied
    trshman
    a) I'm a little rusty on my Unreal concepts but basically, you can only replicate variables or call RPCs from owner actors to non-owner actors or from non-owner server actors to non-owner clients actors.

    I'm not sure exactly how it's determined in Unreal. I found this online that seems correct but I'm not entirely sure:
    "If I gather the information from this question correctly, anything spawned on the server outside of a PlayerController is considered Server owned. Everything spawned inside of a PlayerController (also on server side) is considered player owned. I'm only left to assume parts of persistent maps are unowned actors."

    You can also use SetOwner() to set the owner manually after spawning.

    b) Yes, you can use that to move the ball on the server. Or you can move it on the server any other way you like.
    Last edited by fuestrine; 09-08-2019, 10:15 AM.

    Leave a comment:

Working...
X