Hey all. I'm in the early design phase of what may become a new game, planning basic features, UI, etc. I might like to implement hexagonal movement, but am at a loss as to how to do so, assuming not everyone has a numpad. Now I'm hoping to spawn some debate about the topic, to the benefit of myself and maybe others.
Some possible solutions include:
1) Mouse controlled: Sure enough, but the game should also be playable with the keyboard only, as God intended.
2) vi-keys: As if! Allowing the player to rebind the keys is a Good Thing, so vi-freaks and other weirdos can get their fix, but this is hardly a good default.
3) "weadzx", "uihknm" or some other vaguely hexagonal-shaped cluster of keys: I do find it's a bit of a shame to leave the arrow keys out of it. For one thing, it means a new player has to spend time consulting the manual/help before being able to play at all. Also, keyboards of different nationalities have different layouts. For instance, "weadzx" wouldn't work on a German keyboard.
4) Shift+arrow rotates 45°: Shift+up for northeast, shift+down for southwest, etc. Some games have this, and sooth to say, it does the job. On a hexagonal map, it's obvious from the outset that you're supposed to be able to move diagonally (as opposed to an 8-directional map, where some will just gleefully keep to the four cardinal directions). The problem remains that it's hardly obvious.
5) "Chords": Ie. simultaneously pressing up and right to move northeast, etc. Works well in games with continuous maps. In your typical RL, a problem would be how to handle keyboard input. If the program accepts commands the moment a key is pressed, it might become fiddly: If you want to move southwest, and press the down key a fraction of a second after the left key, you'd end up moving west once before turning southwest. Conversely, if commands are processed when a key is released, you'd have to repress the directional button(s) for every turn you wanted to move, which might become tedious.
6) Explicit facing and separate command to move/bump: Combined with 4) or 5), but pressing a direction would simply rotate your guy. There would be a separate key to advance (or bump, as it were). In winding corridors and the like, you'd probably want to automatically change directions when appropriate, as seen in Jeff Lait's 7DRLs and other games. As a small boon, this would make flow-breaking "zap in which direction"-prompts unnecessary, and might solve some issues I have with bumping in general, if well-designed. But I can foresee a lot of people having a problem with this solution. as it does increase the number of keystrokes significantly.
That's be about as far as I've come in considering this. I'd be happy to read what you guys might think. On a side note, I read Darren's "designing for non-RL-ers" with interest, and I think that text's defense of hexagonal movement is heroic. But in the context of making a truly "accessible" game in the terms outlined, I still ask myself whether four-directional movement isn't really the only plausible way to go.
As always,
Minotauros