Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1] 2

Author Topic: A Letter to Zach and Tarn. RE: Human-Computer Interface Design  (Read 1380 times)

flimflamm

  • Escaped Lunatic
    • View Profile

Dear ThreeToe and Toady One

The design of human computer interfaces is a relatively overlooked area of computer science (it approaches art-form, but there are still some useful lessons to be found). A basic introduction to HCI design reveals things like the problem of too many elements, eliminating superfluous actions, and the importance of user-feedback; and an advanced pass will involve things like the economy of accommodating new vs expert users, and in-depth design and testing methods meant to figure out the optimal design style to accomplish the specific "tasks" that the interface must support. In short, it's a hot mess of general do's and don'ts, along with some procedural wisdom. I recently completed a university course on HCI design, so I'm writing this to share some of the more obvious implications it has for DF. If I can help to frame some of the considerations you will need to make in a more useful light, I'll have been successful.

The first question HCI design asks is what are the external peripheral devices that the human will interface with (eg: mouse, keyboard, ?touchscreen?, monitor, speakers), and to what extent will they be used? By default DF is purely keyboard controlled, and the hotkey system is cumbersome for new users but very effective for experts (it takes time to learn it and to build muscle memory). It's not just the input devices that must be considered, it's precisely how they are going to be used. For example, in some applications you type commands in the form of words, and in others, like DF, you execute commands by hitting a hotkey or series of hotkeys (generally one is better for less complex tasks, and the other is better for tasks with many parameters; both are strictly keyboard but they use it completely differently). Seemingly simple things like whether or not a "right-click" sub-menu will be available can have sweeping implications on every other aspect of the interface design, and the trade-offs won't all be predictable without prototyping and testing different options. Will options on the interface be fully navigable with left-clicks? Will box-highlights be available, and how will they work? Will the mouse become a requirement? (i.e: are you going to develop mouse support on-top of full-keyboard control as a redundant user-comfort, or will you make using the mouse necessary for some tasks in order to unburden the keyboard interface?). These are all questions worthy of consideration. My intuition says that there might not be much to gain from eliminating any keyboard functionality altogether, but there might be some benefit to making the mouse a primary means of performing certain tasks. There's much to consider here, so you should probably make a list of things that the mouse could possibly support, and then choose from them the options that make sense from a programming angle and which also make the performing of the relevant tasks more comfortable for users.

The number of specific tasks that the interface must support is staggeringly large for DF, which is what makes a system of hotkeys and sub-hotkeys very efficient. Locating a specific task from a large initial menu will be time consuming, but likewise, trying to navigate a menu system that is too general at the top level (leading to a complex network of sub-menus) can be equally hard to navigate. Whether by mouse, keyboard, or touchscreen, a critical point of consideration will be balancing the number of top level options/specificity with the depth or height of the network of sub-menus. One theory coming out of the HCI field is that more than 7 elements is too many for the average mind to remember all at once. In other words, when you show people a list of more then seven choices, they begin to be overloaded by information to where they start to miss or forget details. This isn't a hard rule of interface design, and it would not be useful for something like Dwarf Fortress given its complexity, but it's definitely a trade-off to consider.

In my own experience, the surface menu of Fortress Mode does lean on the side of too many elements, but I don't know if that can be helped. There are probably some utilities that don't see frequent use which can be put into a sub-menu (view nobles/units/rooms and the unit-list could be placed under the [z]Status menu, for instance), but what to keep or add or remove in the end should be very carefully considered. The more you overwhelm the user with a grand list of options, the harder it is interact with it in general, but the more options you eliminate from surface-level access, the more you risk obscuring it from new users (at the main or top level of the menu, optimal design is more important because it is the most frequently used screen). How easily users can move in and out of different levels of the hotkey interface can also affect these considerations (for example, if using only left and right clicks we can go up and down different levels of the interface, more complex menus would be tolerable to newer users, assuming learning the hotkeys takes a great deal of time).

