For the last couple of months, I have been working on The Outer Maze, a twin-stick shooter.

All of the game’s code is written and reviewed with AI-assisted tools. In my case, I work with both Claude and Codex.

Everything as code

In The Outer Maze, everything is defined in code. The graphics are procedural shaders, and the audio is generated dynamically by Pure Data patches. There are no hand-drawn sprites or recorded sound files.

I chose not to use an existing game engine because I wanted the freedom to pick and integrate the tools that make this way of working fast.

The stack

The low-level media layer is built on top of SDL3. It is a phenomenal library, and it is battle-tested for building games across many platforms.

Because I wanted to create the sound programmatically, Pure Data was the ideal choice. There is a lot of open material on how to build Pure Data patches, and it is easy to integrate on any platform.

On top of that, the game itself is written in Common Lisp, using SBCL. SBCL is a well-supported Common Lisp implementation that generates fast native code, and it allows for a fast development cycle where you can change the game while it runs. I wrote about why this matters for finding a game’s design in Exploratory Game Design.

Working with LLMs

Being able to define everything as code means that LLMs can work on every part of the game: gameplay, graphics, and audio alike.

My own work has centered on setting the direction of the game, playtesting it, and fine-tuning the details.

Play the demo

After a couple of months of on-and-off development, I have just published a demo that you can play on macOS and Windows: The Outer Maze on itch.io.

I haven’t taken the time to create Linux packages yet, but I plan to provide them in a later version.

If you try it, I’d love to hear what you think. Drop me a line at hello@notonlybits.com.