Ever since 2012 when I kind of first discovered Ludum Dare, I wanted to fully participate in one of the compo, but for the past two years the dates usually clashed with some other event of mine. However in similar fashion I participated twice in the SFML Game Jam, of which the upcoming 4th as just been announced. Last weekend the timing was finally perfect and I managed to properly participate in the Ludum Dare Compo #32.
The goal of the game is get from the start position to the nice looking platform as fast as possible while using sounds to open the doors inbetween. Ah and did I mention that you are some kind of a Synth Guitar?
You get points for opening doors and finishing a level, also your score decreases for every step you make and for every wrong button you press but you’ll never go below zero.
Although I’ve written about this already on the Ludum Dare “blog” I still like to share things here again. My workspace was essentially just my newly built PC, my rather bad but comfortable Logitech MK710 keyboard, my ROCCAT Kone XTD mouse and my two monitors. The notebook you see on the image below was used to provide a webcam stream on the second day.
As for the software involved: The OS is obviously Windows 8.1, which I’ve been using for many years now without any issues. Since I was using C++ my choice of compiler was a no-brainer as well i.e. MinGW-w64 POSIX Dwarf2 GCC 4.9.2 (x86), but for the IDE I switched things a bit and tried the just released JetBrains CLion v1.0. Since the software is rather new and I’ve been asked by someone on Twitter, I’ll do a more detailed post just on CLion later on. One of the best features of CLion is the native integration of CMake, so instead of having some awkward project file to deal with, I can just write CMake “code” and compile it that way.
Coding wise I used – who would’ve thought – SFML for nearly everything, but also added Thor with its very nice ResourceHolder that got added just a few days ago. For my animation and level files I used JSON to write them and found this awesome header-only json library by nlohmann – it’s seriously easy to use! As starting point I used my SmallGameFramework that I still have to fix up and push to GitHub…
Moving on from basics and programming, also for the first time I’ve an older and thus free version of Aseprite for my pixel “art” and animations. First I just wanted to do some pixel images but once I noticed the animation features in Aseprite, I just had to make use of it and it was really simple. In addition to that I also used my go-to image editor PhotoFiltre 7 which is essentially nothing special but I really like the interface and it opens with a second or two, which is perfect for doing quick edits on things. Also in the image “processing” business I might mention ShareX, which is the most awesome tool ever. It allows me to take screenshots that get automatically uploaded to imgur. It’s free, goes out of my way and works reliable.
For the audio bits I used the Diatonic Composer to generate some classical sounding MIDI file. Then I fed the MIDI file into sforzando a free soundfont player while utilizing the soundfont Evanessence2. I really hope to get a slightly better setup at one point, because the generator as well as the soundfont player are rather limited. The sounds you hear for the wave forms in-game are actually generated on the spot.
And the last part is about streaming. On Saturday and on Sunday I was streaming over 12h each (see here and here) and for that I used the unbeatable Open Broadcaster Software. And since I wanted to use the webcam from my notebook, I setup a Monaserver, broadcasted the webcam feed through the LAN to my desktop PC, played it back with VLC and then captured it again with OBS. It was not pretty but it did the job even if the delay was way too high.
Having a somewhat finished framework ready to go really help a lot in the development since I could immediately jump in and didn’t have to bother with a lot of the boilerplate code. I really hope to get this small framework a bit expanded so things will end up even easier and less hack-ish to code, because while writing a framework you can take your time to design things properly, I did not have that time during the Compo which ended up in a lot of code repetition.
While nobody will watch someone code or sit around for hours on end, I still like to stream stuff, because it kind of forces me to keep working on it and not start some video game or randomly browse the internet. In addition to that it gives some nice conversations from time to time and you feel less as a solo developer. I just hope to get a better solution for the webcam, since I feel webcams make streams a lot more interesting.
It took a lot of time, but in the end it was really nice to have something finished and ready to be voted on.