Ability to restart in more activities
Closed, ResolvedPublic

Description

I often find myself wanting to restart a level within an activity. When actually playing, this is more common for continuous movement activities like Land Safe and Pilot a Submarine, but I also want to do it in anytime I am investigating a bug.

Some activities have a restart button...like Tic Tac Toe...

...and others do not...like Chess.

I have not played every activity, so there are probably some activities for which restarting doesn't make sense. However, for the activities for which restarting does make sense and don't currently have the ability to restart (like Land Safe, Pilot a Submarine, and Chess), can a restart button be added?

jjazeix claimed this task.Sep 16 2020, 4:21 PM

I'll take a look :)

I would prefer to not add a restart button when it's not really necessary for using an activity.
Also, as a general rule, we should avoid having more than 4 buttons in the bar as much as possible as it makes the bar (and so the buttons) smaller on smartphone with vertical screen, especially if we have the levels buttons.

-for Land safe, we already have 4 buttons, so better not add restart there.
-for Pilot a submarine, we only have three buttons, so we could theorically add restart... though it is already easy to restart by switching level.
-for Chess, we have the restart button in 1 player mode (against tux), but not in two player mode. I think there was surely a reason not to add it for the two player activity. Like, in that case it would add the risk to click it by mistake when passing the device between players and so ruin the game... Indeed we have it for other two player "games" like tic-tac-toe, but a chess game is a quite different as it is much longer and complicated (if you see what I mean).

... also to complete my comment about chess 2player mode, as the reload button is specifically made to appear only at the end of the game, it confirms that it was intended to work this way for some reasons.

tysonwilliams added a comment.EditedSep 17 2020, 1:16 PM

All good points.

...though it is already easy to restart by switching level.

That is what I usually do now. Either that or exiting or re-entering the activity. Either of these approaches is made more cumbersome when the activity also displays instructions. For example, this happens in Land Safe when "restarting" level 1 by switching to level 2 and then back to level 1.

...in [the case of chess] it would add the risk to click it by mistake when passing the device between players and so ruin the game......

Except I think that this is the wrong behavior. In the application I am creating at work, I have both undo/redo buttons and a restart button, and the undo button can undo the restart of the game. The only way to "ruin" any of the Tic Tac Toe or Chess activities should be exiting the activity.

jjazeix added a comment.EditedSep 17 2020, 1:51 PM

For chess, I'm not sure if it was to not click by mistake when you play with someone else.
The undo/redo only removes/replays the last hit for the current game.
If we restart, we clear the history and everything from the previous game.

The replay button is handled like a quit/restart activity at same level in most of the activities.

Yes, the example I gave for chess 2players was just one example from a quick guess. But like I said in my next comment, it was surely done for a reason anyway.

...though it is already easy to restart by switching level.

That is what I usually do now. Either that or exiting or re-entering the activity. Either of these approaches is made more cumbersome when the activity also displays instructions. For example, this happens in Land Safe when "restarting" level 1 by switching to level 2 and then back to level 1.

I see what you mean, but it is a choice by design... Both ways (showing again or not showing again the instructions when restarting the level) have pros and cons. If we don't show it again, the user has no way to display instructions again other than restarting the whole activity.

...in [the case of chess] it would add the risk to click it by mistake when passing the device between players and so ruin the game......

Except I think that this is the wrong behavior. In the application I am creating at work, I have both undo/redo buttons and a restart button, and the undo button can undo the restart of the game. The only way to "ruin" any of the Tic Tac Toe or Chess activities should be exiting the activity.

I see what you mean, though in our case it may be a bit different. The reload button never stores the previous session in other activities (which I think in our case is better... especially as only chess and checkers have undo/redo buttons), so if we start to do it for some activities it would be less consistent.
Also to me it feels more logical and simple for the user to have those undo/redo buttons only consider the current session (no undo = initial state).

@timotheegiet, just to clarify, do you prefer to make a list of all the activities you'd prefer we add (or not add) the reload button? We can discuss it later via irc and put the result here if needed :)

What I meant is generally I prefer to not add reload buttons to more activities than what we have already, to respect the choice of each activity's developper wether they wanted to have the reload button or not.

That said, if it appears that for some activities it would be really relevant, we can discuss about adding it and see wether it would fit or not.
Like here, it was specifically mentionned about Land safe, submarine and chess, so I gave my opininon for those three.

So ok, I can make a quick pass on all activities, and make a list of activities where I think we can add reload button.

So, after going through all the activities, I didn't see other activities that would really benefit from adding a reload button.

For land safe, actually I agree we can add it. We already have a few activities with 5 buttons in the bar, so it should still be ok.

For submarine, let's add it too.

For chess 2players and checkers 2players, I still believe we should not add it.

Also, I forgot to say, we also need to change a few of the existing reload buttons:

-For Explore monuments and Explore World Animals, we need to make the button restart current level to return to the exploration part, now it always restarts to first level (I guess because the base explore activity has a single level, it was not designed to handle multi-level originally...).

-In Play piano, the reload button is not really needed... I think it was meant to replay the sequence like in play rhythm, but it is actually restarting the whole level, and we already have a separate play button there to replay the sequence. Let's remove it.

Oh, and actually one more activity where we can add the reload button is Watercycle (same as in Renewable energy).

Done for submarine, explore_* and play_piano.

For land_safe, if playing in a resized window, it almost always hides the text for the gravity.

For watercycle, it will require more code changes for now, I haven't dig yet

Thanks.

For land_safe, the activity settings button already overlap the gravity text in resized window, so I'll take a look to have the text always above the bar and then add the reload button.

For watercycle, I can take a look too.

Done for watercycle (and fixed a few little bugs on the way).

timotheegiet closed this task as Resolved.Sep 20 2020, 3:07 PM

Done for land_safe, and so I changed a bit the layout of the osd and on-screen control buttons, it should be even better to use on mobile too.
I guess we can close this task as resolved.

Excellent work. Thanks for consider my request and adding so many more restart/reset buttons :)

My kids also like to restart "Memory Game with images against Tux". When they realize that they can't win (because Tux has half or more of the matches), they prefer to start over. Since there is no restart button, they currently simulate the restart by changing the level and then changing back.

Yes but... that is a bit cheating.
While it is doable by changing level, I prefer not to encourage users to do it with a reload button.

I think it depends on your goal. If your goal is to teach kids to complete everything that they start, then I agree that not having a restart button is better. If your goal is to teach kids to reevaluate their previous decisions when circumstances change and new information is available, then I think a restart button is better.

Phrasing it that way has made me realize something. My kids play checkers and chess both in GCompris as well as other programs dedicated to those games. In those other programs, the AI will resign if it thinks it is losing by too much. I don't think the concept of resignation exists in GCompris.

Failure to achieve a goal (like the goal of betting Tux at a game of memory) can be hard. Admitting failure to achieve a goal is even harder. I just watched my kids play each other in the activity "Bargame (with a friend)". My older kid put himself into the winning position, and it was now my younger kid's turn to play his only available move and lose the game. Instead of playing that move, he clicked the restart button (which this activity has).

Instead of a restart button (or lack of a restart button), I think it would be better to have a resign button in these two player (either human vs human or human vs Tux) activities. This gives the kids a chance to admit that they lost the game without also having to go through the agonizing or humiliating process of having to play moves that they know are losing.

Well, mistakes are parts of any learning process, and loosing is part of games... In French we say "mauvais perdant" for people who don't behave good when loosing, I don't know if there's an equivalent expression in English. And so learning to accept it when you loose a game is part of the process.
I prefer not to add the concept of resignation.

Related phrases in English are "poor sport" and "gracious loser".