x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Clients jitter on listen server

... but not the other way around. There are already several Answerhub entries adressing the same problem, but none of them offers a solution.

https://answers.unrealengine.com/questions/273179/visual-lag-for-host-on-listen-server.html https://answers.unrealengine.com/questions/225701/client-movement-appears-to-stutter-from-the-perspe.html https://answers.unrealengine.com/questions/148524/jittery-client-interpolation.html

As already mentioned in those other entries, the problem exists in the simplest kind of Setup. We have tested on different hosts, with different connections and different projects. Multiple Instances on one machine, Lan and internet. We have profiled the network traffic and disabled all animation. Its just seems as if there is a interpolation problem in the movement processing for characters on the listen server. Every movement on every Client was smooth in every test. Capping the framerate at 30 make the problem very hard to identify but it still exists.

Here is a video with a comparison: https://dl.dropboxusercontent.com/u/2595963/clientServerComparison.mp4 . Please notice, that the difference is much more recognizable ingame than in the video because of video capture issues.

Is there any solution or answer to this?

Product Version: UE 4.10
Tags:
more ▼

asked Jan 12 '16 at 01:00 PM in Bug Reports

avatar image

echtguterjunge
106 3 4 6

avatar image Sean L ♦♦ STAFF Jan 12 '16 at 03:34 PM

Hello,

After some investigation, it appears that we have an issue in our database (UE-3948) that related to motion on the clients appearing jittery on the listen server. I will update the report with this post. Thank you for your report.

Have a great day

avatar image vebski Jan 20 '16 at 09:33 PM

Hey, we are also experiencing exact same issue (as many people) any news on this bug?

avatar image Sean L ♦♦ STAFF Jan 21 '16 at 01:03 PM

Hello vebski,

This issue is currently being investigated by our developers, but there is no timeline for the release of a fix at this time. I will provide updates on this issue as they become available.

Have a great day

avatar image shahrizai Jan 28 '16 at 04:55 AM

I can confirm I'm having this issue too. Will you be providing updates here?

avatar image Sean L ♦♦ STAFF Jan 28 '16 at 01:12 PM

I am going to increase the community interest on this issue in our database. I will be providing updates here as they become available.

avatar image shahrizai Jan 29 '16 at 03:57 AM

Just to reconfirm the problem: listen server experiences client jittering in their movements while the clients themselves have no jitter noticeable on their side. So the listen server(host) is the one experiencing this only. Very strange.

avatar image Lemorange Jan 30 '16 at 06:46 PM

I'm having the same issue. Also as shahrizai said: the client jittering can only be seen from the listen servers viewport. The listen servers pawn seen through the viewport of the client itself doesnt jitter.

Updates on this issue would be awesome.

avatar image PreetStar Feb 01 '16 at 07:17 PM

Is this issue fixed on 4.11 preview 4 ? If not can we expect it to be fixed in the 4.11 ?

avatar image Oakwarrior Feb 02 '16 at 02:26 PM

Hello.

I have been having this same issue as well. Is there a more specific ETA?

avatar image Ben Halliday STAFF Feb 02 '16 at 05:20 PM

Hi all,

There is no timeline for when this will be addressed. There is no reason at this time to believe this will be fixed in time for the 4.11 release. We will post here when we see any change in the bug report's status. Thanks for your patience.

avatar image erebel55 Feb 03 '16 at 05:35 PM

I also experience this. Can't wait for a fix :)

avatar image Chosker Mar 16 '16 at 11:17 AM

I'm also having problems with this, a fix would be nice :)

avatar image Atheist91 Jun 01 '16 at 12:55 AM

Hello.

Unfortunately, we also have this issue in the project. Any news about the fix?

avatar image Sean L ♦♦ STAFF Jun 01 '16 at 02:06 PM

Try opening a copy of your project in 4.12 and seeing if you are still experiencing the jittering. Many instances of this issue can be linked back to the fact that meshes or other components that are attached to the capsule are not being smoothed because the capsule does not have smoothed position. Give it a shot in 4.12 Preview 5 and let me know if you notice any changes.

