Cataclysm-dda: sidebar needs an overhaul

Created on 29 Dec 2018  Â·  21Comments  Â·  Source: CleverRaven/Cataclysm-DDA

Issue:
Sidebar take too much space.
The overall feeling is messy it needs more order.
The sidebar code also need cleaning.

Proposal
The idea is to get independent panels, that can get toggled on and off by the user.
those panels could be stacked to simulate the old sidebar.
and in the end the user could choose which panels he want to display.
for example the user could do:

  • 0 panel on screen (just opening them on a need basis then immediately close them)
  • 1 panel only (keeping most of the time only one panel open)
  • 2, 3, 4.. panels on screen.
  • simulate the old sidebar by stacking a few panels of his choice and keep them most of the time.
  • those panels could of course be toggled on and off at will while playing.
  • choose the spacing between panels

Panels "a la carte" ..
Please consider the following mockups.
( the term dimension is 120x37, font is 20x20 that makes a resolution of 1440x900 )
preview2
preview11
preview8

the following mockups represent a minimal dimension (80x25) terminal.
( my font size is 20x20 so that make resolution of 1600x500 )
most users will not use such minimal setting of 80x25 terminal dimension.
it is shown to preview what this idea would look like for those playing on lower dimensions terms.
it allow to maximize game area, by showing only
what we need when we need and not 'everything' all the time.
preview3
preview9
preview10

Coding
Iam already trying to do it. This is a follow up from my pull request on cleaning the existing sidebar. While doing it, i came up with the idea and did the mockup. The problem is i'm not a very skilled cpp dev just yet. So it will take me time. If someone want to help or takeover the idea then great, do it.
Otherwise i'll continue to do it myself slowly at my pace. I just wanted to put the idea out and eventually get a bit of help and feedback.
For the beginning i'm planning on making 5 or 6 panel available.
The user will choose when and what to display, as shown in the mockup.
The good new is that most code already exists for all this.

planned panels:

  • character
  • environment
  • messages
  • compass
  • minimap
  • look_around / mouse_view

Since everything will be segmented, each panel could have its own function.
It mean everything will get cleaner. And we can also load them all from a central point,
if conditions are met (if user toggle them on).

load_panels() 
{
    if (toggle_compass)
        draw_compass(); 
    if (toggle_minimap)
        draw_minimap(); 
    if (toggle_messages)
        draw_messages();
    if (toggle_environment)
        draw_environment();
    if (toggle_character)
        draw_character();
}
<Enhancement / Feature> Info / User Interface

Most helpful comment

@kevingranade If a veteran player can't figure out what the sidebar widgets do, that's their fault. There's veteran players who can't survive a week too, but I don't think the bottom of the bucket should be dictating global features. It's cluttered, sure, but that's a layout problem.

@nsklaus Nearly Everything on the current sidebar is important in nearly all situations. That's not an exaggeration. You can't properly choose what is and isn't a priority when situations change in a constant, unexpected, and sometimes hidden way.



Lets do a rundown!

Overmap Minimap: Gives a vague picture of the immediate surroundings so you don't have to constantly press M trying to find something.

Health: Self explanatory, even out of combat enough can affect this to have it always visible.

Power: See Health.

Pain: There are things that can hurt you outside of combat, it's important to know when that happens. It's even more important in combat.

Hunger: Affects performance both in and out of combat. Fluctuates often enough that it needs to be readily visible when it changes.

Mood: Possibly not actually very important.

Stats: Red stats gives a reasonable indication that you're afflicted with a negative status effect. Again, this isn't only useful in combat, plenty of environmental hazards can affect this as well so it needs to be constantly monitored.

Focus: How to know if what you're doing is actually affecting your skill growth without constantly having to flip through menus. Not super important, but it's nice to have.

Speed: Important in combat (and out for readiness purposes). No one wants to guess how fast their character is actually moving. Knowing if you're running or walking is important for not accidentally draining your...

Stamina: No one wants to accidentally run out of stamina at the wrong time, if you shove it in the players face, it's their fault if they do it.

Warmth: No one wants to accidentally freeze to death because they didn't have the right menu open.

Weather: See above

Overmap Name: Admittedly redundant with the overmap minimap.

Time: Maybe not too important, but checking a separate menu for timekeeping would be unnecessarily annoying.

Lighting: Can things see me right now? Can I see right now?

Sound: Is what I'm doing (even just walking) going to attract unwanted attention?

Weapon: No one wants to accidentally break their weapon because they didn't check their inventory after every kill. Or wonder why their...

Martial Art: Isn't working for various reasons. Or if they actually have the right martial art currently equipped. Or if it's only partially working.

Monster Compass: Because no one wants to spend their time scrolling around trying to find a deer to hunt, or figure out what dangerous zombie types are nearby. Acts as an early warning radar for hostiles when in relative safety.

Pixel Minimap: Not critically important, but shows exactly where those things you spotted with the compass are without having to scroll around. You can already disable this.

Message Box: Probably the most important thing. Explains exactly what you're doing at the given moment, and what things are changing. Suddenly slow? You can see that you're traveling over rough terrain. Zombie won't die? You can see that your attacks aren't doing enough damage. That thing you crafted isn't in your inventory now? Oh wait, you failed and all your scrap metal vanished from existence.


The panels are pretty, but they seem like a lot of wasted space for little benefit. You seem to be already doing it, but a simple reformatting of the current sidebar seems like it would fair better.

If you want it really small maybe allow tiles support for some of the UI elements: a single icon for weather, a single icon for lighting, pie charts to replace all the vertical bars, paper doll HP display, etc.

All 21 comments

Looks interesting.

Do you have a mockup for how this would look in a terminal with minimum dimensions (80x25)?

I like the way it looks, but I'm a bit concerned that it seems to be displaying less information than the existing sidebar. E.g. there is no minimap or monster compass, and the message area is much smaller.

When you say floating, do you mean just a visual effect, or that the panels would be movable? I could see some interesting options like only placing panels in the corners, or drawing a message panel across the top or bottom of the screen. However that could complicate the code a great deal compared to panels that draw in a fixed location.

Please allow this to be an option if it gets introduced, I much prefer the preexisting sidebar. Also, changing the terminal size in the options to be larger would shrink the sidebar.

@CoroNaut
No, it will be forced onto you and your name will be pinned on it.
Joke aside, it will be possible to lay out the panels to mimic the actual sidebar, that's the beauty of it.
as for the wider screenshots, it's because i've choosen a font size of 20x20. if you choose a different font, different size, say for example: 8x16 it would make a resolution of 640x400 instead of 1600x500.
nothing strange here it's just a font setting that is altering the size of terminal. noone will be forced to use strange terminal with weird dimensions. it's all about giving the choice to the user to display what he want when he want.

I like the way it looks, but I'm a bit concerned that it seems to be displaying less information than the existing sidebar. E.g. there is no minimap or monster compass, and the message area is much smaller.

When you say floating, do you mean just a visual effect, or that the panels would be movable? I could see some interesting options like only placing panels in the corners, or drawing a message panel across the top or bottom of the screen. However that could complicate the code a great deal compared to panels that draw in a fixed location.

@kevingranade
i updated the issue itself to reply to the points you've asked. but basicaly yes: it's just the visual effect of floating. it will be fixed, non-moveable. the only difference is they will be independent and toggle-able.

"These panels can be stacked to simulate the old sidebar".

How? The existing sidebar is "cluttered" by virtue of displaying a huge amount of information in a very small space. Your mockup is considerably less space efficient, which it gets around by selectively displaying less information at a given moment. I'm not sure how your system could emulate the old style without either displaying less information or taking up more screenspace.

As it stands, I considerably prefer the existing setup to the mockups you've shown, as it displays a great deal more information in a smaller space, and requires no management. I think your system would definitely be more approachable to new players though. Some players have played for years without fully understanding what some of the features on the existing sidebar represent.

Whether we move completely to a new layout or keep the old one around depends on how space efficient we can make the new layout and how much duplicated code will be required to keep both versions.

Some players have played for years without fully understanding what some of the features on the existing sidebar represent.

This is a very strong argument against keeping the existing sidebar, if it's so dense you can't understand it, it's too dense.

just to end 2018 on a good note, i've been able to do some progress.
here i'm getting bitten just for your viewing pleasure. happy new year everyone.
screenshot_20181231_221157

"These panels can be stacked to simulate the old sidebar".

How?

