Stall warnings are based on speed and pitch, rather than AoA
The problem Stall warnings appear to be based on speed pitch. The yellow stall warning/stick shaker activates when airspeed reaches zero, and the red stall alarm activates when descent rate is excessive. Stall warnings do not appear to activate unless pitch is in the red. This creates two problems:
- Stall warnings activate far too late to be useful (to me, at least). The angle of attack can quickly exceed 45 degrees without the speed reaching zero.
- Accelerated stalls are basically never detected, as the pitch doesn't go into the red despite the speed being quite low and the angle of attack being quite high.
The solution Stalls should be detected based on angle of attack. Ideally the thresholds for stall warnings would be configurable, as some players (like me) may want more strict stall warnings/protections than others.
What would a proposed angle of attack calculation look like? Right now AoA is calculated by subtracting flight pitch (pitch of the player's velocity vector) from actual pitch. A caution (yellow warning) triggers at >90* AoA and a warning (red) triggers at descend rates above 10 blocks/sec (above this descend rate the game starts incrementing fall damage).
The indicated airspeed is speed towards your look angle. When the AoA is more than 90 degrees the velocity vector and look angle vector are perpendicular to each other so airspeed reads 0 (you're not going where you're looking, at all).
Pitch limit for stalls is (flight pitch + 90) degrees with some limiting based on IAS to improve response times.
Stall thresholds are pretty lenient due to past user feedback reporting that stall protections had significant impact on maneuverability, so they were toned down while still preventing fall damage incidents.
If the yellow stall warning is already based on AoA, then I would simply like a config option to control the AoA at which it triggers. Detecting accelerated stalls definitely sounds a bit more complicated to me. I think the simplest way to implement it would be to subtract the flight yaw from actual yaw, in addition to subtracting flight pitch from actual pitch, and triggering a stall warning when either angle is excessive.
What risk do "accelerated stalls" actually pose to the player? As far as I'm aware fall damage only starts accumulating at <10 bl/s descent rate, which should already be always caught by the regular stall warning