Announcement

Collapse
No announcement yet.

Smooth Sync: Sync your Transforms Smoothly across the network

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

  • Smooth Sync: Sync your Transforms Smoothly across the network

    Click image for larger version  Name:	forumtitle.png Views:	1 Size:	51.1 KB ID:	1492483












    Link to Marketplace

    Hey! I didn't see any way to sync from client owned objects so I made this.

    It's a pretty simple setup. Just add the Smooth Sync component to your Actor and it will sync it's movement from the owner to the non-owners or from the server to client if there is no net owner.

    Videos:
    See Smooth Sync in Action
    Smooth Sync Overview


    Smooth Sync differs from Unreal's Replicate Movement in two key ways:

    1) Using custom interpolation, as described in detail here, it can be set up to your game's specific needs.

    2) Allow client owned objects to determine the position of Actors. This removes the need for client side prediction (or "player prediction") for certain Actors.



    Look at all of those features! Easy to ignore a lot of them too, they are just there if you need them.

    Click image for larger version  Name:	SmoothSyncUnrealImageOne1920x108045d7aac3b87c6b378ec89f4df9d339dd.png Views:	1 Size:	202.8 KB ID:	1492484



    Interpolation and Extrapolation

    Performs interpolation and extrapolation to handle lag.


    Highly Configurable

    Choose what you want to send and when you want to send it. Optionally compress floats to further reduce bandwidth. Customizable interpolation and extrapolation settings depending on your game's needs.


    Source Code

    The full source code is provided so you can see everything with detailed comments.


    Professional Support

    We have a consistent record of prompt and effective support. Contact us via email or forums any time and we will work with you to resolve any issue.


    We are game developers too so we know how important it is to have working products and to put out fixes fast.
    Let me know if you have any suggestions or comments. I want to make Smooth Sync the best it can be!


    Link to Marketplace


    Documentation
    Last edited by fuestrine; 01-17-2019, 04:24 AM.

  • replied
    Originally posted by fuestrine View Post
    Pangsuper I finally figured out the issue after some intense googling and experimentation. The problem is with the order that the plugin is loaded in relation to the rest of the engine / plugins. The solution is described fairly well here: https://answers.unrealengine.com/que...nent-on-4.html

    The path to the plugin folder will probably look more like "Engine\Plugins\Marketplace\SmoothSync" in this case since it's a marketplace plugin, but the general solution is the same. In the SmoothSyncPlugin.uplugin file, "LoadingPhase" needs to be changed from "Default" to "PreDefault"

    I'll have that fixed in the next release, but in the meantime you can make the change yourself and it should start working immediately.
    Thanks a lot!

    Leave a comment:


  • replied
    Pangsuper I finally figured out the issue after some intense googling and experimentation. The problem is with the order that the plugin is loaded in relation to the rest of the engine / plugins. The solution is described fairly well here: https://answers.unrealengine.com/que...nent-on-4.html

    The path to the plugin folder will probably look more like "Engine\Plugins\Marketplace\SmoothSync" in this case since it's a marketplace plugin, but the general solution is the same. In the SmoothSyncPlugin.uplugin file, "LoadingPhase" needs to be changed from "Default" to "PreDefault"

    I'll have that fixed in the next release, but in the meantime you can make the change yourself and it should start working immediately.

    Leave a comment:


  • replied
    Originally posted by fuestrine View Post
    Pangsuper I'm not really sure what you mean by "put smoothsync on an Actor." The way I do that is by selecting the actor and using the "Add Component" button to add the Smooth Sync component. Maybe send me a screen shot of how you're putting smooth sync on the Actor? Do you get this issue if you test in any of the project templates?
    Yes, I use this plugin for a very long time. I know how to load it. It doesn't work on my c++ project. (on other works)

    Leave a comment:


  • replied
    Pangsuper I'm not really sure what you mean by "put smoothsync on an Actor." The way I do that is by selecting the actor and using the "Add Component" button to add the Smooth Sync component. Maybe send me a screen shot of how you're putting smooth sync on the Actor? Do you get this issue if you test in any of the project templates?

    Leave a comment:


  • replied
    Originally posted by fuestrine View Post
    Pangsuper
    When I do Add Component -> Smooth Sync to the player blueprint in the Third Person Template project, I can restart the project without it disappearing.

    I don't think I'm understanding what you are doing. What are you trying to do with the Smooth Sync component and where is it disappearing from?
    The thing is, I don't do anything. I just put smoothsync on any actor and it disappears.

    Leave a comment:


  • replied
    Pangsuper
    ​​​​​​​When I do Add Component -> Smooth Sync to the player blueprint in the Third Person Template project, I can restart the project without it disappearing.

    I don't think I'm understanding what you are doing. What are you trying to do with the Smooth Sync component and where is it disappearing from?

    Leave a comment:


  • replied
    Hey, can you help me? Im trying set component to any bp but after restart project this component is dissapeare...
    Attached Files
    Last edited by Pangsuper; 07-10-2019, 11:42 AM.

    Leave a comment:


  • replied
    ATHIEK Glad you got it working. I'll have to take a look at allowing other variables to sync. Thanks for the ideas. Let me know if you have any other questions.

    Leave a comment:


  • replied
    fuestrine Tried it, still nothing. i also tried making the shouldSendPosition() always return true, creating new smoothSync at runtime when possessing and destroying the older one and i though it should work this way because when my controller the very first time possess a pawn it syncs and replicates immediately but after that it takes some times to sync, sometimes up to 30 seconds.
    Any ideas?

    EDIT : Actually my idea of creating the SmoothSync component at runtime was right and solved the issue, except before i was creating the SmoothSync component on client, and not server.

    By the way, there are some minor issues i found and easily got them fixed(Synced) by your instructions you gave me before, so here they are :
    • IsCrouching() which belongs to movement component still isn't replicated.
    • RemoteViewPitch which is belongs to APawn isn't replicated.
    I manually added them to buffer as you said, and they're synced. there were another value but i don't remember, the same way it got synced though.

    I really appreciate for this plugin, it could save many people from a lot of headache.
    Last edited by ATHIEK; 06-25-2019, 11:17 AM.

    Leave a comment:


  • replied
    ATHIEK I think you want to call SmoothSync.clearBuffer() on all instances of the pawn after taking possession. Let me know if that doesn't help.

    Leave a comment:


  • replied
    Hi, the plugin has been improved very much and it's solving a lot of network problems,
    due to how i set my character up i had some issue trying to workout and you provide great support for it before.
    i only have one single issue, when my controller possess other pawns it takes
    about 7-8 seconds for it to start replicating position and movements, other properties replicates fine in this period, and this issue only appears in production.
    actually you could test it in editor with up to 10 players with SmoothSync using dedicated server, and from one pawn try to possess another pawn and then move immediately you can see on other
    players window the pawn you just moved take a few seconds to replicated position where on your window the pawn actually moves.
    I'm guessing the heavier the the load the more time it takes to start replicating movements. by load i mean how many properties replicating or RPCs getting called for a pawn per frame.

    I used ForceStateSendNextFrame just before and after possessing a pawn, but no luck. maybe I'm doing it wrong, is there a function to call and telling it to start replicating no matter what?




    Leave a comment:


  • replied
    Version 1.19 has been submitted to the Marketplace.

    Change Log:
    • Fixed issue with teleporting if had recently cleared the State buffer.
    Last edited by fuestrine; 05-16-2019, 11:55 PM.

    Leave a comment:


  • replied
    To others reading this, the above also sent me a PM so I have been responding to them there.
    Last edited by fuestrine; 05-14-2019, 07:04 PM.

    Leave a comment:


  • replied
    Hey there!
    I purchased your plugin, I'm trying to set it up for a VR game. The problem I'm getting is that the objects that I'm using the SmoothSync component on are very choppy. I tried simulating physics upon release of an object on both server and client and then only on owner. I messed around with all the parameters but I can't improve it... I also set interpolation parameters to do as much smoothing as possible... I still see it choppy. (I'm using it on a specific component with SetSceneComponentToSync function)

    Leave a comment:

Working...
X