Действительно ли многозадачность имеет значение для простых игр для iPhone? - PullRequest
1 голос
/ 24 июля 2010

Я делаю относительно простую игру для iPhone на базе OpenGL ES.Во время тестирования на iPhone 4 я заметил, что многозадачность не «работает».В частности, приложение автоматически закрывается, когда оно переводится в фоновое состояние (я думаю, что это связано с выполнением вызовов OpenGL в фоновом режиме и / или не высвобождением некоторых ресурсов).Поскольку игра довольно проста ... 20-30 коротких уровней (около 1 минуты на уровень) ... Мне интересно: В этом случае многозадачность действительно имеет значение?

Вся игра основана на OpenGL, а пользовательский интерфейс очень быстрый ... так что завершение приложения, его перезагрузка и просмотр нескольких экранов не кажутся серьезными.Как вы думаете?В этом случае поддержка многозадачности имеет значение?

Ответы [ 2 ]

2 голосов
/ 24 июля 2010

Это важно, если вы хотите, чтобы ваши пользователи нравились вам. Что вы можете сделать, это приостановить игру и прекратить любые вызовы рисования, когда ваше приложение получает

- (void) applicationWillResignActive:(UIApplication *)application

и либо оставаться в режиме паузы, либо возобновить рисование в

- (void)applicationDidBecomeActive:(UIApplication *)application

Вы должны сделать это, даже если ваше приложение не работает на многозадачном устройстве, потому что, если вы получите Push-уведомление или Local Notification, ваше приложение станет неактивным, и вы должны приостановить игру.

2 голосов
/ 24 июля 2010

Как спокойно ссылается на документы, вот параграф:

Не делайте никаких вызовов OpenGL ES из своего кода.Вы не должны создавать объект EAGLContext или выполнять какие-либо команды рисования OpenGL ES любого вида.Использование этих вызовов приведет к немедленному прекращению работы вашего приложения.

Не знаю, почему вы все равно хотите рисовать в этом случае.

Что касается «перехода через несколько экранов»... Почему бы не сохранить текущее состояние при выходе из приложения и все равно восстановить его позже?

...