Help on creating custom character movement (w/o physics)

I’m making a game inspired by the newer games of Cyan Worlds, for example firmament or the newest version of myst. Like both of those games, this game will have moving platforms which the player can stand on. Unfortunately, this creates lots of issues due to roblox’s physics engine. I already made a post for advice on this, but couldn’t find anything.
I don’t know if this idea is remotely possible, but I’ve been thinking that I could make a custom, non-physics-based character movement system.
I have no idea where to start with this, but know lua programming so will be able to write my own code (hopefully).
Is this a plausible idea, and if so, could I take some advice for making a system like this?

Coincidentally I released this today, which is a character controller that has a customizable momentum effect without using physics constraints (although it only works with keyboard controls). Feel free to check the source code to see how I made it and get some tips if you want to make your own :slight_smile:

1 Like

The system i’m making cannot use the physics engine at all. I’ll quickly get a video to show you the sort of thing I’m trying to achieve.

Roblox’s physics engine messes this up, as seen here: Need help removing jittering from moving platform
I’m trying to look for a solution that completely ignores all physics stuff.

From what I can tell the problems you’re experiencing with the physics engine could be due to network ownership

Someone else said this in the other post I mentioned. When I tried changing it, an error was thrown saying then network owner could only be changed on unanchored parts. Plus, I’m pretty sure doing this is the same as putting the tween stuff into a localscript, which removes some of the jittering but not all

It’s true that you can’t set the network ownership of an anchored part as it’s always owned by the server. Personally for moving platforms such as elevators, I prefer to use a RunService loop instead of TweenService as it allows me to use the deltaTime property in order to smooth the movement. I also recommend that the movement of the elevator for example, should be handled locally for best results (you can connect the button that activates the elevator to a RemoteEvent and use FireAllClients to send a signal to a LocalScript that tells each player that the elevator has been activated and move the platform there (for extra synchronization, you can use workspace:GetServerTimeNow() if you wish))

Unfortunately I won’t be able to help you further today, as it’s quite late at night where I live, but hopefully I’ve been helpful :slight_smile:

1 Like