10s Castaway post mortem

ld26_final

The good

  • Tiled – I used this editor for the first time and it was very easy and flexible. It supports multiple layers but I only used two: one regular layer for the map and one object layer for trees, items etc. For map drawing Tiled has a great “terrain brush” which can draw all your edge and corner tiles for you. Another killer feature is JSON export which makes maps super easy to parse in a JavaScript game.
  • Jaws – This was my second game made using this nifty JavaScript game library and it definitely saved me a lot of time. It has many helpful components that help with drawing and animating sprites, simple collisions, keyboard input and camera scrolling. At the same time it doesn’t force a custom class/entity model onto you like many other JavaScript libraries. You can use just the parts that you like and it’s very easy to bend Jaws to your own needs: there’s no problem using raw canvas functions.
  • Pre-compo experimentation / base code – Before the compo I played around with Jaws and JS seeing how easy it would be to use a custom font or parse a Tiled map. After messing around I extracted the code that looked useful (as well as some code from my previous LD entry) into reusable functions which I threw into my base code. As I mentioned above, parsing Tiled’s JSON maps is really easy so I probably would’ve managed to write this code during the compo, but having a simple base code was quite helpful. For loading a custom font I used this small library which I also found during my pre-compo experimentation: https://github.com/Pomax/Font.js

The not so good

  • Time organization – I spent a lot of time trying to decide on a good idea. Perhaps it would’ve been better to settle on an idea earlier on and get more work done during day 1. On the other hand it was nice to know more or less what I wanted to do before I started coding. This is a tough trade-off. Hopefully as I gain more experience in ludum daring my idea generation skills will also improve. During coding I feel like I wasted some time trying to find the most elegant way to do OOP/inheritance in JavaScript. I probably should’ve left this sort of stuff for post-compo refactoring and just do the easiest thing that worked. I also didn’t end up making any music due to lack of time an energy.
  • Last minute level design – This kind of fits in with the previous point but I think it’s important enough to deserve it’s own bullet. So yeah… level design is important, so don’t leave it till the last moment like I did. I was only going for a single map, so I managed to make something more or less playable pretty fast but I think I should have set aside more time for this.
  • Graphics tools – I started out using Aseprite (first time user), which seemed pretty nice for sprite sheet animation. I had some problems with the native linux version (cursor lag) so I used the windows version via Wine, which seemed to run smoothly, but later I discovered it had some problems with browsing the file system. So I ended up falling back to GIMP, which is okay, but not really optimized for pixel-pushing and animation. Next time I might try using Grafx2 which has gotten support for animation since the last time I used it. Grafx2 saves animations as animated gifs, but those can easily be converted to a sprite sheet using ImageMagick. Its extensibility via LUA scripts also seems pretty sweet.

All in all I’m quite happy with my second LD entry. I think it’s a step forward from my previous game in some ways, like more interesting graphics. Still no music unfortunately, so that is a goal for my next LD :)

Source: ludumdare.com archive

Found a bug?
Tell us on Discord