Skip to content

Repository files navigation

RPG Reactor

RPG Reactor is an open-source, cross-platform RPG game editor and runtime for RPG Maker MV/MZ-compatible projects. RPG Reactor provides its own modern runtime, PixiJS 8 for 2D and Three.js for HD-2D/3D maps, while preserving compatibility with RPG Maker project data and targeting backwards compatibility with both RPG Maker MZ and MV plugins, including mixing plugins from both engines within a single project through complementary MZ and MV compatibility layers.

Use RPG Reactor to create, edit, playtest, and package 2D RPGs with familiar RPG Maker-style maps, events, database records, plugins, and deployment workflows, without depending on the original RPG Maker runtime or editor.

Pre-built download binaries are available at https://psychronic.itch.io/rpg-reactor. The latest tagged source release is 0.98.8.

What's new in 0.98.8

  • Import older games: File › Import Project turns an RPG Maker 2000, 2003, XP, VX or VX Ace game into a new Reactor project, the original untouched: maps, events, database, graphics, audio and fonts, each engine's rules, Ruby script calls and formulas translated, and over 110 published scripts ported as plugins.
  • Your own screens: Items, Skills, Equipment, Shop and Name Input as screens you design, a battle HUD of your own (faces, meters, states, sliding windows, a target cursor), custom battle commands and Text Input fields.
  • Move in 3D: jump, gravity and fall damage you set, swimming and diving, ladders, ragdoll falls, rigged characters that walk, jump, swim and climb on their own, and a Controls page for every key and button.
  • Build and place: structures built on their own plot and stamped anywhere, floor plans, flat roofs, 3D models in the Build bar with all handles at once, right-click Copy/Paste/Duplicate, resizable stairs and ladders, events of any size, and liquids from water to lava.
  • Chrome and mirrors: reflective surfaces for models and built pieces, sharp mirrors that show the party near or far, mirror water, and battles that reflect and cast shadows like the map.

Read the 0.98.8 release notes for details. Everything here is opt-in; a 2D project stays a 2D project until a map is switched to 3D. Earlier updates remain in the changelog and devlog archive.

Repository Layout

RPGReactor/
├── editor/   # RPG Reactor editor app source
├── runtime/  # Game runtime corescript copied into new projects
├── template/Demo/ # Bundled Reactor One starter project
├── docs/     # Maintainer workflows and project notes
├── RPGReactor.sh / .bat / .command
├── CHANGELOG.md  # Index; one file per release in changelog/
├── LICENSE
└── README.md

Documentation

  • Editor README: detailed feature list, source launch steps, project structure, shortcuts, and technical notes.
  • Latest release notes: features, fixes, and compatibility limits for 0.98.8.
  • Changelog: upcoming development and previous releases.
  • Current status: the verified state of the tree, runtime defaults, test results, and open work.
  • Authoring a world: where every part of a 3D map lives, which tool edits it by hand, what a generator writes, and what checks it.
  • Battle authoring guide: Battle Rooms, formations, action steps, and supported plugin behavior.
  • Rigging a 3D model: templates, hand markers, and what the runtime reads.
  • Media surface guide: image/video placement, transforms, proportions, and legacy command support.
  • Custom user interfaces design: the User Interfaces database section, its runtime, how it stays invisible to RPG Maker, twelve opt-in stock-scene replacements, the Battle HUD, and what stays stock.
  • 3D worlds design: the tileset-class and facing model behind HD-2D maps, with its phasing table marked to what shipped.
  • 3D objects on the map: how painted object groupings and tileset 3D classes build the HD-2D world.
  • Importing an RPG Maker 2000/2003 project: File › Import Project… makes a new Reactor project from an old one; what converts and what the format cannot hold.
  • Handoff notes: dated engineering notes for the current and last cycle; older cycles are archived.
  • Documentation index: every guide, the release history, and the archive of dated audits and reports.
  • Release checklist: exact maintainer commands for source publication, signed release candidates, GitHub attachments, and optional itch.io publication.