@Solusphere
easy --> you choose what to display. see practical example is the 3rd screenshot from the top.
4 panel stacked together.

  • you always keep displaying 4 panels all the time. (that's the number of panels, it stays the same)
  • but not the same panels :) (that's the content .. You can change it all the time ! )

it is foolish to want to display 'everything' all the time.
the more the game progresses the more information there is. it is not possible to display everything. you must choose. depending the moment, the context, the priority of the things your player needs the most at the specific point in time.

i'm going to try to explain it differently. with text, not screenshots, so:
when you fight you need to see your vitals, hitpoints, speed, etc..
But, when you're not fighting, having the character vitals data taking up a big chunk of space in the sidebar area ... well, it is not always as much useful as it is in combat.

so, when you are exploring it may be better to display minimap , environment data, compass..
there is less need to check vitals at that moment.. you can still check them time to time though.

Happy New Year to everyone.

I don't know if it's possible code-wise, but as
I was trying to visualize something that would mix the tab view with the
obvious space constraints that it has to introduce, despite great clear view
it offers, an idea came to my mind that perhaps those new 'windows' can be
displayed in two sets - one character centered, second - map centered, with a
keybinding to switch the view between them. Or perhaps in other configuration
like three sets with one focusing on extended log, etc. Switching can be then set
in options as permanent, ie. set stays on screen and the key press only swaps the sets, or as temporary, ie.it stays on screen as long as a certain key is pressed.

Something to thinking about it in the
creation process. But to my belief it's good to give this idea a chance, as
it seems to provide some additional value in form of more accessibility to
clear information. Good luck.

pon., 31 gru 2018, 23:22: nsklaus notifications@github.com napisał(a):

"These panels can be stacked to simulate the old sidebar".

How?

easy --> you choose what to display. see practical example is the 3rd
screenshot from the top.
4 panel stacked together.

  • you always keep displaying 4 panels all the time. (that's the number
    of panels, it stays the same)
  • but not the same panels :) (that's the content .. You can change it
    all the time ! )

it is foolish to want to display 'everything' all the time.
the more the game progresses the more information there is. it is not
possible to display everything. you must choose. depending the moment, the
context, the priority of the things your player needs the most at the
specific point in time.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/CleverRaven/Cataclysm-DDA/issues/27367#issuecomment-450695308,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AmE1dzmU0ooc93cIvJ4DjBY8vQK3hOkwks5u-o4egaJpZM4ZkvV2
.

Happy new year!

I absolutely agree that the sidebar could use an overhaul to make it easier to learn what the various components do. That's why I brought it up. I appreciate @nsklaus taking the time and effort to design something new, I just have concerns with it's current methodology.

@nsklaus, the specific example you've provided is a questionable one. While in combat, seeing your stats can definitely be helpful, as it's the primary way you're alerted to the very frequent stat penalties of pain, poison etc. It would also be very helpful to display the minimap, as it contributes greatly to your situational awareness. If we do go with a configurable "combat hud" and "exploration hud" that you can swap between, both of those would likely end up being wanted in the combat hud by players. I also notice that none of your mockups feature the movecost indicator (though that might simply be because they're mockups).

I feel like you underestimate how often certain elements of the old sidebar are actually needed. You don't need to see everything at once, no. But most of the current info is there for a reason, and it's much worse to have needed information that isn't displayed than to have unneeded information that is displayed. I'd get some more in-depth feedback from the playerbase at large before selecting what information needs to go in which pane.

I like the new display style, however I do share the same concern as soulsphere as to having to toggle through many, many, many tabs to see what I want. While health information may not be as immediately concerning while not in combat, adding more key presses to find that info is not something I'd enjoy much.

Even in best scenario where the menus are automatic and context driven, (eg. automatically bringing up combat relevant sections during combat, and hiding them after) that still has me pressing a hot key every single time I want to check any of the info in the combat menu while out of combat. While this barrier to information is no problem with something akin to that stat screen, the limb health particularly is checked by myself frequently enough that hiding it in a context menu would be very painful. Sound also falls under this umbrella in my play.

However, if by this system you could just stack all the windows and ensure that "everything is displayed all the time" I'd be very for it. More UI customization would be great and further potential of such modular ways of display information seems pretty sweet to me.

@kevingranade If a veteran player can't figure out what the sidebar widgets do, that's their fault. There's veteran players who can't survive a week too, but I don't think the bottom of the bucket should be dictating global features. It's cluttered, sure, but that's a layout problem.

@nsklaus Nearly Everything on the current sidebar is important in nearly all situations. That's not an exaggeration. You can't properly choose what is and isn't a priority when situations change in a constant, unexpected, and sometimes hidden way.



Lets do a rundown!

Overmap Minimap: Gives a vague picture of the immediate surroundings so you don't have to constantly press M trying to find something.

Health: Self explanatory, even out of combat enough can affect this to have it always visible.

Power: See Health.

Pain: There are things that can hurt you outside of combat, it's important to know when that happens. It's even more important in combat.

Hunger: Affects performance both in and out of combat. Fluctuates often enough that it needs to be readily visible when it changes.

Mood: Possibly not actually very important.

Stats: Red stats gives a reasonable indication that you're afflicted with a negative status effect. Again, this isn't only useful in combat, plenty of environmental hazards can affect this as well so it needs to be constantly monitored.

