without code the only idea that i had it's you don't release properly the view that you present and dismiss and this means that the init method it's called just once and the controller it's never deallocated.
Modal:
#include 'gameViewController'
...
//Present
game *gameViewController = [[game alloc] init];
gameViewController.delegate = self;
[self presentModalViewController:gameViewController animated:YES];
[gameViewController release];
...
//Dismiss
[self dismissModalViewControllerAnimated:YES];
Navigation Controller:
#include 'gameViewController'
...
//Present
game *gameViewController = [[game alloc] init];
gameViewController.delegate = self;
[self.navigationController pushViewController:gameViewController animated:YES];
[gameViewController release];
...
//Dismiss
[self.navigationController popViewController:YES];
if you are using a tab bar and option could be to move all the game-reset instruction in the method viewWillAppear: instead on viewDidLoad.
If you add come code i can be more specific.