Orion's Labyrinth
Sep 27, 2026
The Concept
Orion's Labyrinth is a game where you move a character through rooms that generate as you walk into them. Every room has an exit on each of its four edges, every exit opens onto a room, and the way back is the way you came, one room at a time.
The concept is endless exploration with a bounded potential, a multiplanar expounded mapping system that gives you infinite generation to explore while retaining a mathematical hard boundary. In the prototype, that means the labyrinth keeps generating rooms for as long as you keep walking, while the choices at every step stay fixed, four ways to choose from the origin room, and from every room after that there are three ways onward and one way back.
You start from scratch and go down whatever path of rooms you choose. When you judge, through luck, skill, and risk, that you've gathered enough gold, you head back to the first room, the origin, where a shop heals you and makes you stronger, and then you go out again. If your health hits zero it's game over, the labyrinth resets and you start again from the first room at the beginning.
In the rooms of Orion's Labyrinth there's gold in chests, and there are enemies that come at you and damage you when they touch you, and the deeper you go the more enemies and treasure you will find. What exists right now is a prototype, example code built to show the concept working.
The Map
The play space is a rooted tree of rooms in which a room is identified by the ordered sequence of exit directions that reaches it from a single root room, the origin, and that sequence is the room's address. The origin holds the empty address, each of its four exits maps to a one-step address, and in every room beyond the origin the exit opposite the arrival edge maps to the address with its last step removed while the remaining three exits map to the address extended by one step each. The branching is therefore four at the root and three at every node after it, and the count of rooms at a given length of address, called depth and written
d, is 4 × 3^(d-1) ,
a recursive expansion that repeats the same three-way split from every room at every level, called here “the snowflake expansion”.
Room content is a deterministic function of the address and a random value fixed each time the labyrinth resets, called the seed, so a room is instantiated on first entry, meaning generated and stored from its address and the seed alone, and is held in memory until the next reset in whatever state the character leaves it. Two addresses that differ in any position instantiate two distinct rooms regardless of the coordinates a flat map would assign them, and every operation in the build reaches a room by its own address alone.
Here's what that means when you're playing. Left-then-up and up-then-left are two different rooms, so every turn you take opens somewhere new. Directionally, on a flat plane surface mapping, those two rooms would logically interconnect into a junction, but in multiplanar dimensionality, you can have two distinct path branch functions.
Play
When the character's position crosses the boundary of any of the room's four exits, the character leaves that room, and that event is a room transition. The character is repositioned at the midpoint of the opposite edge of the destination room, all projectiles in flight are discarded, and the simulation is suspended for a fixed interval during which every entity holds its position, called the transition pause.
In every room beyond the origin, the exit opposite the arrival edge is flagged as the return exit and marked distinctly from the other three. Room state is retained until the next reset, so an enemy whose health has reached zero is flagged as removed and stays removed until then, a chest that has been opened is flagged as opened, and an enemy still alive retains its last position and resumes pursuit on re-entry to the room it occupies, and in this prototype, enemies cannot leave rooms.
Rooms
Each room beyond the origin, the root room, is populated at instantiation with an enemy count and a chest count drawn from the address-seeded random stream and scaled by depth, and each enemy is assigned a health value and a damage value drawn and scaled the same way, while each chest is assigned a gold value drawn and scaled the same way.
An enemy advances toward the character's position at the enemy movement rate, and while the distance between enemy and character is within contact range, health is deducted from the character by the enemy's damage value once per contact interval. A projectile that intersects an enemy deducts the character's shot damage from that enemy's health and is discarded, and an enemy whose health reaches zero is removed. A chest whose position comes within contact range of the character is flagged opened, and its gold value is added to the gold the character carries.
The further out you are, the more enemies a room can hold, the tougher each one is, and the more gold the chests pay. Every rich room out there is a dangerous room, so what you're choosing at every exit is how much risk you're ready for.
The Origin
The origin is the root room of the tree and the sole location at which the gold the character carries can be spent for now. It exposes four purchase operations, restoring health to the maximum, incrementing maximum health by a fixed step, incrementing shot damage by a fixed step, and incrementing the movement speed multiplier by a fixed step, and the price of the restoration and of the first two increments is an increasing function of the attribute affected while the price of the speed increment is constant. Character health is regenerated by the restoration purchase alone, and every purchase persists until the next reset, when it is discarded.
Gold is spent in one place, the first room, so it's a claim you cash in when you get back, and a big pile of gold ten rooms deep is a big pile of walking to do, and if your health runs out on the way back it's game over with the gold still in hand.
Upgrading your character and returning to the origin are one-in-the-same function, so I figured that this would map well to a Boss Progression, NPC’s in the Origin, or otherwise, with big inspiration from “Moonlighter”.
The Loop
Character health reaching zero triggers a reset, in which the character is returned to the origin with health at maximum and attributes at their starting values, the gold carried is set to zero, the address is emptied, the room store is cleared, and a new seed is drawn, so every room beyond the origin is generated fresh on next entry. Before the reset the depth reached, the count of rooms instantiated, and the gold carried are displayed.
Perhaps in the form of the genre of incremental or roguelike games, this concept could be formed to have a legacy component like “Rogue Legacy” where game over or failure could have attributes that are compounded on player run history.
You start from scratch and go down whatever path of rooms you choose, until you decide, through luck, skill, and risk, that you've gained enough treasure, and then you come back to the origin, the shop, to heal and get stronger before venturing out again. If your health hits zero out there it's game over, the labyrinth resets and you're back at the origin at the beginning.
These mechanics leave the player and the designer open-ended possibilities in play and in design, and venturing out could lead to a boss room or a crossing to the next plane, both open in the design and outside the prototype as it stands. The loop stays the same whatever gets added past it, out from the origin and back to it.
Direction
I’m putting Orion's Labyrinth out there, a labyrinth where you go out and come back and go out again. This is a prototype with no win condition per se, and no end.
The build is example code written to show the concept working, a prototype, and to display my brain working in game design land.
Hope you like it!
- Steve