Focus: How to know if what you're doing is actually affecting your skill growth without constantly having to flip through menus. Not super important, but it's nice to have.

Speed: Important in combat (and out for readiness purposes). No one wants to guess how fast their character is actually moving. Knowing if you're running or walking is important for not accidentally draining your...

Stamina: No one wants to accidentally run out of stamina at the wrong time, if you shove it in the players face, it's their fault if they do it.

Warmth: No one wants to accidentally freeze to death because they didn't have the right menu open.

Weather: See above

Overmap Name: Admittedly redundant with the overmap minimap.

Time: Maybe not too important, but checking a separate menu for timekeeping would be unnecessarily annoying.

Lighting: Can things see me right now? Can I see right now?

Sound: Is what I'm doing (even just walking) going to attract unwanted attention?

Weapon: No one wants to accidentally break their weapon because they didn't check their inventory after every kill. Or wonder why their...

Martial Art: Isn't working for various reasons. Or if they actually have the right martial art currently equipped. Or if it's only partially working.

Monster Compass: Because no one wants to spend their time scrolling around trying to find a deer to hunt, or figure out what dangerous zombie types are nearby. Acts as an early warning radar for hostiles when in relative safety.

Pixel Minimap: Not critically important, but shows exactly where those things you spotted with the compass are without having to scroll around. You can already disable this.

Message Box: Probably the most important thing. Explains exactly what you're doing at the given moment, and what things are changing. Suddenly slow? You can see that you're traveling over rough terrain. Zombie won't die? You can see that your attacks aren't doing enough damage. That thing you crafted isn't in your inventory now? Oh wait, you failed and all your scrap metal vanished from existence.


The panels are pretty, but they seem like a lot of wasted space for little benefit. You seem to be already doing it, but a simple reformatting of the current sidebar seems like it would fair better.

If you want it really small maybe allow tiles support for some of the UI elements: a single icon for weather, a single icon for lighting, pie charts to replace all the vertical bars, paper doll HP display, etc.

moar mockups .. food for thoughts.

mode exploration:
preview14

mode exploration (same, but also looking around)
preview15

mode combat:
preview16

Love that combat mode shot, modifiers and compass are awesome!

Love that combat mode shot, modifiers and compass are awesome!

@Zireael07
thanks :)
it's always nice to hear positive feedback. i'm getting there

Sorry if it has been answered already but I didn't see any mention of it. How would you handle centering the screen in such system? I mean, right now the world is offset by the UI sidebar but if you make it float I'm guessing it won't really take that space and anything you draw on top will only occlude the view on one side, possibly blocking all view on that side at low resolutions. I guess a quick fix would be to make the view center be offset by the panels when at least one is open but I'm just wondering if you have something else in mind.

On a different note, making separate panels for different UI elements gives freedom to make a horizontal message box. Maybe making it a 2 column message box (possibly 3) so it shows different kinds of messages in each. One could be used for combat related messages and one for general information. This would be tricky though because all messages would have to be tagged some way.

Having a horizontal message box would free a lot of space in the sidebar for useful information.

These are my thoughts on this issue:

  • consider allowing full or minimalist UI, full is with labels for new players (I know I would've loved it!) like the one in your mockups, minimalist is very much the current sidebar's way of doing things (no labels, don't display modifiers that are in "normal" state, ie. not hungry and so on) but reorganized and perhaps upgraded with some of the ideas the OP or other people had (icons for weather etc.)
  • create different modes: exploration, combat, perhaps as configurations that users can define as list of panels to display
  • minimap: it would make sense to display location name instead of "minimap" even though I understand it's meant to be in line with other panels that display their name at that spot, perhaps for the minimalist version?
  • compass: I like that it's much easier to tell at a glance where enemies are!

Regarding compass, i've been thinking about if it could be integrated directly into world view. Like list of enemies on NW would be put in top left corner, enemies on SE in bottom right corner and so on. Given that perimeter of world view is way bigger than sidebar compass it's even possible to make directions more granular by having an arrow to each enemy (groping together if they're close enough to avoid clutter). Something like that:

|   ^Z                         ^C                      | sidebar              |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|<                          @                          |                      |
|Z                                                     |                      |
|Z                                                     |                      |
|z                                                     |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                                      |                      |
|                                        Vzzd          |                      |
+-----------------------------------------------------------------------------+

For me the main problem is the limited vertical space. I don't mind if the sidebar is 1/3 of horizontal space. But with 1366x768 laptop screen and font size 20 I don't get that much lines for messages. So drawing fancy borders for those windows takes away lines that could be used for message logs.

Was this page helpful?
0 / 5 - 0 ratings