P_SpawnMissile et al: Projectile Missile Speeds
Most (if not all) missile spawning functions thrust an object forward on the XY axis based on its mobjinfo
-defined travel speed. To compensate for the third dimension, Z thrust is added to the object afterward by calculating the vertical distance of its destination in relation to its speed and horizontal distance.
This is Doom-native projectile behavior, and works well enough for FPS style gameplay that is designed to operate mostly on a horizontal playing field. But because Z speed is calculated in post, this code causes projectiles to have highly variable movement speeds along a three-dimensional playing field, with upward/downward fired shots being multiple times faster than horizontal shots. There's potentially a number of reasons for why this is undesirable behavior, but I think the most tangible reason is that it is not intuitive from a player standpoint and makes certain projectiles which appear dodgeable, suddenly not so. As a platformer, it would be more desirable in SRB2's case if missile related functions were modified to ensure that projectile speeds are fixed at their mobjinfo
speed values across all three dimensions.
The calculations needed for this are relatively simple. I have already scripted a functional rework of the core travel behavior in lua; it would only need to be translated into hardcode and implemented into the missile functions.