[NO SYNC] Pushing players/actors
#1

These two sync bugs are similar to each other so I'm reporting them in the same topic:

1. I don't know if anyone reported this before, but this is one of the smallest things that actually annoy me when playing, as I'm using pretty much funny animations on other players sometimes: When pushing players which are staying in the same position you will see them moving a bit in a small offset from their original position, but that only on your screen (not sure if on the screen of others too), while on his screen he stays in the same position. This is mainly bad because animations look weird if trying to do some animation like kissing the other player after you touched him even a bit, he will be in another position to you and he won't see the animation doing the same thing on him like you do. If they start moving the position sync will be fine again, until they will stop and you touch them. Wish I could do some kind of video showing two players on two different monitors.

Possible fix: Probably none right now because AFAIK someone reported some old SetPlayerPos sync bug too: the player position wouldn't be synced to others if the distance from the old position was smaller than 1.0, so we couldn't use that function when the player has no velocity to just set him back to the old position, if there's any player streamed to him. (and using SetPlayerPos like that would probably make things buggy especially if the player has lag)

2. I am 100% sure this was reported before, it is mostly the same thing as the first sync bug I reported above, actors could be pushed in a small offset too (not sure), but additionally: You can push actors around A LOT (until they will actually stream out because their position isn't actually synchronized to the server), but this problem is even bigger (well, these are 2 sync bugs in one I guess): you can push them around a lot with the car or with whatever you want. Actors will be far away from their original position and will only come back to the original position when they will stream in again to you. That is even a bigger problem because even if the actual "moved" position of the actor isn't synchronized, it is behaving like that client sided if there's anyone on your screen moving the actor.

Possible fixes right now:
- Maybe placing some box object without any collision in it, but its walls to be around the actor, the collision of the walls actually being there. That would disallow players to touch the actor, but probably can't be made too precise. If there isn't any empty box with those dimensions, then we would have to use a maximum of 5 objects for this method of fixing it.
- This is the most well known "fix" out of these two I guess: using a short timer for the actors and use SetActorPos everytime on them, which is pretty bad. (or, well, a bit more optimized: if they are actually streamed to anyone, could track them using the OnActorStreamIn/Out callbacks.

A great solution for this would be some kind of "SetActorFixed" (can't find a good name for that), so he couldn't be pushed anywhere. Also, the pushing in a small offset should be totally disabled.

These may be hacky to fix, but we could benefit from these few things, they can also make roleplaying better if using animations.
Reply
#2

that's should get fixed asap really annoying
Reply
#3

1. Pretty certain this can't be fixed server side, since it only happens client side and of course the other player hasn't really moved so his client won't send an update packet to server.

2. Same thing, but since you said they could be pushed outside of their sync zone, I would probably leave the possibility to memory hacking. Since we don't have direct tools to access the update packet of Actors, and I'm not too familiar with how actors work (since I haven't really played with them) it might still be possible to increase the send rate of actors packets and maybe check if they are out of range. However since i'm not sure if this is client side it might be a dead lead.

Using SetPlayerPos would suck, the best bet actually would be to find a way to get the position of another player from the client, and compare it to the current position on the server. If the actor/player was within inches or 1 - 2 ft of their actual position then you could set them back without actually using SetPlayerPos. But I'm certain this can not be done without client side modifications.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)