Dead Panic Developer Blog

  • 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 content_handler_field::options() should be compatible with views_object::options() in /usr/www/users/smasher/deadpanic_drupal/sites/all/modules/cck/includes/views/handlers/content_handler_field.inc on line 206.
  • 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.
  • 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.
  • Making Your iPhone Game Data-Driven

    Most new game programmers can create a one-level action or puzzle game, but get stuck when it's time to expand the game to multiple levels. OK they say, I'll need a big tree of if(level==2) statements or better yet a switch statement. If they're in an object-oriented frame of mind they'll create a GameLevel class with subclasses for GameLevel1, GameLevel2, etc. Don't laugh, I've seen it done!

    A logic-driven or object-driven method works, but the amount of duplicated code is...

  • Randomness in Games: Less Random Is Mo Better

    While coding the "survival" mode for Dead Panic I encountered a common situation - I had to generate random waves of enemies to confront the player. This is a straightforward exercise, right? Pick a random enemy type, a random position at the screen's edge, and launch them at the player. Hmmn, that looks more like zombies popping off of an assembly line, not proper scary waves. Okay, randomize the timing too - wait a few seconds between zombies. Hmmn again. Now we're getting some...

  • Why Use MVC for Games? A Q&A Session

    Q: Why should I use the Model-View-Controller pattern when writing games?

    A: I'm glad you asked. I'll leave a general explanation of Model-View-Controller to Wikipedia, and just concentrate on how it benefits your game project. MVC makes your game easier to write, easier to understand, and easier to update in the future.

    Q: Design patterns are just a bunch of fanboy...

  • A Simple Observer Pattern for Cocoa / iPhone Games

    I'd like to outline a simple (superior?) method for implementing the observer pattern in Cocoa, and give an example for Cocoa / iPhone games. The observer pattern is a necessity for implementing the Model-View-Controller pattern.

    Before we see the observer let's look at some code without the observer pattern. Here's a typical method from my game state  that adds a new enemy to the...

  • Dead Panic Reviews

    "Dead Panic" is getting a postive reception on many gaming sites. The most common feedback is "more weapons, more game modes, more more more!" Which is a great position to be in, and I'm addressing it in the next update.

    I'm also available for interviews - I'm a full-time independent developer who quit his well-paid job at the age of 35, long before the game was finished or my future was certain. I have lots to say about the state of the app store, the future of the iPhone platform,...

  • How to save your game in Cocoa / iPhone

    Warning to some, bonus to others: this post is less markety and more code-heavy. It also reveals some info about the architecture of "Dead Panic."

    Newcomers to iPhoneDevSDK often ask how to convert a string to bytes for writing to a file and other questions about data persistence that belie their real question: how do I save an object and restore it at a later time? NSUserDefaults is fine for storing some strings or bools, but what about an...

  • Dead Panic: Survival released!

    The next version of "Dead Panic" is now available in the iTunes app store!

    "Dead Panic: Survival" adds:
    * An infinite "survival" mode
    * Four new maps
    * Two new weapon types
    * A money/upgrade system
    * Multi-touch controls
    * OpenFeint challenges and achievements
    * High scores
    * Upgraded sound and graphics

    If you liked the original game, there...

  • Dead Panic: Survival submitted to app store

    The first update for "Dead Panic" has been submitted to the app store and is awaiting approval.

    New Features:

    • Infinite "survival" mode
    • Four new maps
    • Combat actions
    • Multi-touch-controls
    • OpenFeint challenges and achievements
    • High scores
    • Upgraded sound and graphics.

    ...

  • Tales of App Store Failure

    Tales of App Store failure

    I'd like to highlight the realities of the income you get on the app store without major press coverage or promotion on Apple's front page. "Dead Panic" is still on the launch pad sales-wise, but this post will serve as a nice counterpoint to future rich-and-famous stories, and show what can happen if the party never starts.

    My Sales Figures

    Stories about how "the app store gold rush is over" are very popular right now. In that spirit, I...

  • What is best in life: Idea vs. Execution

    There's an ongoing debate on the iPhone Dev SDK Forum about what is more important - the idea, or the execution? And I'd like to weigh in on the matter.

    When Conan of Cimmeria was asked "What is best in life?" he replied thusly: "To crush your enemies, to see them driven before you, and to hear the lamentations of deyah women."

    Much has changed since the Hyborian age, but success is still a three-legged stool, and the three modern legs...

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

    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...

  • Dead Panic submitted to app store

    After extensive testing Dead Panic was submitted to Apple for review on August 1, 2009. It usually takes about 14 days for approval, so watch this space for more news!

    Thanks for all my testers for taking the time to play the game and report bugs to me.

    Stay tuned to this blog for more iPhone programming tips, game programming tips, and tutorials, and information about Dead Panic, or follow me on twitter.

    I'll continue to update...