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.

  11 Responses to “Word Game Devlog: The first four days”

Comments (9) Pingbacks (2)
  1. Hi. Regarding:

    the whole time being hand-held by the wonderful FlashDevelop documentation

    How do you do Android development using FlashDevelop? Where do you even find this in the documentation? Searching for “Android” on http://www.flashdevelop.org/wikidocs/index.php gives no results for me.

    Thanks!

    Jurie

  2. Hey man its Andy, most excellent! I am particularly stunned at the development time you are quoting here, since I would be absolutely blown away if you could turn this game out by writing native code in this timeframe. There must be some insane magic happening during this Flash -> iOS conversion. Have you used TestFlightApp.com? Check that out man and hook me up with a build!

  3. Great article, very impressed with the speed you’re moving. Are you using haXe to target iOS or AS3/AIR?

  4. Jurie: In FlashDevelop, go to Projects > New Projects > Mobile Project. It’ll create a new template for you, folders, certificates, batch files… And most importantly: It’ll make a few text files in the root directory for your project. One specifically for android, one for iOS development. Just follow the step-by-step inside and you’re off to the races!

    Troy: Nope, just writing AS3 code in FlashDevelop. I think it’s compiling the SWF into an AIR application, and bundling it up into a native presentation of such? I’m not sure what the compiler does on the back end, but I know it produces a .SWF as a byproduct that works in a browser just as easily as on the mobile device’s .IPA or .APK. :)

    Andy F: Yeah, I find that writing anything in native code takes way longer than using more abstracted languages. My favorite part of flash dev is how quickly you can go from zero to game (see also: my 5-minute game making competition, held yearly).

    As for TestFlight: Just hooked that up this morning! :D

  5. Cool! I too love how quickly I can get something running with Flash/AS3. For Molehill experiments I’ve been using HaXe instead of AS3 to compile to Flash.

  6. Like the other commenters I’m impressed with the speed of your development – it helps to treat it as just a side project that “doesn’t really matter”, doesn’t it?

    And like the rest I’m curious how you were able to build for iPhone in FlashDevelop – as I understood it, building an AIR mobile app required either Flash Builder 4.5.1 or Flash CS5.5. But maybe you’re using one of these and simply prefer to code in FD? (I did too for a long time, though FB has gradually grown on me.)

    I look forward to seeing the game and I’m curious about your approach for marketing it as well, which (in my experience) is the hardest part of mobile game dev these days.

  7. Definitely helps that it’s a side project! It helps curb my desire to over-engineer things. See my video in my last blog post for more on that :)

    But yeah, moving something to an iOS device is really easy, and compiling IPKs can be done from the command line without any problem. The only real trouble is sorting out all the certificates, private keys, provisioning profiles, etc… But enough people have gone through that headache, there’s tons of tutorials and help on the web for sorting that out.

    And, you only have to sort those things out once. :)

    But no, I’ve never installed Flash CS or Flash Builder; all my tools are free free free! :D

    Also, regarding marketing: I have no friggin’ idea. I’ll figure that out once the game is done and ready!

  8. (But also: I’ve always considered devlogs and blog posts part of the marketing effort. ;))

  9. Andy: Thanks! This looks great. I was expecting to find something in the IDE’s documentation. Good luck with your game!

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2012 Andy Moore Suffusion theme by Sayontan Sinha