Ludum Dare 32

Bubbles - my entry for Ludum Dare 32

So this is the result of my second participation in Ludum Dare.

This page contains the HTML5 version of my LD 32 entry "Bubbles" to play with.

It's a peaceful low resolution platformer with lots of functionality (Jumpthrough and moving platforms, double jumping, wall jumping, checkpoints, moving monsters, hazards) and currently 5 levels to play.

You can play the game in any HTML5 browser. Press F10 to play it full screen!

Have fun, I surely did while creating it! And don't forget: this game was created just by me (all coding, all graphics, all sounds made with a microphone and my own voice) in around 40 hours, including sleeping, eating, cooking and so on!

Below you'll find download links for the source code, a Windows executable and a little post mortem.


Download link for the source code

Here you can download the compressed GameMaker:Studio project file to import into GameMaker:Studio.
Bubbles Source Code (GameMaker:Studio .gmz)

Download link for a Windows standalone executable

Just in case you can't get enough of "Bubbles" and want to play it on your computer all the time here is the link to a standalone executable for Windows. Just double click the exe and enjoy the game!

Bubbles for Windows executable

Post mortem - what went good or wrong?

Over at Ludum Dare it's pretty common to wrap up the coding marathon with a little review, named a post mortem.
To let visitors of my site (you, for example) also find them, I'll place them here.

What went right?
  • Choosing GameMaker:Studio again. I'm getting comfortable with it (though I still think a programming language without OO features is crap!) and that means I'm getting results fast!
  • Using the GameMaker community. After I came up with the game idea and the platformer game type it was pretty easy to find online tutorials that helped me implement a platformer engine pretty quick. After a few hours I had a working prototype including first pixel sprites!
  • Trying PyxelEdit. While creating my pixel bitmaps with the builtin sprite editor of GameMaker I was annoyed that it's so hard to have a look at the other animation images of a sprite. So I remembered I've purchased PyxelEdit several months ago and decided to give it a go. Two intro tutorial videos later I was working really fast with the tool (keyboard shortcuts are great to learn!) and used the tool for all remaining graphics work.
  • Creating sound effects on my own. All sounds you hear were created with just a microphone and a bit of cutting and pitching with Audacity. That was really funny - first time I tried that at all!
  • Having a day off on Monday. What a relief! I knew that I could spend the whole Monday to do all household and cleanup work that was left over the weekend. Also I didn't need to iron my shirts for the week on Sunday evening but could delay that til Monday. And I didn't have to go to bed early - which was a real life saver if we come to the "What went wrong?" part! So I can only recommend to others and try to remember for myself to have a free day after the LD weekend!
What went wrong?
  • Music. Again. This time I had a few more hours left (I thought!) and tried to create some music. Only tool that I was a bit used to was Music Maker Jam on my Android tablet. But preset loops, some effects and changing chords just didn't do it - nothing fit the game so I dropped music completely for my LD entry. Again. Disappointing. I will try to learn a bit of FL Studio and use that for simple game loops. Next time.
  • Bugs! Not in my code - I can find and fix those, but bugs in GameMaker. There were two annoying bugs I had to fight with. One bug was related to a negative sprite width which can't really happen, right? A sprite width should always be positive. Unless you decide to flip the image using image_xscale in GameMaker. Flipping images is pretty common so you only need to draw the right movement, flip the image and automatically get the left movement for free. But flipping had the effect (read: bug) that the sprite width turned negative and all collision calculations failed completely when moving left...luckily the abs() function can help here. Took me an hour to find and fix that. The second bug was even worse because it only happened in the HTML5 release of my game. All worked great under Windows but in the browser version my hero fell through the "fall through platforms" all the time. He shouldn't do that when the hero lands on such a platform from above. Due to the way the "fall through platforms" were implemented I discovered a bug in GameMaker:Studio where having no sprite but just a collision mask doesn't work in HTML5...So I had to modify the code to set and remove both whenever I wanted to. That took me nearly two hours late on Sunday evening when I was just preparing the release package to upload it to the Ludum Dare website. Instead of finishing everything around midnight I stayed up until 2 AM Monday morning. And I had to get up again at 6 to get my boys to school and work...
  • Graphics. Hmm? I mentioned that on the "What went right?" part, didn't I? Yes, but in fact I wanted to create graphics using Inkscape. But that didn't work - I'm just not experienced enough with Inkscape yet to use it fast enough to achieve what I want to create. Too much fiddling around or looking things up here - so back to pixel graphics it was.
That's pretty much it. Hope you enjoyed the read and maybe you'll give it a try too - create a game in 48 hours (or less)!