4 ms·
I've been working on a roguelike on and off for (checks watch) about twenty years now. When I started I was an avid Angband player. I had just gotten my first
by munificent 7y ago
I've been working on a roguelike on and off for (checks watch) about twenty years now.
When I started I was an avid Angband player. I had just gotten my first laptop computer and was frustrated by how difficult it was to play using the limited keyboard without a full numeric keypad. The main problem is that the default Angband keyset uses up almost all of the letters for all of the different verbs: quaff, read, cast, pray, wave, aim, throw, etc. (There is an alternate keyset based on Vi, but I could never internalize the "arrow keys".)
It was especially frustrating because, like Amit notes here, most verbs only apply to a few items. You can't read a potion or quaff a scroll, so allocating two separate keys to those actions is redundant. So in a fit of pique, I decided I would make my own roguelike with a single "use" command that could use all kinds of items.
I did learn something interesting about usability in the process. One nice feature of Angband's keyset is that it's harder to accidentally use the wrong item. If you intend to quaff a potion but accidentally pick an inventory slot containing a scroll, nothing happens. The specific verb commands act like a sort of redundancy check for the operation. But, overall, I think having a single use command is better.
This is orthogonal to whether the verb or noun comes first. I've just reduces the number of verbs by collapsing many of them into a single multi-purpose "use". I've gone through several iterations of the UI for the game and I'm still on the fence as to whether it makes more sense to select the item or the operation first. It's a little tricky in a roguelike because you usually need to select the item from something: either your inventory, equipment, or on the ground.
So if you want to drink a potion from your backpack, it could be any of:
- Use -> inventory -> potion
- Inventory -> use -> potion
- Inventory -> potion -> use
The first option is good most of the time because the player does know what action they want to perform. But the other two are good because they give the UI a chance to show the player the inventory before they make a selection. The first option feels like a stab in the dark where if you don't know what's in your inventory, you don't know if you have anything to use in the first place.
Of course, if the UI always passively shows the inventory, that problem goes away. So the visual design affects the order that operations might make the most sense. It's a hard problem.
- schoen 7y ago> You can't read a potion or quaff a scroll, so allocating two separate keys to those actions is redundant. I'm a longtime NetHack player who switched to Crawl, and I've been thinking a lot about the differences between the two games. One neat NetHack feature is that objects often do have unexpected uses (as well as uses in combination with one another), and at least in a few cases you can make these uses by applying an unusual action to an object. The first example that comes to mind is that when polymorphed into a different monster, you may be able to eat things that your human form couldn't, sometimes with especially desirable (or undesirable) effects. NetHack players probably appreciate on the whole that the game doesn't actively suggest this possibility to them and that they have to think of it or try it to see what will happen. Another example is that there are a couple of things that can be used as weapons to good effect that are not obviously weapons, so the ability to wield arbitrary objects is important there. On the other hand, NetHack uses these possibilities as a source of humor and challenge to the player (partly to create a slightly more open-world feeling, typified by the saying that "the dev team thinks of everything", and partly to increase the amount of knowledge that a player can master and bring to bear on the game). Crawl has a very different philosophy and the actions available to the player are, compared to NetHack, more straightforward and obvious in their implications.
- ludamad 7y agoI think it is a matter of critical mass. Crawl had so few instances of "you need to be spoiled or try random stuff to get this" that pressure got them removed (although always controversial). Nethack lives and breathes it, and it has so many that you are likely to feel the benefits of this whimsy
- schoen 7y agoI really like that explanation!
- munificent 7y agoYes, I love the idea of being able to apply multiple verbs to the same item. In my game, you can use, drop, and throw things. The problem with Angband is that the verbs are mostly disjoint. The only thing you can quaff is a potion, the only thing you can read is a scroll. Part of my motivation for collapsing all of those "use" verbs to a single use command is because it frees up opportunities to add new operations that can be applied to a range of item types. It frees up keyboard space.
- thaumasiotes 7y ago> The main problem is that the default Angband keyset uses up almost all of the letters for all of the different verbs: quaff, read, cast, pray, wave, aim, throw, etc. (There is an alternate keyset based on Vi, but I could never internalize the "arrow keys".) I don't understand how most of the keys being occupied can be the "main problem", if you're not able to use those keys directionally anyway.
- munificent 7y agoWithout a separate numeric keypad, you need to find some keys to map to the eight cardinal directions. Diagonal movement is key to the game, so you can't just use the actual arrow keys. So, ideally, I wanted a 3x3 rough square of keys on the main keyboard area that I could allocate for movement. In Angband, most of the letters and punctuation on the main keyboard area are already allocated. You can rebind them, but since the different items need different commands, I don't think that there was any way to collapse multiple verbs onto the same key.
- thaumasiotes 7y agoNo, but the existence of the roguelike keyset demonstrates that there is space on the keyboard for every command. Why do you need to collapse multiple verbs onto the same key?
- DonaldPShimoda 7y ago> This is orthogonal to whether the verb or noun comes first. I've just reduces the number of verbs by collapsing many of them into a single multi-purpose "use". Right! When reading the article I had a bit of a feeling of hesitancy: the ubiquity and general-purpose-ness of functions in FP is the whole point! Creating a single "use" is like using polymorphism to write a generic function, in a sense. You might imagine `use :: a -> Action` or something. As opposed to the article's take, which calls for `readScroll :: Scroll -> Action` and `openDoor :: Door -> Action`, etc.