Sponsored By

Worst Gnome at the Factory: A Ludum Dare Postmortem

This is the postmortem for my third Ludum Dare entry, which is also my first game completed using something that isn't Python.

Lena LeRay

August 27, 2013

4 Min Read

This was cross-posted from the Ludum Dare web site. If you want to try my game, you can find it here.

Screenshot from the final entry

I’ve been fiddling around with HTML5 and JavaScript with enchant.js as a way of making games since LD26. I have two other HTML5/JS projects in the works, one of which was created purely for learning what I am doing and the other of which I intend to be a free-to-play educational game for learners of English as a second language. I spent most of last week reading into the gritty inner details of JavaScript and learning about design patterns in preparation for this week, and in some ways I leaned pretty heavily on those other two projects to figure out what I was doing, at least to get things started.

In spite of looking at my previous code to remember how the library worked, I feel like I started from a more knowledgable standpoint this time than I did either of the other two times I participated. The first time, I couldn’t do graphics and had to make my simulation game using nothing but text; the second time, I was using the pyglet library for the first time and then had trouble compiling with it.

Overall, I’m pretty happy with how the game turned out, even though I didn’t get to implement everything I wanted. And it’s got a bit of a bug. I feel like I hit on a good game idea, like I did during LD25, but had decent graphics and entertaining sound, like I did for LD26. ^_^

What Went Right

 Screenshot from my discarded game idea

  • Not streaming while coming up with ideas. The pressure to share my random game-planning thoughts made LD26 harder, and I’m glad I axed it this time.

  • My first idea was going to be a boring game, so I canned it and started over a few hours in.

  • Studying JavaScript’s innermost workings and design patterns last week paid off, though I still managed to make messy code.

  • I planned my time well enough that I had my game in a good-enough state before bed on Sunday night — living in UTC +9 and working on Monday made that pretty important. I only had enough time this morning to throw in a couple of things that I didn’t get around to before because I knew I could implement them quickly. Namely, a way to restart the game from the game over screen and an on-screen display of how long the player had survived.

  • Placeholder graphics FTW! For a long time, the gauges were ugly fuschia boxes that just had number values in them and the warning triangles with exclamation points were just plain triangles. At that point, it was hard to tell what was going on if you weren’t me (and most of my playtesters were not). When I got the real graphics into place the game instantly became easier to understand and the players instantly started having more fun.

  • On a related note: I’m rather happy with my user interface. I feel like all the important details are pretty well conveyed, though if I’d had more time I would have added a flashing red background to the warning triangles. My few playtesters who played both early and late versions really appreciated the changes from placeholder to actual graphics.

What Went Wrong

 Screenshot with placeholder graphics

  • Messy, messy code. I used the design patterns that I knew, but I wasn’t careful enough about encapsulation and by the end all the little things I’d been lazy with were coming back to bite me in the backside.

  • I have a game which is a survive-as-long-as-you-can game, but which has a bug such that if you survive long enough, you can’t lose. I know what’s happening to cause it, but since I only learned that the methods I’m using to pull it off exist just yesterday, I don’t know how to fix the problem. :(

  • Browser compatibility issues. Even with them, I think I am still reaching more people than with my Mac OSX Python games, but… still. :( I’m working on ironing out bugs relating to playing in different browsers.


Not bad. Not bad at all.

I’m going to make my next LD game in HTML5 as well, I think, so learning more about enchant.js is to be my goal. It’s an open source project, so I’m planning to contribute — the team creating it is Japanese, and so all the documentation is in Japanese and only half of that has been translated. It’s good that I can read Japanese, but if I help them translate the documentation then I will learn more about the library and it won’t take me as long to look things up next time. :D Laziness FTW.

Read more about:


About the Author(s)

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like