I’m developing a multiplayer strategy wargame based on a hexagonal grid, and trying to make the user interface as intuitive and simple as possible.
The basic interaction is “select unit then select action by clicking on a target”. For example, when you click on a unit all the potential actions for the unit are highlighted. This is context-sensitive, so move destinations are highlighted in blue, and enemy units within firing range are highlighted in red. This all works pretty nicely.
The interface design feature I’m now struggling with is how to “build” new units. The requirements are:
- Certain units (“Builders”) have the ability to
build new units. - Builders can in general create any one
from a list of possible different
new units. This list could be quite large (typically 5-40) - Builders can create units in any adjacent hex, but only if the hex can accommodate the type of unit being built (i.e. you can’t build ships on land or tanks in the sea!)
What interface design would be most appealing/fun/intuitive for this?
Typically in strategy games you choose what to build before you’re given the option to place it. Therefore for the sake of consistency it’s probably best to do things in that order.
However, since possible placements influence what can be built legally, I think it would make more sense to list only what can be built when the unit to be built is chosen. I’m thinking back to Red Alert 2, which had naval units: in a map without water, naval units were simply absent from the list of things you could create.
Once a unit to build is chosen, highlight the areas in which it can be built in green (or some other colour). Then the user need only select one of those and not worry about the inability to place the unit somewhere he can’t.
As for the build menu itself, typically games break units into different types. For one, placement location might be a high-level group (land/water) followed by other attributes (infantry/vehicle/etc). You don’t want that menu to be too deep, though. Two levels is probably enough.