How to make your first game for less than $1,000

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /usr/www/users/smasher/deadpanic_drupal/includes/unicode.inc on line 345.

strict warning: Non-static method view::load() should not be called statically in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/views.module on line 843.

strict warning: Declaration of views_plugin_display::options_validate() should be compatible with views_plugin::options_validate(&$form, &$form_state) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/plugins/views_plugin_display.inc on line 1877.

strict warning: Declaration of views_plugin_display_page::options_submit() should be compatible with views_plugin_display::options_submit(&$form, &$form_state) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/plugins/views_plugin_display_page.inc on line 481.

strict warning: Declaration of views_plugin_display_block::options_submit() should be compatible with views_plugin_display::options_submit(&$form, &$form_state) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/plugins/views_plugin_display_block.inc on line 193.

strict warning: Declaration of views_handler_field_broken::ui_name() should be compatible with views_handler::ui_name($short = false) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/handlers/views_handler_field.inc on line 641.

strict warning: Declaration of views_handler_argument::init() should be compatible with views_handler::init(&$view, $options) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/handlers/views_handler_argument.inc on line 745.

strict warning: Declaration of views_handler_argument_broken::ui_name() should be compatible with views_handler::ui_name($short = false) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/handlers/views_handler_argument.inc on line 770.

strict warning: Declaration of views_handler_sort_broken::ui_name() should be compatible with views_handler::ui_name($short = false) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/handlers/views_handler_sort.inc on line 82.

strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/handlers/views_handler_filter.inc on line 585.

strict warning: Declaration of views_handler_filter::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/handlers/views_handler_filter.inc on line 585.

strict warning: Declaration of views_handler_filter_broken::ui_name() should be compatible with views_handler::ui_name($short = false) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/handlers/views_handler_filter.inc on line 609.

strict warning: Declaration of views_handler_filter_boolean_operator::value_validate() should be compatible with views_handler_filter::value_validate($form, &$form_state) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc on line 128.

strict warning: Declaration of views_plugin_row::options_validate() should be compatible with views_plugin::options_validate(&$form, &$form_state) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/plugins/views_plugin_row.inc on line 135.

strict warning: Declaration of views_plugin_row::options_submit() should be compatible with views_plugin::options_submit(&$form, &$form_state) in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/views/plugins/views_plugin_row.inc on line 135.

Making a triple-A console game costs millions of dollars, but independent developers have to think on a much smaller scale. If you're willing to do things the indie way you can create your own game for under ten thousand dollars. These are the resources I used to do exactly that.

Graphics: $60 - $500

I cheated on this one by creating my own graphics. This is not for everyone, but if you've done some 3D modeling before and know your way around Photoshop then it may be an option to consider.

I used Daz 3D, a free 3D program for rendering the human figure, for all of the human figures. I bought a few content packs (Michael base and Desert soldier) from Daz and rendered the 8 angles and walk cycle in Daz 3D. Total cost $60. The zombies were modified and re-textured versions of the default human models. The female sniper was created by adapting part of the soldier clothing to the female model. I rendered them an created sprites with a method similar to this one.

I used Blender 3D to model and render the buildings, vehicles, rocks, and other props. I also rendered the final cinematic and animated one of the monsters (the crab) in Blender. You'll see the blender manual in my list of books purchased below.

I mentioned Photoshop but didn't include it in the total - I happened to have a license already for my web work. However for the simple resizing, brighten/contrast and cropping work I did there are plenty of free alternatives, like paint.net and GIMP. Also, there are sprite-specific programs like Pixen.

Sound and Music: $180

I downloaded some sound effects from SoundSnap, where $29 membership allows you to download up to 100 sounds a month. Other sounds were recorded using a headset mic, and everything was processed and edited using Audacity.

I have zero talent for music, so I bought tracks from Shockwave-Sound ; I found some excellent scary music in their library, and they have an mass-market license for $75 a track. Many of their songs include teasers and variations too.

Forums / Discussion Groups: $0

The iPhone SDK - and Apple's app store - have twists and turns that you won't read about in the documentation. You'll have to hang around in forums to get everything you need to know, and hopefully you can share your own advice too, once you become an old hand.

You'll also find a wealth of information (nyuck nyuck) about marketing your app or game and about game design and architecture. Luckily for our bottom line these are free.

Books: $80

Free advice is one thing, but you can't asking every question that pops into your head on a messageboard, or you'll quickly wear a hole in your welcome. You'll need some books instead. I started with out with Aaron Hillegass' excellent Cocoa Programming for Mac OS X, but that was before there were specific books for the iPhone SDK.

Total: $390 ... Right?

That's the total cash outlay before launch of the game - but obviously it's not the real cost. If the game only makes $390 I certainly won't consider it a success or a break even. We need to add one more line item for labor. This is not a big deal if this is just a hobby, but if you're going indie for a living you need to take it seriously.

My game took nine months on the calendar, but I worked on some other freelance jobs, so let's say six months. If I paid myself my regular wage then my labor costs would be obscene, but it's not realistic to think that a barely adequate artist and beginner game programmer would get paid expert web programmer's salary. So let's consider a more entry-level salary like $40k a year. That puts our labor cost at $20k.

Total: $20,390

Oops. Blew our budget a bit there. I now need to sell more than 10,000 two-dollar games to break even. Suddenly selling games on the app store doesn't seem like a goldmine, it seems like real hard work.

Obviously everyone is wondering if it's still possible for an Indie to make money in the app store, especially now during the "gold rush" as prospectors and big guns alike move into the market. Stay tuned for more info on that.