Skip to content

Doodle Engine

Build story-driven RPGs and adventure games.

Doodle Engine is built for text-driven RPGs and narrative adventure games where dialogue and world state are the core mechanics.

It emphasizes story, choices, and systemic narrative flow rather than movement, combat, or pathfinding.

The engine is written in TypeScript and designed to be ruleset-agnostic, giving writers and programmers a flexible foundation for story-heavy games.

Its scripting model draws inspiration from Infinity Engine titles such as Baldur’s Gate I and II, Icewind Dale, and Planescape: Torment.


Dialogue System

Branching conversations with speakers, choices, conditions, and effects in a readable script format.

World Content

Define locations, characters, items, quests, journal entries, and maps in YAML.

Conditions and Dice

Control flow using flags, variables, items, quest stages, relationships, time of day, and rolls.

Localization

Use translation keys and add languages by creating locale files.

Narrative Interludes

Full-screen text sequences for chapter introductions, dreams, flashbacks, and story moments.

Validation

Catch broken references, missing nodes, and invalid conditions before running the game.

Start writing your first game →


Framework-Agnostic Core

Core engine written in TypeScript with no UI dependencies. Integrate with any renderer or frontend framework.

Predictable State Flow

Actions produce snapshots. Renderers display snapshots. State moves in one direction.

React Renderer

Components for dialogue, choices, inventory, journal, map, and characters, plus a full game shell.

Audio and Video

Music playback, sound effects, voice lines, UI sounds, and video cutscenes.

Asset Preloading

Images and audio load before render to prevent issues like character portrait pop-ins and audio delays.

Dev Tools

Console tools for inspecting state, setting flags, teleporting, and triggering dialogues.

CLI

Project scaffolding, dev server with hot reload, production builds, and content validation.

Learn the architecture →


The engine core does not assume a UI or save backend. Renderers, shells, and persistence layers can be replaced or extended.

Effects and conditions compose cleanly. Combine them in dialogue to implement mechanics such as reputation systems, skill checks, crafting, or shops without modifying the engine core.

Read the extending guide →