a colorful, swirly profile picture

graham builds

Wizard Sokoban

posted by graham on

Today, my friend and I launched another new version of our puzzle game named Wizard Sokoban (working title). You can play it on itch.io for free, though it works best on a computer using firefox:

I wanted to take some time to discuss the journey we've been through getting here because I'm proud of what we've made so far and I'm excited for what it'll be after we've applied another few rounds of polish.

Our second time game developing

In May of 2024, my friend Jules and I found ourselves simultaneously unemployed for the first time in our professional careers. With no structure to our days, we talked about some side projects that we'd been meaning to try out when we had more time. He mentioned wanting to try out Godot, and I mentioned that I had an idea for a puzzle game that could be pretty fun and simple to make.

We've been playing video games together for over a decade, and we most recently took on the idea of making our own when we went on a vacation to take part in Indie Train Jam 2017 from Chicago to Emeryville.[1] Surrounded by professionals and friendly hobbiest game developers, we realized just how out of our depth we were when we discovered that we hadn't even both installed git on our computers before we lost wifi (my bad!). Train Jam was absolutely a once-in-a-lifetime experience for me, and I'm glad we managed to partake in it before it shut down. I've never been surrounded by so many talented people, and the excitement and beauty of the whole trip far outweighed the intense imposter syndrome feelings throughout.

So back in May, I sent over a simplified drawing I had done on my phone to describe a sort of box-pushing sokoban game where the user was a wizard[2] who could cast spells to affect its surroundings. I scribbled a grid puzzle that would require a spell to complete on my phone and sent it over:

Phone art of a level showing a pile of boxes blocking a wizard's path towards a raised flag, along with a bar at the top for magic and a spell called BURN at the bottom.

The crux was to have the difficulty of the puzzles come from both:

My hope was that being a turn-based grid-based puzzle for one player, we'd be able to avoid a lot of the difficulties people have around the complexity of the systems, the interactions between players and each other or players and the game, etc. We talked about project setup and then met up for some IRL game jamming at his house across the bay. We quickly learned that despite shaving off a lot of the more complex things to do in a game, we were starting from scratch so we still had a plenty steep learning curve to overcome.

We've both grown a lot as developers since Train Jam 2017. It was cool to see how we approached this game versus our previous attempt. Back then, we made a list of features that we wanted and then tried to make them all work without necessarily having a broader vision, nor any idea how to program an engine to get the game to work like we wanted to. This time around, we talked about various architecture designs and weighed their pros and cons with plenty of experience from our day jobs. We settled on responding to player input with a queue of actions and generally modeled the game loop after board games and the ways that players are instructed to modify the game state in those after they take their turn. Where we ran into difficulty with art assets previously, I now knew how to sketch some art on my phone while I took BART over.

Phone art of a wizard with a gray hat covering their face, a blobby blue robe, and one white-gloved hand with a finger stuck out to one side

Phone art of a pale yellow wooden crate viewed from the side

From my time on cohost, I had learned that a key part to making any video game is having a "little guy."

Black and white phone art of a blobby dude with a round head and pointy ears with one arm slightly raised

Once we needed more than just a character, a little guy, and a box, I downloaded some free assets from itch. By the end of a week of off-and-on work, we had a game that was playable. It had a level that could be completed, it supported undo, and I was just about ready to start making levels.

Screenshot of a level with a plain gray background, where walls are made of fences, and there are new aasets for a few crates, a few little guys, a red button, a red and green flag, and a blue triangular player

As things progressed over the months since then, we've done a lot of designing and redesigning. I 100%-ed Patrick's Parabox and most of Recursed for some puzzle and systems design inspiration. We booted up levels of Baba is You, Stephen's Sausage Roll, and even some Zelda games to understand their ways of teaching and exploring interactions. We talked about how the various spells should work and the ways they should modify each game object.

Time passed and each of us took breaks from thinking about or working on this game, but here and there, I'd make some progress on spells or the UI side, or Jules would have some refactor to the engine that would make adding new stuff a lot easier or cleaned up a bunch of bugs all at once. We also added our friend Brendan to help with art and sound. (He composed the main menu theme!)

By the end of August Jules had constructed a Level Editor that made level creation and revision much easier. It supported loading any level straight from the pause menu in debug mode. It allowed us to create new levels to test out buggy behaviors. It prevented me from setting up levels with the buttons on the same layer as the player by accident. And it allowed users to save and load each others' levels.

We released the itch.io alpha on cohost shortly after it was announced that cohost would be shutting down. We got a bunch of great feedback from folks in DMs and on Discord. Today marks another alpha release with a lot of that feedback being addressed.

A screenshot of a current level of the game, which includes both Freeze and Burn as spells, along with multiple little guys, a green door and matching button, a red button, stairs to be activated rather than a flag, and nicely tiled wall segments instead of fenceposts

There's still a ton of stuff to be done, art assets to swap out, sounds to add, etc. But I'm already really happy with how far we've come. This is a game that I feel like better shows off what a great game development team Jules and I are, and I'm excited for the future.


  1. Rip to Indie Train Jam. Someday, I hope that we have sufficient health precautions that "spending 52 hours encased in a train with a bunch of other game devs" can be a safe thing to do for everyone again. ↩︎

  2. It's the year of the wizard, after all. ↩︎