A downloadable RPG Maker MV plugin

Buy Now$20.00 USD or more

This plugin lets you create snapshot-saves ("bookmarks") of the current game state which can be restored at a later point in time. Bookmarks are stored independently in each save slot, with no need for additional file management.

Bookmarks can be set and restored in any order, whenever saving is available.
Which data is restored is configurable
, and any number of such configurations can be used as alternatives in the same game.

What you can do with this

A few examples of what's easy to make with this plugin:

  • Let players restart from any chapter they've seen before.
  • New Game+, where some state is kept while other is reset.
  • Time-travel plots!
  • Automatic checkpoints, with or without world resets.
  • Telling multiple/branching stories in parallel, where each "side" has an independent party and inventory in a shared world.
    • You can also merge them later, but this requires some coding. There's an overload of TS_Bookmarks.loadBookmark(name, …) that you can use for fine-grained control from another plugin.

Additionally, it's possible to use this plugin as component for more complex mechanics, like a soulslike rest/revive/regain mechanic. It should handle all your game state revert needs, so you can focus on the more visible parts of the feature (which may or may not require some additional JavaScript, depending on the details of what you're trying to do).

Commands (configurable)

(As the plugin commands provided by this plugin can be renamed, please instead use the JavaScript API below in published dependent plugins.)

The plugin commands provided by Bookmarks are largely thin wrappers around its JavaScript API, with two exceptions:

  1. When a command fails, it throws an Error instead of returning false.
  2. Relevant commands adjust the stored command index so that the event will continue after that command when a bookmark is restored. (In other words: Event scripts will resume just after the relevant Bookmarks plugin command.)

