RobOS 2D RPG Engine · Godot 4.3

Descendant of Erdrick,
restore the light.

An NES-authentic 8-bit 2D RPG rebuilt from a declarative Knowledge Graph with 100% clean-room procedural pixel art & chiptune audio, an in-engine autonomous Stride AI, chained Cucumber checkpoint tests, and a headless global pathfinding audit proving every tile, chest, door, shrine, and boss in Alefgard is reachable.

Scroll ↓

The game

The 1986 console RPG classic, engineered as verifiable data

Every map, staircase, locked door, treasure chest, shop inventory, monster stat block, and spell formula lives in typed JSON registries under data/v1/. The Godot 4 engine renders clean-room procedural tilemaps, executes authentic turn-based battles and dungeon darkness radii, and exposes a live HTTP telemetry & AI control server.

29 Connected Maps

Explore the 124×124 Alefgard overworld, 6 towns, Tantegel Castle & Basement, 4-floor Garin's Grave, Mountain Cave, Erdrick's Cave, Swamp Cave, 2 holy shrines, and 8 floors of Charlock Castle.

In-Engine Stride AI

AIEngine.gd plays the game strictly via real player inputs (move_up/down/left/right, ui_accept, cmd_menu), holding continuous multi-tile strides across straightaways.

Player AI vs Enemy AI

Launch with --demo to watch the autonomous Hero AI navigate dungeons, unlock doors, manage HP with Herbs & spells, and battle the Enemy AI without human intervention.

Chained Checkpoints

Cucumber BDD scenarios chain JSON save states from New Game (King Lorik) through finding the Magic Key, unlocking the Throne Room door, descending stairs, and exiting to the World Map.

100% Clean-Room Assets

All 29 map backgrounds, 40 monster sprites, character walk sheets, and 28 chiptune MP3 tracks are synthesized procedurally by tools/recreate_clean_room_assets.py.

Global BFS Audit

A headless Godot pathfinding test walks all 15,227 connected (map, col, row) states from ThroneRoom (3,5) to prove 100% reachability of every chest, relic, and boss.

Autonomous Agent Governance & Map Completeness

Proof of Viability: Global BFS Pathfinding & 20-Slide Tour

In a 29-map RPG with multi-floor dungeon loops, locked doors, overworld bridges, and shrine teleporters, a single off-by-one coordinate in a stair registry or an unwalkable bridge tile can silently make an endgame relic impossible to obtain. RobOS eliminates soft-locks with tests/test_map_completeness.gd — a headless multi-map Breadth-First Search (BFS) verifier that starts at New Game (tantegel-castle-2f @ 3,5) and proves every map, stair, door, chest, and quest milestone is reachable.

29 / 29Maps Reachable (100%)
86 / 86Bidirectional Stairs Verified
40 / 40Treasure Chests Reachable
15,227Walkable (map, col, row) States
RobOS Quest: Warrior Dragon Multi-Map BFS Pathfinding & Completeness Verification Pipeline
Architectural schematic of the Quest: Warrior Dragon global pathfinding & map completeness pipeline: Declarative World Graph Registries ➔ Headless Godot 4 BFS Verifier ➔ 100% Reachability Audit & 20-Slide Interactive Showcase.

Verified Quest Relic & Milestone Shortest Paths from New Game Start

Milestone / RelicMap KeyCoordinateMin BFS StepsShortest Multi-Map Transition RouteStatus
King Lorik Audiencetantegel-castle-2f(3, 5)0tantegel-castle-2f● PASS
Throne Room Magic Keytantegel-castle-2f(6, 5)3tantegel-castle-2f● PASS
Stones of Sunlighttantegel-castle-b1(5, 6)58tantegel-castle-2f → tantegel-castle-1f → tantegel-castle-b1● PASS
Erdrick's Tableterdricks-cave-b2(10, 4)148tantegel-castle-2f → tantegel-castle-1f → world-map → erdricks-cave-b1 → b2● PASS
Princess Gwaelin Rescueswamp-cave-b1(6, 20)172tantegel-castle-2f → tantegel-castle-1f → world-map → swamp-cave-b1● PASS
Fairy Flute (Kol)kol-1f(10, 7)187tantegel-castle-2f → tantegel-castle-1f → world-map → kol-1f● PASS
Staff of Rain Shrinenorthern-cave-b1(4, 5)202tantegel-castle-2f → tantegel-castle-1f → world-map → northern-cave-b1● PASS
Fighter's Ringmountain-cave-b2(3, 3)220tantegel-castle-2f → tantegel-castle-1f → world-map → mountain-cave-b1 → b2● PASS
Erdrick's Armorhauksness-1f(19, 13)233tantegel-castle-2f → tantegel-castle-1f → world-map → hauksness-1f● PASS
Silver Harp (Garin's B4)garinham-b4(6, 1)265tantegel-castle-2f → ... → garinham-1f → b1 → b2 → b3 → garinham-b4● PASS
Rainbow Drop Shrinesouthern-cave-b1(6, 6)284tantegel-castle-2f → ... → swamp-cave-b1 → world-map → southern-cave-b1● PASS
Erdrick's Swordcharlock-castle-b2(6, 6)470... → charlock-castle-1f → b1 → b2 → b3 → b2 → b1 → charlock-castle-b2● PASS
Dragonlord's Altarcharlock-castle-b7(20, 12)560... → charlock-castle-1f → b1 → b2 → b3 → b4 → b5 → b6 → charlock-castle-b7● PASS
The Dragonlord's true form in battle in Charlock
Slide 20 (560 Min Steps): Confronting the Dragonlord's true form in Charlock after verifying all 29 maps and 40 chests.
Throne room with TAKE selected at a chest
Slide 2 (3 Steps): Claiming the Magic Key, Torch, and 120 Gold in King Lorik's Throne Room.
Alefgard overworld outside Tantegel Castle
Slide 5 (39 Steps): Stepping onto the 124×124 Alefgard overworld outside Tantegel Castle.
Ruins of Hauksness
Slide 15 (233 Steps): Navigating the Ruins of Hauksness to claim Erdrick's Armor at (19,13).
Charlock B2: Thou dost find the Erdrick's Sword!
Slide 19 (470 Steps): Discovering Erdrick's Sword in Charlock B2 via the B1-B2-B3-B2-B1-B2 stair loop.

AI Playthrough

Reachable is not beatable — so the engine plays the whole game

The BFS audit proves every tile can be reached. The AI Playthrough proves the game can be won: PlayGameBrain.gd takes over the controller and plays from King Lorik's throne room to the Dragonlord using only real inputs and the IPC state feed, seeking the next entry of a 70-milestone registry (every chest, every purchase, every quest item, every level gate). A Python driver cuts one video and one save checkpoint per milestone, deadlock watchdogs in the brain and in the driver catch hangs, and a GNOME tray icon with a progress ring plus a live dashboard let you follow a two-hour run at a glance. Every bug it hit so far was a game bug.

Game Playthrough live view after the winning run: 74 / 74 milestones and the closing credits
The live view at the end of the winning run: 74 / 74 milestones, level 21, 2,621 battles, 6 deaths.
Milestone card #39 Grind + Buy Broad Sword at Rimuldar with its video and checkpoint: broad_sword, 746 gold
Every finished milestone is a card with its own video and the checkpoint saved after it.
Swamp Cave: Princess Gwaelin asks to be taken back to her father
Milestone #41: Princess Gwaelin rescued at level 11.
Battle spell list with HURT selected against a Druin
From a milestone video: HURT picked from the battle spell list.
Broad Sword is now equipped, Rimuldar
Milestone #39: 1500 gold for the Broad Sword at Rimuldar.
GNOME top bar with the Game Playthrough tray icon and its context menu after the winning run
The tray icon: status, milestones, level, battles, deaths, current objective, stop run, open latest video.

Play & Verify

Run the game, autonomous Demo AI, and headless pathfinding tests

# Launch Quest: Warrior Dragon normally or in Autonomous Demo Mode (Player AI vs Enemy AI)
godot --path games/quest-warrior-dragon
godot --path games/quest-warrior-dragon -- --demo

# Run the Headless Global BFS Map Completeness & Pathfinding Audit (+ generate 20 slideshow screenshots)
python3 games/quest-warrior-dragon/tests/test_map_completeness.py
python3 games/quest-warrior-dragon/tests/test_map_completeness.py --screenshots

# Run the Chained Cucumber Checkpoint E2E Scenarios (Throne Room -> Key -> Door -> Castle 1F -> World Map)
xvfb-run -a behave games/quest-warrior-dragon/tests/e2e/features/king_to_world_map.feature

# Let the robos-jrpg AI play the ENTIRE game as a user would ("play the game" mode: real inputs + IPC state only)
python3 games/quest-warrior-dragon/tests/e2e/play_full_game.py
python3 games/quest-warrior-dragon/tests/e2e/play_full_game.py --stepped   # one video + checkpoint per milestone, tray icon + dashboard

The BFS audit proves every tile is reachable; the AI full-game playthrough proves the game is beatable. PlayGameBrain.gd takes over the controller and seeks the next entry of an ordered milestone registry (data/v1/milestones.json: every weapon and armor purchase, every treasure chest, each quest, the Dragonlord, the ending) from King Lorik's throne room to the credits — no teleports, no stat edits. A Python driver watches over the IPC web service, asserts invariants (never standing on water, HP never negative) and writes a JSON report with a video, a save checkpoint and a screenshot per milestone.