Autoaim

Vertical autoaim
Since you can't look up or down in Doom or Doom II, the system compensates for you. Accuracy is not affected by the differences in the Z-axis co-ordinates of the player and target. However, vertical autoaim will only work against targets that are within a certain distance from the player; if the target is too far away, vertical autoaim will not take effect.

Horizontal autoaim
The player's projectile weapons have a limited ability to adjust their direction if the nearest target is not exactly straight ahead. From P_SpawnPlayerMissile in p_mobj.c:

// see which target is to be aimed at an = source->angle; slope = P_AimLineAttack (source, an, 16*64*FRACUNIT); if (!linetarget) { an += 1<<26; slope = P_AimLineAttack (source, an, 16*64*FRACUNIT); if (!linetarget) { an -= 2<<26; slope = P_AimLineAttack (source, an, 16*64*FRACUNIT); } if (!linetarget) { an = source->angle; slope = 0; } }

An angle in the Doom engine is 32 bits, so that 1<<26 = 360&deg; &times; (226 &divide; 232) &asymp; 5.6&deg;.