Where to start on custom movement system

Id like to create a custom movement system to overide the default roblox system. Im not sure where exactly to start and the things ive seen on other websites look intimidating (code wise).

im trying to achieve something like realistic walking, the player doesnt just walk and theyre max speed. Id like the player to start off slow and then gain momentum

My questions are:

  1. Which body Movers should i use for movement? (body velocity, linear velocity, etc)
  2. How could i rotate the character so they facve teh correct direction smoothly (I know i have to use a bodymover but i have zero experience with bodygyro or any sort of angular velocities)
  3. Are there any articles on the devforum/roblox api that will help?
  4. This is a dumb question but: should it be mainly client sided or server sided since it involves player movement

Im not asking for any code, just some advice on where to start

Help is greatly apprciated, thank you for your time

5 Likes

Well you shouldn’t use BodyVelocity as it’s deprecated, along with a lot of the older movers. Be sure to check before you use one.

The question is less about which movers you end up using and more about how you use them. You can achieve relatively similar results with different implementations and different constraints. AlignPosition is great for movement that you want extreme control over. When used in junction with AlignOrientation you can produce a pretty alright system. Equally you could build your system around less control and use a velocity object that consistently applies. It’s all up to you and testing things out.

Once again, BodyGyro is deprecated. I would look into AngularVelocity and AlignOrientatoin;

AngularVelocity: apply torque to BasePart to apply a constant velocity.
AlignOrientation: apply torque to BasePart to maintain an orientation.

I would think about your situation and apply the one that makes most sense. / AngularVelocity would be great for a rocket object that should keep spinning while it shoots off / AlignOrientation would be great for matching a hovering part to the orientation of the surface/normal below it.

This is mostly going to come down to what you want to create. The DevHub doesn’t always have great documentation, but most constraint objects tell you exactly how they work on their DevHub page. It’s just a matter of also understanding Attachments/Welds/etc…

This again is going to depend on what kind of system you build. Generally on Roblox, players have NetworkOwnership over their characters (this is true even for your normal avatar). It means that changes can be applied and replicated by the client because their machine is given the burden of physics for their character object. You don’t really want a whole lot of delayed gratification when it comes to movement. It makes a game feel clunky and non-modern.

There are instances where it would make sense to handle your physics on the server, these are all very situational questions.


Here is another link, two of the open-sourced games that I have linked in this thread contain custom movement system (keep in mind some old movers are used but you’re welcome to introduce yourself to the concept through it):

8 Likes

Thank you so much! I appreciate the effort

Id like my system to not be exploitable, so i think ill be making it server sided mainly and handle user input on the client