Skip to content
dazacodePublic

About

A modern runtime and modding toolkit for OMORI: play your own copy in the browser, with a mod loader, map & event compiler, checkpoints and story-route tools. No game files included.

Topics

Resources

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Repository files navigation

OpenOMORI: a modern runtime and modding toolkit for OMORI

CI License: MIT Status: early Runs on Bun

OpenOMORI runs your own copy of OMORI in a web browser and gives it a modern modding toolkit. The original game is left exactly as it is; OpenOMORI replaces the desktop runtime around it and adds the tooling the game never had: a mod loader with profiles, a compiler that builds new maps and events from a short text file, checkpoints, and a map of how the game tracks its story and routes.

Early stage. It works (the title screen, new games, maps, dialogue and the tooling below are covered by automated browser tests), but it has only been tested on one game build, on Windows, in Chrome. See Status.

You need to own OMORI. This repository contains no game files, no game art and no decryption keys. On first run it asks you where your copy is and reads everything from there. The only OMORI artwork in this repo is the game's small app icon, used to identify the game (legal note).

Why this exists

OMORI is built with RPG Maker MV, so modding it has meant hand-editing encrypted data in RPG Maker with tools that predate modern workflows. OpenOMORI turns that into something you can script, diff, test and share:

  • A mod is a folder (or a zip) of plain files. JSON patches, YAML dialogue, scripts and images; the loader decrypts, patches and re-encrypts in memory. Nothing in your install is ever modified.
  • New maps and events come from a short spec, not an editor. An AI agent or a person can write them, and the compiler checks them.
  • Every change is testable. Snapshot the whole game, restore it, diff it, or derive a story route from a recorded one, then drive it all from a real-browser test.

Quick start

You need Bun, Chrome (or another Chromium browser) and a legitimately obtained copy of OMORI for PC (the folder with OMORI.exe and www/).

git clone https://github.com/dazacode/openomori.git
cd openomori
bun install
bun run start

The first time, it asks for the path to your OMORI folder (you can drag the folder into the terminal) and remembers it in a git-ignored .omori-dir file. Then open http://127.0.0.1:8080/. Start-up takes about 25 seconds, half of it the game's own splash screens.

Prefer not to be asked? Set OMORI_DIR to the folder, or put the project next to a folder named OMORI…. Saves go to your browser's storage, never to the game folder. On Windows you can also double-click start.bat. Problems? See Troubleshooting.

Key What it opens
F10 Settings: key rebinding, fast-forward, render quality, accessibility, mod settings
F9 or ` Debug panel: teleport, switches and variables, items, checkpoints
F8 Mods and profiles
F7 Screenshot
Settings screen with a mod's options Mod manager with profiles Checkpoints grouped by story route
Settings, including options mods add Mods and profiles Checkpoints by story route

What you get

The port

  • Runs the stock game in the browser by shimming the NW.js and Node APIs it expects (file system on HTTP and IndexedDB, AES decryption, Steam initialisation), so the game's own code and data run unchanged.
  • Widescreen map view, smoother scaling at 1x to 4x, fast-forward and game speed, key and gamepad rebinding, and accessibility options the game had but never showed.

Modding (full guide)

  • Drag a .zip / .7z / .rar / .tar.gz or a folder onto the game, or work from a dev folder with hot reload.
  • Per-profile saves with automatic backups, so trying a mod never risks your existing saves.
  • JSON Patch and merge patches that fail loudly if the game data changed, a scripting API (OmoriMod) with safe hooks and events, and a mod-settings API.
  • Reads OneLoader v1 mods (partially).

Maps and events without RPG Maker (guide)

{
  "id": 1001, "name": "MY STREET", "size": [34, 12], "tilesFrom": 13,
  "stamps": [{ "from": 13, "rect": [3, 9, 34, 10], "at": [0, 1] }],
  "events": [
    { "name": "Guide", "x": 12, "y": 6, "sprite": "FA_KEL",
      "do": [{ "say": "This map has no RPG Maker in it." }] },
    { "name": "Exit", "x": 32, "y": 6, "trigger": "touch",
      "do": [{ "transfer": { "map": 13, "x": 11, "y": 10 } }] }
  ]
}

bun run mod map build my-mod compiles that into the Tiled map, RPG Maker event data, dialogue file and map registration the game reads, and warns about mistakes (unreachable doors, unknown sprites, bad transfers). Stamp tiles from the game's own maps, paint your own tileset, or edit an existing map in place.

Checkpoints and routes (how the story works)

  • Snapshot the whole running game (about 30 KB, gzipped), diff it against another moment, restore it with an automatic undo.
  • Optionally record a checkpoint the first time each story event happens, then see which beats you have covered, grouped by route.
  • compare two checkpoints to get the exact flag differences between routes, and forge a new checkpoint from a patch, so a route can be recreated without replaying it. Ship checkpoints inside a mod.
  • How the game tracks its story was researched from the game's data and is regenerated from your install with bun run mod routes.

Examples (in examples/): hello-mod (patches and scripts), story-demo (a full new map), edit-demo (edit a game map), and newgame-plus, a New Game+ mod built only on the public API.

Make a mod in two minutes

bun run mod dump                 # decrypt YOUR install into ./dump (git-ignored) so you can read and search it
bun run mod find "COLD STEAK"    # find things by name
bun run mod new my-mod           # scaffold mods/my-mod
bun run mod check my-mod         # validate it and dry-run every edit against the real game files
bun run mod pack my-mod          # my-mod.zip, ready to share

Open the game with ?hot=1 to reload whenever you save a file; every mod and game error lands in latest.log with the mod's name.

Documentation

docs/MODDING.md Everything for mod authors: layout, patches, scripts API, settings, the map/event compiler, checkpoints, compatibility
docs/STORY-MODEL.md How OMORI tracks story progress and routes, and how to manage routes with checkpoints
docs/ARCHITECTURE.md How the port works: the shims, encryption, service worker, the mod engine
docs/TROUBLESHOOTING.md Game folder, key, ports, saves, tests
CONTRIBUTING.md Setup, tests, and the rules for contributions
types/omori-mod.d.ts TypeScript types for the OmoriMod API

Status

Works and is tested: the title screen, starting a game, map scenes, dialogue and event scripting, the settings screen, the mod loader (zips, folders, profiles, errors), map and event compilation, checkpoints, routes and the examples. bun run test runs the unit tests and then drives a real Chrome through each of those.

Played by hand: up to the first stage of the game (proof); nothing later has been played through.

Known limits

  • Tested only with the Steam build v1.0.8, on Windows, in Chrome. Other builds, browsers and platforms are untested.
  • Battles, long play sessions and audio have not been tested. Touch and mobile are untested.
  • Maps keep the width they were built with, so resizing the window letterboxes until the next map change; widescreen can reveal parts of a map not meant to be seen (?wide=0 turns it off).
  • Story-route labels follow the developers' own flag names; the plot itself has not been played end to end through the tooling. See the limits section in STORY-MODEL.
  • OneLoader compatibility is partial and untested against mods from the wild.

Ideas, not promises: a title-screen New Game+ entry, a browser-based first-run folder picker, more event commands in the compiler, more game builds. Issues and pull requests are welcome.

FAQ

Is this legal? The repository contains only original code and documentation. You supply your own copy of the game, nothing is redistributed, and mods are applied in memory on top of your install. It is not a way to play without owning the game.

Does it change my game folder or my Steam saves? No. The server serves your install read-only; saves live in the browser's storage under a profile. Your Steam saves are untouched.

Why does it read my Launch_OMORI.bat? The game decrypts its data with a key its launcher passes on the command line. OpenOMORI reads that key from your own copy at start-up, keeps it in memory and gives it only to the page on 127.0.0.1. It is never stored in this repository.

Why does this project exist? OMORI is built with RPG Maker MV, whose games are HTML5 and JavaScript running inside NW.js. That is why a browser build is possible at all: OMORI is heavily customised (encrypted data formats, dozens of custom plugins, Steam hooks), but it is still the standard MV engine underneath, so replacing the thin desktop layer is enough. OMORI is officially available on Windows and macOS (Steam), Nintendo Switch, Xbox and PlayStation 4 (platform list). There is no official browser, mobile or Linux version and no official modding tools, and we have not found a public statement from OMOCAT about why; we do not speak for them. OpenOMORI exists so people who own the game can run it on more devices and keep it playable as platforms change, and so mods can be made from a short text spec with tests, not by hand-editing in RPG Maker. Until now modding has depended on community loaders (OneLoader, GOMORI) and manual work; this project aims to make it much simpler.

Why was this possible so quickly? Advances in AI. Porting a game like this used to mean learning the engine, modelling how everything inside it fits together, and verifying how it behaves at runtime, which is slow work. With an AI coding assistant doing much of that reading, modelling and checking, the maintainer estimates this took days, where it would otherwise have taken far longer. Speed is not the same as being proven: see the next two answers for what was actually tested by hand.

Was AI used to build this? Yes. This project was built with the help of Claude Code, Anthropic's AI coding assistant, working with the maintainer: much of the code, tests and documentation was written with its assistance. The maintainer directs the project, reviews changes and decides what ships. Commits made with Claude Code carry a Co-Authored-By line. Treat AI-written code like any other code: the automated tests help, but read it before you rely on it, and report anything wrong.

Has it actually been played? By hand, only up to the first stage of the game; the maintainer's play-test is documented here: proof on X. Everything beyond that (later chapters, battles, long sessions, audio and the endings) is covered only by the automated tests and by reading the game's data, not by a full play-through. Story and route tooling in particular is built from the game's data and flag names, not from having played every route. Please report anything that breaks later in the game.

Why Bun? One tool for the dev server, bundler, test runner and TypeScript, with fast start-up.

Sources and further reading

Legal

OpenOMORI is an unofficial fan project. It is not affiliated with, endorsed by or sponsored by OMOCAT, its publisher or anyone else involved with OMORI. OMORI, its characters, artwork, music and name are the property of their respective owners.

docs/assets/omori-icon.png is the game's own app icon, copied from a retail install and used only to identify the game this project works with; the banner and social image are built from it. If a rights holder would like it removed, please open an issue and it will be taken out promptly.

The code and documentation in this repository are released under the MIT License. Third-party libraries keep their own licenses.

About

A modern runtime and modding toolkit for OMORI: play your own copy in the browser, with a mod loader, map & event compiler, checkpoints and story-route tools. No game files included.

Topics

Resources

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages