An Unconventional Weapon
A few weeks ago I participated in my first Ludum Dare Game Jam, LD32. I decided to go the whole hog and participate under the “Compo” rules of the jam - 100% solo, all from scratch, no outside assets allowed, all done and submitted in a 48 hour window.
After many rounds of voting, the theme was revealed to be “An Unconventional Weapon”. It wasn’t one of my first choices for theme, but I was willing to take on the challenge. Nothing came to me at first. Maybe my brain hadn’t received my morning coffee yet (the jam started at 9am on Saturday). Then suddenly it came to me in a flash of inspiration…
The initial idea was simple. Programmers running around bashing each other with keyboards. Maybe the player would have to button-mash their keyboard to perform attacks? Maybe a successful hit to the enemy would fill up their Buffer with junk? If their Buffer overflowed with rubbish data, GAME OVER. The player could get the opportunity to reduce the buffer by button mashing some more, backspacing junk out of the buffer. It all sounded great, in my head at least. It felt good to at least have something to work towards.
The result was somewhat different, and not as “unconventional” as I had first imagined. “Buffer Over~B:$H” (Buffer OverBash) ended up being a 1v1 platformer beat-em-up duel. With little PCs. Who hit each other with keyboards… and threw keys at each other.. Which also somehow “heals” them. Oh and every keyboard input is recorded in the background, which eventually fills up and slows the entire game down to a crawl.
But I am still very pleased with what I created. I set out to make something simple. I set out to complete a “full” game in 48 hours (well closer to 38 hours as I wanted to go to bed on Sunday night for work Monday morning, as opposed to working through til 9am Monday morning). And I think I managed to create something that is at least a little fun.
Super Bash Siblings
Here are some links to the final product, Buffer OverBash.
Timelapse of my work on the project:
My LD32 toolkit:
- Getting Started Tutorial - I did the first few steps in the week leading up to the Jam to make sure my dev env was set up and to get a feel for Haxeflixel.
- Demos - The demos come with full source code and cover a wide variety of 2D scenarios. They are a very handy reference for the haxeflixel padawan.
- Cheat Sheet - A quick reference cheat sheet containing some handy code snippets.
- Sublime Text w/ Haxeflixel plugin
- Sublime Text - a slick yet powerful text editor.
- Sublime Text Package Control - Package manager for Sublime, allows for easy installation of the haxe sublime bundle.
- Haxeflixel sublime bundle - adds syntax highlighting, auto-completion, code generation, project navigation, build\test integration to Sublime. The project testing integration was a bit hit & miss, so I ended up launching & building from command line most of the time.
- cmder - Beautiful console emulator for windows, with built in git. Just looks hot.
- Aseprite - Stripped back pixel sprite editor. Perfect for keeping things simple.
- Sfxr - A great little sound effect generating program. I love this tool - simple, robust, and it produces quality effects. Would have loved to use it in previous projects.
- Ogmo tilemap editor - Open source tile-based level editor. Used it as suggested in the haxeflixel tutorial. Very easy to come to grips with in a very short time frame.
- Abundant-audio.com - I gave up trying to sequence my own music in Sunvox, and instead managed to “produce” some very catchy tunes using the abundant audio generator. The Buffer Overbash theme music was stuck in my head for days afterwards.
- GXSCC - (Geocities is still a thing!?). Found this great app when trawling through gamejam pages on how to make an 8-bit sounding track from the midi files produced by abundant-audio. This does an amazing job of fulfilling that requirement
- Audacity - The audio editor everyone knows. Just used it to snip some silence from the end of the theme track.
- Chronolapse - Auto screencap timelapse software. Takes a screenshot every x minutes. Also handles picture-in-picture (handy for multi-monitor setups), and can stitch the images into a video right there in the same app.
- My chronolapse fork - I migrated the chronolapse source to github from Google code to be able to work on some fixes (top/left subsection labels mixed up, timestamp colouration). I need to work on getting the python packaging working, but the fixes so far build and run from source fine.
- My Trello Project Board - I used Trello to keep a track of ideas and tasks as the weekend progressed.
How was Haxeflixel?
There is a certain satisfaction to be had in picking up a completely new language\toolset\engine and just diving in and creating something tangible in a short period of time. Haxeflixel is built for 2D games and it shows in how quickly you can get a simple prototype up and running. Haxe itself was quite straightforward to pick up - it feels like a language born of a union between C# and JS.
- Haxelib package control - installing and updating dependencies and libraries was made relatively pain-free by using the haxelib package control feature.
- Cross platform support - I didn’t get a chance to try out many platforms, but targeting windows and Flash/web were quite straightforward.
- Ample examples and demos - as one LD commenter mentioned on Buffer Overbash, ”…nice merge of various flixel showcases”. The demos offer a decent foundation for a number of different 2D game types.
The Not So Good
- Vectors are second class citizens (the Point class is king… cringe)
- Confusing camera handling (could just be my engine inexperience)