User-feedback is probably one of the most useful points of consideration from the HCI field. When users do an action, if the effect of that action is somehow immediately displayed, it can not only inform the user about the progress, success, failure, or result of the action, it also gives users a certain kind of stimulation and reward that contributes to interface-satisfaction. For example, when a building is scheduled for construction, it is physically represented on screen (to the extent that DF has graphics), and when it is selected it displays the status of the building with bold letter coloring which draws user attention. Auditory responses (such as the Windows "click" or the "beep" of a bar-code scanner) let the user know that the action was carried out, and whether or not it was successful, which can be very useful sources of user feedback while also being inherently pleasant for users. Color changes are also worth exploiting; when something is clicked, some kind of highlight lets the user know that they clicked the right thing, and having a range of color changes can convey information in efficient and compact ways (eg: red is hostile, green is peaceful in the unit list). Flashing colors are great for getting our attention at the periphery of our focus (at the edge of the screen), and interface elements which are at the center of our focus can be imbued with other abstract data (such as shape and size) that corresponds to the type of feedback being received. (high-contrast flashing media at the center of a screen is so attention grabbing that it's often unpleasant and unnecessary).

Making computer interaction easy and comfortable for humans is the entire aim of HCI design, and knowing the intention to make DF easier for new users, you've truly got your work cut out for you (it's reputation as the most brutally difficult game to master precedes it). But since we all already know what the DF interface needs to do (understanding the required tasks is the first step of CI design) and since we know who the intended users will be (a mix of new and expert), the next step is to create and evaluate different design concepts. They don't need to be programmed in any way, or complete; they can basically be a storyboard of sketches, with comments, that communicate the general and essential components and features of the interface. It occurs to me that the DF community represents a wealth of individuals who are on many levels vested in seeing DF become the best game it can be, many of whom would likely be willing to create and submit design prototypes for you to evaluate. If either of you put out an open request for the submission of interface design prototypes (sketches and descriptions; not programs), I'm positive that it would turn up some creative and useful solutions!

P.S: Would this thread be more appropriate for the "suggestion" thread? It's not exactly a suggestion, but it occurs to me that it might be close enough.
« Last Edit: April 02, 2019, 11:46:41 pm by flimflamm »
Logged

Ulfarr

  • Bay Watcher
  • Dabbling modder, Adequate Thread Derailer (vRusty)
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #1 on: April 03, 2019, 04:04:05 am »

That’s one hell of a convoluted way to say “UI needs improvement” and practically nothing else.

Shonai_Dweller

  • Bay Watcher
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #2 on: April 03, 2019, 04:07:30 am »

UI improvements and graphics support arc is up next after Villains. So they've already put aside the time to focus on this (as much as it can be done before future planned features are implemented). They even have experienced modders and others able to give advice while working on it.

Doesn't need a Suggestion, I think.
Logged

Manveru Taurënér

  • Bay Watcher
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #4 on: April 03, 2019, 05:41:14 am »

They did go into some detail on their thinking on the UI etc updating in this PCgamer article yesterday (edit: ninjaed), if that's of interest. Prototype UI suggestions have been made in the suggestions forums before so they probably have a bunch of stuff like that saved already, not to imply more input wouldn't be useful but an open request probably isn't necessary. If you want to make a more direct suggestion thread then go for it I say, can't possibly hurt if you feel you have valuable input to give, might be worth recommending a few good sources on the subject on the off chance they haven't read up on that stuff already.
Logged

Shonai_Dweller

  • Bay Watcher
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #5 on: April 03, 2019, 07:21:48 am »

That's a cool article. Especially on the challenges of tutorials during live fortress play...
Quote
...but how many ways can a dwarf lose a pick, right? If both their arms broke in an accident, like a tree fell on them because you'd just had a carpenter go out and chop down a tree, and then the tutorial is trying to tell you 'why don't you dig?'
...Then the tutorial repair code can be like 'You know, we're giving you a one-time limb repair, your dwarf happens to have no arms for whatever reason, we're not going to judge you, we'll give you those arms back, let's finish the tutorial together.'
Logged

flimflamm

  • Escaped Lunatic
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #6 on: April 03, 2019, 05:11:36 pm »

That’s one hell of a convoluted way to say “UI needs improvement” and practically nothing else.

Oh come now, I think I've said a bit more than nothing. I stopped short of presuming to know the best design choices to make, though I did state my opinion on some topics.

