Мой MVC работает примерно так.Каждый игровой объект, который создает, представляет собой только одну модель.Пустые данные без логики.Когда объект создан, он также получает мозг или контроллер, прикрепленный к нему.Каждый созданный мозг добавляется в список мозга.Список мозга обновляет каждый мозг, а мозг меняет модель.
Чтобы показать что-то на экране, мозг добавляет модель в сцену.Сцена хранит список всех моделей, которые она отображает.Сцена также обновляется из игрового цикла.Каждому обновлению, которое Сцена просматривает для каждой Модели, любой модели без Представления дается представление (новое представление создается на основе данных в модели).Сцена затем отслеживает вид, пока данные Модели не скажут, что он больше не нужен.
Когда я работаю над iPhone, мне нравится разбивать игровой цикл на собственную нить.Те люди в О'Рейли довольно умны, хотя, возьмите то, что я должен сказать, с долей соли.
[NSThread detachNewThreadSelector:@selector(GameLoop:) toTarget:self withObject:nil];
Затем сам игровой цикл обновляет сначала «Мозги» (или «Список контроллеров»), затем «Сцену» (или «список просмотра»).
Последняя часть, которая связывает еговсе вместе это вход.Для iPhone я использую полноэкранный режим просмотра.В touchesBegan и touchesEnd представления я генерирую события, которые я передаю InputManager.InputManager будет отправлять события различным моделям по мере необходимости.