All plugin commands are instant (don't block), except where noted otherwise.

  • setBookmark name
    Creates or overwrites the bookmark with the given name.
  • setNewBookmark name
    Creates a bookmark with the given name, iff it doesn't exist yet.
  • logBookmark name
    Logs the bookmark with the given name to the console (press F12).
    The name can be omitted to log all bookmarks instead.
  • deleteBookmark name
    Deletes the bookmark with the given name, iff it exists.
    • When working with temporary bookmarks for specific scenes, remember to delete them afterwards! Too many bookmarks kept at once will increase the save data size and can slow down saving and loading.
  • restoreBookmark name configName
    Restored the bookmark with the given name according to the named registered application function or restoration configuration (in this order of priority).
    If configName is omitted, the default restoration configuration is used.
    If successful, this command blocks until the bookmark has been restored (which may cancel the event it was called in).

Parameters

Bookmarks comes with plugin commands that can be renamed to avoid collisions, as well as extensive settings to control which data should be restored from bookmarks.

If your use-case is chapter-select, you likely don't have to configure this plugin. I've set up defaults as a baseline that cleanly restore almost all bookmark data, minus some meta data like save count and playtime.

I still recommend going through the settings and reading the help text for ones you aren't immediately clear about. If you're still unclear about the effect of a setting after double-clicking it, feel free to ask in the comments. (I had to shorten some descriptions to make them fit.)

You can optionally add specific settings for certain actors, for example if you have only one time-travelling character and would like to have all others return to their original selves.
(Please use the "Note" field to easily recognise per-actor configurations in the list. While "Actor" is set up to show a drop-down, only the index number is visible in the overviews:)


In addition to "Restoration defaults...", you can also define any number of named alternative configurations through "Named Restoration Configs...". These named configurations can be specified when restoring a bookmark, so it's possible to have chapter select and also time-travelling and also conveniently tell parallel stories in the same game.

JavaScript API

This plugin unconditionally sets the global variable TS_Bookmarks when first loaded.

There, the following hookable and externally callable functions and properties are available (with more detail available in JSDoc comments in the source code):

  • parameters
    This plugin's parameters, with trailing `_` stripped from property names.
  • namedApplicationFunctions
    An object where more complex named bookmark restoration schemes can be made available without relying on .makeApplyFromConfiguration(...) (see below).
  • setBookmark(name) -> boolean
    Unconditionally sets a bookmark.
  • hasBookmark(name) -> boolean
    Checks whether a bookmark exists.
  • logBookmark(name?) -> boolean
    Logs a bookmark (or all bookmarks) to the console.
  • deleteBookmark(name)
    Ensures the named bookmark doesn't exist.
  • restoreBookmark(name, how?)
    Restores a bookmark. The parameter how can be undefined, the name of an application function or restoration configuration, or even even a restoration configuration or application function directly passed as JavaScript value.
  • normalizeConfigToObject(config) -> RestorationConfig
    When given the name of a named restoration configuration, resolves it.
    When given a restoration configuration object, returns it unchanged.
    This function does not observe the namedApplicationFunctions property.
  • makeApplyFromConfiguration(config) -> Function(bookmark, saveData)
    Creates a bookmark application function from a restoration configuration.
    The config parameter can be either a configuration's name or a configuration object.
    This function does not observe the namedApplicationFunctions property.

Limitations

Setting and restoring bookmarks is disabled while in combat and when manual saving is otherwise deactivated, to avoid likely sources of glitches.

The screen will fade across black when a bookmark is restored, similarly to a map transition. (The fade-out does not occur if the reload is triggered while the menu is open, though this is usually only possible using JavaScript.) Map events should still resume where they left off.

Without additional JavaScript, whether map event self switches are restored can only be configured globally and on a map-by-map basis (via map editor-name tags), not per event. This is because more detailed map data usually isn't loaded into memory, except for the current map.

Compatibility Notes

This plugin was tested on RPG Maker MV 1.6.2, uses only the public RPG Maker API as far as possible, and does not use any platform-specific APIs.

This plugin should be compatible with any deployment target available for RPG Maker MV, including web and most custom ones.*

Bookmarks is mindful of other plugins and should, regardless of load order, restore bookmarked states cleanly. Please tell me about cases where this isn't the case and I'll see what I can do.

If unexpected data attached as additional properties to the bookmark is detected during bookmark restoration, a warning is logged. This usually happens when a plugin persists some data by itself.
Bookmarks can't decide whether to restore this data on its own, so it should be either added to "Additional properties to restore..." or "Unexpected properties to ignore..." (at the very bottom of the respective bookmark restoration configuration in the plugin parameters).

If a plugin modifies how save-data is shaped, this can lead to partial incompatibility with Bookmarks's algorithm. In some cases it's enough to erase the name- or note-tags for that data from the configuration, as it will cause Bookmarks to use a coarser. more robust algorithm.

If the above isn't enough, then deactivate the built-in restoration for the relevant section and add it to "Additional properties to restore..." to restore it in one piece. Use the logBookmark command (and the F12 console) or this plugin's source code to find the relevant property name(s).
(Alternatively, you can use JavaScript to restore the data more precisely than with the "Additional properties to restore..." list.)

* If you develop on Windows and deploy for Linux, you must first update the NW.js runtime in the nwjs-lnx folder to at least version 0.29.4 (to match other targets, but ideally use the newest stable version)! You can find more information and a tutorial for this here. It's fast, easy, and also fixes many other problems for your players.

Compatibility Plugin API

Plugins loaded after Bookmarks can override TS_Bookmarks.makeApplyFromConfiguration to restore compatibility, whether using this plugin's parameters or their own. To achieve this, they should pass a modified deep copy (use JsonEx.makeDeepCopy(object)) of the original function that has the problematic options turned off.

You should generate the original application function using the modified configuration copy first, outside of *your* generated application function, and then apply it inside, then make further modifications to the save data there as necessary. (Bookmarks by default does not cache application functions for configurations, so they will be regenerated as necessary.)

(Bookmarks by default does not cache application functions for configurations, so they will be regenerated as necessary.)

StatusReleased
CategoryAssets
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorTamschi
Made withRPG Maker
Tagsplugin, RPG Maker, Time Travel
Average sessionA few minutes
LanguagesEnglish
InputsKeyboard, Mouse
LinksImprint / Impressum, Support

Purchase

Buy Now$20.00 USD or more

In order to download this RPG Maker MV plugin you must purchase it at or above the minimum price of $20 USD. You will get access to the following files:

TS_Bookmarks.js 78 kB
Version 1.3.7

Development log

View all posts

Leave a comment

Log in with itch.io to leave a comment.