← All projects
Live Godot

Astrofix

A grid puzzle where you patch a falling-apart spaceship by pushing boxes into the holes meteors keep punching through the hull.

The Astrofix title card. Cyan glowing letters on a starfield background.
At a glance
Role
Solo
Duration
Four months, on and off
Tech
Godot
Status
Live
Released
12-12-2025

A grid puzzle where you patch a falling-apart spaceship by pushing boxes into the holes meteors keep punching through the hull. The boxes plug the holes, the holes are unwalkable until they’re plugged, and you have three undos before you have to think harder.

Context

What started as a small challenge to myself (build a game in a few hours, with a theme and a couple of restrictions, such as not having text in the game) slowly grew into something I wanted to sink a lot more time into. The first version went up in August 2025, ten levels, a menu, and not much else. It was called Falling Apart back then. The name became Astrofix later, when the spaceship-repair framing actually started to land (pun intended).

I liked the prototype more than I expected to, so I kept going. By December I felt done with the project (which is a healthy feeling to have), and I’d hit my own goal of shipping a game that year. The level count had tripled across three worlds (teleporters in the second, one-way tiles in the third), and Astrofix had stopped feeling like a prototype and started feeling like an actual little game.

The Godot Forum thread is where most of that growth happened in public. People pointed out the missing onboarding, the disconnected level segments, the audio bugs. I patched as the feedback came in. (More than I had any right to expect from a single forum post, honestly.)

Somebody also pointed out the game was a bit like Sokoban. I’d never heard of Sokoban. After a quick read I could see the family resemblance, though there’s a twist: the holes you’re filling are unwalkable until you plug them, so the puzzle is less “push the crate to the mark” and more “route yourself around the gaps you create”. (To be clear, the person who mentioned it wasn’t calling Astrofix a clone. They just spotted the resemblance.)

Build

The first version parsed levels from images. It took me a while to figure out and set up. My thinking back then was that it’s much easier to draw maps in Aseprite than to build them in Godot. That worked for ten levels. The moment I tried to add anything beyond move-and-push, it fell apart. Teleporters were the breaking point. Or, as somebody on the Godot Forum gently asked when I went looking for help: “I’m a bit puzzled. Why don’t you just use the… editor itself?” Fair question.

So I rebuilt. Switched to tilemaps for level data, and reorganized around the command design pattern so undo would stay clean and so adding new mechanics later wouldn’t mean rewriting the player controller for the third time.

The other piece I’m proud of is the background. It took a while to land, but it ended up looking like flurries of stars being sucked into a black hole at the center of the screen. The forum helped with the GPUParticles2D setup. One side effect: the game seems to hang for a moment on startup and on each level load. I’m fairly sure that’s the particle warmup time doing its thing. Something to revisit. Perhaps, at some point.

Other small things that earned their keep: a movement queueing system so you can’t accidentally over-step a hole, screenshake when a hole seals, three undos per level with visual indicators, and a quick restart keybind.

Looking back

With what I know now, I’d give the image-based level editor more thought before committing to it. But honestly, this is game dev. Learning, making mistakes, sometimes landing on something that works, and figuring out the rest along the way. I’d do it differently next time, and I’m glad I did it this way this time.