As I mentioned previously, the stock Wind.class does not apply turbulence/gusts to AI at all; only the steady underlying wind vector is active.
To correct my prior post, after reviewing the stock gust/turb implementation (again, applicable only for the player and any of his flight underlings) I do see that there is incorporation of variability of intensity with altitude, which I certainly implement. So that aspect would seem to not be a cause of any difference in behaviour.
If it does come down principally to the number of planes, than the density of information leading to inability to transmit it all over a network would seem to be a good candidate for the troubles.
Wake turbulence is a potentially nasty element in these considerations. For each and every plane, a search is conducted among all other planes to see which of them fall inside the distance and height range envelope for calculation of effect. This initial 'weeding out' process scales geometrically as the number of planes. If there are 4 planes active, each checks on the other three, for a total of 12 checks. If there are 16 planes, the number of such checks increases to 240. Were there to be 32 planes, the check count is 992. These are conducted every game tick.
This is the line of code conducting this check, utilizing three conditions, each separated by "&&", meaning that all three must be true before the turbulence is calculated :
if (Math.abs(point3d.z - point3d_AI.z) < 15.0 &&
Math.sqrt((point3d.x - point3d_AI.x) * (point3d.x - point3d_AI.x) + (point3d.y - point3d_AI.y) * (point3d.y - point3d_AI.y)) < 190.0
&& (f1 >= 15F || (f1 < 15F && f_Speed > 20F)))
I wonder if it would be worthwhile to separate out a very basic check condition that would more quickly weed out the obviously inapplicable planes, leaving the other conditions to be run only after this first elimination. Of course, one such quite discriminating condition is whether the plane under examination lies within the +/-15m height envelope of the player. That's a pretty tight constraint. This is the first check conducted, meaning that if that fails the rest of the code is skipped and the next plane is up for testing against. The next check tests whether the plane lies within the maximum distance of 190m within which wake turbulence can be active. The last condition considers planes on or near the ground having a speed of at least 20m/s (about 40kt). I added this last one because strafing a PARKED plane from behind, while skimming just above the ground, should NOT induce wake turbulence!
And then while at it, I considered the application of this turbulence on planes in the process of taking off or landing close together.