Traditional roguelike games are restricted in what they can display graphically. Restrictions are part of what make roguelikes great (this is definitely true for the original rogue), but graphics no longer have to be one of them. While troubleshooting the firing logic for robocaptain I found myself stuck in a “traditional” mode of thinking.
In the original 7DRL version of the game, firing took two steps: ‘f’ to confirm target, and ‘f’ again to fire. Alternatively, once ‘f’ was pressed the first time, the player could hit ‘g’ to cycle between targets. This is mostly fine, but can be improved. While I mostly play with the mouse, I want the keyboard controls to be just as good.
The thing that ‘unstuck’ me was realizing I wasn’t limited to conventional roguelike graphical restrictions. The restriction being ‘1 tile, 1 character’. Why not just add another indicator over top of the existing character?
I came up with a simple ‘targeting’ overlay that constantly tracks the closest (or last hit) enemy. This targeting overlay can be cycled at any time by hitting ‘g’. Hitting ‘f’ will automatically shoot at the currently targeted enemy.
This kind of ‘passive tracking’ saves the player an extra keystroke, since most of the time you are shooting the only/closest enemy. The rest of the time you can use ‘g’ to cycle between targets just as before. The game will remember the last enemy you shot at and always keep them as the default target.