For the past couple of days we have been experimenting with various camera, cursor and control schemes. The scheme we have been working with for a long time has been a pretty fixed camera that didn't rotate, but followed above your character. A couple of weeks ago I added the ability to zoom in & out with the mouse wheel in anticipation of adding melee attacks.
This control scheme has some nice properties. One is that it's hard to get lost - the WASD keys naturally match the NSEW cardinal directions. It's easy to aim at the enemy you want by just clicking on them with the mouse cursor. I added auto-aim a while ago, so the engine does a good job of figuring out which guy to attack.
But, the distant camera an unusual perspective seems very disconcerting to almost everyone we showed it to, so I thought
we should at least test out other schemes more thoroughly before we are stuck with something either sub-optimial, or initially unappealing or confusing.
Yesterday I got a system working where there was still a mouse cursor, but your player could rotate the view with the keyboard. This is sort of lame in that keyboard turning tends to have a fixed rate. I added Shift-turn to speed the rate, but it still didn't feel good. The keyboard controls were changed so that WASD was camera relative.
Then last night, I added a scheme so that the camera & player turned when the cursor was near the right of the screen, and left when on that side. This was ok, but felt more like a CAD program than a game, especially when the mouse would leave the right side of the screen and it would leave the camera spinning.
This morning I got FPS-style controls working, and so far, we really like them. So, WASD moves camera relative, and there is no more mouse cursor. Moving the mouse right turns an amount proportional to the # of units you moved. Your player always faces 'up' on the screen, and shoots up also, but still with auto-aim.
I realized that these are almost exactly the controls for Wolf3D or Doom 1, in that up-down aiming is handled automatically. Because this is an action-rpg and not a pure action game, we will leave the left-right auto-aim in there, but may add a bonus for good manual aim, and will probably allow the auto-aim zone to be tweaked, and also tied to the difficulty level.
With the latest scheme, you can still zoom in & out with the mouse wheel. I really prefer playing zoomed in, but zooming out is great for a tactical overview of the situation, and to get your bearings.
This experimentation was made much easier by the decision I made a long time ago to have separate ControlScheme classes that implement various versions of the InterpretInput() method.