A downloadable RPG Maker plugin

Buy Now$15.00 USD or more

This is a 2-in-1 plugin.

1. Live Menu

This part allows the map or battle scene to 'continue' running in the background of Scene_MenuBase, whichever can be found higher on the scene stack. (In reality it is quickly reopened, but that should behave about the same.)

Timers can optionally continue to tick down in this state, and Map Events can optionally continue to run (except during scene transitions). Parallel Common Events continue to run unconditionally in live menus.

Updates to the message windows are paused in the menus, so Commands in the "Message" category like "Show Text" or "Show Scrolling Text" wait until the menu is closed again.

To make an Event interrupt open menus, use the "CloseMenu" (MV) or "Close Menu" (MZ) Plugin Command to close menus of any depth as soon as possible.

2. Pause

This part adds a dedicated "pause" function that can be used nearly anywhere during gameplay and in the menus, including video cutscenes, except during scene transitions.
(Where exactly the hotkey is available is configurable, though broad availability is recommended!)

A menu entry to pause the game can also be added, which is recommended not just for touchscreen devices. The game can also be paused using a Plugin Command or JavaScript calls.

The pause screen shows a customisable title, Picture and a command window to continue the game. It stops all Sound Effects and Music Effects, and pauses BGM and BGS in order to resume them when the game is unpaused.

Any volatile state like animating "Show Text" and "Show Scrolling Text" windows or ongoing battle processing is preserved and continues exactly where it left off once unpaused.

Before deploying for Linux on Windows, you must update MV's NW.js runtime.

Hints

  • This plugin pairs very well with Super Tools Engine by SumRndmDde (MV), which allows you to adjust window layouts using the Menu Editor tool.
  • The picture on the pause screen uses the standard Picture mechanism, and as such can be modified and composed dynamically using my Dynamic Pictures plugin.
  • You can also adjust the picture through JavaScript by changing the TS_Live_Menu_and_Pause.parameters.pausePicture… properties, but these changes are not saved or restored alongside the game.
  • All custom classes are exposed in this plugin's JavaScript API and can be modified by other plugins.

Ideas

This plugin is intended mainly for two very different kinds of games:

  1. Immersive casual games. Here, a lightweight menu that doesn't fully pause the game can increase the impression of a living world.
  2. Action games with healing items. A game that continues to run while using the inventory can heighten the intensity of risky situations.
    It could be a good idea to allow certain items to be assigned to hotkeys here, to add a physical planning aspect to encounters that the player enters willingly.

Caution

Please only deactivate the pause functionality of this plugin iff you use a different plugin to provide this feature! Being able to pause the game is an important part of accessibility and general user experience.

Not even Dead Space disallows pausing the game entirely.

Pictures may appear blurry if any of their edge lengths are not a multiple of 2, iff the Center anchor option is used (the default for this plugin).
As such, please ensure that the dimensions of your Picture images are divisible by 2 (or use a plugin) to ensure they are aligned correctly!

Load Order

Load this plugin as late as possible, so that it can set up the pause function with high priority.

If you use plugins that add background elements to the menu, or delay commands in the "Scene Control" category that open menus, you may have to load them after this plugin.

Plugin Parameters

CloseMenu Command

Controls the name of the MV-style "CloseMenu" Plugin Command.
The MZ-style command is unaffected.

This command is available (but likely useless) even when "Install Live Menu?" is set to OFF.

Install Live Menu?

Installs the "Live Menu" half of the plugin. Iff OFF, no associated hooks are applied to engine functions.

Timer Active?

Iff ON, timers will continue to tick down in the menu.

Run Map Events?

Iff ON, modal and parallel Map Events continue to be processed while a menu is open.

Note that parallel Common Events and Troop Pages will be active in live menus regardless of this setting, as long as the background scene would run them outside of the menu.

  • Close Menu for Events?

    Iff ON, closes the *main* menu and nested menus automatically when an Event is running. This is not triggered by parallel or instant Events, and does not affect other menus like shops or the menu from "Open Save Screen".
  • When opening a menu with one of the commands in the Scene Control category, the interpreted enters a new wait mode until the menu is fully closed. While in this wait mode, the interpreter will not interrupt any menus even with "Close Menu for Events?" ON. (See also WAIT_MODE_MENU in the JavaScript API below.)

    Iff ON, the commands in the "Scene Control" category, like Shop Processing, will first force-close any menus (which takes 1 frame if one is open), or else block until they can.

(MZ) Filter Background?

In RPG Maker MZ, this applies this._backgroundFilter (usually a blur) to the live background. This effect is not available in RPG Maker MV as MV's blur function is too inefficient for continuous use.

