Server Authoritative Movement on Roblox

As a Roblox developer, its currently way too complicated to model Server Authoritative movement.
I want to create a game with simple character colliders that handles all input in a server authoritative way

I cant do this very well with Humanoids because physics are distributed and the timestep for the Physics engine is out of step with my lua code

Every guide I read on how to accomplish this task assumes I have the ability to simulate my colliders or my physics at will:

  • Unity’s physics let you turn off “Auto Simulation” and lets you simulate a physics step yourself manually. Why doesnt Roblox allow us to have this level of control?
  • Unity’s CharacterController object even has a Move() function which operates in a similar fashion

It seems limiting that when I use Roblox’s engine, if I want to have a fixed, synchronized physics step on server and clients, I have to go out of my way to rebuild engine features that are already available to me if I were to use Unity instead.

If I want to create a secure, competitive game, I feel more encouraged to do this on a platform that supports these usecases first class than on the Roblox platform.

How can we solve this problem?

Also if we were able to accomplish this tasks, we would also need a way to use standard UDP.

42 Likes

A lot of games on Roblox involve fights between 2 or more players, and physics is the most powerful advantage that exploiters have access to in every exploit, we as developers have to either ignore the problem and let them ruin the fun for other players, or we have to dedicate tons of resources into moderation teams that simply don’t scale, as well as exploit detection systems that result in false positives and have to be constantly updated.

Pretty much every exploit has these capabilities:

  • Fast walking
  • High jumping
  • Seat jumping
  • Flying
  • No-clip
  • Flinging
  • Teleportation

Even when exploiter is caught, they can just make another account and continue their play. Despite all these challenges, there is a solution to this problem, a one that does patch all those exploits, this is called a server authoritative character movement. It doesn’t cost much, and in competitive games where physics are important, this solution matters as it would prevent the massive unfair advantage.

Chickynoid is one of the solutions that have shown how effective server authoritative character movement can be, many games do not use it because of the additional complexity it adds, and the amount of work that has to be redone to integrate it, which keeps many, including myself, away from this solution. Additionally, it’s not as performant as native implementation could be, thus I’m supporting this feature request to motivate Roblox to implement near identical Humanoid server authoritative solution that we as developers could have a choice to use, depending on our game’s needs.

5 Likes