Feature Overview

  • Full RPG Maker-style editor: map editing with four tile layers, autotiles, shadow pen, and region painting; a visual event editor with 100+ commands, multi-page events, every MZ Conditional Branch form in RPG Maker's own four-tab layout (plus a Reactor tab for keyboard, mouse, wheel and pointer conditions), collapsible block structures with persisted fold state, Show Text edited as a whole run of message boxes with RPG Maker's text-code menu and a windowskin-accurate preview, and optional advanced expressions, loops, input conditions, event calls, and picture controls beyond the stock MV/MZ editors; a database where any entry can list what references it, descriptions and battle messages carry the text codes their windows honour, enemies have their own Max TP and can require states the user or target lacks, Add State can set its own duration, and Grow reaches Max TP or a random range; complete database editors with dense Types and Terms workspaces; a multi-channel audio player; and multi-instance editing with a cross-window typed clipboard. Drawing, layer, Undo/Redo, Audio, Database, Plugin, Resource Manager, and Forge actions share a high-contrast blue/cyan/gold SVG toolbar language; the Fill action is a pouring paint bucket and the Shadow Pen visibly lays a dark stroke.
  • Project-wide Resource Manager: browse locale-sorted nested MZ/Reactor image, audio, effect, movie, font, icon, and 3D assets; preview media and orbit/zoom models through Reactor3D; batch-import safely on desktop; multi-select nested exports with Ctrl/Cmd or Shift; export decrypted bytes from encrypted projects; and delete only after path, project-lock, and symlink checks. The 3D category does not delete or merge existing models, but desktop users can import one validated GLB/OBJ/FBX/STL/USDZ/3MF/DXF into a new user-named 3d/<folder>/ containing source/ and an empty textures/; .blend must first be exported. Publication is staged, destination-reserved, ownership-checked, and rolled back on failure. Web mutation is intentionally disabled.
  • Native Media Surfaces: place images and videos through the map toolbar or Show, Transform, and Stop Media Surface event commands. Attach them to the screen, map, player, events, or model parts; edit position, elevation, rotation, scale, corners, opacity, scanlines, and playback settings. Visual arrows, rings, sliders, and source-proportion controls support placement in 2D and 3D. Existing Video Surface commands remain supported. See the media surface guide for rendering and preview behavior.
  • Modern PIXI 8 + Three.js runtime: the game runtime (runtime/) is a fully migrated PIXI v8 corescript. Tilemaps, UltraMode7, Effekseer particle effects, video, and shaders all run on current PixiJS instead of the legacy renderer RPG Maker ships, and 3D maps, models, rooms, cameras and in-scene effects are drawn by Three.js (r185) sharing the same canvas.
  • Authorable HD-2D maps and a 3D world builder: maps can opt into a perspective 3D presentation while retaining RPG Maker's grid, passability, events, and data format. Map Properties carries the 3D switch, a room (parallax floor, walls, ceiling, sky) and the camera. A Build bar over the 3D view lays walls, floors, doors, windows, stairs, roofs, shapes and saved buildings with a snapping ghost, terrain brushes shape rolling ground, water is poured into hollows, and the party walks inside: roofs cut away, walls between the camera and the party go see-through, and stairs lead to a second floor. Buildings are plans in 3d/Structures, readable JSON that an editor page, a validator and a shell command all understand.
  • Model optimization: GLB import can cap textures at 2K, pack skin weights, reduce geometry, and reorder triangles for the GPU vertex cache. The 3D database also offers Optimize for existing models and reports geometry, materials, textures, and rig costs. Both presets can change geometry; aggressive reduction targets fewer triangles. Separate distance-level file generation is disabled in both presets, while the runtime still supports existing authored LOD files. World rendering defaults to game resolution with nearest enlargement and no MSAA; adaptive resolution is opt-in.
  • Quests and BGM sequences: author quests in the database, import VisuStella/Yanfly/GS definitions, and manage objectives through events. Quest progress saves with the game, rewards can give gold, items, EXP or a common event, and the tracked quest shows on the map. Map BGM sequences repeat ordered track, silence, and palette entries; palette layers choose tracks from random pools with timing and fade controls. Native track loop points are ignored inside a sequence.
  • Custom user interfaces: a User Interfaces database section lays out menus, dialogs, panels, and HUDs with Box, Image, Text, Button, Gauge, Text Input, and typed List nodes. The canvas-first editor uses explicit Back -> Front Layers with subtree reorder/reparent, a compact searchable Use As control, responsive Inspector placement, and an optional Game Reference tray whose imports are always explicit. Named List contexts and actor bindings drive actor identity, profile, resources, EXP, parameters, equipment, states, inventory, Options, and save data. Twelve stock screens (Title, Main Menu, Status, Game End, Options, Save, Load, Items, Skills, Equipment, Shop, Name Input) and a Battle HUD have generated baselines and a Stock Layout starting point, and each is replaced only when a project opts in; invalid records fall back to stock. Lists chain through contexts (a category list filters the items, a slot list the equipment candidates), a Text Input field takes typed passwords or commands for in-game terminals, and a Battle HUD dresses every battle the way MOG's battle HUD does: a party panel with face reactions, ATB and a turn marker, the stock battle windows placed and following the active actor, and a target cursor. A standalone RPG Maker MZ plugin is not shipped and is explicitly deferred; custom interfaces currently run through RPG Reactor. See the design for behavior and boundaries.
  • MZ + MV plugin compatibility: complementary MZ and MV compatibility layers let existing RPG Maker plugins run unmodified on the new runtime, including mixing plugins from both engines in a single project. Stock MV/YEP LZString saves, MOG interfaces, video parallaxes, and custom local/browser save keys are supported. Validated against a large commercial MV game running a 168-plugin stack (Yanfly, Victor Engine, MOG, SRD, and the LeTBS tactical battle system), and against a commercial MZ project running 143 active plugins including 41 VisuStella ones, an event-driven title scene, and third-party tilemap and billboard plugins that add layers of their own.
  • Resilient resource loading: the runtime watchdogs every database, image, and audio load from its own frame tick. Silently-dying requests (slow disks, cloud-synced folders) retry automatically, and genuinely missing files degrade gracefully with a clear console error instead of hanging the game on a black screen. Converted image consumers can load PNG/APNG, JPG/JPEG, WebP, safe SVG, or GIF; explicit modern extensions are preserved, extensionless RPG Maker names still resolve as PNG, legacy <name>.<ext>.png fallbacks remain readable, encrypted MIME types stay correct, and animated GIF textures refresh while visible. Format-sensitive tilesets, plugin-parameter image fields, database actor/list thumbnails, Reactor UI character/face/party-face/System/Title/Icon sources, balloon sheets, and other fixed system sheets such as IconSet retain their PNG-oriented contracts.
  • The Forge, in-editor asset generators:
    • Animation Generator: 76 procedural 2D animations across four categories, including Portal, with layered composition, per-layer keyframe timelines, a 3D shape pipeline, custom textures, and export to bake-ready sprite sheets or animated GIFs.
    • Effekseer Animation Generator: create native Effekseer particle effects (.efkefc) from 106 recipes across nine categories without the external Effekseer editor: 21 sci-fi interface instruments with user-typed text, physical battle hits, 15 energy recipes, elements, a custom-effect Composer, and more; wireframe or solid-textured rendering with custom texture upload; layers, keyframes with texture cross-fades, live in-editor preview through the game's own Effekseer runtime, and one-click export. The tracked suite validates generated format/model round trips, every recipe at default/extreme/swept values, composition, and real-WASM playback.
    • Character Generator: bundled Psychronic and Looseleaf styles plus procedural Outfit Forge and Hair Forge tools that generate RPG Maker-style walking-sheet parts, with live 4-direction walk previews, multiple hair styles, palette systems, and save-to-library output. Psychronic remains the default style.
    • Sound Effect Generator: procedural sfxr-style sound design on Web Audio, baked to 16-bit WAV in the project's audio/se/. 29 archetypes across RPG SFX and tuned instruments, six waveforms including a physically modelled Karplus-Strong pluck, 27 parameters, live waveform/envelope/pitch visualizers, and a 16-step sequencer for jingles and stingers.
  • Build & deploy: one-click isolated playtests; cross-platform game packaging for Windows, macOS, Linux, and Web; optional Linux AppImages for games and the editor; configurable NW.js releases and runtime locales; optional staged PNG/audio optimization; and an editor distribution builder with SHA-256 checksums. Eligible full desktop packages default to an exact-NW.js-version H.264/AAC codec overlay verified by a trusted archive hash plus extracted-binary validation; users can disable it, and Web/Minimal packages never include it. Every overlay carries machine-readable provenance, recorded archive/binary hashes, the complete LGPL text, corresponding-source/build references, and a patent notice.
  • Source-audited 18-language localization across editor-generated interface text, with locale-key and placeholder validation, Arabic right-to-left direction, and project-authored game content deliberately left untouched; plus a theme system with multiple color palettes in light and dark modes.

Development Launchers

The root launcher scripts are for opening RPG Reactor from a source checkout while developing or testing the app. They are not the final packaged game/editor executables; they start the editor through a local NW.js runtime that you download separately.

File Platform Purpose
RPGReactor.sh Linux Opens the editor with nwjs-linux/nw
RPGReactor.bat Windows Opens the editor with nwjs-win/nw.exe
RPGReactor.command macOS Opens the editor with nwjs-mac/nwjs.app

Each script looks for the matching nwjs-* folder at the repository root or inside editor/, then launches the app from editor/.

Run From Source

RPG Reactor runs as an NW.js desktop app. Source development and release tooling require Node.js 22 or newer. Source checkouts include the bundled Reactor One Demo, but do not include NW.js platform binaries, node_modules/, build output, saves, or other local project templates.

  1. Clone the repository:
git clone https://github.com/Psychronic-Games/RPGReactor.git
cd RPGReactor
  1. Install the editor dependency:
cd editor
npm ci
cd ..
  1. Download NW.js for your platform from https://dl.nwjs.io/. Use the normal or SDK build for your OS and CPU architecture.

  2. Extract NW.js and rename/place the extracted folder at the repository root:

RPGReactor/
├── editor/
├── runtime/
├── nwjs-linux/   # Linux: contains the nw executable
├── nwjs-win/     # Windows: contains nw.exe
└── nwjs-mac/     # macOS: contains nwjs.app

You can also place the same nwjs-* folder inside editor/; the launchers check both locations.

  1. Launch RPG Reactor:
# Linux
chmod +x RPGReactor.sh
./RPGReactor.sh

# Windows
RPGReactor.bat

# macOS
chmod +x RPGReactor.command
./RPGReactor.command

For direct NW.js launch during development:

cd editor
../nwjs-linux/nw .

Tests

cd editor
npm test

GitHub Actions runs syntax checks, the full Node suite, dependency audit, patch hygiene, and clean-checkout checks. The suite covers editor data round trips, runtime compatibility, rendering contracts, save safety, localization, generators, deployment, and release infrastructure. On 2026-09-04, local working-tree validation completed with 3885 passing tests, zero failures or skips. This was not a clean release run. Separate CI GUI smokes cover Web persistence and NW.js saves; the UI-layout smoke is an additional local gate. See current status for verification limits and the release checklist for checks still required on release hardware.

Trusted Projects

Treat an RPG project like source code. Project plugins and project-local Character Generator JavaScript execute inside the Node-enabled desktop editor/runtime and can access the local machine. Only open or run projects and plugins from sources you trust; inspect downloaded project code before using it. The browser editor has a narrower host, but projects may still execute game/plugin JavaScript during playtest and interface capture.

Bundled Demo Limitations

Reactor One is a starter and compatibility showcase, not a content-complete game. Original replacement art is still being authored for several actors and every enemy battler, so some records name character and side-view sheets that are not shipped; every sound the Demo names exists on disk. The maintained inventory is in docs/demo-missing-se.md; these gaps do not indicate missing editor/runtime files.

Runtime

The runtime/ folder contains the player-facing corescript (reactor_*.js) and runtime libraries. The editor copies this folder into newly created game projects under js/.

License

RPG Reactor-owned code is licensed under the MIT License in LICENSE. Bundled third-party components remain under their respective licenses; see THIRD_PARTY_NOTICES.md. No single license is asserted for third-party files or user/project content.

Cutting a Source Release

cut-release.cjs is the canonical source-release path. Run it from a clean main worktree after all 0.98.8 changes have been committed:

node editor/build-scripts/cut-release.cjs 0.98.8 --dry-run
node editor/build-scripts/cut-release.cjs 0.98.8

The command runs the complete editor test suite, finalizes both changelog headings with the release date, updates editor/package.json, the root README release link and its recognized validation-count sentence, creates a release commit when those surfaces changed, creates an annotated v0.98.8 tag, and pushes the branch and tag. The tag push starts publish-release.yml, which creates or updates the GitHub source release using that version's root changelog section. --no-push stops after creating the tag. Other version prose, validation dates, the editor README, and the status summary need a separate review; the script does not refresh them.

The push uses the repository's configured GitHub authentication. Setting GITHUB_TOKEN or GH_TOKEN also lets the script create the release directly; without one, the tag-triggered workflow remains the publication mechanism. To retry source publication for an existing tag, dispatch Publish Release in GitHub Actions with the version. Do not move or force-push a published tag.

Signed binaries are a separate, gated process. release-candidate.yml builds and signs the four platform candidates, then release.yml verifies and attaches those exact bytes to the existing source release and can publish the same bytes to itch.io. Follow the release checklist for that process.

About

Open-source, cross-platform RPG editor and modern PIXI 8 + Three.js runtime for RPG Maker MV/MZ-compatible projects: map/event/database editing, MZ+MV plugin compatibility layers, in-editor asset Forges (animations, Effekseer effects, characters), and one-click cross-platform deployment.

Topics

Resources

Stars

31 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages