Resuming TSL development

I have had a break from TSL development for a while (I have been working on RUUKLOST and some other things). I recently got back from the IRDC 2012 with a lot of ideas, so I have taken up development again.

The focus right now is fixing some of the interface issues. TSL, being a very conservative roguelike, is built around the “verb-object” interaction model – that is, you first decide what to do, then which entity to interact with.

A classic example of overly complex roguelike interaction (besides the “wipe ears” command) is having separate keys for going “up” and “down” stairs.

(As a bit of an aside: this is surprisingly one of the few “anti-features” I have avoided in TSL – since up and down stairs can not coexist on the same tile, I decided early on to just have a common key for both and I recently I dropped directional stairs entirely. My levels lack the concept of “depth” and have a somewhat non-linear progression, so up and down are meaningless. Stairs simply take you between levels – that’s it.)

Many players find the menus in TSL confusing and wish to navigate them using the arrow keys. They also ask for an easier way to perform “default” actions as it is not always clear what an item is capable of. I admit this is a problem. “Emergent item interaction” is a central concept in roguelikes and I have a few items with intentionally vague usage – however, these should not be off-putting for the whole game.

I am currently working on a “do what I mean” concept. I have already done some things in this area. Last year I made Enter a general-purpose DWIM key. It will, in highest to lowest priority:

  • Pick up an item at the players feet
  • Climb stairs (if there are no items)
  • Wait a turn (if there are no items or stairs)

There are still separate “pick up”, “climb” and “wait” keys. There are situations where you might want to wait on top of stairs or climb them without picking up items first, but most often you do not.

I also wrote an inventory system that could sort items by type, filter out “uninteresting” items (for example, only potions show up for the “drink” prompt), switch between items and allow common actions without leaving the menu. This was slightly more convenient than the old “inspect” command that would display two items side by side, but

This approach still fails to address the “verb-object” problem, explain which items support which actions or make the menu navigation easier – in fact, it adds even more keys!

So, for a couple of days, I have been making another attempt to resolve this:

You browse with the arrow keys or jump to an item by pressing its letter. The list auto-scrolls at the 2nd item from the top or bottom (the small cross at the bottom indicates you have more items than would fit on screen – I might replace the character but I like the discrete look).

At the bottom is a quick reference what actions you will take by pressing different keys:

  • Enter performs default action (drink for potions, read for scrolls and book, equip for equipment, remove for already equipped equipment, and so on)
  • A way to drop items (not sure if I can use the alphabetic default for this, since it would clash with the point below)
  • Alphabetic characters navigate to specific items

This is clearly a departure from my earlier assumption that every player is an expert in hardcore roguelikes and/or enjoys learning 20 keybindings from a help file. I hope to find a balance between “displaying helpful tips” and “wasting screen space by displaying text that no one will bother to read after their second play session” (I’m not keen on adding an option toggle for “novice” and “minimal” modes). I think two lines at the bottom should be enough for this.

It might also seem like a waste of space to have separating lines all over, but it really helps to keep things structured. If I absolutely need all 24 lines to display text, I would be displaying too much information anyway.

Verb-object interaction will still exist in parallell, but I honestly think most players will prefer the new mode.

Obviously this is a work in progress and still has rough edges. Text doesn’t wrap properly yet. The angle brackets around item names indicate which ones are currently equipped, but this should be made more prominent (right now I’m thinking of appending “(worn)” or maybe indenting the line – we will see).

I might also use the “flip” key (tab) somehow to display long descriptions (most items should have short descriptions but there is bound to be a few that need more than 30 words). This would either shrink the list and enlarge the description box, or scroll the description box.

I will also be using this menu for the facet/augmentation inspection and pick up item screens. When picking up items, the player would typically hit the ‘,’ (or ‘g’) key and press enter-enter-enter-enter to transfer each item to the inventory (they would then disappear from the pickup screen). This will also let the player inspect items before picking them up, which I think will be a welcome addition.

I’m not sure how well this will mesh with the turn model. Currently a turn is consumed for each item picked up. If I allow multi-item pickup on a single turn this is no problem, but if I want to run other game logic between each item without the player leaving the menu, it’s going to require a really serious and ugly hack.


Leave a Reply ... IF YOU DARE

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: