Open Quest Format

An open standard for game quests: jack a quest in once as plain files, and carry it to any engine you like.

Maker

TypeScript React pnpm Vitest

No megacorp owns your content

Pick a quest plugin and you just bought a wall. The Unity asset works in Unity, the Unreal data table works in Unreal, and the day you switch engines or the maintainer flatlines, your quests are locked behind somebody else’s ICE. Open Quest Format (OQF) is a published spec, not a plugin: Apache 2.0 licensed, versioned, with a reference parser, validator and runtime any choom can implement.

Quests become plain files in your repo. Diffable in git, readable without booting an editor, and portable to any engine that packs a loader.

What it models

  • Steps in a graph, each with data-driven unlock, complete and fail transitions
  • Objectives as world events: a merc flatlined, an item scavved, a place reached
  • Conditions in a small, non-Turing-complete language, so tooling can prove a quest is completable
  • Rewards per step and per ending, multiple named outcomes, and runtime state as a small versioned document
  • Dialogue as a sibling model, with Ink and Yarn Spinner import and export

Lean chrome, on purpose

The native format is line-oriented and interned: repeated actors, locations and items get declared once and referenced by index, no closing braces, no repeated keys. It streams in one pass, reads clean in a diff, and burns a fraction of the tokens the equivalent JSON would when you feed a questline to a model. JSON stays a first-class output with a published schema.

The rig

TypeScript monorepo on pnpm workspaces, Node 24+, ESM only, tested with Vitest. Packages cover the core model and validator, an engine-agnostic runtime, dialogue, i18n, a CLI, and a React web editor (npx @oqf/editor). Version 0.1.0 with the format frozen at OQF1. Engine exporters for Godot, Unity and Unreal are slated for v1.5, and Cozy Coast is lined up as the first game to run on it.

Let's link up, choom.

Always down to trade notes, talk shop, or just ping. The net is the fastest way to reach me.

Ping me