Ludum Dare and the CFZ GameJam

To show my commitment to the “One Games Jam Per Month” resolution I set myself, I took part in Ludum Dare 41 in April and the Confuzzled Games Jam in May. You can click below to try out the entries, while I explain the development approach to both.

Ludum Dare 41 had a promising selection of theme, but it ended up with the problem of people picking what many considered the worst one: Combining Two Incompatible Genres. The main issue with this theme is that in theory, there are no incompatible genre combinations. Granted there are genres which in a broad sense looks like they wouldn’t fit, but with infinite creative possibilities and countless examples in previous Ludum Dares, you can make any two genres work together.

Several submissions had examples combining music-rhythm with adventure, the visual novel with point ‘n click, racing with city building and many more. I went with what turned out to be a more common submission, combining a shooter with a puzzle game. Specifically, I had the idea of a vertical shooter in the style of an interactive board game.

The concept was simple, you had players controlling the ships, and one player controlling the enemies. The ships can move and shoot one each turn based on dice rolls, and the enemies movement, placement and shooting are based on cards picked up each turn. The ships have the goal of surviving long enough to defeat the boss, while the enemy has to defeat all the enemy ships. It was a concept that I felt was easy enough to implement, with it mainly being event-based, with a game flow that could easily work as a physical board game.

However, a lot of issues came from delivering the game. Most of the issues, such as the game’s pacing, weird controls, the lack of CPU players + no options to set how many people in play meaning that five people were needed to play the game properly, could be narrowed down to time and how rusty I was with the engine I used, HaxeFlixel.

I made the mistake I’ve done in the past where I go out on the Saturday with friends, thinking that whatever notes I come up with was enough for me to power through the game on Sunday and Monday. However with the idea being so unconventional, that having the Saturday to set up how the game would work would have been a lot more beneficial.

Instead of using Vigilante as I have done with the past game jams, I went with my usual go-to engine for Ludum Dares, HaxeFlixel. As Vigilante was based on HaxeFlixel, they do have a similar structure. HaxeFlixel also has the benefit of being able to build for both web and desktop platforms, but I should have had a bit more practice with the latest version as on Sunday the rust was already showing. Some aspects such as asset loading were aggravating, functions weren’t performing how I assumed they would and Haxe doesn’t have the same syntax as C++ so I had to think more about what to write. It especially didn’t help that building for Windows didn’t work in time, and the HTML5 build would freeze at random points making it unplayable, which is why the game’s page requires Adobe Flash, as it’s the most stable build for HaxeFlixel.

By the time the Monday deadline was creeping up, I was becoming less and less driven to get the game feeling good and more getting it out. That’s why I couldn’t get the features I wanted, but because I already put so much effort in and wanted to get a games jam entry submitted for April, I went ahead and submitted… something.

Looking at the feedback, I can understand the criticism of it being slow, and I really wish I at least had the option to set the number of players and added in some form of CPU player, even if it was just RNG responses. I’m not happy with the score I’ve gotten, it’s definitely my worst LD entry not counting the even number curse where the entries that I made didn’t even get a ranking. There is a lot to learn and I have to take those lessons in, because not every games jam is gonna go as planned.

If you want to see what an experimental board game shooter looks like, feel free to have a go at Strategysphere.

The games jam for this month was ran by Confuzzled, a convention that I’ve been going to since 2011, but this year’s theme is video games and as such, they held the first ever Confuzzled Game Jam. The jam was three weeks long, with no specific theme but people could get ideas any of the previous convention themes, so my initial idea was an Osu style game where you had to play through a level while a scene would display your performance, and the level would be a music-rythm based auto-runner. I felt that the cutscene portion would have been too complex with my slow and sub-par drawing skills, to get what I want on time, and after Ludum Dare I wanted to focus more on the game so I stuck with the auto-runner.

Fortunately, this isn’t the first time I’ve tried to build a game for Confuzzled this year, I worked on a platformer prototype for a few months but motivation and other work got in the way, however the work did mean I already had suitable code for platformer physics. The biggest challenge I had was creating a level long enough for a music track, that was where a level editor comes in.

I initially thought of using Tiled, but I wanted to easily preview segments of the track and have game relevent infomation that I can use for reference, that’s when an idea occured to me to make my own. I wasn’t sure what GUI library to use until I saw a really good article on SFML with dear imgui. dear imgui is what’s called an Immediate Mode Graphical User Interface, essentially, unlike a traditional GUI library where you have to set up your UI elements, handle their input responses and render them individually, an IMGUI will set up and handle the UI elements you want during your update function. For example, if you want a button, in an IMGUI library you simply call a single function in an if statement condition bracket, and write the button press response in the braces of the if statement. While there is global setup for dear imgui, there is still less set up compared to when I used GWEN years earlier, making setting up the level editor’s user interface super easy.

Despite my ealier comments on drawing, I could still draw passable enough to do a running animation with a run-cycle reference, and once I added in some visual effects and some music from LMMS, I got a game! My sister came up with the idea of calling one of the foxes Foxtrot and giving him a buddy called Tango, so that’s why the game is called Foxtrot + Tango!

All entries for the Confuzzled Game Jam will get their games showcased at the convention itself, but you can play all the entries on Confuzzled’s website. Now I have the rest of the con to prepare for, as not only am I showing off a game I made for it, but I’m talking about game development as well.