Sunday, July 9, 2017

Rethinking item management in ADOM

Hi everyone!

The past couple of days I have been trying to play ADOM mouse-only. Leaving a well-known environment (playing ADOM by keyboard) sometimes opens up interesting new angles and perspectives on things. Since starting to play mouse-based I have felt uncomfortable with the way of how part of ADOM's item management works - specifically picking up and dropping things.

Currently ADOM sees picking up and dropping stuff as two distinct activities:
  • There are three separate commands to drop things (drop by 'd' to drop single items, comfortable drop by 'Ctrl-d' to mark sets of items and drop then and extended drop by ':d' to drop categories of items and similar stuff).
  • Picking up items works with a similar complexity (pick up items one by one with ',', pick them up serially with ';' and select the items to be picked up with 'Ctrl-p').
What if one would take a different stance and see picking up items and dropping them as an exhange between two parallel sets of items: the one in your backpack and the one on the ground? And what if future ADOM would offer but one interface to handle the interaction?

So here's my idea:
  • Future ADOM could offer a single interface with two item lists side by side: on the left the items in your backpack, on the right the list of items on the ground.
  • You can switch between both sides with cursor left, cursor right, '<' and '>' and maybe even '4' and '6' to cover all the usual movement options.
  • If you press ',' the right side is preselected, if you press 'd' the left side is preselected.
  • Selecting an item to the left (by pressing a letter or clicking with the mouse) will move it to the right (drop it) and vice versa (pick it up).
  • Both lists are separately pageable and all important data (like burden level, weight carried, weight still available) would be displayed in the header of the respective list.
  • Additionally messages would only be displayed if something interesting happens (no longer any "You drop foo" messages but instead only the "foo glows in a white light" and similar messages).
  • A popup plus keyboard shortcuts would offer access to dropping/pickup up everything or categories.
  • We could even go so far as to remove all keybindings except ',' and 'd' - and even those just for tradition - and at some later point they might be merged into one. 
  • And the backpack item list could offer a keybinding to switch to this new item management screen.
So what do you think?


  1. Yeah, I think that's a good idea.

    While you're looking at the inventory, it would be great if there were some more ordering (weight/age/damage etc) and filtering (show b/u/c) options.

    Also, it would be useful if the grouping of things in the inventory were tightened up. Maybe make b/u/c versions of the same thing sit next to each other for example. And have subgroups to object types so you could have all your herbs/corpses/rations sit next to each other, and your bullets/arrows/bolts sit next to each other.

  2. Sounds great! That would also open up interactions for containers, though ADOM does well without them.

    1. No containers, please. I have hated them in every game since like the 80s. Inventory micromanagement is boring.

    2. Containers won't happen. ADOM's current code just wouldn't work with them and I do not see too much fun in such a feature either.

  3. I think there are a few issues with this approach.

    1. What about picking up single items? If I'm standing over a single item and I want to do an inventory exchange, 99% of the time it's because I want to pick it up. Making this take more than 1 keypress is going to add up to a lot of extra work over the course of the game. [Open exchange > select item > exit] would be three keypresses.

    2. Is there actually enough space to display items side-by-side in ASCII? Many items already take more than half of the screen to display. You can maybe get around this by using multiple lines or abbreviations, but the exchange screen is going to end up really cluttered and ugly.

    3. The situations where you actually want to both drop and pick up are fairly limited. Altars would be the main one, but I'm not sure how that would work given that this operation would previously take two turns. Exchanging items to stay under a particular burden level would be another use case, I suppose. But most of the time you're doing one or the other, and the exchange approach means you are wasting half of the screen.

    4. All the functionality of :d will need to be replicated by any command that replaces it, since manually selecting all unpaid or unknown status items is very cumbersome. How could this be implemented on the exchange screen without increasing the number of keypresses required and further cluttering the menu?

    1. To respond to a few of my own questions ;-) :

      1. You would absolutely need to keep , and d as separate commands, and then make using , over a single item pick it up.

      4. The blog post itself seems to say there will be a popup with this type of functionality. If this is the case, I'm not a fan of it - this is not so much getting rid of :d as it is giving it a worse keybinding.

    2. 1. That's a good point. Perhaps if there's a single item you can just pick it up if it's there

      3. I usually store stuff in dwarftown after making a little item hole blocked by doors, so this function would definitly be welcome for something like that. Altars and burden level things is another good example. I've also seen myself wanting something like this when selling items at shops just to get rid of junk.

    3. 2/3. I wonder if it would be better to only display either the ground or the backpack items at one time. That way there wouldn't be any downgrade from the current pick up/drop UI, but you would still be able to freely switch between the two without using additional turns/commands.

      I didn't like the side-by-side approach shown in the tweeted prototypes (multiple lines per item), since it basically halves the number of items that can be shown on either side when the items are identified.

    4. 1 and 2 are the main concerns for me, just was about to post the same.

      ',' has to stay as a separate command unless one who removed it doesn't afraid of community revenge :D
      As for 2, it's great idea... But not for the 80-tile screen with the current item descriptions that cannot always for it well even in a single page. I strongly recommend keeping them as a separate pages thus just making drop and pick up extremely comfortable and merged into one menu making all the existing variable commands except shortcut ',' just redundant.

  4. This comment has been removed by the author.

  5. Some positives to this approach that I think can be applied to the current pick up and drop commands:

    1. Immediately choosing how many of an item you want to pick up or drop. With CTRL+p you might end up having to make a long string of choices after you finalize what stacks of items you are going to drop. With CTRL+d you don't even get a choice to pick up only part of a stack (very annoying in some cases). Being able to specify the number of items before either of these are finalized would be a big improvement.

    2. Cutting down on the number of pick up/drop commands is definitely needed. Six is a lot of commands to devote to this functionality, especially when an expert player has real reasons to use every single one of them in a normal game. Adding item-type filtering to CTRL+d and CTRL+p would make the standard drop and pick up commands redundant (could then move these commands to the simpler keybinds). Adding a select-all function to CTRL+p would let you get rid of the ; command. Merging all of the :d functionality with CTRL+d would still be a lot of work, but even cutting down the number of commands to three would be progress.

    RFE 4218 might be of interest if you go down the route of improving the existing commands rather than replacing them.

    1. Typo in the first section: I mixed up CTRL+p and CTRL+d

    2. See below regarding the state of RFE 4128 (hint: it is done for the next release :-) )

  6. Something I posted long ago. No exactly what is discussed here but has similar ideas behind it:

    1. You will be happy to hear that most of your suggestions have been implemented for the next release :-)

    2. I'm exited to see and try it!