Designing a (good) interface is in-fact a lot of work, and not many people ever study the HCI field. Considerations like accommodating new vs expert users is a real conundrum that should be methodically analyzed. I could appeal to my intuition and say something like "DF MUST not in any way reduce usability for expert users, and any comforts added to benefit novice users should include hints and tool-tips meant to guide them toward more advanced control methods". but I might be downright incorrect. In-depth task analysis could show that the control methods currently used by expert users are in fact time-consuming, redundant, or error prone, and that more efficient control regimes exist which in the long run would be beneficial to both new and expert users. Whether or not the old conventions should be overhauled in favor of successful conventions used elsewhere (or creative and new conventions specifically suited for DF) is a pretty deep thing to consider IMHO.

Maybe we actually need an interface that will turn novice users into expert users as fast as possible, where sacrifices to current conventions are unavoidable and a necessary growing pain. I don't know the answers, so I'm not presuming to preach them. I just want to help frame the important points of consideration.
Logged

flimflamm

  • Escaped Lunatic
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #7 on: April 03, 2019, 05:13:31 pm »

UI improvements and graphics support arc is up next after Villains. So they've already put aside the time to focus on this (as much as it can be done before future planned features are implemented). They even have experienced modders and others able to give advice while working on it.

Doesn't need a Suggestion, I think.

I hear you, though in my experience serious prototyping is actually one of the hardest parts of HCI design (and it's where creativity and aesthetic talent is most useful). Perhaps I'll make a prototype of my own to submit, and encourage other people to do the same.
Logged

flimflamm

  • Escaped Lunatic
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #8 on: April 03, 2019, 05:15:15 pm »

Your prayers have been heard.

https://www.pcgamer.com/tutorials-and-mouse-support-could-make-dwarf-fortress-on-steam-vastly-easier-to-play//

Yea I just read that! I heard that the interface is getting actual graphics, and I heard that will include an interface overhaul (at long-long last!).

I'm really looking forward to seeing what they do with it!
Logged

flimflamm

  • Escaped Lunatic
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #9 on: April 03, 2019, 05:17:53 pm »

If you want to make a more direct suggestion thread then go for it I say, can't possibly hurt if you feel you have valuable input to give, might be worth recommending a few good sources on the subject on the off chance they haven't read up on that stuff already.

I own a digital copy of an HCI design text, though it's a bit dense (and covers so many absolute basics that not all of it might be useful), I'll probably send it off to Tarn and Zach in the case that they're interested.
Logged

Überzwerg

  • Bay Watcher
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #10 on: April 03, 2019, 08:55:08 pm »

When designing and programming a new user interface for a program with that many functions like this game it's important to get feedback early in the development process. You need to write some prototypes to get a feel if that what you want to achieve really works like intended. First you have to test yourself if that what looks good on the paper really works and feels good. Then, and that's very important, you also need feedback from other people.

Developers tend to get blind while working on such tasks. When your audience are only power user, then you don't necessary need other tester than yourself. But it is very hard to take the point of view of an inexperienced user. You then need to find tester with no experience and carefully watch what they do. And let them do what they want, don't guide them, don't tell them to do something this or another way. (EDIT: You give them of course an introduction and a task to do, but don't show them how to do it.) What's perfectly logical and easy from a developer point of view can be confusing like hell for the average user.

