Replies: 19 comments
-
biggest problems are values like engineAcceleration a client side variant for server side created vehicle would require that the values would get synced over the server after a value has been changed the update packet would have to become part of the main sync packet for position, rotation, velocity, ... |
Beta Was this translation helpful? Give feedback.
-
You just would not implement scripts modifying those values if you do not want that behavior. Maybe someone would find that useful after doing some research, we should not decide for everybody if we do not find the benefit ourselves. I personally see benefit in modifying mass and turnMass, someone may see benefit in modifying some other properties. |
Beta Was this translation helpful? Give feedback.
-
almost every value can cause desync to some degree |
Beta Was this translation helpful? Give feedback.
-
Desync to some degree is the goal of this suggestion. Let's take an example use case: |
Beta Was this translation helpful? Give feedback.
-
mhhhhh my idea would be if this should become a thing (which i hope so) setVehicleHandling(vehicle, property, value[, sync = true]) so you could disable automatic value syncing |
Beta Was this translation helpful? Give feedback.
-
Client-side function with sync would require more implementation effort and, anyways, it does not make sense to me. If you want sync, you could call setVehicleHandling server-side. |
Beta Was this translation helpful? Give feedback.
-
what about ping times |
Beta Was this translation helpful? Give feedback.
-
Yes, ping times are different when everyone is connecting from different place. |
Beta Was this translation helpful? Give feedback.
-
a sync option is simply a requirement |
Beta Was this translation helpful? Give feedback.
-
Server-side setVehicleHandling is that option. |
Beta Was this translation helpful? Give feedback.
-
but if you add it client side you need to add sync option otherwise it's only beneficial to you |
Beta Was this translation helpful? Give feedback.
-
I am just an example user who came up with the idea to improve collision synchronization by temporary changing vehicle mass only for the colliding client. It could be any other user, not just me. I was just the one who decided to go further with this and offer this idea to the community. Other users might have come up with other brilliant ideas how to harness unsynchronized setVehicleHandling but were stopped by that 'false' return value from setVehicleHandling and simply gave up at that step. How is it only beneficial to me? I do not agree with you. If it was only beneficial to me, it meant I was the only one who could use this function. But what I am doing is completely opposite action - offering this functionality for every MTA:SA user. |
Beta Was this translation helpful? Give feedback.
-
you would completly confuse people by not having a default sync option on client side variant too |
Beta Was this translation helpful? Give feedback.
-
I agree with you but this is too much effort for me. So I give up at this point. Good luck. |
Beta Was this translation helpful? Give feedback.
-
Then i guess we should close PR #1935.. will do so if there's no other feedback (or more opinions regarding the 'desync' discussion) soon |
Beta Was this translation helpful? Give feedback.
-
Related issue: #1898 |
Beta Was this translation helpful? Give feedback.
-
You can already make such desync with |
Beta Was this translation helpful? Give feedback.
-
this was indeed implemented |
Beta Was this translation helpful? Give feedback.
-
You yourself have already solved the problem, it can be said that you can close the discussion #1935 |
Beta Was this translation helpful? Give feedback.
-
Is your feature request related to a problem? Please describe.
Please allow using client-side setVehicleHandling on remote vehicles. Server developers like me could then experiment with synchronization improvements like temporary removing mass (between collision moment and collision sync) from remote vehicles. Now the hit vehicle controller stays like a wall until collision synchronizes. And that can take a while if the remote player has high ping or packet loss.
Describe the solution you'd like
Remove this check
from
and overloads
Describe alternatives you've considered
Using setElementCollidableWith would make the collisions lose visual effects like car changing velocity and position on collision.
Using setVehicleHandling serverside changes the physics for remote vehicle controlling player and that is something I am trying to avoid.
Additional context
What does it look like hitting a vehicle with lower mass? Can you push it around more easily?
If you set remote vehicle mass to 1 using server-side setVehicleHandling and that vehicle is controlled by a high ping player, then pushing his vehicle is easy. Otherwise, if mass of the remote vehicle isn't lowered, your car crashes into that remote vehicle like into a wall.
if you push it away it's gonna warp around the place when sync packets correct it
synced packets will warp the vehicle back, but remote vehicle after sync packet won't push the local vehicle since it has no mass (very low mass = 1)
so it will get pushed out once again
and this way local vehicle doesn't lose velocity when hitting the lagging remote vehicle
I think it is worth leaving freedom for server developers to do some experimenting and maybe implementing things based on using setVehicleHandling client-side to set remote vehicle handling.
If it is something weird, server admins will just remove the script
If you set remote vehicle masses serverside to 1 and laggy player drives that vehicle, you will be able to push it easily even if push packets and sync packets lag due to player high ping
Beta Was this translation helpful? Give feedback.
All reactions