Graphical user interface

This is the current status of the design of GUI for STK 0.7 (with irrLicht). These are mainly based on ideas coing from the Previous design by Coz, incorporating new ideas by Auria and feedback from Conso and other comments from the mailing list.

Please note that these mockups are only meant to show the layout and navigation, not the actual look it will have.

The banckground image should not stretch in high resolutions. Instead of supporting many background images, I was thinking of "dynamically" generating the bg image, like in add an abstract background, then add STK logo and other stuff over this. This way it could adapt to any resolution.

Contents

Main menu

Note that icons used below are mostly taken from google-images, so we can't use them :( see them as placeholders

Image:Menu_main.jpg

Icons make it more user-friendly, and eases seeing the different possible options. Note that here is no multiplayer mode; networked multiplayer obviosuly happens through the 'network' item, while split-screen multiplayer will happen naturally at the kart-selection screen.

Messages can cycle in the lower-half area, saying that STK is free and open-source, etc... it can also contain messages if config file was reset

Only this screen shall show the 'SuperTuxKart' logo (and Tux or whatever the artist who makes our next background image puts). All other menus shall use a pretty neutral background image.

General navigation concept

In order to remain friendly with GamePads, the new GUI should be easy to use with a minimum amount of buttons and no mouse (though mouse use will still be allowed of course).

To keep the menus easy to navigate and setup with a gamepad, I came up with the following concept :

Here's a small animation to make the basic navigation idea clearer :

Image:STK-gui-demo.gif

This concept also does not hinder mouse navigation, where user can simply hover mouse over items to select then. Whether they will be selected on hover or on click is unclear the the moment; this can be decided by testing both and seeing which one feels more comfortable. While select-on-hover might be quicker, in combined screens it might get too easy to select things you don't want to.

Kart selection

The original idea

FIXME : add support for add-on categories

Image:Menu_kart_select_1p.jpg

At this point, all human players can easily and quickly join by pressing 'fire' on their input device. As players join, the screen further divides smoothly to show more karts.

The up/down keys can be used to select the name of the player. Choices will have been specified in a list in Options (except the first one which can be the System's name by default, like it's done now in 0.6). This is necessary in order to give highscores to the right person in a multiplayer game (without requiring to go in preferences, changing the name, and making sure to give the right pad to the right person like in 0.6) For single player games, odds are that the right name will be there without action necessary, so single-players can just ignore this (i.e. it doesn't add unnecessary clicks when not necessary)

Image:Menu_kart_select_2p.jpg

Image:Menu_kart_select_4p.jpg

When a user presses enter or fire again, their current kart is selected and is removed from others' list. When everyone selected their kart, the setup can continue.


Hiker : In the character selection screen it should be possible to remove a player (e.g. someone uses a wrong (e.g. broken) joystick and wants to use a different one, or accidentally presses a key
Auria : I'm not sure how to do that without cluttering the interface :( I think on mistake (which wouldn't happen often) it's easy enough to go back and start again. Do you have a better idea? Pressing escape might be an option, though if you activate a joystick by mistake you may not know where escape is on it.

a new proposal

The previous was nice, but didn't allow good support for add-on groups, was quite cluttered with many players and could require lots of scrolling to get the kart you want. After much discussion and many mockups, Conso and I agreed on this :

Image:Selectionmockup.jpg

If more karts are added, more lines can appear. Kart models can reduce and even disappear if player installs lots of add-ons. Users can go up above the karts area to focus their name and change it (depicted for Player 3 here) Add-ons, standard, etc. groups are selected with tab-like widgets; in a multiplayer game, only Player 1 could access this to avoid conflicts.

The idea of joining with fire and leaving with rescue is still kept. Users can confirm their set-up by pressing fire/enter. When everyone confirmed, the game goes on.

Race Setup

The initial proposition

This screen makes full use of the vertical-horizontal concept described above.

Image:Menu_setup_race.jpg


Hiker adds : We could have one or two lines at the bottom to display the name and credits of the track currently being selected.

This screen combines what was previously multiple screens, and avoids having Quick Race and Grand Prix as two separate modes like before. As we get more arenas for battle-mode, we can decide if we make battle Grands Prix or just disable GPs for battle modes.

If we add more game modes, we may lack space. In this case, we can simply remove the text under icons, and only display the name of the selected one.

For GPs, there is no need to display a list of all tracks it contains; cycling pictures will do the same with less visual bloat.

Single Race from list should be selected by default, so hitting enter will take you directly there.

If the player selects 'Track from list', he is presented this screen :

Image:Menu_tracks.jpg

At this point, the player can also select the number of laps. It makes sense to do it at this point since the number of laps will probably vary depending on the length of the chosen tracks. Gamepad players can choose a track with vertical axis, and change lap number with horizontal axis. (To make this clearer, it might make sense to move the lap number widget right under the currently selected track in the list, so only one widget is 'focused' at a time)

Discussion with hiker

Hiker adds : After thinking about it, I noticed a certain non-symmetry: In GP: you can select the GP on the same screen. But in single race you have to go to a different screen. What about making the entries on the left side collapsable: You start with only "GP Single Tracks Battle tracks" When you click on one, you get a (scrollable) list of all entries of that theme. you would have to make this scrollable. A cool idea was posted here  : Display the tracks as 3x4 rectangle, and make this scrollable. I.e. you can go to the left, and all columns move the the right. (like a scrolling grid) It would have to be a separate screen I'd guess

Auria (to herself) : maybe we could come back to Coz's idea, which I liked very much : each track would have a unique icon, then we can scroll these icons

Auria (to hiker) : is symmetry more important than saving a screen?. I would tend to consider saving an additional screen is more important than having symmetry. What do you think? We might need to get more ideas on this.

Hiker:: 1) saving key strokes. So this approach has no real advantage - it might actually add a key: you press the game mode (single), then you have to select single track (or random), and then you select the track. So it's one more key stroke. 2) If we change the lower part depending on the selection of the upper part, we might as well have a separate screen (and more space).

Auria : well the thing is, I want to remove the current approach of showing twice every game mode, once under GP and once under single track. do you agree? If so then we will need one more click, since mode and GP/single will be selected apart from each other while to used to be combined

Hiker : What about one combined screen for track and GP selection?

Auria : okay let's try!

Image:Race_setup_new.jpg
Notice that game mode descriptions fit in this screen; no need for a separate help menu or a "help" button


Auria's version (in which GPs are always visible) : I also think GPs are important; while we devs always do quick races to test things, i would think players prefer GPs, since you set-up the race once then race for a while.

Image:Menu2_test.jpg

-->Auria's layout has Consop's support =) (as long at the GP list is scrollable too, to allow GP add-ons)

The number of visible tracks could depend on resolution. All mock-ups are 800-600, so quite low. On high resolutions, there would be more space to display tracks

Hiker's version (in which GPs scroll along everything else) : once you have scrolled to your preferred 'type', this would be saved, and allow you to see more tracks/GP at the same time (e.g. my design would allow you too see about 20 tracks (15 in your design), plus it has more space to display additional information. Similarly for GP: my design would allow you to see 6 or 8 GPs


Image:Hikers_version.jpg

Auria : Another very simple reason to prefer mine though : the grid would be much easier to implement if all elements are of the same size and nature ;) In yours, some are small, some are big, some have text, some dont, etc. which significantly complicates implementation.


Hiker : What about a 'half-new-screen': when you select a track, the current picture will become semi-transparent in the background, the track icon will be enlarged, track details (name, estimated lap times or so) and #laps icons will be displayed. You can then either select the #laps and press GO, or press back to select another track

Hiker: One other comment: it might be useful to display additional information for each track. Not only name and designer, but also current highscore (or length or so) - this way people can estimate how low a race on that track (or GP) will be. Perhaps we could have a scrolling text line: 'Designer: Wonderful Auria Fastest lap time: 33 seconds.
Auria : This can go in the 'half-new-screen' you just described; this way we have more space for tracks, and it spares the player with scrolling text that's annoying to follow

Other Ideas

sj04736's version (Settings + tracks on one screen, track groups scroll separately from tracks):
Image:GUI-Idea-Stephen.png


Some comments by Auria :

Options

The options screen too makes full use of the vertical-horizontal concept described above.

Image:Menu_options1.jpg

SFX and Music can be turned on/off by pressing fire/enter, and volume can be modified with left/right axis.

Resolutions are organized by screen ratio, since this makes it easier to find one suited for your monitor. A resolution is only applied when fire/enter is pressed.

Comments from MiniBjorn on IRC:

Networking

TODO

Player list

For highscores, we need to know who's playing. In STK 0.6, we had only 4 slots, so if you invited friends, then invited other friends, you constantly needed to go in the Options menu and edit the names. Using a name list makes this more flexible and easier to maintain. It furthermore allows to set per-player speficic preferences - see more below about output.

Image:Options3.jpg

By default, we could add one default player, retrieving the name from the System, like it's currently done in STK 0.6.

It might also be a good idea to allow reordering names with drag-and-drop, so people who play often will get at the top (or automatically calculate who plays the most and put him/her at the top. quite minor at this point IMO)

FIXME : it's unclear as of now how enabling a special config for one player will be done, especially from gamepad. It might also be cleaner to do this at the input configuration menu?

Input configuration

Image:Options2.jpg
see the lower half as a different screen, that will change depending on what is selected at the top

The main-menu will react on every keyboard configuration, so no need to choose a default. For gamepads, there will be one "main" configuration per model. Whoever actually pressed the button to get into kart-selection is the first player and the device will be connected this way (and assigned to this player; i.e. there is no need to go in preferences and tell if you are player 1, 2, 3 or 4. STK will use the right input profile depending on what you press, or what gamepad model you use)

New and/or alternative configurations can be added with the buttons at the top of this screen (of course we might need to add a delete button; or choose to have a fixed number of configs. that's not very importing at this point) We could also add auto-detection of gamepad models and automatically add new ones.


Special case

What's below sounds a bit more complicated (and it is, but mostly to describe; i believe in-game it would be quite straight-forward). Also keep in mind this is a use-case that less than 5% users will ever use, so i believe it's okay even if it doesn't jump in your face.

let's say there's a party with lots of friends playing with gamepads (all the same model, so normally they'd all use the same configuration). Unfortunately, MiniBjorn is left-handed and feels uncomfortable with the same config as others. Well here's what we can do for this :

Discussion:

--Conso 01:57, 13 January 2009 (UTC)About default configurations: We could set up default joypad-layouts for left-handed and right-handed. example: Image:joypad.png

No idea how a left-handed one should look like.

So, the community might send us their implementations of that layout for their special joypad and we will store it as a default-layout inside stk. So, if a new joypad is connected, one might directly start playing, unless the layout shall be changed.


--Hiker: I am not convinced that the 'special setting for lefties' is the right way to go. Doing it means more implementation work as well as potentially more typing work for the user - since we need a name for the configuration. (we should try to make STK keyboard-less friendly, e.g. joystick use only, so typing it annoying). I still like the way it is currently handled, and I think it can be made to work with the new interface, too: Save for each player the input device setting (for each input device he has ever used), and save the last setting as a default (so if you use a gamepad for the first time you get the default, but if you re-use it months later, you settings will still be around). I think that should cover for pretty much each possible situation, without using special names or configuration, no typing. We would only need one menu (for a player to define the input settings to be used, which would then become the default) - and not a specialised menu in which each configuration can be changed.

Highscores

A menu section with highest scores, fastest laps, won cups, etc.

Challenges

TODO. They should be displayed in a nicer way (with a story long-term), and it should be possible to have multiple sets of challenges (add-ons), it should also be possible to re-play beaten challenges. Perhaps there should be multiple difficulty settings.

Ideas posted by Phil (SIR_Taco) on the mailing list : This one is in the to-do already, but I'd like to throw some ideas out there. What I imagine the Challenges menu to be like is to have squares with screen-shots of the challenge in them. If they are locked, they have a little locked padlock in the corner and are grayed-out. If they are completed, the screen-shot is full colour and where the padlock was is a medal for the achievement (gold, silver, bronze.... the result should be determined in the challenge file). A mouse-over of each Challenge should display some text in a box (maybe at the bottom of the screen) detailing what was achieved (medal wise) and unlocked, or what needs to be achieved and what will be unlocked. As it stands now, you don't really have much of an idea as to how many Challenges there are and/or what the incentive for doing them are.

In-race GUI

TODO

Global flow

TODO

Hiker: I think a global 'flow diagram' is kind of missing: e.g. what happens when you end a multiplayer GP? Will you get back to the main menu (if so, you would have either select the characters again (which might be annoying), or you should save the previous number of players etc.). It might be better to offer at least a setup different race option.

Retrieved from "http://supertuxkart.sourceforge.net/Graphical_user_interface"

User Tools