A robot above a game controller

Making games with opencode

22 September 2026

I found myself with a tiny amount of free time while I was on parental leave earlier this year. Between taking my daughter to libraries, shovelling dirt around our garden, and returning countless toys back to their boxes, I made a little web game. You can play it at thisdungeoneternal.com.

Vibe coding doesn’t work #

I was attempting to use only GitHub copilot through opencode and read/edit the code myself as little as possible. This worked for scaffolding out a hello world phaser js project, starting to move a character around the screen, and getting some pixel art animations happening.

This was back in the heady days of the $10 a month GitHub copilot unlimited plan. Maybe it’s the non-frontier model I was using (Claude sonnet) but I found when given no help (only giving it instructions for features, pretending to be a non technical product manager), the agent would code itself into a bit of a mess. It seemed to get the current job done with no concern for possibilities of future changes.

It created a MainScene.js file and basically worked purely in that file until it was 1200 lines long with a whole lot of nesting. Left to its own devices it eventually got to a point where formatting and nesting issues meant that it would take a lot of time just getting curly braces in the right place and validating the js syntax. It wasn’t proactive about writing tests or using formatting/linting tools. It wouldn’t automatically refactor to DRY up code.

The nice thing about this is that we might still have jobs as developers in the future, as the agents don’t seem great at setting themselves up for success. The annoying thing is that we’re going to have to prove we’re getting a productivity boost from this stuff so we better learn to use it. Things in AI change in a rate of months, so possibly trying the same experiment today on frontier models could already produce a different result.

I think the answer I (and many others) have found is that you need as many automated (non llm) code tools to provide guard rails as possible. That means formatting, linting, testing, static analysis, anything that can take the non-deterministic output of an llm and do something deterministic with it.

The great unblocker #

After I started having more input into the code, I did manage to get some pretty cool stuff happening with opencode and sonnet. I got it to program the music so a randomized low pass filter and wet/dry reverb balance would apply to the background music. This was all written with web APIs which would have taken me days (maybe weeks) of research to work out. It’s also so nice to not have to watch a YouTube video or read a bunch of docs to do something basic in a library you’re unfamiliar with. You just explain in plain English and you at least get something you can edit.

Another thing is that I spent BARELY any time on the game. I had so little spare time in the period I was making the game. This game would not exist without opencode. I might have the scaffold of it completed, but none of the nice menus, animations, or mobile support.

What was not made with AI? #

All the sound effects, music, and in-game sprites were NOT made with AI. I had a go at creating pixel art assets and it didn’t work for me at all. There are some paid tools out there that are specifically for generating AI pixel art. I didn't try these, but I’m sure those would get you further than chatbots. Instead, I bought the sprites I bought from itch.io. I did a lot of the voice acting personally. I used a tool called ardour and some free VSTs to make the music. Some of the sounds were from Wikimedia open commons. I only used llms for the code and for the hero image of the castle.

I think if tried to create the assets of the game with AI tools it would have felt a lot worse. I’m sure all the voice acting, recording, music and art could be higher quality and some parts of what an llm would generate sound/look be more professional. But I think for these assets, I’d rather see/hear amateur work than AI generated work. For creative pursuits, our fleshy monkey brains remain necessary.

Back to blog