A programming roguelite

Write Python. Lose bots.

Write real Python, not a Python-like language, and send a bot into a scrapyard where a bad program costs you the bot.

Windows and Linux at launch. macOS after 1.0.

Steam page coming soonPress kit
Level 1 · Run a programPython
def tick(bot, world):
    bot.move("east")

    Demo

    A minute of the game

    Sixty seconds of real runs from the game, with the end of the 1812 Overture over the top. Bots get lost, bots explode, and one program finally works.

    Music: the last minute of the 1812 Overture by Tchaikovsky, a MuseScore rendering by Omega13a, CC BY 4.0, via Wikimedia Commons. Trimmed and loudness-normalized.

    00 / Start here

    Never written Python? Start here.

    Level one has a program that already works and one button. Press Run and watch a bot walk east down a corridor. That's the whole level. Forty levels later you're writing breadth-first search, because the Warrens will strand a bot that walks in a straight line.

    What you write is real Python. It runs in a sandboxed CPython interpreter on your own machine: the same if, the same dicts, the same sorted(key=) you would use anywhere else. The game limits what your bot can do. It doesn't limit what the language can do.

    Level 45Python
    def steps_from(start):
        """Moves from `start` to every tile you know about, counted outwards."""
        seen = {start: 0}
        queue = deque([start])
        while queue:
            tile = queue.popleft()
            for there in ways_on(tile):
                if there not in seen:
                    seen[there] = seen[tile] + 1
                    queue.append(there)
        return seen
    From level 45, where the bot searches nearest first with a queue. The worked answer runs to about eighty lines; this is the search itself.

    01 / The ladder

    The ladder

    Seventy-four levels, one idea each, in the order you need them. Running a program. Asking the world a question before you move. Variables that outlive a turn. Lists and loops. Dicts. Your own types. Exceptions. Dijkstra. Each level tells you what it wants, warns you about the mistake you're about to make, and will show you a worked answer with an explanation of why it's written that way. Pass one and your bot gets better hardware: a bigger CPU, more scanner range, storage that survives the trip home.

    The ladder
    Level 4, three turns in. The line that just ran is tied to the bot on the map, and the level's goal sits under the map.

    02 / The delve

    The delve

    At level 7 the Yard opens and your program stops being an exercise. A bot goes underground with an energy cell that ticks down every turn. It scans, walks, digs, fights and extracts, and it does exactly what you wrote. What it carries out is banked and it's yours.

    What it doesn't carry out stays where it fell. A bot that runs out of energy two tiles short of the door is stranded, and the cargo sits on the floor of that map until you send something back for it. A bot that dies is gone for good, along with everything it had learned and everything bolted to it. Your account never goes backwards. The bot you've taken down twenty times can still be lost in an afternoon.

    The delve
    A delve in the Tunnels at depth 3, turn 17 of 29. The variables panel tracks the cargo and every tile visited.

    03 / A grade on every run

    A grade on every run

    Every run ends with a debrief out of 100: 60 points for the loot that was in reach, 20 for the health the bot kept, 20 for the energy left in the cell. A is 85, S is a perfect 100, and a stranded run can't beat a D. The number counts up and slows down near the next cutoff, so you get to watch a run fall one point short.

    A grade on every run
    The debrief of a Tunnels run: a B, 74 points, with the route against par and a blueprint found.

    04 / Bosses that publish their behavior

    Bosses that publish their behavior

    Old Nine announces a direction, then charges three tiles that way and hits everything in the lane. Run it into a wall and it's stunned for two turns with its armor at zero. All of that is printed on the launch screen before you fight. There's no pattern to memorize by dying. You read the spec and write the condition.

    Bosses that publish their behavior
    Old Nine has charged into a wall and is stunned. The turn log on the right says so, turn by turn.

    05 / A base worth coming home to

    A base worth coming home to

    Scrap goes into a Scrap Press, a Wire Mill, a Wafer Line and a Polymer Vat and comes out as parts. Parts buy the upgrades that let the next delve go further and come back. The Sounding Rig sells you a look at a map before you commit to it. The Board posts jobs with conditions about what happened down there, never about how you wrote it: come home with a real haul, come home without swinging at anything, come home with a quarter of the cell still in it. You hold one job at a time and get three tries at it.

    A base worth coming home to
    The base with all five machines standing: the Scrap Press, Wafer Line, Polymer Vat, Bot Bay and Sounding Rig.

    06 / Duels

    Duels

    Your program shares a room with one of five house programs, and both act on the same turn. Each of the five loses to a different idea. Working out which idea is the puzzle.

    07 / Help on the line you're typing

    Help on the line you're typing

    Rest the pointer on scan and a card appears under it saying what you write, what comes back and what's in it. Python's own words are in there too. Press F1 on any screen and it numbers the parts of that screen and says what each one does, with a link into the handbook. You never have to know there's something to look up.

    Help on the line you're typing
    Level 23. Resting on scan() opens a card that says what comes back and what each item holds.

    Before you buy

    This is a code editor with a game attached. It needs a keyboard. There's no controller support and there won't be — see the Steam Deck note below.

    Steam Deck: keyboard required. Cybersystem-D is a code editor. You write Python in it, and there is no controller layout that makes typing a program comfortable. It runs on the Deck and the layout fits the screen, but you'll want a keyboard attached. There is no gamepad support.

    Cartoon robot combat, no blood. No chat, no online play, no advertising, no in-app purchases. Nothing you do is sent anywhere — the game runs entirely on your machine.

    For teachers

    The ladder follows a written curriculum, and a standards map says which parts of AP CSP, AQA GCSE and CSTA it covers and which it doesn't. The game needs no accounts and no network, and a lab installs it by unzipping a folder.

    What a class gets