Transporter Actor Timer (Just Don't)

So I thought I would warn you guys against this incase anyone else thinks of doing it.

I thought it would be a good idea to have the Transporter component move the actors from a timer instead of tick. This was a really bad idea and let me explain the problem it caused.

When any client was standing on the platform and another client or the Listen Server triggered the transporter component the player would stay in place on the platform fine.

It also worked fine on a Dedicated Server, but the moment a Listen Server stands on the platform and a Client activates it the Listen Server Player would rapidly clip in and out of the platform as it moves up.

To properly see this I had to set the max fps to 20 using ‘T.MaxFPS 20’


The one clipping half-way through is the Player that is acting as the server…I still have no clue why this Only effects the Player that is the Server and doesn’t effect Clients at all.

An Alternative approach is to simply DisableTick and Enable it when you need it using SetComponentTickEnabled(false);
or
SetComponentTickEnabled(true);

When I moved my logic over to the tick and did it this way the problem went away.

If anyone has any idea as to why this would happen when moving the platform from a Timer please let me know because I’m really curious.

Yeah it still did it in Stand-Alone, I really should have thought to check that. So, it’s not actually a replication problem at all…It’s simply a bad idea to do that for moving platforms because they are going to run on a separate thread and just like how using weapon sockets as targets for the Hand IK in an Anim Graph (Since Anim Graphs also have their own thread separate from the Game Tick) that discrepancy between the GameTick and the TimerTick is what causes the problem since the Character Movement is on a separate thread and not in-sync with the timer. This leads to a situation where the Character can lag behind because as far as it is concerned…the platform has not moved yet.

We’ll I am wrong, Timers don’t run on a separate thread

So I guess the issue is related to the timing itself? I mean I am assuming that the TimerManager is what is ticking on the Game-Thread but I’m not sure how it managers to accurately tick the Timers independent of the Game-Thread while running from the Game Thread. That’s kind of confusing.


Alright I’ve confirmed that the Timers do get updated right after all the Tick Groups (Basically all Actors in the Level)

Privacy & Terms