avatar image gooberCP Aug 06 '16 at 03:13 PM

I'm using 4.12.5 and having the same issue.

avatar image Sean L ♦♦ STAFF Aug 08 '16 at 12:48 PM

Since this issue is reported as fixed, it's possible that you're running into something a bit different. Please create a new post in the Bug Reports section and provide as much information as possible so we can investigate.

Thanks!

avatar image Hevedy Aug 30 '17 at 04:03 PM

Version 4.18 about release and and near 2018 still not fixed, this make impossible make any coop game! Why is not fixed and why its backlogged when limit any multiplayer coop game!

avatar image marineuac Sep 28 '17 at 02:35 AM

this also might be affecting animations too. it seems like the tickrate of animations for listenserver and dedicated server are almost halved compared to default values. this may or maynot be linked to this problem

avatar image OptimisticMonkey Oct 11 '16 at 08:37 PM

I am still experiencing this in 4.13

avatar image ptjackson Sep 20 '17 at 11:35 PM

Ive been waiting since 4.10 for this issue to be fixed. I try every new version that comes out and still no fix. I need this to work because I am doing a multiplayer game at high speeds for flying and it looks like crap with no lag.

avatar image Sean L ♦♦ STAFF Sep 25 '17 at 12:04 PM

Hi ptjackson,

The resulting issue has been marked as resolved in another ticket as of 4.12. If you're still experiencing the issue in 4.17, please create a new thread in the Bug Reports section and ensure to include as much information as possible, such as a detailed list of steps, logs, a test project, and anything else that may be relevant as far as helping us get a ticket in for the issue.

Thank you

avatar image LechPCF Oct 03 '17 at 02:47 PM

Hello!

