Opened 7 years ago

Closed 7 years ago

Last modified 6 years ago

#10133 closed feature request (outdated)

MOHAWK: Riven: Please add a 'Prompt to Save' feature to the game.

Reported by: macca8 Owned by: macca8
Priority: normal Component: Engine: Mohawk
Version: Keywords:
Cc: Game: Riven

Description

Currently, whenever the player exits the game in progress for any reason (Quit, Return to Launcher, Load), any unsaved changes will be lost without warning. This puts the onus back on the player to remember to save before exiting the game. In my opinion, this is really poor form.

It doesn't happen in the original, so technically it could be argued that this is a bug in ScummVM. However, I'd prefer to consider it an essential feature not yet implemented.

Riven already boasts an impressively featured and robust save/load mechanism (far superior to the original). It makes sense to prompt the player to use it when it's most needed.

If the feature already exists or is pending, then that's great, but if not, here's the basic concept as I see it:

  • monitoring of unsaved changes.
  • an appropriate dialog to alert the player & initiate the save (if required).
  • identify the player actions to activate the feature.

1. Unsaved changes.
A property (_saveChanges) should be established & initialised/set to false in these situations:

  • starting a new game.
  • loading a saved game.
  • after completing a save.

This property is set to true by the first valid mouse, or keyboard navigation, event (something changes) that follows any of these situations. Supporting this with an appropriate conditional statement avoids unnecessary resets (for example, if !_saveChanges then set _saveChanges to true).

2. Dialog.
The dialog should contain a simple message & three buttons:
*Message: Save changes?
*Buttons (left to right):

  • Cancel: return to game.
  • Don't Save: continue player exit call.
  • Save: open usual Save screen, then, if save completed: continue player exit call.

Cancelling in either the Save or Load screen should always return to the game.
This guarantees that the player can only exit a game without saving unsaved changes by clicking Don't Save, the desired result.

3. Trigger actions.
Dialog should only appear if _saveChanges is true.
If true, then any of these player initiated exit calls:

  • Riven Options Menu (F5): Quit, Load.
  • Global Main Menu (Ctrl-F5): Quit, Load, Return to Launcher.
  • Keyboard: Cmd-Q (Quit on Mac OS X) & its equivalent on other platforms.

No doubt, implementing this feature is probably more complex than it appears here, but then, this isn't a trivial request, so I hope it's viewed favourably.

As an end user, I'd expect this as a standard feature for any game with save support, not just Riven. As such, there's an expectation of built-in protection against any predictable loss of unsaved changes.

It's taken many years and much effort to prepare Riven for official support. Please don't leave it vulnerable to what is basically an avoidable error.

Thanks for your consideration.

Change History (8)

comment:1 by dafioram, 7 years ago

Would it be sufficient to have the game autosave (slot0) when the player exits the game?

comment:2 by macca8, 7 years ago

Good thought, but I'm against using autosave here, since it takes the save process out of the player's control. The player needs to make this decision on a case by case basis, not only when, but also where, to save.

What I'm proposing is an industry standard that most players would be familiar with, and generally expect.

Having said that, I believe there's a place for both a 'Prompt to Save' feature and, as a separate option, access to ScummVM's autosave feature (would provide support against a crash)... though I have no experience with how well that feature works.

comment:3 by bgK, 7 years ago

I like that idea.

However:

  • Games can't hook into the GMM or the quit handler, so this must be implemented for core ScummVM, not just Riven.
  • It's not possible to save in some situations like when in the middle of cutscenes. So the confirmation dialog cannot offer to save when trying to quit in that case.

Would you mind rephrasing this ticket so it is not specific to Riven but applies to ScummVM games in general?

comment:4 by macca8, 7 years ago

I know it's possible, but how do I change the content of my description?
Or should I start a new ticket?

comment:5 by bgK, 7 years ago

There is a "Modify Ticket" button which you can probably use, but feel free to start a new ticket instead.

comment:6 by macca8, 7 years ago

Component: Engine: Mohawk--Other--
Game: Riven
Summary: MOHAWK: Riven: Please add a 'Prompt to Save' feature to the game.ScummVM: Please add a 'Prompt to Save' feature to games.

Currently, whenever the player exits the game in progress for any reason (Quit, Return to Launcher, Load), any unsaved changes will be lost without warning. This puts the onus back on the player to remember to save before exiting the game. In my opinion, this is really poor form.

Where a save mechanism is available, it makes sense to prompt the player to save any unsaved changes when it's most needed.

If the feature already exists or is pending, then that's great, but if not, here's the basic concept as I see it:

  • monitoring of unsaved changes.
  • an appropriate dialog to alert the player & initiate the save (if required).
  • identify the player actions to activate the feature.

1. Unsaved changes.
A property (_saveChanges) should be established & initialised/set to false in these situations:

  • starting a new game.
  • loading a saved game.
  • after completing a save.

This property is set to true by the first valid mouse, or keyboard navigation, event (something changes) that follows any of these situations. Supporting this with an appropriate conditional statement avoids unnecessary resets (for example, if !_saveChanges then set _saveChanges to true).

2. Dialog.
The dialog should contain a simple message & three buttons:
*Message: Save changes?
*Buttons (left to right):

  • Cancel: return to game.
  • Don't Save: continue player exit call.
  • Save: open usual Save screen, then, if save completed: continue player exit call.

Cancelling in either the Save or Load screen should always return to the game.
This guarantees that the player can only exit a game without saving unsaved changes by clicking Don't Save, the desired result.

3. Trigger actions.
Dialog should only appear if _saveChanges is true.
If true, then any of these player initiated exit calls:

  • Global Main Menu (Ctrl-F5): Quit, Load, Return to Launcher.
  • Keyboard: Cmd-Q (Quit on Mac OS X) & its equivalent on other platforms.

If a game has its own unique menu, then:

  • Game Menu: Quit, Load.

No doubt, implementing this feature is probably more complex than it appears here, but then, this isn't a trivial request, so I hope it's viewed favourably.

As an end user, I'd expect this as a standard feature for any game with save support. As such, there's an expectation of built-in protection against any predictable loss of unsaved changes.

Please don't leave games vulnerable to what is basically an avoidable error.

Thanks for your consideration.

Version 0, edited 7 years ago by macca8 (next)

comment:7 by macca8, 7 years ago

Owner: set to macca8
Resolution: outdated
Status: newclosed

comment:8 by macca8, 6 years ago

Component: --Other--Engine: Mohawk
Game: Riven
Summary: ScummVM: Please add a 'Prompt to Save' feature to games.MOHAWK: Riven: Please add a 'Prompt to Save' feature to the game.

Restored request to original title to maintain historical context of description.

Note: See TracTickets for help on using tickets.