Every now and then I poke at the AIW context menu to re-implement some of the old functions from the pre-Unity days. But one thing really sticks out at me: it really doesn't feel easy to use. And this tends to dampen my enthusiasm for stuffing functionality in there. Surely there are solutions, but I'm more of an engineer than a UI designer. Anyway, a few thoughts:
1) Alt+right-click just doesn't feel right to open it (requires both input devices and both hands) and while it's also possible to open it with one key if you bind it to KeyBind.OpenDefaultContextMenu that's not bound by default. Having to go into the input bindings window just to make stuff usable tends to limit the number of people who even try. I'd really like to have a nice, prominent one-key default binding for opening the thing. Like Spacebar, Tab, Enter, or maybe Tilde/Backqoute. Naturally the problem is that AIW has a hilarious density of default bindings already:
- Spacebar: Used for KeyBind.ReverseEngineDamageFilter (InGame) and KeyBind.CenterOnSelection (PlanetView). The first of those I could probably displace or unbind altogether, but CenterOnSelection is kind of important. I wonder how much pain would arise if I displaced that to, say, LeftBracket? Or made it so that (on default bindings) tapping space once would open the context menu, and pressing space while on the context menu would close it and center on the selection?
- Tab: heh. KeyBind.SwitchBetweenPlanetAndGalaxyView isn't important, right?
- Enter: Used for opening the chat window. It's not even a rebindable key, that's just what KeyCode.Return
does in this game. Interestingly there's also a KeyBind.OpenChatPopup but changing that to something other than Return won't stop the code that checks it literally.
(Edit: sorry, I was incorrect, the hardcoded part is to make Return send a chat from the chat popup once it's already open, it's actually quite possible to rebind opening the chat popup away from Return)
- Tilde/Backquote: would only displace KeyBind.GoToMostRecentFlare (InGame) but I seem to recall that some keyboards don't even have one of these, and that it caused problems sometime in the past when we were trying to use it for something more important. But since it's rebindable that's not insurmountable. Anyone object to making Backquote the default for KeyBind.OpenDefaultContextMenu and bumping KeyBind.GoToMostRecentFlare to LeftBracket or some other currently unbound key? Anyone think it wouldn't really help the usability even if we did that?
2) Ok, the thing's open now, how usable is it? How would you
like to use it? (in the words of marketing, "do people want fire that can be fitted nasally?")
- Originally I intended it for mouse-only usage and it does function that way. Probably a radial would be more usable for mouse interaction, more on that (why I don't want to do that, specifically) later.
- Later I became increasingly interested in binding each menu-button to a key (or two keys, for buttons with both a left-click and right-click event) because the keyboard doesn't depend on moving the mouse some specific distance, etc. In my head I pictured someone with one hand over the numberpad just flying through the options because everything was on 0-9, etc.
-- But that hasn't really worked out that way. If you're enterprising enough to actually bind all the button-specific keybinds you can do that, and use it that way, but I wonder if anyone ever really has. I could have given them default bindings (within the context of a specific context menu the whole keyboard is basically fair game, it just overrides anything from any other context like InGame or WithSelection or PlanetView) but it was difficult to keep things consistent.
-- So I'm wondering if maybe taking a sort of "grid keys" approach would work better? Basically the first function responds to 1 (Alpha1 or Keypad1 or both, dunno), the second to 2, and so on. On the alpha row we could go clear over to Equals (on my own provincial backwoods keyboard layout, anyway), and have Backspace back up to the previous menu. That would even fit with making backquote the key to open the context menu to begin with. Alternatively it could do Q for the first function, W for the second, and so on (possibly QWERASDF or going out to T or even Y, dunno; my apologies to Dvorak). Anyway, this would make all the menus automatically keyboard navigable, though I'd probably still need to provide a way to manually rebind the individual functions. Any preferences? Sound like total hogwash?
- There's also the issue of whether it stays open when you do a certain task in it. Generally now it will close after you click something if that something actually made a change to the game or issued an order, and won't close if it's just configuring an order to be issued later. And if you hold shift it mostly won't close even when issuing an order. But I wonder if it needs some kind of explanatory note or on-menu toggle for "don't leave me".
3) Ok, it's open, the buttons are easily triggerable in some way. How does it tell you what they
do?
- Right now you can hold / and mouseover a button to get an explanatory tooltip (though in recent testing it doesn't always work, hmm), but unless you read through the bindings or some version 3 change notes you'd have no idea it did that.
-- In my working copy I've got it displaying a little note at the bottom of the context menu saying to press Slash (or whatever you've bound to it) and mouseover to get the info.
-- Should it just always display those tooltips on mouseover unless you flip some new specific toggle on the settings window?
- Even with the individual tooltips, it's not necessarily going to be clear how to use a given menu.
-- In my working copy I've got a label above the buttons that the individual menu can populate with whatever, like currently (been working on resuscitating arc move but didn't want to leave it the way it was) :
"Arc Move Step 1
Right click where you want the center of the circle to be.
(The advanced buttons below are entirely optional)"
and after you right click
"Arc Move Step 2
Right click where you want the center of the arc to be. This determines how big the circle is. If the arc is less than 360 degrees it also determines the part of the circle to use."
-- On the other hand, if there's text on the screen, do players actually read it? My previous experience with UI design tends to say no
Which mostly makes sense: if they wanted to read a book, they would be reading a book.
4) Radial menus... I caught a lot of guff from some folks about how these absolutely needed to be radial back when the context menu was first added. But I stand by not going that direction:
- They're indisputably a lot more work in terms of needing an icon (and an icon that actually explains the meaning of the button in some way), and even more work if actually a radial menu instead of 8 boxes arranged around the cursor.
- I could live with the "more work" part (and just make programmer art icons so painful that one of you supplied a replacement out of self-defense) if I were convinced that they were actually more usable. I'm not, for AIW's case:
-- Unless the task is something easily communicated by a picture (which simply is not going to be all of what we put here) and the picture is really good at its job you're still going to need more info to even identify the task conclusively; a mouseover can do that but it's extra work simply to _read_ the menu, let alone use it.
-- Speaking of reading, do you really prefer to read in a circle rather than left-to-right top-to-bottom?
- Puts a pretty hard limit on the number of items in a given menu. I imagine 8 is about the max. On the other hand, maybe if I need more than 8 for a specific menu I'm doing it wrong (though there is the give-resources menu, and 8 players plus other functions).
And what logically goes at the beginning, but probably better at the end:
0) Does anyone care? Would you rather have more-devious Hybrids and/or an FS campaign that doesn't make you do the same thing 8 times in a row? (speaking in terms of things I might actually do on hobby time, everything else is AVWW right now really) Does any of the stuff in the context menu or that might possibly go on the context menu
need to be all that accessible? The game certainly got on just fine without one until 3.12X or whenever I added it to begin with. Just a ton of little functions (some useful, some hilariously arcane) that we don't have room to give default keys that can fit there, etc. Some
existing little functions (galaxy map filters) that we could move there, when it comes down to it.