Flopster

LD29

Planet Scan-it: Post-Mortem

This was my first Ludum Dare, and although I wasn’t sure what to expect it turned out pretty good! I’ve learned a lot about making games, not just in 48 hours but game development in general. Thank you to those who’ve commented on Planet Scan-it, I’ve gotten some good feedback on what I’ve been doing right and wrong.

There is a bit of a steep learning curve…

The language
For a long time, Dart has been my favourite language. I love it’s optional typing system, useful for both rapid prototyping and creating solid, fail-proof code. It’s syntax is very familiar and easy to understand. It’s got syntax for things like closures and class constructors that make the code simple and concise. It can very easily be compiled into Javascript that runs in any browser, and on my computer it’s faster than Flash or Unity. The main downside is the lack of libraries, but StageXL is a library that emulates ActionScript’s very good graphics library. I would definitely use it again next year, although I might have a go at Haxe.

The concept
Before the comp, I already had the idea of making a 2D Lunar lander type game, that scales in and out to allow for multiple planets. I have a big interest in orbital mechanics (I’m a big fan of Kerbal Space Program), so the idea stuck. When the theme was announced, I decided to go with what I’d already thought of, and spend more time programming the game. When I started making it, I honestly wasn’t sure I could finish it. Overall I managed my time better than I’d expected: In the first 24 hours I had a mostly playable game, and I spend the rest of the time adding better features and polishing up. Orbital mechanics is pretty tricky to program, on both the mechanics side and the usability side, but I was surprised at how quickly it came together.

The mechanics
There were a lot of challenges to making the game work. For example, as anyone who’s played Kerbal Space Program may know, the time scale is a lot different when on the ground and when orbiting a planet. It may take a few minutes to get a ship on a realistically-sized planet into space (the planets is Planet Scan-it are much smaller), but it takes hours to reach the moon. I had to make the physics speed up the farther you get into space, and adjust the gravity accordingly so the moons and planets stay in orbit.

There were also extreme rounding errors: The ship doesn’t land exactly on the edge of the planet, so I had to add a shadow to show where the ground is (and the shadow had it’s own rounding-related problems). I spend three hours trying to code in a particle system, before accepting that it wasn’t going to work. Some of the physics code (like the friction) was taking off the internet, and thank god those worked on the first try because I had no idea how they worked. In the end the game ending up working very well, and I spent way too much time playing my game instead of programming it! Overall, coding the mechanics was by far the biggest challenge, and I learnt a lot from it.

The playability
Unfortunately, while I was coding in the moon orbits and friction, I overlooked one of the most important aspects of a game: The playability. As I realised when the comments rolled in, the most important part of a game is at the very beginning, because that’s what players are going to experience first. I thought the in-game tutorial was a good idea, but instead the people who didn’t know how to play would keep crashing their ship, and have to refresh the page 10 times in order to read the whole instructions. It would have been better to the instructions pause the game, or putting the player in orbit at the beginning so they won’t crash.

If they manage to take it all in and not crash, then they have to land on a planet. Having played Kerbal Space Program a lot, I know what landing a space ship is like; how the last few seconds are when the scale suddenly increases and you realise you’re going a lot faster than you thought. But even when the player manages to land their ship, it doesn’t matter because in my game, landing makes you take damage. On top of all that, my game is mostly made of land -> press a button -> quickly take off again -> repeat about ten times. Landing the ship takes patience, and while it is one of the less fun parts of my game it’s also what you have to do most often. Because of the incredibly steep learning curve, most players haven’t played past flying around all of the planets.

What I’ve learned

  • Get a good amount of sleep. I wasted several hours feeling like a zombie.
  • Have some food that is easy to prepare. If you’re like me and obsess over things when under pressure, if you have to spend time cooking instead of programming you won’t eat, and that’ll drop your performance.
  • Make your game interesting to play. Not just have interesting mechanics.
  • Have good instructions. Either make the game intuitive enough that the instructions can be a single picture; Have a special ‘instructions’ page accessible from the menu; or, if the instructions are more complex, introduce each concept one-by-one throughout the game.
  • Have a menu screen. You need a screenshot to show off your game, and everyone judges a book by it’s cover (more plays = more comments/ratings). Make a menu, and make it look good.
  • Start by coding the bare essentials. Make the game barely playable as soon as possible, then add all the other stuff.
  • Have a different aspect to work on each day. Here in New Zealand the compo starts at noon, so it’s spread over 3 days. I think I should make sure to have a basic prototype finished on the first day, have the game close to finished on the second day, and do finishing touches on the third day.
  • Do a concept you haven’t done before. I was going to say ‘don’t choose something that’s too complicated’, but on thinking about it I think a good learning experience is better than winning the competition. I learned a lot from making a game I half-thought was too complex for me to make at all, let alone in 30 hours.
  • If you want comments and/or ratings, advertise. Most of the comments I got have been from people I talked to on IRC.

Congratulations to everyone who submitted a game, I’m impressed with the games I’ve seen, and I already can’t wait until next time.

Tags: postmortem