Compatibility

The parameters in this section are here to help along other plugins that are sensitive to scene nesting, usually because they assume that if a scene exists and is updating, it must be at the top level.

The header itself does nothing, but you can use it to take notes or use its value in another plugin, usually to implement note tags.

  • ._spriteset forwarding?

    Defines Scene_MenuBase.prototype._spriteset to redirect to the same property of the live backdrop scene, while the latter exists.

    This is necessary for plugins that assume SceneManager._scene._spriteset exists also while an inactive Scene_Map or Scene_Battle is running.

    The following plugins are confirmed to do so:

    GALV_MapProjectilesVersion 1.8
  • Scene-Hybridization

    A broad compatibility mode for plugins that use SceneManager._scene.… properties directly from game logic, rather than cleanly updating visuals based on game logic state.

    Try enabling this if you encounter "Cannot read property '…' of undefined" errors related to opening a menu!

    In technical terms, this wraps Scene_MenuBase in a Proxy object that hybridizes it with its live backdrop, exposing the backdrop's properties on the menu scene. There are some performance impact mitigations in place.

    Since this option could cause a slight performance impact and possibly different incompatibilities, it is OFF by default.

    The following plugins reportedly work once this parameter is ON:

    YEP_GridFreeDoodadsv1.10
    YEP_X_ExtDoodadPack1v1.01

Install Pause?

Installs the "Pause" half of the plugin. Iff OFF, no associated hooks are applied to engine functions.

Not even Dead Space prevents pausing, so please keep this ON if possible, unless you use another plugin to provide a pause function!

Pause Command

Controls the name of the MV-style "Pause" Plugin Command.
The MZ-style command is unaffected

Pause Intent

The name of the internal input intent. Required for manual pausing.
Leave this unchanged if there's no problem.

  • in Scenes:

    Controls in which scenes the pause key(s) or gamepad button(s) will be available, but class path.

    The drop-down is organised as a tree because adding a base class here usually also enables the intent in derived scenes. The tree also marks classes only available in RPG Maker MZ and prepends recommended ones with an exclamation mark. These extra characters are stripped when this plugin is loaded.

    You can also specify custom scenes by for example writing TS_Live_Menu_and_Pause.pause.Scene_Pause, though that scene and any scenes derived from it cannot be paused.

    (Scene_Pause pops itself off the scene stack when it observes a triggered pause intent, instead.)
  • Key Codes:

    The key codes to bind to the pause intent, by default the "P" key.
    See https://keyjs.dev/ for other options.

Pause Symbol

The name of the internal menu entry symbol to pause the game.

Required for manual pausing from the menu.
Leave this unchanged if there's no problem.

  • Menu Entry

    The text used for the pause command added to the menu.
    Erase this Plugin Parameter to remove the menu entry.

Picture

The Picture image to show on the pause screen.

The file must be placed in img/pictures/ to be selectable here.

  • Origin, X, Y, Scale X, Scale Y, Opacity, Blend Mode

    Picture settings for the pause screen Picture, analogous to "Show Picture"'s parameters. Uses self-descriptive drop-downs where applicable.

    By default, the pause picture is set to be shown normally, centred and with full opacity.

Title

Static text to show on the pause screen, rendered like the title on the title screen.

Continue Symbol

The name of the internal menu entry symbol to continue the game.

This defaults to 'continue' iff erased, so that removing the menu entry is not possible without JavaScript. You can still hide the menu for example by setting its width to 0 with SumRndmDde's Super Tools Engine (MV).

Leave this unchanged if there's no problem.

  • Menu Entry

    The text used for the continue command added to the pause menu.

Pause SE, Unpause SE

Sound Effects to play when the game is paused or unpaused, respectively.

They support all standard Sound Effect parameters (Volume, Pitch and Pan).

Plugin Commands

All MV-style Plugin Commands provided by this plugin can be renamed or disabled using Plugin Parameters.

CloseMenu (MV) / Close Menu (MZ)

Closes any open menus until a scene that is not a menu is reached.
(This also closes open shops and closes e.g. out of the Equip menu right back to the Map scene in one go.)

This command blocks until the menu is fully closed, which means it always yields at least once if a menu is open.

Iff no menu is open, this Plugin Command completes instantly instead.

Note that "Shop Processing" shops are also menus, so these plugin commands do also exit from such shops.

Pause

Pauses the game if possible, displaying the pause screen. Yields to run the next Commands only after the game is unpaused.

