How to Create a Custom Menu in RPG Maker MZ: A Complete Tutorial

RPG Maker MZ gives developers more control over game UI than any previous version in the series — and the menu system is one of the most visible places to exercise that control. Whether you want a sleek modern interface, a thematic fantasy scroll, or a completely rethought navigation structure, understanding how MZ handles menus is the first step toward building something that feels uniquely yours.

What the Default Menu System Actually Is

Before customizing anything, it helps to know what you're working with. RPG Maker MZ's menu is built on a JavaScript/HTML5 architecture using the PIXI.js rendering engine. The core menu logic lives in the game's js/rmmz_windows.js and js/rmmz_scenes.js files.

The default menu is composed of layered objects:

  • Scene_Menu — the overall scene controller
  • Window_MenuCommand — the command list (Items, Skills, Save, etc.)
  • Window_MenuStatus — the character status display
  • Window_Gold — the gold display window

Each of these is a class that can be overridden, extended, or replaced entirely. This modular design is intentional — it's the official pathway to customization.

Two Core Approaches: Plugins vs. Direct Scripting

There's a meaningful fork in the road when you start this process, and which path suits you depends heavily on your JavaScript experience.

Using Plugins (Recommended for Most Developers)

The MZ ecosystem has mature plugin support. Community-developed plugins like VisuStella's MenuCore and Yanfly-compatible ports let you reconfigure menu layouts, add custom commands, restyle windows, and change character display formats — often with zero code changes, using plugin parameters alone.

To add a plugin:

  1. Download the .js plugin file
  2. Place it in your project's js/plugins/ folder
  3. Open the Plugin Manager in the editor (Tools → Plugin Manager)
  4. Click an empty row, select the plugin, and configure its parameters
  5. Save and playtest

Plugin parameters typically let you set things like window positions, sizes, font styles, and command visibility — all without touching raw code.

Direct JavaScript Customization

For developers comfortable with JS, you can write a custom plugin or edit scene files directly. The standard pattern is to extend existing classes rather than rewrite them, which keeps your changes portable and conflict-resistant.

A basic example — repositioning the command window: