Aerodynamics woes, workarounds needed!

i have been building airplanes since the aerodynamics beta was first released, and initially they worked great, but then a bug crept in and all of my swept wing aircraft (and one of my straight wings, but not the others(???)) pull to one side or the other, seemingly randomly with little rhyme or reason. each time the game is loaded up there is a chance for it to be pulling to the other direction, so it isnt an asymmetry problem. i even tried applying asymmetric thrust, but the irregular nature means that it sometimes becomes worse doing that.

so, i tried compensating for it by adding larger control surfaces, but then was hit by another bug that surfaced around the same time. any sufficiently large control surface will abruptly stop working once it deflects far enough, usually near 40 degrees, though not always.

does anyone have workarounds to these bugs? i would have reported them myself but my request months ago to join the bug reporting group was seemingly ignored.

you can test these yourself to see what im talking about here:

(desktop only, sorry! its more of a test/hangout map than an actual game)

aircraft controls:
y/x = start/stop engine
w/s = throttle
a/d = rudder and nose/tail wheel steering
g = landing gear
q/z = stabilizer trim (only present on the 880)
u/j = flaps up/down
mouse = yoke

the bugs are expressed most violently in the 880, which is located at the end of the runway on the map, but is also noticeable in the sabre to a lesser degree.

note: autopilot not working in the atomic bomber, i’m in the process of completely redoing how the controls work under the hood for that one, but it is still otherwise flyable currently, and also exhibits the physics bugs.

The game is private.

Also, I think we have the same problem I’m not sure but here is my game if you want check.

Junk place - Roblox

oh oops, could have sworn i set it to public…
wait a sec, roblox says its public access…?
they have changed the UI so much over the years it took me quite some time to find the right setting. it should be accessible now.
it does indeed appear your plane has a similar issue though.

I think I might know the problem but I’m not sure, maybe it could be the center of gravity? or maybe the wind affecting the parts to move? I’m not sure. I have to ask though, are you using Hinge Constraints for your control surfaces? just wondering.

i tried wind already, as i actually have a dynamic weather system in the map, which as designed included wind. i had to disable the wind as it caused havoc.

as for CG, that is something which i have adjusted extensively. each of my aircraft has an invisible CG adjustment brick in them for just that purpose. however, given that the asymmetric force is purely yaw instead of roll which i would expect if it were noticeably heavier on one side rather than the other, i have my doubts that this is the cause.
i wont rule it out until i do further tests though given how closely symmetrical my planes are, especially in the case of the 880, this is doubtful the cause as there are incredibly few asymmetries in that plane: a few seats and the door.

control surfaces unfortunately must use hinge constraints.
i developed a servomechanism that is far stronger and more reliable: my “Rigid Constraint Animation Module” or RCAM for short, which is used for the landing gear in all aircraft except for the P-47 which uses hinge constraints (hence why it sucks as i needed to implement gear locks, which shake the plane violently and need several attempts to lock up or down), and the HP O-400 and huey which have fixed gear. it is also used on the doors of the huey.

but for some reason roblox’s aerodynamics does not reliably register that they have moved when using them. this is confusing as collisions and other motions seem to work just fine using this method.
i found this out the hard way as i originally tried to make the 880’s trim servo use an RCAM. i was forced to convert it to a hinge constraint as the plane is very difficult to fly incorrectly trimmed.
they have been perfect for nearly every other application i have put them in however.

I’m not sure why this happens, even to me when I use hinge constraints they seem to move on their own sometimes, and I thought it was the CG affecting it or the wind. I even tried to switch from hinge constraints to motor6d but like you said, the Roblox aerodynamics system doesn’t seem to register the parts moving so I basically don’t even have control surfaces or even control at all. However, I think it may have something to do with the mass or weight of the aircraft because when I used a smaller aircraft template for testing, these problems never occurred. But I’m not sure.

the constraint system is simply really weak, you need to ensure that control surfaces are not colliding with other parts of the aircraft, just spam noCollision constraints until they move freely, then, crank up the torque value as high as the game engine will allow without it breaking down. i use a value of 1000000015047466219876688855040 for my servo max torque on the atomicBomber, yes, really. i actually copy pasted that out of studio.

it may seem like an outrageously high number, but drop a decent sized part on it and watch how easily it is overwhelmed.

for mass i use a script i threw together i call Mass-B-Gone which divides all masses on a plane by a set value, i use 20 for aircraft, which when combined with a Workspace.AirDensity value of 0.005 provides flyable results.
that way you can build using normal parts, and then the plane will have an appropriate mass value to be flyable regardless of size of the plane.
the downside of this is that the inertia is drastically reduced, making the planes behave very cartoonishly with regards to change in engine throttle

in the meantime, ive been developing an airship. its going about as well as the title of this thread would lead you to expect… sigh

an update:

1: airships’ questionable physics

roblox physics seemingly has become even worse, and so has some of the flight control issues.

the physics engine is wholly incapable of supporting airships outside of doing things the oldschool way with BodyPositions and BodyGyros (their modern counterparts also dont work)

an act as simple as rotating an airship with aerodynamics turned on causes physics to freak out at certain angles and positions. often sending the airship to NaN land

2: Mass-B-Gone

roblox’s automated systems are unhappy with my model and roblox refused to elaborate on why.
instead, here is a shortened version that should do the same thing if anyone reading this thread needs it as i will not be publishing further models to roblox due to them requiring them to be allowed for use as ai training data.

place this script in the model you wish to change the mass of

--aaaddd
local divFactor = 20 --factor to divide mass by. 20 works well with air density of 0.005

for k,v in pairs(script.Parent:GetDescendants()) do
	if not v:IsA("BasePart") then continue end --filter to only parts
	local curProps = v.CurrentPhysicalProperties
	local newProps = PhysicalProperties.new(curProps.Density / divFactor,curProps.Friction,curProps.Elasticity,curProps.FrictionWeight,curProps.ElasticityWeight)
	v.CustomPhysicalProperties = newProps
end