Connected Worlds – Post Mortem
![]()
This was my first Ludum Dare after having watched many from the last two years from the sidelines. I finally felt like I had a solid weekend to concentrate on my entry, so it was go time. I am mostly happy with what I finished with, but I thought I’d write up a post-mortem to detail everything and, of course, get some more exposure for my game.
Language:I love JavaScript and am glad I went with HTML5 and JavaScript for my entry. Honestly, I don’t know what else I would have used anyway. I have a little bit of Unity experience, but not with their 2D stuff and I didn’t want to spend time learning that.
Libraries (Processing.js): I have a lot/hate relationship with processing.js. I was introduced to it on Khan Academy in their CS area and liked the wrapper around the Canvas API that makes it easier to work with. Begin able to quick draw rectangles, text, etc makes prototyping any type of grid-based game a breeze. However, processing.js has some limitations and I ran into issues with needing to clip the single image I had for tiles to paint a single tile. I ended up using raw canvas commands to do that, which is frustrating. That said, if you haven’t messed around with processing.js, I’d recommend heading over to Khan Academy and running through their tutorials. It’s pretty decent.
Sound (jfxr): I have loved playing with bfxr over the years and jfxr is, in my mind, even better. I only wish it exported directly to mp3 or ogg. I also wish I would have listened my audio on regular speakers. I used my headphones the entire time and didn’t realize how low the sound really is in the frequency range. Played on crappy laptop speakers, they sound pretty harsh. I also wish I would have had time for music. I think music adds a lot to games.
Graphics: I’m glad I spent a little bit of time on these. I could’ve just done something using processing.js and shapes, but spending the extra time on actual sprites is much better. They’re not going to win any awards, but they’ve renewed an interest in pixel art I used to have and never explored. That alone makes it worth doing them.
Programming: I’m mostly happy with my code and structure. I could expanded on the OOP some more with a tile class, but because none of the tiles really varied from each other too much I didn’t find it necessary. I’m sure I’m polluting the global namespace too much as well, but I can live with it for what it is. The main challenge I had was collision detection. It wasn’t until the end that I looked up how to do proper box/box collision, but I should’ve done that from the start. Instead I just measured left/right and up/down from the player’s center point, but only in one direction at a time. So, you can be high enough over a tile so that your pivot point doesn’t touch it and it’ll let you move left/right into the tile even though you’re x value is inside it. Ah well, what are you going to do? I suppose in the end this comes down to doing research early on and getting the core mechanics working properly before you start fleshing out the bells and whistles.
Time: This really bit me in the butt. I had set aside the weekend for the comp, but life happens and I didn’t get to focus on the comp as much as I had planned. I pretty much worked until Saturday morning around 7am EST and didn’t get to jump back on until 12AM EST Sunday morning. I ended up spending the whole day Saturday with friends and family, which is great of course, but I should have managed that time a little better. In the end, if I had another 3 or 4 hours I would’ve been able to get in 5 more levels which is what I really wanted. Instead, I wound up with 5, 3 of which are tutorial levels so the game is very, very short.
Summary: All in all, I had a great experience and I am looking forward to the next Ludum Dare. In addition, I’ve been continuing to work on the game after the competition. Below are before/after pictures of a single level. Here is hoping I can keep this momentum going turn this into a full game. 

