A downloadable RPG Maker MV plugin
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.
- When a command fails, it throws an Error instead of returning
- 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).
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.
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):
This plugin's parameters, with trailing `_` stripped from property names.
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.
Ensures the named bookmark doesn't exist.
- restoreBookmark(name, how?)
- 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.
Setting and restoring bookmarks is disabled while in combat and when manual saving is otherwise deactivated, to avoid likely sources of glitches.
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 robus 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).
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.)
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:
- Version 1.2.6 / Performance PolishAug 19, 2022
- Version 1.2.5 / Save DirectoryAug 17, 2022
- Version 1.2.4 / Equipment FixAug 12, 2022
- Version 1.2.3 / Save CompatibilityAug 08, 2022
- Version 1.2.2 / Bugfix and Compatibility ConvenienceAug 08, 2022
- Version 1.1.0 / Version 1.1.1Aug 02, 2022
- Version 1.0.0 / Public LaunchJul 29, 2022
- 1.0.0-beta.1 (small bugfix and default revision)Jul 27, 2022
Leave a comment
Log in with itch.io to leave a comment.