Iff the game currently cannot be paused (e.g. due to an ongoing scene transition), this command blocks instead until it can pause the game.

JavaScript API

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

On it, the following properties are available:

version

Semantic Version-compatible featureLevel and patchLevel information.

I don't reset the patchLevel to 0 when incrementing featureLevel, so that patchLevel alone is enough to determine whether a certain fix is available in each version.

This property is frozen and the object is frozen.

parameters

Parsed plugin parameters, with trailing _ and _files stripped from property keys. Values of string properties (originally with trailing _) are trimmed.

Missing arrays and strings are added as empty, here, unless otherwise noted, and Boolean properties are normalised to true or false.

This property is as parameters is directly captured, but the object is mutable.

closeMenu()

Iff the current scene is derived from Scene_MenuBase, slices all Scene_MenuBase-derived scenes off the top of the scene stack, then pops the current scene.

Note that shops are menus too!

This may be intercepted by Scene_….prototype.popScene hooks, in which case the scene stack is restored and null is returned.

Returns whether a menu was open and is now closing, or null iff prevented.

oldCommand356, oldCommand357, newCommand356, newCommand357

Functions associated with command hooks installed by this plugin, where old… has the original implementation and new… this plugin's.

The hooks are installed with a small trampoline, which means that changes to these properties are effective at the respective position in the call chain.

(The usual way to define plugin commands can't be used here since this plugin's commands may block the Game_Interpreter.)

liveMenu

This frozen property is only created iff the "Live Menu" half of this plugin is enabled. On it, the following nested properties are available:

WAIT_MODE_MENU

A wait mode that a Game_Interpreter enters after executing a command from the Scene Control category that opens a menu screen ("Shop Processing", "Name Input Processing", "Open Menu Screen" or "Open Save Screen").

This wait mode is cleared automatically once outside a menu without a pending scene change. An interpreter in this wait mode won't trigger the "Close Menu for Events?" feature, even if modal. However, a parallel Event can still interrupt the menu with another scene-changing command.

getBackdrop(sceneMenuBase): Scene_Map | Scene_Battle | undefined

Frozen getter that returns the live backdrop of a given Scene_MenuBase instance, iff available.

oldPreloadImportantSounds (deprecated), oldCreateBackground, oldIsReady,
newPreloadImportantSounds (deprecated), newCreateBackground, newIsReady,
oldUpdateChildren, oldUpdateWaitMode, oldGame_TimerUpdate,
newUpdateChildren, newUpdateWaitMode, newGame_TimerUpdate,
oldGame_MapUpdate, oldGame_EventUpdateParallel, oldWindow_MessageUpdate,
newGame_MapUpdate, newGame_EventUpdateParallel, newWindow_MessageUpdate,
oldWindow_ScrollTextUpdate, oldTilemapInitialize, oldTilemapUpdate,
newWindow_ScrollTextUpdate, newTilemapInitialize, newTilemapUpdate,
oldTerminate, oldTriggerAction, oldCommand301, oldCommand302, oldCommand303,
newTerminate, newTriggerAction, newCommand301, newCommand302, newCommand303,
oldCommand351, oldCommand352, oldCommand353, oldCommand354,
newCommand351, newCommand352, newCommand353, newCommand354,
oldCreateMenuButton (MZ-only), newCreateMenuButton (MZ-only)

Functions associated with engine hooks installed by this plugin, where old… has the original implementation and new… this plugin's.

The hooks are installed with a small trampoline, which means that changes to these properties are effective at the respective position in the call chain.

old_spritesetDescriptor, newGet_spriteset, newSet_spriteset

Properties associated with the "._spriteset forwarding?" feature's hooks.

Only available iff that Plugin Parameter is ON.

oldGoto, newGoto

Functions associated with the "Scene-Hybridization?" feature's hooks.

Only available iff that Plugin Parameter is ON.

pause

This frozen property is only created iff the "Pause" half of this plugin is enabled. On it, the following *nested* properties are available:

Scene_Pause (extends Scene_Base),
Sprite_Pause (extends Sprite_Picture),
Window_Pause (extends Window_Command)

Classes that represent new elements of the game UI added by this plugin.

Sprite_Pause is adjusted only slightly to display the pause Picture rather than a numbered one, and to not be nested in a picture container.

pause(): boolean

Attempts to pause the game, and returns true iff successful.

Returns false iff either the game can't be paused at this moment or it is already (being) paused.

isPauseEnabled(): boolean

The return value of this function controls whether to enable to menu item for manual pausing.

To intercept pausing in general programmatically, hook pause() instead!

oldCommand356, oldCommand357, newCommand356, newCommand357

Functions associated with command hooks installed by this plugin half, where old… has the original implementation and new… this plugin's.

The hooks are installed with a small trampoline, which means that changes to these properties are effective at the respective position in the call chain.

(The usual way to define plugin commands can't be used here since this plugin's commands may block the Game_Interpreter.)

oldPreloadImportantSounds, oldAddOriginalCommands, oldCreateCommandWindow,
newPreloadImportantSounds, newAddOriginalCommands, newCreateCommandWindow,
oldChangeScene, oldGoto, oldPush, oldPop, oldRender (MV-only),
newChangeScene, newGoto, newPush, newPop, newRender (MV-only),
oldUpdateFrameCount (MZ-only), oldVideo_onLoad (MZ-only),
newUpdateFrameCount (MZ-only), newVideo_onLoad (MZ-only),
oldVideo_onError (MZ-only), oldVideo_onEnd (MZ-only),
newVideo_onError (MZ-only), newVideo_onEnd (MZ-only),
oldGraphics_onVideoLoad (MV-only), oldGraphics_onVideoError (MV-only),
newGraphics_onVideoLoad (MV-only), newGraphics_onVideoError (MV-only),
oldGraphics_onVideoEnd (MV-only), newGraphics_onVideoEnd (MV-only),
[`old${classPath}Update`], [`new${classPath}Update`]

Functions associated with other engine hooks installed by this plugin half, where old… has the original implementation and new… this plugin's.

The hooks are installed with a small trampoline, which means that changes to these properties are effective at the respective position in the call chain.

The property keys represented by the last two entries in this list are interpolated based on the class paths given in the "in Scenes:" Plugin Parameter. These hooks are used to check the pause input intent.

Save Contents

This plugin does not store any additional save data.

Compatibility Notes

This plugin was tested on RPG Maker MV 1.6.3 and RPG Maker MZ 1.8.0, 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 and MZ, including web and most custom ones.

If you notice issues or glitches in combination with other plugins, please tell me about them, and I'll check if a compatibility tweak is feasible.

YEP_KeyboardConfig may interfere or be incompatible with the pause key binding. In such a case, please remove the keyboard binding here and pause the game via the main menu entry (Adjust the text!), "Pause" plugin command or JavaScript API function instead.

This plugin has been tested and is fully compatible with:

SRD_SuperToolsEngineVersion 1.31
YEP_CoreEnginev1.32
YEP_BattleEngineCorev1.51
VisuMZ_0_CoreEngineVersion 1.80
GALV_MapProjectiles*Version 1.8

* Requires "._spriteset forwarding?" to be ON.

This plugin has been tested and is mostly compatible with:

VisuMZ_1_BattleCore**Version 1.80

** Live Menu and Pause will not use a Scene_Battle as live menu background if VisuMZ_1_BattleCore is detected. In such a case, the background remains static.

For some reason, exiting the Options menu enabled by VisuMZ_1_BattleCore in battle exits the battle entirely if this plugin is active. To use this plugin together with VisuMZ_1_BattleCore, please adjust the following Plugin Parameter:

VisuMZ_1_BattleCore: Party Command Window > Add Options? = Don't

Please note that future compatibility with VisuMZ plugins cannot be guaranteed due to their source code obfuscation.

This plugin is reportedly also compatible with:

YEP_GridFreeDoodads***v1.10
YEP_X_ExtDoodadPack1***v1.01

*** "Scene-Hybridization" required for compatibility. Please enable it in the plugin settings.

Copy of License Grant

(as included in the plugin file, aside from line wrapping)

A license for this plugin can be purchased at https://tamschi.itch.io/live-menu-and-pause .

Once you have purchased it, you may redistribute and sublicense this plugin file as part of games you create. You may not redistribute nor sublicense it separately or as part of an asset- or resource-collection.

You may modify this plugin when including it with your games, as long as the attribution above and this license grant stay intact. If you do so, you must add comments to indicate which changes you made from the original.

Social Media

If you'd like to help me out a bit, I'd hugely appreciate if you could share this page with others who may be interested in this plugin. To make that more convenient, I've created a few social media accounts for updates and announcements:

Announcement on Mastodon (via Elk), Announcement on Bluesky

I'll continue to post all important updates here on itch.io, of course, and the comments below remain the easiest way to reach me if you have any questions or bug reports.

Purchase

Buy Now$15.00 USD or more

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

TS_Live_Menu_and_Pause.js (MV+MZ) 76 kB
Version 1.3.3

Development log

Leave a comment

Log in with itch.io to leave a comment.