‹ Back to homepage

Marquis Kurt

Python, Swift, indie game, and Web developer

A fancy avatar of me, Marquis Kurt.

Squashing Bugs: How Bug Bounty! was made

Written on 21 July 2021

dev game jam trijam games bug bounty godot

I recently participated in the 129th Trijam game jam in which I had to make a game in three hours. While I didn’t quite make that mark, I had a lot of fun participating in last week’s jam. The theme was “You have to look for it!”, voted on by the community; it didn’t take long for me to come up with an idea.

Bugs: Developers dread them, and users/players discover them very quickly. While it’s easy to find them, it’s even harder to get rid of them. Making a game about fixing them wouldn’t necessarily be the most entertaining game, but finding them and squashing them like your average household cockroach could be. I knew I had to make a game about it. In my initial plans, I wanted to build the game where you had 15 seconds to find all of the bugs, and clicking on them gave you extra time. The bugs would randomly be placed in the world, sometimes hiding in the editor, and others in other parts of the window.

I got started by making a small texture atlas of pixel art that looks similar to recent versions of Xcode and placing them into the game. To render some text, I grabbed a TextEdit node, which allows for multiple lines of text. What I didn’t realize, however, is that TextEdit is also a built-in code editor, presumably the same as the internal code editor in Godot. Several options for line numbers, gutters, syntax highlighting, etc., exist; I couldn’t believe it.

I restructured the game’s interface a little bit to make the editor blend in more with what I had drawn up, and I set up the bug that would travel around the level. It didn’t take long to establish the game loop with added times, score keeping, and other goodies. After playing around with it for a while, it became clear to me that the game could’ve gone indefinitely. I didn’t think that’d be quite as fun, given that I didn’t include any power ups, time slips, or anything of the sort. I decided to rework some of it so that the player has to score as high as they can in a single minute. Immediately, the game felt much better to play.

After creating some additional sound effects, I ran a small test to see how well it would fare, given that I still had time. I discovered that the initial background color of the text editor was a bit too light, and the bug blended in too well. This wasn’t necessarily a problem for my MacBook with the P3 color gamut, but could present problems on other monitors. I scaled it down a bit to a darker tone and changed the random location code so that it would spawn the bug toward the lighter parts of the background so that the player could see it. Additionally, I made a small “tutorial” that caused the timer to wait until the player clicked the first bug in a visible area so that they knew what to look for.

After these small additions, I made some music in GarageBand with YCMK’s Magical 8bit Plug 2. I wanted to combine the chiptune sounds with a lo-fi-esque beat to provide music that would be similar to what I listen to when I work (and others, likely). As for the vocal in the beginning, I picked a voice memo from my former roommate going “ZoooOoooOoooOoop!”. After exporting and putting it into the game, I uploaded it to Itch and submitted.

It’s been a few days since then, and I’d like to note some things:

It’s been fun making this, and I’m excited to make more.