On streamling of gnome games



As you may have read, we recently had a brainstorming session for the completion of the vala-port of sudoku.

During the discussion we thought about how to do the “New Game”-Screen (a screen that asks you what and how you want to play, when you start the game) in the future. I was of the oppinion that it would not be needed. We could throw a new player into a medium or easy game right away. We could have a “New Game”-Button in the Header Bar where you could select from a Popover the difficulty the New Game should have. Alternatively, if you would finish the game successfully, there would just be a “Quit”-Button and a “New Game”-Button, where the latter would give you a game of the same difficulty you just solved.


To step back a bit: The last design documents have been created (as far as the wiki logs go) in 2011 (by Robert Ancell of Canonical), a point in time when there was no Steam for Linux in sight and only the second humble bundle had happened, bringin not even a dozen games to Linux. Since then, many things have changed. Steam now has more than 350 games for Linux (some of them even Free To Play), and humble bundle supplied more than 150 games to Linux (I have some 140 in my account) and gog.com will soon enter the Linuxsphere.

I think we should, as a basis, not try to compete with those games and not expect usage patterns similar to these games.


Going back to Sudoku. Were I to open our Sudoku for the first time and were I to be asked whether I want my games hard, medium or easy: how would I know? Do we use the same measure as my local newspaper? Even if so, isn’t it easier here since I can undo/redo/hint? And also: we are on a computer and we are programmers. Isn’t there something more intelligent we can do?

What I propose, obviously on a case by case basis,  is streamlining the experience to the maximum with the following actions:

- including a “adaptive difficulty” difficulty level

- having that as a default

- removing “New Game” dialogues wherever possible

- removing options when we have a chance of sensing usage patterns


I will now go through some of the games that could benefit, starting with:

Sudoku (suppose adaptive difficulty is on):

- Throw me into an easy (or medium) game

- If I solved that without using hints -> the next game will be a bit harder

- If I solved that with hints -> difficulty seems fine

- If I run into a dead end and/or start a new game, the next one could be easier.

Obviously switching difficulty all the time could be bad. We could employ statistics on that so we don’t change things up too much on statistical outliers. If adaptive difficulty were on, the new game button wouldn’t give you difficulty settings but pop up a hint (non-interactive that says “Hey, I’m giving you a medium difficulty game because I think you like that. You can disable adaptive difficulty in the menu”), telling you what happened. The adaptive difficulty toggle needn’t be in a dialogue as well. This could be a toggle in the menu, very streamlined.

Also the input for the sudoku cells. If I click on a cell, I want a pie-menu/popover/whatever to select numbers to fill in. Left click would fill the cell. Right click and shift-click would “earmark” the number without closing the menu. But if I use the keyboard to enter a number (and shift+number to “earmark”) the visual input menu can disappear. We sensed that the user wanted to input using the number keys. How do we get the menu back? If a user clicked twice on a cell or clicked the cell and doesn’t do anything for 3 seconds (both?) the menu would reappear and we are back on “instant mouse mode”. We could even increase the time for every consecutive keyboard usage (up to a limit). We _can_ do that. We do not need an options dialogue where I can chosse whether I want a mouse menu to be enabled or disabled.


gnome-chess:

I feel that gnome-chess could benefit from adaptive difficulty. Throw me an easy one and push me until a get a 50:50 win-loss ratio. That would be good, I guess. How would I know how I rank with that particular chess engine and which opponent-level would be good for me?

Playing against a human: We could overload the “New Game”-Button (or get a second one with symbols instead of text) to start a new game against a human player. Why is that in the options menu? There is probably not a good way to sense whether there’s a second person on the computer but I guess there’s a better way than the options menu.


quadrapassel, five-or-more:

These games are open-ended games and we have no way to measure win/loss so adaptive difficulty is no use here. Whether all the options are neccessary or whether we could sense theme information (and other things) would need to be discussed.


four-in-a-row, iagno:

Again we have a winnable ones. Here’s the same as chess. Start the difficulty as “adaptive” and ramp me up to a 50:50 win-loss-ratio. Overload the New-Game-Button so we remove human/computer-opponent as a “setting”. I don’t know how I rank against the AI.


I think tetravex, where board size corresponds to difficulty (and the games is winable/solvable), could also benefit from that.


On network multiplayer: If we were to include that in any game, the game could sense for partners on the network and if there are some, the New Game Button gets another overload for Networked play.


To recap: We should take a good look again at our games roadmap and think about whether New Game Screens are really necessary. We should include adaptive difficulty wherever possible and remove (explicit) settings in cases where we conceivably could sense usage patterns. We should remove fundamental settings that impact the playability (not difficulty but for example whether we have a human opponent, be it local or remote) from options menu and put that somewhere sensible (I suggest a second “New Game”-Button or overloading the existing one with a popover).


I am looking forward to your thougths on that matter and more ideas how we could streamline the experience or whether you think this is even neccessary.


Mario




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]