I feel like a slacker because I haven’t posted in awhile. First of all, work has been a lot more stressful lately. Several nights last week I got home and, instead of spending free time writing code I just vegged out and played Minecraft because I was too fried from work.

Added to that, I’ve had computer problems with both my desktop and laptop. My laptop is a brand new, super-powerful ASUS G73JH. Unfortunately, it shipped with a wonky video bios that caused me no end of headaches with freezing and GSODs. I finally sorted all of that out, flashing my video and mobo bios and reinstalling drivers. Now my laptop is humming along (all 4 cores, mean GPU and 6GB of RAM) smoothly.

Then, I was happily working on my desktop and one of the hard drives burned. Fortunately I have a RAID 1 and the other drive is still good but it means downtime while I pick up another drive and rebuild the RAID. That doesn’t mean that there has been zero progress, just that there have been obstacles to overcome.

Now for the good news.

When I started building Whirlygig I was going down the same path I walked in past game efforts. The concept of design patterns and coding practices was lost on me (I’m a self-taught programmer with a graphic design degree). I chatted with Vic of FlatRedBall a lot and he pushed me to use patterns I wasn’t familiar or comfortable with. This was frustrating at first because it took me longer to get everything done and forced me to step out of my comfort zone and learn more.

As I look back, this is the best thing that could have happened. I believe I am using FlatRedBall and most of the tools the way they were intended to be used. This means that everything fits together like a high-quality puzzle and when something breaks or I find a bug, Vic is usually stoked to fix it immediately because it strengthens FRB as a platform and is not specific to my code.

My programming background revolves around web development, specifically PHP. Vic needed some web work and offered to devote some time to Whirlygig as a work exchange. I agreed and he dove into my code. Because I spent the time up front to adhere to good coding patterns, Vic was writing new features within about 5 minutes after fetching a project copy from SVN.

So, in a relatively small amount of time, Vic added support for player teams, respawn after death including temporary invincibility, improvements to my camera system, end game conditions (frags and time limit) and more. Additionally, he added some Glue features such as the ExposedInDerived flag that enable powerful list inheritance which increases the power of Glue.

The point of all this is…it took longer at the outset but I have learned a lot and am able to work cooperatively on the project with ease because I tried to adhere to good coding practices.

Here is what I’ve been working on:

  • GUI art including buttons, game logo, menu design, etc
  • I built my GUI prior to Glue’s new ability to expose variables, GlueView and ExposeInDerived. I reworked my entire GUI (which was pretty primative) to be way more flexible and powerful using the new tools.
  • Game concepts: new level ideas, weapon ideas and some other things that should be present in the final release.

So, there has been significant progress but it’s not really obvious in a video or screenshots. As I work on GUI elements like the end game and game setup screens, these features will be more obvious. In the meantime, here’s a preview of the main menu: