"Drone" Mechanic Needs Optimized

Hi! I’m a bit new to this but I’ve tried my hand at making a sort of drone system for the game I’m working on right now. I’m pretty bad at coding though, and I’m looking for the most efficient way to pull off what I have in mind.

Essentially, when a player sits in the seat, the script creates a part that the player pilots with the same controls as Studio’s default freecam. I’ve got the basic functionality in place however it feels really jittery and I can tell it’s going to be ridiculously laggy in game. The game will be multiplayer and there will be 4 seats that set the player into drone mode at a time, so I’ve instinctively used a pairing of a Script and a LocalScript, however I’d love a more efficient alternative to sending player movement info from client to server every frame that would still allow for 4 different players to pilot their respective drones (this is because it will be a 4 player lobby btw).

Ideal behaviour: The drone’s current movement is mostly ideal, including how it phases through objects, but I’d like it to be as smooth as regular player movement. Something I tried and failed to do was set the model of the drone to be a transparent version of the player’s head, and the head should be able to turn so that other players can also see what you’re looking at, although this is optional if too complicated to add. Also I forgot to add a keybind that deletes the drone and returns the original player control.

There’s likely several better ways of tackling this problem that I didn’t try. For one, it might be better instead to just use the actual player character instead of creating a part that the player pilots. It would also probably be better if there weren’t any chairs at all but instead just a pad that sets whatever player that steps on it into drone mode. These are just suggestions to alternative methods of executing this idea of course, so anything better as a whole would be appreciated.

Here’s the rbxl: dronetest.rbxl (61.4 KB)

Good luck and happy scripting! Thanks in advance!

Based on what I read, why don’t you set the drone’s network ownership to the pilot?