My Planes Sometimes Freeze in Midair

Hi friends!

The planes in my game Ace Pilot here:

https://www.roblox.com/games/429679/Ace-Pilot-WWII?refPageId=5cb3f80e-5f68-4d98-8a29-65d9d91364d1

They sometimes freeze in midair when they are “entered” by the player, especially if the player has recently entered the server and this is his or her first “life.” These planes are actually Tools (And maybe that’s part of the problem) that are equipped upon spawning. Fixing this glitch has been a high priority for me for about 2 years now. I’ve tested hundreds of possible workarounds. At the moment, the player won’t “see” that his or her plane is frozen in place, but will instead see “Loading…” and “Please wait” until the game recognizes that the plane is moving. Usually, the plane will begin moving in 4-5 seconds, but there are times when it can take up to a minute to finally work again–and probably longer if the player’s client is particularly slow. (There are rare occasions when the plane begins to move but then freezes, in which the player will unfortunately see this happen)

So, basically, through all of my testing I know that this is an efficiency issue. It becomes more likely to occur the more players are in the server. There must be a more efficient way to handle plane movement than what I’m doing.

Right now, I’ve been handling the movement of planes with BodyVelocity and BodyGyro in each player’s Torso. The plane updates both every frame from a localscript. The BodyVelocity and BodyGyro right now, technically only exist locally, since local changes to player.Character seem to always replicate to the server automatically, in my experience. BUT I’ve also tried creating the BodyVelocity and BodyGyro from server scripts.

One thing I haven’t tried is handling the changes to BodyVelocity and BodyGyro from a server script, since that would require a TON of Events being fired through the client/server boundary.

With that, or perhaps from playing yourself, is there anything you can see right away that could be hurting efficiency? Or is there an obvious better way to do this than what I’m doing?

Thanks friends.

Hey! Did you ever resolve this issue? I might be of help.