Sunday, January 18, 2009

The evolution of Sandblaster: The first three days

I started developing Sandblaster on December 30, and followed a release-early-and-often policy from the beginning. I was able to slap together a package and deploy it on the Android Market on the first day (along with two more releases on the same day!). I suppose I was excited at the time, but, looking back only three weeks later, these releases look pretty embarrassing.

This post documents my progress during those first three days of frantic but primitive work. In my next post I'll show what happened as I started spending more and more time between releases.

Sandblaster 1.0



December 30, 2008. Such a primitive game! During this first release, I was more interested in the particulars of how Android applications are packaged and deployed on the Market, so there were no real features or polish. It also didn't help that I didn't know enough about the Android framework to know how to add the features I wanted or make anything look good.

This was also my first attempt at a falling sand game. I really hadn't thought through the physics at all, and I hadn't actually played one in a while. This release did everything very inefficiently, and only barely suggests at its purpose, but one has to start somewhere.

Sandblaster 1.1



December 30, 2008. Shortly on the heels of my very first release came this first upgrade. I noticed it was impossible to tell what this application was for, so I created a crude demo that loaded up whenever you started the application (or changed the screen size).

Another glaring change is that I switched from rectangles to circles for drawing the particles. I think this rendering choice was pretty unpopular. I can understand why, as it's rather jarring to see each particle teleporting from one position to the next, since there's no animation between iterations.

Sandblaster 1.2.1



December 30, 2008. This release had an extra .1 tacked onto the end of it because I shipped a 1.2 release that crashed if your finger got too close to the lower right corner of the screen. This was the third release on that first day of development.

In my first two releases, drawing walls had been really annoying, because I did not draw connecting lines between the points where I detect your finger dragging across the screen. In this release I added those lines, so shapes could be drawn much more naturally (like bowls to catch water). This release was also somewhat faster than the previous ones.

Sandblaster 1.3



December 31, 2008. Before getting started with my New Year's Eve partying, I spent the day trying to make my game much more enjoyable. I started making use of the Android SDK's profiling tools to begin optimizing my physics and rendering loops. This became a task for me to do in every release cycle since. By optimizing the program, I was able to push the resolution higher without slowing down the frame rate. This makes the game look much more like a falling sand game!

In addition to making the game faster, I switched back to drawing with rectangles. I felt like I had some computation time to spare, so I added some more features to the physics engine. The biggest physics enhancement of this release is that particles settled from piles into flat pools for the first time (which makes the water a bit less fake, provided the frame rate stays high enough). I also rearranged the drawing elements to be more like my favorite falling sand games, adding salt and oil and their related effects.

Sandblaster 1.4



January 1, 2009. This was the first release of 2009, and since it was following a New Year's hangover, it was much less ambitious than the previous day's work. This release was about adding some user documentation to the application, so I created labels for the drawing elements at the bottom of the screen, and a help page to describe it all.

The Future


After those first three days, I began putting more work in between each release. It feels like I crossed a threshold where my standards went higher, as well as the amount of work required to meet those standards. In my next blog post, I'll show how those higher standards applied, and what to expect from the next release I put out.

No comments:

Post a Comment