Hey everyone! I haven’t spoken a lot about game dev recently, but I started doing a side project and thought it would be good devlog material.
The Inspiration
Last Saturday (January 21st) I topped off my evening by rocking all the high score tables in the new word game, PuzzleJuice. I really love that game, and as I drifted off to sleep that night I started thinking about how easy it would be to make a word game of my own.
(EDIT: My girlfriend informs me that I had the idea a week before PuzzleJuice, but my brain has re-written history and I don’t believe her.)
I mean, how hard can it be? Get a little dictionary of words, spell some things out… Should be no problem, right? I decided to find out. Laying there in bed, I wasn’t heart-set on releasing a commercial product; I just wanted to see if I could make something up quick.
Day One: Sunday
I spent my morning coming up with a theme. I wanted something casual and cute; my girlfriend suggested penguins as a central theme, so penguins it was! I thought up a quick and easy central mechanic (a variation on a Boggle-like interface) and started prototyping what was initally dubbed “Word Fishing.”
I spent a lot of time toying around with different UI design elements, and fleshing out the codebase for what was to come (game-jam style, not proper-engineering style). I only put in 3 or 4 hours this day, but it was good start. Most of all, I got a bunch of research done on what lay ahead of me.
Day Two: Monday
On Monday I setup my first dictionary-lookup chunk of code – an older, out-of-date word database with an OK search algorithm. The best part was that it was mostly cut-n-paste from some fellow devs – it pays to network!
I then moved on to actually implementing the gameplay. I got some temporary art in place, implemented a simple mouse click-to-select interface, and was able to actually play what I had envisioned less than 24 hours before. Hooray! Prototype #1: Complete.
As I was playing the game into the evening, I was surprised at how fun it was. I mean, I love Boggle to start with – but this new twist on mechanics seemed to be playing out really well. There was no timer implemented yet, so it felt somewhat freeform… That would go on the to-do list.
It was around this point I decided to make this a proper commercial application!
Knowing a word game would work much better as a mobile application, I started eyeballing my 2-year-old Nexus One (Android phone). I’ve never made a mobile application before… could I do it?
Monday night was spent downloading Android development interfaces, debugging tools, and drivers of various sorts – the whole time being hand-held by the wonderful FlashDevelop documentation. That’s right, I just pressed “New Project > Mobile App” and my folders came pre-stocked with all the batch files and automated certificate generation routines I could ever want.
I got the app working fine in the Android simulator on my desktop, but I couldn’t manage to get it over to my phone… Very frustrating. But still, I put in about 6 hours of work this day, and I’m starting to get really stoked.
Day Three: Tuesday
The first thing I did on Tuesday morning was fix my deliver-to-phone problems. Turns out it was really stupidly simple: the USB port at the front of my computer wouldn’t maintain a debug connection to my drivers. Everything else worked fine, but moving it to the back panel solved all my problems. Sometimes computers are really really frustrating!!
I was avoiding implementing a touch-friendly draw-to-spell interface (it just felt like grunt work!) but I managed to pull it off with just an hour of work. I patched all the memory leaks, converted all my graphics to cached bitmaps, switched my phone to GPU-rendering, and generally worked on mobile optimizations. For my first stab at doing all of this, it was much, much easier than I expected.
In the evening I implemented some visual pizazz – particle effects, simulated gravity for falling blocks (instead of prototype-instant-teleportation), and other things that just give the game a bit more “crunch.” It was around this time I started looking for a proper artist to dress the game up for me.
I topped the night off by updating the dictionary words to the official, tournament Scrabble word list (the tournament version includes naughty words, unlike the home version).
In total, the day was probably 7 or 8 hours of work, and the Android app was running really nicely on my older Nexus One. My thinking was, if I can get the game performing really well on that old equipment – I wouldn’t have to worry about further optimizing for newer equipment.
Day Four: Wednesday
After not getting enough sleep, I spent Wednesday morning trying to cut down on the CPU overhead. One of my best optimizations was rewriting the dictionary search routine – now implementing a Binary Search Algorithm. I also implemented “live spellcheck” (it detects proper words while you are spelling, instead of waiting to search after you’re done), which changed the game a surprising amount.
More mobile optimizations in the afternoon – in this case, the simple act of deliberately manipulating the frame rate to very low numbers when there’s no action. Other than saving CPU time, this also has the benefit of not bleeding your mobile battery dry. No reason to render the motionless Main Menu at 60 FPS!
In the evening, I finally bit the bullet: I signed up for the $99 Apple Developer account, installed iTunes, and created some certificates. With only 2 hours of work, I had my first-ever iPad app running on my device!
Of course, transitioning my app from the smaller-screened Nexus One to the larger-screened iPad2 unveiled a bunch of scaling errors I made in my code. I spent the bulk of the evening fixing up all of my dynamic-screen-size handling classes and trying to make things pretty.
And that brings us up to date. It’s Wednesday night as I write this! I’ve put in about 6 hours of work today and the game could be launched in the app-store right now, if I wanted to shoot myself in the foot marketing-wise.
Coming Up
Now that I’ve got the last few days out of the way, I’ll try to update my blog once-per-day with more details on what’s going on.
I think it’s really exciting that I was able to take my AS3 coding skills and a free IDE (FlashDevelop) – and use them to generate a market-worthy Android and iOS application in just 4 days of part-time work.