Ludum Dare Prototyping

I wont talk too much about how Ludum Dare itself went, as I’ve already done that over here.

But in addition to running the event, I participated for the first time in a long time. The theme was “Alone“, which I find funny given the title of my game. Could I not enter? 😉

About a week before Ludum Dare, I started toying with the idea of creating a demake of my game. I didn’t put too much thought in to it at the time, but it seemed like a good idea and a change of pace. Oh, and I decided to do it in JavaScript using an HTML5 Canvas 2D. Again, a change of pace.

What I didn’t realize though is that it was a GREAT idea.

The past few months I’ve been spending majority of my time building the tech I need for the game, but not spending so much time on the gameplay, the mechanics, and so on. So I have a bunch of pieces working together, but not much game.

So once the Ludum Dare theme is announced, I ran with the demake idea, and about 3 days later I have something far more fun and interesting than I had before… Written from scratch, in JavaScript.

Fighting some Bats

It’s short and not a deep game, but it is a functional prototype that demonstrates some ideas and goals of the design. That’s what prototypes are for: trying out ideas.

You can try it here:

– Best played in Firefox, in Full Screen (F11).
– F5 to reload (WHEN you die, MUAHAHA!)
– If using Flash Block or NoScript, enable Flash. It needs Flash Player 9+ for Sound.
– Arrow Keys, Mouse, or Touch Screen.
– Works on all current Browsers. Some may lack sound.
– Works on all current Mobile Browsers too! Best in Firefox Mobile (w/o Sound).

I wont say anymore. If you’re up for something quick, give it a try. Let me know how your first play-through went, how well you were able to do, and perhaps how many deaths it took. 😉

I actually did not finish the game within the 48/72 hours of Ludum Dare, but just a few hours later than that. It was a mostly good event without too many website problems, but right at the end the ENTIRE INTERNET decided to link us and considered us newsworthy! We were a headline news story on IGN PC nearly all day. Sure, the story was about Notch and the game he made during Ludum Dare, but still. Holy cow! IGN, Kokaku, Joystiq, Rock Paper Shotgun, Destructoid, The Escapist, Edge, PC World, BBC, Wired, Venture Beat, The Verge and Geek to name just a few. 🙂

So, I had a pretty good excuse for being late. 😀

Creating the demake has been an incredibly beneficial to the design. For one, I have something playable right now that can be critiqued. There’s going to be a lot of iteration and improvements, before it becomes a shippable product. And I honestly cannot complain about it taking only 3 days to get it working. That is fast. I am seriously, almost committed now to finishing this HTML5 incarnation of the game, and releasing it as a sort of prequel. That way I can step entirely through the design, start to finish, and have a better well-tested core design for the one I want to charge money for.

Admittedly, I’ve been avoiding prototyping and experimenting in languages that aren’t C++. I was never comfortable with the idea of writing code that *must* be thrown away, due to syntactical differences. I have, on a few occasions, wanted to write a sort-of language converter; Write code in some general dialect, and export to the variants. I briefly looked in to haXe, but really didn’t like how fat the C/C++ generation was. Nothing ever came of that desire though.

JavaScript I rationalized by the rather safe assumption that “JavaScript will never die”. I certainly don’t plan to stop using the Internet any time soon, and HTML+JavaScript are pretty much all internet. So learn to love it, and you’re better off.

And actually, I do quite like the language. Unlike Java, it does not force OOP style designs. You can OOP, but you don’t have to. It feels more like a really wacky version of C, with super flexible macros, than it does Java. Structure can start hacky, dirty, or essentially functional, and over time it can be cleaned up. It’s nice.

The future of Flash is a bit uncertain, though it sounds like Adobe will be making it more of a general 3D gaming VM, to solve the whole WebGL problem on the desktop (i.e. Microsoft’s Arrogant Pride X). And that’s cool. That sounds useful to my native codebase. But I’m left concerned about where that leaves a large codebase built over the next few years. It may do sound, but it’s still not going to run on iPad. So Mike, Mr Portable Code, has decided JavaScript should be his #2. Prototyping, game jams, and since it’s the whole internet, we can accept it.

What’s also nice about JavaScript is its similarity to Squirrel. Sure, JavaScript/EcmaScript is the old man, the daddy, the parent of the relationship, but after much homework Squirrel is what I chose for my embedded scripting in the new game. It has distinct floating point and integer types, among other things. In general it’s designed as a Lua alternative, embedded scripting, conscious of the things us game developers care about (memory usage. GC is optional). And hey, best part, it counts from zero instead of one, unlike Lua. It’s been a while since I dabbled with it, and honestly I haven’t done much with it. But after a review of it this morning, I’m actually quite pleased to see much, if not all of the syntactical features I got comfortable using in JavaScript are available in Squirrel. Heck, it looks like I’ll be able to bring over some of the code as is; Rename a few “var’s” to “local’s”, a few other minor tweaks, and that’s it.

Very encouraging.

So that’s my little rambling. I’m still shooting to meet my “Learn more GDC time” goal, which means March, which means ~2 months from now. What exactly I’ll have for then is a little different than I had hoped originally, but just as good. Back to work! Lets see what I can finish before the end of 2011. Go go me!