Interactive text quests powered by a small Forth-like scripting language, a Qt 6 player, and a desktop quest editor.
Language reference: LANGUAGE.md
Sample quests under quests/ are written in Ukrainian; the engine, docs, and
tools use English.
- Stack VM with integers, reals, strings, arrays, and objects
- Scenes, choices, inventory, variables, save/load
- Loops (
BEGIN/UNTIL,BEGIN/WHILE/REPEAT,DO/LOOP), colon definitions - Optional canvas drawing and
DELAY - Qt Quick player with catalog menu
- Qt Widgets editor: highlighting, autocomplete, hover help, breakpoints, step debugger
- Headless tests (
Catch2) andvalidate_questsfor batch compile checks
- C++23 compiler (GCC 13+ / Clang 16+ recommended)
- CMake 3.16+
- Qt 6.2+ (Quick for the player, Widgets for the editor)
- Catch2 is fetched automatically for tests
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="$HOME/Qt/6.x.x/gcc_64" # if Qt is not on the default path
cmake --build build -jTargets:
| Binary | Role |
|---|---|
QuestForth |
Quest player (Qt Quick) |
QuestForthEditor |
Script editor / debugger (Qt Widgets) |
test_engine |
Unit tests |
validate_quests |
Compile-check quest files |
Without Qt, engine tests and validate_quests still build.
./build/QuestForth
./build/QuestForthEditor quests/warmup/01_lost_badge.forth
./build/test_engine
./build/validate_quests questscompiler.* vm.* words.* value.* init.h engine
GameController.* main.cpp main.qml player
editor/ quest editor
quests/ sample scenarios
tests/ Catch2 suite
tools/validate_quests.cpp batch validator
LANGUAGE.md language spec
- Keep engine comments and docs in English.
- Do not add CI auto-deploy workflows unless agreed.
- Quest content may stay in the author’s language; leave existing
quests/*.forthstories intact unless intentionally rewriting them.
GNU GPL v3 — see LICENSE.
Copyright (C) 2026 Ihor Dolinskyi
QuestForth uses Qt. Qt is a trademark of The Qt Company Ltd. and is available under LGPLv3, GPLv3, and commercial licenses. See Qt licensing. Third-party build dependencies (Catch2) — NOTICE.