v0 · alpha Engine and editor, one app

Build Pokémon games in DS-style 3D.

The Tallgrass engine running the demo project: the player, an NPC and a Snorlax on a grass route, drawn with the DS orthographic camera.

A real frame from the engine running examples/demo. Rust and wgpu: DS orthographic camera, static and skeletally animated glTF, UV-scroll water, tilted billboards with 2.5D sorting, character shadows, screen effects and OGG/WAV audio.

A native engine and a desktop editor for 2.5D Pokémon games. Paint tiles on a grid, sculpt elevation into plateaus and cliffs, drop glTF models and character sprites, wire up RMXP-style events — and script the rest in JavaScript.

The editor draws with the same renderer the game runs on. What you build is what you play.

Get started Source macOS · Windows · Linux
Renderer
Rust · wgpu
Scripting
QuickJS
Shell
Tauri v2
Editor
React · Three.js
Format
JSON folder
The gap

Today you either use a 2004 editor or you edit a ROM.

Both routes are genuinely good at things this project is not, and neither is a modern, 3D, Pokémon-specific tool you fully own. That is the one we are building.

RPG Maker XPPokémon Essentials ROM hackingBinary tools & decomps TallgrassThis project
Foundation RPG Maker XP with Ruby/RGSS A retail ROM, or a decompilation of one An engine you compile yourself
World ~Mature editor, but 2D tilemaps only ~Authentic maps, locked to the original format 3D grid with elevation, cliffs and ramps
Pokémon systems Comprehensive and community-maintained The real thing, exactly as shipped ~Reimplemented in JS; battle still in progress
Changing behaviour Ruby scripts you can edit C or assembly against a fixed binary Plain JavaScript in your project folder
Shipping it ~Windows-first player A patch — players must supply the ROM Native builds for macOS, Windows, Linux

Scroll the table sideways →

Strength ~Works, with caveats Hard limit
Tour

Four screens, one window.

Everything the editor does, shown next to the screen that does it — no round trip to another tool.

3D map editor with tile palette and inspector

Map editor. One WebGL viewport that both edits and previews the real look — pencil, rectangle, fill and eraser with a ghost preview, a Ground/Overlay layer toggle, orbit / pan / zoom-to-cursor, and a start point you set with a right-click. Raise and lower tiles into plateaus with vertical cliffs; the Ramp tool makes walkable slopes, and level height is configurable per tileset.

Database editor showing species, moves and items

Database. Schema-driven editors for species, moves, items, abilities, natures and berries, plus a clickable type-effectiveness chart and a trainers editor, all with sprite and icon previews. New projects arrive seeded with the full Pokédex.

In-app CodeMirror script editor

Scripts. RMXP-style events with pages, conditions, graphics, autonomous movement, triggers and a rich command list, plus map-independent common events. All of it is editable JavaScript in an in-app CodeMirror editor over scripts/*.js, right next to the map you are building.

Tileset manager with passage and terrain tagging

Tilesets. Tag passage, the cliff-face texture and terrain behaviour per tile — ledge, water, waterfall, grass, ice, sand. Per-level collision then falls out of the elevation you paint: cliffs block, ramps connect, and the player follows height.

Moddable

The engine has no rules. You do.

Movement, encounters, evolution, weather and battle all live in a QuickJS layer that ships as plain source in your project. Here is how the real player controller decides what a single step costs — every constant is yours to change.

01

Authorable

Paint maps and place events visually. A basic game needs no programming at all.

02

Moddable

Every system is an overridable JS module. Open it, change it, reload.

03

Faithful to the DS

Behaviour modelled on the real Platinum systems — camera, grid, timings and feel.

04

Content included

A default resource pack — data, sprites, models, audio — so you start with something playable.

scripts/overworld/player.js
// Terrains that make you slide: keep momentum until you exit or bump.
const SLIDE = { ice: true };
// Step-duration multiplier by destination terrain (>1 = slower).
const SPEED = { sand: 1.4, deepsand: 1.7, marsh: 1.6 };
// Terrains that leave a fading ground decal.
const FOOTPRINT = { snow: true, sand: true };

export class Player {
  tryStep(dir) {
    const next = this.cellAhead(dir);
    if (this.map.isLedge(next, dir)) return this.hop(next);
    if (!this.map.passable(next)) return this.bump();

    const terrain = this.map.terrainAt(next);
    this.sliding = !!SLIDE[terrain];
    this.beginStep(next, (SPEED[terrain] ?? 1) * this.stepDuration);

    if (FOOTPRINT[terrain]) engine.addDecal("footprint", next);
  }
}
Roadmap

Nine milestones shipped. Battle is next.

The overworld, the editor and the Pokémon data layer are in. What remains is the battle stack and the polish tools.

9/12 complete

Shipped: the Rust + wgpu engine and DS camera, glTF models and audio, elevation with cliffs and ramps, the map / script / tileset editors, events and common events, the database and type chart, the overworld systems, the Pokémon data layer, and the default resource pack.

Autotiles, designable multi-tile walls, climbable models (stairs, bridges)
In-editor basic model creator
Get started

Clone it, run it, hit Playtest.

New projects are scaffolded with a full playable script tree and the default database. Audio plays in the windowed engine; headless render modes are silent.

Node.js 18+ Rust stable Tauri v2 system deps
Editor — desktop app
$ cd editor
$ npm install
$ npm run tauri dev      # hot reload
$ npm run tauri build    # bundle
Engine — standalone player
$ cd engine
$ cargo build --release
$ cargo run -- --window \
    ../examples/demo

Full contracts live in docs/: FORMAT (project format), SCRIPTING (JS API and runtime), and ARCHITECTURE.

Tallgrass

Make the region you have been sketching since you were ten.

The editor, the engine and the content are all here. Bring the region.