The Thread Fomerly Known As GUI

[size=200]S44 GUI (Deprecated)[/size]

Most recent screenshot:

(the icons still need to be sorted, and they don’t actually do anything yet)

Overall Design
The GUI has five main elements plus minimap. Counterclockwise from the top right corner:

  • Player Info
  • Resbars
  • Minimap
  • Commands
  • Buildoptions
  • Selection Info

Some of the objectives I’m going for in this GUI design:

  • Keep the GUI as small as possible as often as possible without being unreadable.
  • Keep actively interactive elements close together.
  • Keep context-sensitive information close to the cursor.
  • All else being equal, follow the default Spring layout.

To this end, I’ve decided to arrange the GUI along the top and left of the screen. Components that players interact with only rarely go along the top, while components that players interact with more often go on the left. Context sensitve information will be moved to a tooltip at the mouse cursor.

Player Info
This basically replaces /info, /clock, and /fps. It displays a list of players with the local player at the top, probably in larger letters. It may also have a main menu button. This will be 20% of the screen width and as tall as it needs to be.

Pretty much the same as current. Perhaps add tooltips. This will be 60% of the screen width and 4.5% of the screen height.

The minimap will fit into a box that is 20% of the screen width and 25% of the screen height, respecting the aspect ratio of the map.

25% of the screen height. This will be the most customizable part of the GUI, which is to say it will have three display settings. There will be a vertical tab on the extreme left side, to the right of which commands will be displayed. Clicking it will toggle through the display settings. For hardcore custom hotkeyers, at setting 0 no commands will be displayed at all. For people using the more common hotkeys, at setting 1, custom commands (e.g. Deploy) and toggle switches (e.g. fire state) will be displayed, but common commands (e.g. Fight) will not. Finally, at setting 2, all commands will be displayed. Hopefully pagination will not be necessary.

25% of the screen height. Buildoptions will be displayed here, instead of with the other commands. Again there will be a vertical tab on the extreme left, with the buildoptions displayed to the right of it. If no constructors are selected, no icons will be displayed. If only one type of constructor is selected, it will display the buildoptions of that constructor type. Clicking on a buildoption will instruct the constructors to build that item. Otherwise, it will display one icon for each constructor type; clicking on the icon will reduce the current selection to constructors of that type.

Selection Info
This replaces the “# units selected” and the engine tooltip. Instead of the engine tooltip, information will be displayed using a tooltip at the cursor. Where the engine tooltip used to be, there will be a place to describe what units the player has selected. If only one unit is selected, it will display detailed information about that unit. If a few unit types are selected, it will display one icon for each unit type with a number showing how many units of that type are selected. Clicking on one will reduce the selection to that unit type. Shift-clicking will remove that unit type from the selection. If many unit types are selected, it may aggregate unit types into larger categories; e.g. Infantry, Air, etc.

Regarding Textures
If I recall correctly, Gnome said his brother had a complaint about the icons, basically to the effect that the flag backgrounds are too “noisy”. To this end, I would suggest darknening and/or desaturating the flag backgrounds in order to keep the focus on the units.

Custom attack, fight, move, etc. icons may be a good idea.

Textures for the background of the GUI will make it look nicer.

Uh… is this an interim work, or a practice project? I’ve been putting the elements of the GUI project together, and I’ve been very public about it but I’ll just toss it if we aren’t going to use it. I thought I was going to deliver the full design, as I’ve discussed multiple times with pretty much everybody, and then we were going to put it together. I just want to know what is happening here, I’ve already put in a lot of work and maybe the pain is making me paranoid.

It looks like you’re bashing out the rudiments of the implementation, do you have support for multiple aspect ratios and scaling regions yet? I decided that it would probably simply load X layout of scaling regions for fullscreen and Y layout for widescreen, then modify the X layout for non-standard ratios…

I was going to put everything on the bottom for ease of viewing… whatever. I’m annoyed, I’ll stop talking.

No fuck, what the hell, man?

I’m lying here on my back, unable to do anything, and have been for a week, and everything turns into CA. I don’t want drama or a problem but what the hell am I supposed to do?

I put this up a few days before I left, just to show where everything will go. I have the elements mapped out (Map, Commands, Build Options, Chat, Tooltip, Resources, Logistics Restock Timer, Dynamic Controller, Dynamic Panel) and a list of what we need to do but I need to know that my work will be used. If everybody wants it on the left, as in your design, I can put that together too but it won’t be as visually efficient.

Okay. Frankly I can’t contemplate this shit right now. I’m going to leave for a while until I calm down.

See you all later.

And no, neither of us have to fold. If I fold, I waste my work. If you fold, there is nobody to implement any GUI AND you waste your work. Both propositions are idiotic, but if it comes down to one, I can stand aside.

I was simply under the impression that I was designing a professional GUI to implement with you. I spent a lot of time trying to make it clear that progress on my end was being made as I played with different designs and did research. I didn’t want to put it up until it was done because I didn’t want to deal with problems arising from interim decisions or the complaints I would inevitably get - I wanted to get it done and deliver. I tried to keep everybody aware that I was working, though - I thought that we were communicating clearly as a team, but evidently I was wrong. My work can still work with yours - you’re figuring out how to make the GUI, and then when I have a deliverable the whole team can come back together and tear it apart, and then you and I and Spiked can put it back together into the GUI.

The pain just makes me short-tempered.

I prefer a GUI with anything I have to look at on the bottom. I need the top to look at the game with. From a quick glance, I want to be able to see what I have selected, what it can build, what it uses or has, what my resources are… Everything. When it’s all at the bottom, it takes a single glance to determine most of those things, especially if they’re well placed. Running my eyes up the left side of the screen and across the top doesn’t sound good to me.

I’d prefer the more logical choice from my point of view, which is poorly informed at best. Neddie should continue working and so should Zerg. The experience will help Zerg and maybe Neddie can cobble something together that everyone will like.

Whatever though, my opinion is merely that. An opinion, and it’s not like mine is terribly important.

I personally dislike Spring’s “sparse” style GUI, with no coherent shaping or organization of the GUI elements, etc. I would rather see a GUI that is more solid; where there is a clear differentiation between the UI areas and the actual gameview area. Ie, how in C&C they have their GUI elements all bunched on the right-hand side; in CoH, all on the bottom; and etc.

I am thinking it would be best to take up both the top and left-hand sides of the screen. The top for a small resourcebar area (as it currently is), with the map in the upper left-hand corner; with commands, menus and such in a solid area on the left of the screen, and with various other elements taking up as little room as possible (for instance, having selection icons and “aircraft sortie ready” icons directly underneath the resourcebars).

Moved to the dev forum. No arguing in public kthx.

Finally, a response from me. Essay time!

First of all, I’m posting this semi-publicly because I think the team has a right to know what’s going on.

Second of all, the TL;DR (note that this is not a summary of the below; it’s for people who don’t want to read anything remotely resembling drama): I now have no motivation for working on GUI, and do not expect to regain such motivation and free time simultaneously within the forseeable future. The above is a dead project; even if I decide to take up GUI again, my coding styles may very well have changed by then. I suggest that as many of you all as are interested look into CarReparier’s work with Chili GUI.

Now for the bulk of this post. I’ll try not to be too flowery:

When I started working on this GUI, I did not expect this sort of reaction from you, Neddie. In fact I was not thinking of reactions much at all–pretty much I just sat down at the computer one day and thought, why don’t I start working on GUI? A few days later, and I have what you see above. I don’t know what reaction you expected from me, but here we are:

This isn’t really about the planning aspects. Yes, we both have our opinions on what the GUI should look like, and yes, there are undoubtedly several points where we disagree. But these things are not insurmountable; if they were, there would be no such thing as development teams.

What is this about then? In a word: suffering. (He’s really gone off the deep end now, I can hear the whispers.) I’ll start with the abstract: when we see others suffering, it is only natural that we feel sympathy for them. This is all well and good, for if we suffer for a purpose, or at least if our suffering has a meaning, most powerfully shown by having other people care about our suffering, even the worst suffering is made bearable. On the other hand, if others wish suffering upon us, or perhaps as bad, are indifferent to it, even the least of troubles can become a cause for despair.

What complicates this is the fact that, at least in our society, there is this concept of “moral weight”. If not the ultimate societal force, moral weight must be quite close to it, for its mere existence is enough to keep ideas from being accepted, considered, expressed, or even contemplated. With what other force could you essentially tell someone–even one who has not wronged you directly–to sit down and shut up, and have the blessing of society behind you? Though it has roots in sympathy, moral weight is not essentially benign, for it is a competitive concept (exacerbated by its various (mis)appropriations in politics)–if one claims a greater chunk of moral weight, well, then another’s share of the moral “pie” must decrease. And what can you do if you feel your share of moral weight is slipping? Well, you can go the way that much of politics is conducted these days, and loudly proclaim your own suffering and assert your own moral weight. Or you can accept what society is telling you, that your suffering doesn’t mean anything, that nobody cares about your suffering, that nobody should care about your suffering.

In short, use your suffering as a weapon, or accept dehumanization.

I wish I had seen this pattern earlier. I wish I had not subscribed to this philosophy. Perhaps someday I shall escape it. But like it or not, it’s a component of our society, I was under its sway, and I am still influenced by it.

What did this mean for us? To be blunt, I would say that it was one of the most fucked up things about our friendship. For three years I lived with you. I perceived that you were in a time of need, and I could not bear to take up the arms of moral weight against you. But under the system of moral weight, there was only one alternative–I had to accept that your suffering was so very great, that your moral weight was so very heavy, and conversely, that my own suffering was inconsequential, that I had the moral standing of a dog, or worse, the moral standing of the computer I am typing these words on.

Fortunately, I have, if nothing else, a sense of self-preservation, and it doesn’t apply only to physical threats. That’s why I’m still around today. I think you will understand, though, that I found that my years under this apparent paradox mean times. Unfortunately, when you express your suffering, as you did above, it is difficult for me to keep myself from being pulled back to those times when I did not dare question or disagree with you on significant matters due to this concept of moral weight. There is no blame here, and I do not wish you to suffer–indeed, quite the opposite. I’ve seen you go through some hard times. So, without blame or malice, let me say this:

For the forseeable future, I will have no interest and/or time in working on GUI. The GUI project in this thread is dead. If you wish to conduct a GUI venture with CarRepairer, I will not oppose it, though I do not think I will contribute directly.

In fact, with only a few until uni starts again, I do not plan to start any new projects; it’s probably best to make sure the ones I have done recently are complete and reasonably free of bugs.