While optimizing the code is the most obvious way to increase performance, a better level of detail management should be also considered.
As an example, with default settings and in the middle of a furball with 10 - 15 planes fighting at low level I get between 50 and 70 fps with short visual range, between 30 and 40 fps with medium visual range and between 19 and 25 fps with full visual range. In that situation, the real visual difference seems to be only the terrain, as all the enemies and friendlies fighting nearby are clearly visible at any visual range. Now, visually, terrain at medium visual range and full visual range seems the very same but the frame rate hit is very noticeable, on the other hand, with short visual range you lose most references to surrounding terrain.
I would like a more flexible and extended level of detail management. As a minimum, let the player to set the ranges associated with short, medium and full visual ranges for the terrain (asociated also with GVs visibility ranges), and also the three visual ranges associated with displayed flying planes.
The player would be able to set the following ground level ranges:
- Minimum visual range for short range associated with terrain and ground vehicles/grounded planes.
- Minimum visual range for medium range associated with terrain and ground vehicles/grounded planes.
- Minimum visual range for full range associated with terrain and ground vehicles/grounded planes.
- Minimum visual range for short range associated with airborne planes.
- Minimum visual range for medium range associated with airborne planes.
- Minimum visual range for full range associated with airborne planes.
A "level of detail calibration mode" would also be very helpful.
The player set three minimum FPS, each one for the three visual ranges (short, medium or full). Then switch on the "level of detail calibration mode". Now the system increase of decrease the visual range to achieve the desired FPSs (+- 2%) for the three ranges.
Also, make these ranges proportional with your current altitude over the ground, decreasing automatically as you get lower and increasing as you fly higher, being the minimum range that set by the player at ground level.
Of course, the best way to make the game as playable as possible would consist on an automatic level of detail management, so it keeps adjusting dinamically the level of detail to achieve a minimum FPS set by the player.