[Cross-posted from my blog over here]
This is a 30 minute post on the technical side of things from my recent (and first) Ludum Dare 48-hour gamemaking competition entry. Maybe these notes will help me in the future. Maybe they’ll help you in the future? Maybe not. Either way, head over here right quick to play the game and get a sense of what I’ll be talking about for the rest of the post 


To start off with, I made the game in GameMaker: Studio. I really like GameMaker because that’s really all it is- software that helps you make games. What’s really nice about it for me is how quickly you can get things to show up on the screen and lots of common game interactions are built right into it. With only 48 hours, speed is crucial, and since I knew I wasn’t going to do anything too fancy, there was really no reason why not to use GameMaker for me.
“Click, Release” is a pretty simple game, and there’s not too much magic going on behind the scenes. One slightly tricky thing though was creating the “squares” (or regions of blocks) properly and in the right place. Each region is actually comprised of many smaller squares, and the squares are what individually appear or disappear when you hit them. To accomplish this effect, I used what’s commonly referred to in programming as “the Factory pattern.”
A factory is something which makes other things. A car factory makes cars, a balloon factory makes balloons, yadda yadda yadda. For “Click, Release,” I made a Square Factory. The square factory knows how to make the little colored squares which interact with the ball. Once I have this factory, I can tell it where to start making squares, how many rows to make squares for, and how many columns to make squares for, and then voila- my square factory makes nice little regions of squares! If I move the factory around the screen, it’ll produce a new region whenever I move it and say “GO!”

My little squares getting sent out to their regions
You can think of how the balls are created the same way. With a Ball Factory. Whenever the game registers a “Left Mouse Pushed Down” the ball factory fires up. Until the mouse is released, the factory keeps increasing the angle of its ramp – or the angle at which it will send the ball into the world. To let the user know this is happening, I draw a little black dot outside the ball’s edge at the current angle. When the mouse is finally released, the factory says, “Ball, go out into the world at this direction! Godspeed.”
The squares and the balls are the main visual components of “Click, Release,” but there’s a whole other channel of sensory information that makes the game work. For me, getting the sound right was the biggest pain while making this game. Ideally, I wanted the game to create your own personal “Gong bath” – to cover you in long full tones as the ball bounced around the screen.
However, two things stopped this dream from becoming a reality. 1) I couldn’t find many good gong sounds online and 2) I learned that making your own sounds was highly preferred for competition entries over using somebody else’s sounds. So naturally I started downloading free synthesizers as fast as I could.

Not gonna happen in 48 hours
I downloaded A LOT of free synthesizer programs. How hard could it be to find one which had an interface easy enough for a complete novice and also could simulate a chime? Apparently, very hard. After tons of trial and error, I went back to that good old indie sound effect staple http://bfxr.net.
After generating random sound after random sound, I stumbled upon one that had a decently clean enough tone and was free of bips and boops. From there, I modulated the tone’s frequency to produce and download different notes in the same key. I settled on a pentatonic major scale so that each note fit together with all the other notes. This allowed me to simply play random notes from the scale to create a “bath” of sounds.
Yes, the sound is a little cheap, and if I could do it again, I’d be smart enough to say, “Why don’t I just go outside and record the real wind chimes hanging in the backyard?” But I wasn’t that smart, and I made do with what I had.
Additionally, post-competition it’s easy to think how nice it would be if I had made the game in Flash. It would be great to be able to play the game online. And exporting a Mac build from GameMaker turned out to be a serious half-a-day waste of time. But for those 48 hours, I was happy to have GameMaker’s help, and I’m happy with the result.
Thanks for reading! Now go play the game and see this wizardry in action!