The key to being able to pilot your ship well, as it turns out, is realising that unlike most games that use the mouse for positioning, !Lander doesn't use the relative movement of the mouse to determine the ship's direction. Instead, it uses the position of the mouse pointer on screen - which is of course invisible!
This may not be news to some of you, but I was playing it again recently and had a revelation that this was how it worked, so I wanted to share it for the people like me who had no idea how this worked.
Imagine, if you will, that you had a mouse cursor while playing !Lander and that you also had an on-screen visualisation that looked something like this:
[Updated 26th January 2024: In actual fact, it turns out this image is slightly incorrect. See my update post downthread for a more accurate image!]
As far as I can tell, !Lander uses two factors to determine where the ship should point:
- Firstly, the position [edit: to be more precise, the angle] of the (invisible) pointer relative to the centre of the screen (shown here by means of quadrants, but which in the actual game is more precise) determines the direction of the ship (its yaw). For example, if your pointer was in the upper-right quadrant of the screen, your ship would want to fly away from you and to the right.
- Secondly, the distance of the (invisible) pointer relative to the centre of the screen (shown here by means of the blue/purple/red circle background) determines whether your ship is pointing up or down (its pitch). (Note that this visualisation isn't an entirely accurate representation, but should suffice for this explanation.) If your pointer is in the blue centre portion, your ship will be flying upwards. However, if your pointer is in the red portion of the background, at the edges of the screen, your ship will be pointed straight down! To actually fly in a particular direction, you would need to have your pointer in the purple portion.
Most games, such as Elite, get around this by only using the relative movements of the mouse and not relying on the position of the pointer. For !Lander, however, this wasn't a thing and led to a lot of woe.
I hope this helps anybody who was as confused about the control scheme as I was!
[edit: Rewording the second paragraph slightly.]