When working on such a large project it's good to do the tests early, before you have to rewrite to much. When you have some basic functionality it's the right time to start some tests with normal users. Toady may have some family members that fit there or he could pay strangers a few $. When using the same persons to often they advance to power users and aren't that valuable as testers anymore. And it's important to watch them live when they fail to use your genius UI, only that way you can learn what to improve (I'm speaking  from my own experience).
« Last Edit: April 03, 2019, 09:11:05 pm by Überzwerg »
Logged

Shonai_Dweller

  • Bay Watcher
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #11 on: April 03, 2019, 09:16:12 pm »

When designing and programming a new user interface for a program with that many functions like this game it's important to get feedback early in the development process. You need to write some prototypes to get a feel if that what you want to achieve really works like intended. First you have to test yourself if that what looks good on the paper really works and feels good. Then, and that's very important, you also need feedback from other people.

Developers tend to get blind while working on such tasks. When your audience are only power user, then you don't necessary need other tester than yourself. But it is very hard to take the point of view of an inexperienced user. You then need to find tester with no experience and carefully watch what they do. And let them do what they want, don't guide them, don't tell them to do something this or another way. (EDIT: You give them of course an introduction and a task to do.) What's perfectly logical and easy from a developer point of view can be confusing like hell for the average user.

When working on such a large project it's good to do the tests early, before you have to rewrite to much. When you have some basic functionality it's the right time to start some tests with normal users. Toady may have some family members that fit there or he could pay strangers a few $. When using the same persons to often they advance to power users and aren't that valuable as testers anymore. And it's important to watch them live when they fail to use your genius UI, only that way you can learn what to improve (I'm speaking  from my own experience).
And as Toady said, he has 10 years of thousands of (non-power user) people trying, failing and giving detailed feedback on what works and what doesn't and what should be done (the OP is hardly the first person to have written such feedback). Also his publisher is no doubt available if he needs more advice on how to move forward. Not to mention whatever friends he's made over the past decade in the indie gaming world.

He might have problems if he were still sitting in a room by himself trying to come up with a new UI with no players except Zach, but things have changed a lot since Bay12 started.

(Not to say he wouldn't appreciate a good book on the subject, or more feedback, he probably would, but he's not really in need of paying a couple of family members and friends to play his game at this point).
« Last Edit: April 03, 2019, 09:18:09 pm by Shonai_Dweller »
Logged

Überzwerg

  • Bay Watcher
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #12 on: April 03, 2019, 09:48:54 pm »

I only wanted to share my experience and how important it is to watch testers fiddling around with your GUI. To find a good GUI is an iterative process, with some (or a lot) try and error. (I'm developing and improving GUIs since 25 years, and there are still moments when I see others using one of my programs that I find large room to improve the user experience.)
And you learn the most when you watch others while you stand behind them. Watching remote isn't the same, and reports are as good as nothing worth.
Logged

Ulfarr

  • Bay Watcher
  • Dabbling modder, Adequate Thread Derailer (vRusty)
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #13 on: April 04, 2019, 03:31:34 am »


Oh come now, I think I've said a bit more than nothing. I stopped short of presuming to know the best design choices to make, though I did state my opinion on some topics.

Designing a (good) interface is in-fact a lot of work, ..........

While I do appreciate the effort you put in these posts, they are too vague and generic. You talked a lot about testing this and that without ever mentioning what to test for or how to do the testing. You 've thrown some examples (visual/sound confirmation etc) but you never said how they could be applied to DF or how you think they will benefit the game. To keep this short, your post reads a lot like an introductory lecture on HCI trying to cover what the course is about.

Perhaps I'll make a prototype of my own to submit, and encourage other people to do the same.

Now this is what I think you should have gone for in the first place. At the very least it could serve as a starting point upon which others could expand upon.

Miuramir

  • Bay Watcher
    • View Profile
Re: A Letter to Zach and Tarn. RE: Human-Computer Interface Design
« Reply #14 on: April 05, 2019, 04:50:55 pm »

(Side note: I'd think this thread falls under "suggestions".)

My limited experience is that a lot of HCI academic work seems to be focused on optimizing an interface for a (set of) task(s), and not nearly enough on defining portable, interface-neutral meta behaviors that than can then be adapted for a variety of interfaces: archaic, current, special-needs, and future. 

IMO DF would best be served by work on what combination of underlying behaviors a player needs to exert on the system in what fashion, and then later figuring out how to map those behaviors to physical devices of various sorts. 

The rise of touch-based devices, for instance, has significantly altered the way users interact with on-screen items; I regularly see younger users going to tap something on a screen and having to be reminded that this particular laptop isn't a touch-screen one.  While VR is still in its toddler years, it is only just starting to figure out how to optimize complex interaction.  By the time DF releases, VR may be a significant or even dominant interface class... or may have gone the way of the Power Glove; this sort of uncertainty is why readily remappable abstract core behaviors are important for projects with the complexity and particularly long life cycle of something like DF. 
Logged
Pages: [1] 2