As a developer, it is currently unnecessarily inconvenient to make a player’s avatar trip and fall down from the server. You either have to use a BodyMover, which may not quite give the desired effect, or create a new LocalScript that uses ChangeState and give it to the player.
To solve this, I suggest a boolean property called FallDown, which would behave in a similar manner to the Jump property, causing the player’s avatar to enter the FallingDown state when set to true.
I am asking for this right now because I am scripting a device that coats surfaces in layers of ice that players will slip and trip on.
Why exactly can a local script not handle the slipping on a surface by itself without needing remotes or more delay than the usual character replication already has?
If I understand everything correctly, when you give a tripping LocalScript to a player, you send the local code to the client to be run. The code runs and the client tells the server to replicate the tripping to all the other players, so data has to be sent to and from the client. If the server could directly trip players, data would only have to be sent one way, and to all the clients at once. This would be a lot more efficient.
The client decides where the character and their limbs are however. The server merely replicates that for all clients and between all clients, the server does not tell all other clients that the Jump property is set to true for one character and all other clients use this jump property to make that particular character jump for them; it merely tells them where to render the limbs of the jumping character.
The process as is;
(server or that client sets .Jump for character) → character’s client reads .Jump = true → client moves character in jumping motion → server replicates limb positions to other clients → other clients see that character jump
as opposed to
all clients read .Jump = true for a particular character → all clients seperately make the character jump locally
I see. I had forgotten about that. I’d still like to keep this feature request running because it would still be more convenient for the developer than giving the player a LocalScript.
In that case you might want to be more specific what you envision this .FallDown property to actually do; you mentioned body movers to simulate it and briefly mentioned ChangeState. Is it persistent when they jump? Is the state set by it or is it a similar effect? In general it is a bit ambigious what ‘tripping’ means in the post as is.
Instead of letting the server trip the player, keep it client sided. Create some LocalScript logic that determines when the player should trip, depending on Touched events or whatever. Doing player movement behavior on the server is considered bad design.