I can confirm that this issue still persists in vanilla 4.17.2. Repro is extremely simple. 1. Create a TPP template in 4.17.2. 2. Launch it with two players 3. Type 'slomo 0.1' (on server or both, doesn't matter) 4. Start moving with the client

Listen server will observe extreme jittering in client's animation. The video is worth more than a thousand words, so here is a movie showing the problem:

https://drive.google.com/file/d/0B_x2lLoD8SaMdHhtSnlFZXZzWk0/view

Note that the other way (server moving, client observing) animation plays smoothly.

I really appreciate someone looking into this.

avatar image marineuac Oct 03 '17 at 07:03 PM

Can confirm this too, was wondering why my capsule component attached to character animation was sometimes not registering... mind you this isnt the best way to do this but it is related to the problem.

its jittery kinda like animations on server are ticking too slow??

first image is what the client sees

second image is what the server sees

avatar image Sean L ♦♦ STAFF Oct 26 '17 at 01:14 PM

Hello,

I apologize for the delay on this.

I've spent some time in my test project looking into it, but I'm not noticing any severe jittering with the setup that I'm testing. I do notice that the animations pop a bit when you activate slomo, but I would think that would be expected since they are running at a different speed, but let me know if I'm overlooking something.

Take a look at the project I've provided and if you can replicate your issue in it, feel free to let me know and I can definitely take another look.

Thanks!

link text

jittertest.zip (1.2 MB)
avatar image Hevedy Oct 26 '17 at 05:28 PM

Will try to check this, basically here happen the same I posted in the forums, you can see it if you play with some real player, in local don't happen need some kind of minimal 50ping or so from computer to computer and only the server of the listen server can notice it from the clients, even I have seem problems with the local bots happen to me in the Survival Sample of Tom from Epic and the Shooter Game of Epic aswell. Affects to the animation doing some lag, aswell the player in general at move As reference of the problem you can see here the clients moving not fluid compared to any other game https://www.youtube.com/watch?v=P0J77XYtmYY

https://forums.unrealengine.com/unreal-engine/feedback-for-epic/1346282-impossible-use-ue4-for-a-coop-or-mp-listen-server-game-due-the-unfixed-network-errors-since-4-years

Where is Zak M here

avatar image Sean L ♦♦ STAFF Oct 30 '17 at 12:26 PM

Keep in mind as Zak stated in the thread that you've linked:

"Listen server smoothing for client meshes was added in release 4.12. The issue that is backlogged is for forward prediction of the capsule position. If something is attached to the capsule it will not be smoothed, but the mesh is, so we recommend anything that is attached and needs to be smoothed be attached to the mesh. If there are cases where this is not working correctly, please let us know!"

I'm not sure what your component hierarchy looks like, but if you have components attached to the capsule, you won't see any smoothing which could lead to some jittering that you're experiencing.

Let me know if you replicate it in the test project I've provided.

Thanks

avatar image Hevedy Oct 30 '17 at 01:27 PM

As I reply him yeah still there the problem even in 4.15 and 4.16 etc. Can't try this as I don't find any person that can/want try it.If someone from Epic can try it with me in the europe area better then.

As second part we talk there is a problem with the animations replication and your example have no animations what you want to check here then ? Aswell its Steam based and we are not using Steam.

avatar image Hevedy Oct 30 '17 at 07:03 PM

1º First of all the sample you provide don't work with steam properly tried with other person.
2º Second of that don't include animations so its impossible to test the problem.
3º Don't even work using the direct connect.
4º Include content for test archivements, and not the network at all.
5º A mate that works with you who made SURVIVAL TEMPLATE is public on Github you can see the complete sample aswell the complete hierarchy use it and check the error, or even use the SHOOTER GAME sample, have the same problem.
6º Test it outside of the lan/local network.

Sorry but no idea how many times I already wrote this and not sure if the people read it....

Test any of this examples with other mate that have atleast 50 of real ping from you, and not from the same office. Simulated on local are not working to see the error as normal games...

https://github.com/tomlooman/EpicSurvivalGameSeries https://docs.unrealengine.com/latest/INT/Resources/SampleGames/ShooterGame/

That its all, thanks.

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

3 answers: sort voted first

I came up with a solution that works for my case at least, unreal has a solution for normal characters default mesh and there children but it doesnt work for anything else and it doesnt work for papercharacter either.

The offset is only visual because of course you dont want your server to 'predict' positions of colliders so it needs another method to visually blend movement of clients. So all you need to do is pull that predicted position out and set it in whatever object you are using. In my case papercharacter, here is my solution:

 void AMythosCharacter::Tick(float DeltaSeconds)
 {
     Super::Tick(DeltaSeconds);
 
     // forces the method they use to visually offset meshes for normal characters to work with papercharacters.
     if (GetNetMode() == NM_ListenServer && GetRemoteRole() == ROLE_AutonomousProxy)
     {
         FNetworkPredictionData_Client_Character* ClientData = GetCharacterMovement()->GetPredictionData_Client_Character();
         GetSprite()->SetWorldLocation(GetActorLocation() + ClientData->MeshTranslationOffset + spriteOffset);
     }
 }

I just yank out that value (after the internal tick) and assign it as an offset for the sprite (spriteOffset is the original relative position of the sprite).

more ▼

answered Jun 08 '18 at 05:30 AM

avatar image

SteamPunkProgrammer
11 3

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

I came up with a solution that works for my case at least, unreal has a solution for normal characters default mesh and there children but it doesnt work for anything else and it doesnt work for papercharacter either.

The offset is only visual because of course you dont want your server to 'predict' positions of colliders so it needs another method to visually blend movement of clients. So all you need to do is pull that predicted position out and set it in whatever object you are using. In my case papercharacter, here is my solution:

 void AMythosCharacter::Tick(float DeltaSeconds)
 {
     Super::Tick(DeltaSeconds);
 
     // forces the method they use to visually offset meshes for normal characters to work with papercharacters.
     if (GetNetMode() == NM_ListenServer && GetRemoteRole() == ROLE_AutonomousProxy)
     {
         FNetworkPredictionData_Client_Character* ClientData = GetCharacterMovement()->GetPredictionData_Client_Character();
         GetSprite()->SetWorldLocation(GetActorLocation() + ClientData->MeshTranslationOffset + spriteOffset);
     }
 }

I just yank out that value (after the internal tick) and assign it as an offset for the sprite (spriteOffset is the original relative position of the sprite).

more ▼

answered Jun 08 '18 at 01:13 PM

avatar image

SteamPunkProgrammer
11 3

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

I've done some further investigation, and it appears that there is not an easy solution for this at the moment. I've found some threads that our developers have responded to internally that have provided suggestions for this issue and I'd like to share those here:

A few things that you could try would be to try to disable move combining on clients (p.NetEnableMoveCombining set to 0) which would come at the expense of additional bandwith. Even with this change, you may still see jittering with lag variance or at low frame rates.

Also, if you're not using networking Anim Root Motion, you could just allow the animation to update at the server's rate. You could accomplish this by moving the TickCharacterPose for the remote clients into TickComponent in CharacterMovementComponent.

Another alternative approach would to smooth out the pose on the listen server, for remote clients. When you do an update of the animation, it would create a new target pose to smoothly drive towards. Similar to how the motion is smoothed out between client updates. It would make the animation a little softer and mushier, but it might not be that noticeable. And that would be less work, and it would be more isolated, than the previous solution mentioned.

Finally, you could look at how URO (UpdateRateOptimization) is smoothing out poses on the client, and implement something similar for listen servers. Search for 'AnimUpdateRateParams->ShouldInterpolateSkippedFrames()'.

URO works by skipping animation frames, essentially downsampling the animation update. (For example skip every other frame, and animation update is running at half the frame rate). But if 'ShouldInterpolateSkippedFrames()' is true, then these skipped frames are smoothly interpolated.

So on listen server rather than skipping a fixed number of frames, it would be a bit more dynamic, depending on when you receive an update from the client, and when the server needs to render a frame. But similar logic could be used.

more ▼

answered Nov 16 '17 at 03:10 PM

avatar image

Sean L ♦♦ STAFF
43.5k 485 152 443

avatar image Hevedy Nov 17 '17 at 09:08 AM

I just know this still unfixed https://answers.unrealengine.com/questions/434642/listen-server-charactermovement-has-no-interpolati.html https://issues.unrealengine.com/issue/UE-32005 And looks like part of the problem aswell. (Road 2 years unfixed) This error is combined to the error of the animation both are ""choppy""

There are UDN threads that I think are unresolved aswell as some links are in the net. As another point the "p.NetEnableMoveCombining " do nothing, tested time ago. About the last "UpdateRateOptimization" didnt tried it yet, will try in the future.

Still I don't feel like this is a problem the users of a engine hav to resolve, as is a problem that affect us all, and should be working in the engine as we can't make a simple Coop or Listen Server multiplayer that work smooth...

avatar image Sean L ♦♦ STAFF Nov 17 '17 at 03:32 PM

Yeah I'm aware of that issue as well. I'd recommend trying the solutions that I mentioned above, as those are currently what has been suggested when users are experiencing these issues in their projects. There are several tickets in related to this that are in various stages of investigation, so implementing one of the solutions suggested above is your best bet to get this working correctly.

I appreciate the feedback, and if you are able to implement the solutions and are still running into errors, let me know and I can see what else we can try to suggest for you.

avatar image JohnnyDale May 21 '19 at 01:22 PM

Also, if you're not using networking Anim Root Motion, you could just allow the animation to update at the server's rate. You could accomplish this by moving the TickCharacterPose for the remote clients into TickComponent in CharacterMovementComponent.

Another alternative approach would to smooth out the pose on the listen server, for remote clients. When you do an update of the animation, it would create a new target pose to smoothly drive towards. Similar to how the motion is smoothed out between client updates. It would make the animation a little softer and mushier, but it might not be that noticeable. And that would be less work, and it would be more isolated, than the previous solution mentioned.

I am using networked root motion for one shot animations, do you think it's possible to mix these two solutions? So that if an anim montage is playing it goes in the animation lerping mode ticking as it does by default, and if it's not playing it goes into the tick at server's rate mode.

If this is not possible, I will need to go with animation interpolation solution only, however, I get lost in the SkeletalMeshComponent.cpp, can I ask for some guidance regarding where I could intervene to add this functionality?

Thanks in advance!

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question