Wow that was quite a roller-coaster of an LD. It started off awfully with me completely blanking on the theme, wasting time fixing a tricky engine glitch and then losing a load of source code. However by the end of the first day, I actually had a simple game that, with a few hours work, could be submitted. Sure enough this morning, I woke up and added sounds, built the levels and was almost done by about 10am. However naturally, this worried me. LD done? By 10am? With only about half the number of lines of source code I usually pump out? So I decided to add just one more feature… A first person view for my 2D game. Turns out that isn’t quite as simple as it sounds; at least not for a non-mathsy fellow like me. As I battled through the glitches, I really began to doubt if I was even going to finish on time at all. But then, with one more switching of a * to a /, most of the problems went away and I was once again on target. I relaxed, began to package my game, and I suddenly remembered that as this was to be deployed to HTML5 rather than Flash, I had probably check it in some browsers other than Chrome. Naturally none of them worked; and so began a desperate last minute scramble to implement cross browser compatibility. Having tracked the problem down to the audio, I was able to disable it in non-Chrome browsers. Not an ideal solution but at least it now runs. And now it’s submitted! Phew!
So given all that, what have I got from it? Well first off, if I was in any doubt at all about how small a game you should try to make, this prove the point for me. Despite being a game whose core mechanics I could hammer out in under 4 hours, I was still working till a few hours before the deadline.
For this LD, I was using my own home brewed game libraries and I have to say that I’m actually rather pleased. Given that they were new, largely untested, and written by yours truly, things could have gone much, much worse. In reality, I had an annoying glitch with the keyboard input early on, and then at the last minute discovered that my audio libraries only worked in Chrome. However aside from that, the only changes I really needed to make were adding the odd feature here and there such a gradients to boxes.
Ah yes and Dart. This game is written in Google’s new rival to Javascript, Dart, and so are the above mentioned game libraries. Now I have to say I’m not really a huge fan of Javascript, and particularly not with jQuery, as I think it seems messy. Dart is a little better. Not vastly better mind, but a bit. Having the trappings of real object orientation is certainly comforting for a programmer like me and I’ll certainly be using Dart again. However I did have a fair few problems with it. Very few of these were structural though, which makes me think that over time, it will become a much better tool than it currently is. My biggest problem was that try as I might, I couldn’t get Dartium to work at all (yes I tried launching it with a separate user profile so it didn’t clash with my Chrome profile). This is such a big problem because you can only debug Dart natively in Dartium, and so I ended up having to debug my code from the Javascript dart2js produced, and trust me it’s not pretty. This is a pretty standard error.

It’s not quite debugging your C++ in assembly but it’s not a million miles off! The problem is that the errors are always thrown deep in Dart’s own functions, and it’s impossible to trace back where they came from in your own code.
As I’ve already mentioned, I also had some problems with running the Javascript created by Dart in browsers other than Chrome, although I did eventually get something working. And the Dart editor itself is not very pleasing. It lost me some of my code early on and later, it just decided that enough was enough and stopped analysing the code at all. However for all that, I still think its OO structure is very appealing for larger projects and games and I’ll no doubt be returning to it, although maybe once it’s a bit more stable.
So there you have it. Another Ludum Dare is done and revision awaits. But before that, sleep! I look forward to playing your games in the days to come.