Description
A player standing inside the cargo bed of a moving pickup truck can interfere with the vehicle’s physics simulation.
When one player drives the pickup and another player stands in the cargo area, character collisions and network ownership replication can continuously push the vehicle downward or into nearby vehicles. This creates unstable physics forces and can cause the pickup or another vehicle to accelerate to extremely high speeds.
Video reference: TikTok - Make Your Day
Steps to Reproduce
- Spawn a pickup truck.
- Let one player enter the driver seat.
- Let another player stand inside the pickup bed.
- Position the pickup on top of or against another vehicle.
- The player in the pickup bed applies forces to both vehicle assemblies.
- The accumulated physics forces can launch the vehicles or accelerate them to extreme speeds.
Expected Behavior
Players standing in a pickup bed should not be able to destabilize, push down, or launch vehicles through character physics.
Actual Behavior
The character interacts physically with the pickup and the vehicle underneath it. Due to physics replication and network ownership, these forces can become unstable and result in extreme vehicle acceleration.
Support Requested
We understand that this is a general consequence of multiplayer physics and do not expect a major change to the physics solver.
We are looking for guidance on how we can mitigate or prevent this behavior within our game.
Disabling collisions between vehicles and characters globally is not an option because players still need to stand on and interact physically with vehicles.
Are there any recommended methods for preventing a character from generating excessive forces when trapped between or standing on multiple moving assemblies?
Priority
High, because this bug can be exploited to launch vehicles, reach impossible speeds, disrupt other players, and potentially bypass movement or anti-cheat systems.
Game Link: Roanoke, VA Driving RP | Play on Roblox
Thanks for reporting the issue. Can you please provide a file with this truck where we can repro it, so we can pinpoint the problem. Thanks!
You can test this issue with any a chassis based car from the toolbox when it has collision on the body. I also enabled a replication lag of 2 seconds.
In the video i stepped with the character on the vehicle and pressed W once for half a second. When the car slowly comes to a stop it will start reversing on its on and continue to drive by itself just because of this other character.
This is all the same problem, probably the reason in the tiktok video it makes the car faster is because of a generally squatted position of a truck (see image).
carWithCollision.rbxm (1.1 MB)
This is a very long standing issue with eseentially any kind of moving platform and multiple Humanoid based characters. We have two projects that intend to fix them entirely:
Character Controller Library: it uses new physics calculations for avatars that should impose more realistic forces to the Parts being stood on. It also provides a framework to use if you want to try creating a state where the character doesn’t apply any force at all.
Server Authority: Client side prediction circumvents network ownership issues by having a source of truth simulation on the server, and all clients predict that simulation and rollback mispredictions to alleviate the latency of server ownership.
We tried using the character controller library before but had issues understanding and installing it properly to the game.
Does this only affect character movement or anything else as well?
And you said “state where the character doesn’t apply any force at all”, is there a way to have the character forces disabled all the time? We have nothing in the game that the character should be able to push around and we’ve tried to disable forces before as well.
Thanks in advance
Putting the Humanoid in the Physics HumanoidState will disable all forces.
If you are facing issues with the CCL then I’d advise making a bug report for that, the goal is to use that instead of Humanoid. It is a replacement for the Humanoid’s state machine and physics controller. You can view the source for the CCL, and make adjustments to the Controller instances as needed. With the Humanoid, its either on or off.