Our game is slowly inching towards a more finished state. The gameplay is finished, AI-players are tested, the first games have been won and lost.
During the process of development, one thing that we kept pushing forward is the exact way of informing users about various things in the game. I am a minimalist on this issue: less is better. So in the course of programming, I freely added alert views and quick custom dialogs, hoping to get rid of as many as possible once we would hammer down the details of the UI.
Still, some things will have to be told to a player. For example, in our game, a player's turn is bounded in time - so we needed a clock. And no matter what, there will be points in which exceptional events will have to be told to a player. So we also needed a custom dialog.
Our graphics designer A. came up with an awesome clock. It slowly ticks back, with the background of the clock slowly changing from green to red:
The clock is implemented by subclassing UIView:
@interface ClockIphoneView : UIView
The subclass exposes two crucial methods:
-(void) reset; -(void) setDialPosition:(double) position animated:(BOOL) animated;
The superclass in charge of controlling the view does the timing, and is also in charge of updating the background from green to red.
We originally implemented all relevant dialogs through a hodgepodge of UIAlertView and custom ViewController subclasses. After a few iterations, instances of user feedback like these had survived: