Ответ 1
Хорошо, я постараюсь сделать довольно длинный ответ короче: это зависит.
Теперь для нескольких более длинных мыслей и объяснений - это долго. Если вы не прочтете его до конца, убедитесь, что вы прочитали последние несколько предложений.
Сначала мне нужно уточнить, что "технологии" или API, которые вы указали, в основном касаются исключительно графики (кроме UIKit, который также обрабатывает ввод), и это нормально, если вы понимаете что графика - это только часть (и по моему опыту я мог бы добавить "второстепенный" ) целая игра.
Помимо графики, при выполнении реальной игры будет достаточно немного справиться. Чтобы не отвлекаться от вопроса слишком много, позвольте мне просто бросить несколько слов: логика игры, ИИ, управление ресурсами, физика, взаимодействие, сетевое взаимодействие (возможно), звук и т.д. Моя рекомендация - получить хорошую книгу по этой теме и погрузиться в [1,2].
Теперь, когда я снял это, вернемся к вашему вопросу:
В принципе, OpenGL и QuarzCore являются основными технологиями, чтобы "получить что-то нарисованное на экране". Кроме того, все остальные технологии построены. Поэтому теоретически, если вы хотите пойти Кстати, вы можете реализовать все, что связано с графическим выходом с OpenGL или QuarzCore самостоятельно (тогда как вам придется учитывать тот факт, что QuarzCore - это только 2D-чертеж, тогда как OpenGL поддерживает 3D, а 2D - просто особый случай 3D). Я действительно считаю, что Quarz также построен поверх OpenGL, но я не уверен в этом.
UIKit построен поверх них, и использование его в основном состоит из двух вещей: а) избежать повторного создания колеса и б) сделать создание пользовательских интерфейсов проще, быстрее и надежнее. Конечно, вы могли бы нарисовать каждую кнопку самостоятельно, указав координаты квадрата и отправив его в OpenGL для обработки. Затем вам нужно будет проверить каждый пользовательский ввод, если он нажмет вашу кнопку и вызовет связанный обработчик. Тем не менее, просто создание экземпляра UIButton (возможно, даже в IB) и указание обработчика по щелчку удаляет довольно много работы.
Итог: UIKit отлично подходит для создания пользовательских интерфейсов. Кроме того, он может использоваться вместе с OpenGL и QuarzCore. Я использую его для пользовательского интерфейса на iOS даже в играх.
Относительно Cocos2D: Это "игровой движок", построенный поверх OpenGL. Как таковой, он включает в себя довольно много материала, который вам придется обрабатывать самостоятельно, когда вы запускаете свой собственный движок OpenGL, то есть управление сценой, спрайты, текстурирование, сетки, ресурсы и т.д. Я считаю, что он также имеет связи с физикой и библиотеками обнаружения столкновений, Однако для понимания того, что там происходит, требуется узнать, как работают компьютерная графика и игры [1,2,3].
В нижней строке: вы должны использовать Cocos2D для вашей (2D) игровой графики и UIKit для выполнения пользовательского интерфейса.
CoreAnimation затем предназначен для анимации материалов CoreGraphics. Он обеспечивает простой интерфейс, например. для плавного скольжения или поворота вокруг, инкапсулирования всех необходимых вычислений (интерполяции, перерисовка и т.д.). Не будет работать с OpenGL, но я думаю, что у Cocos2D также будет оболочка для этого.
Нижняя строка: используйте для анимации пользовательского интерфейса.
Сказав все это и просто сглаживая верх, я не хотел пугать вас в первую очередь.
Для вашей особой игры (и каждая игра особенная) вы вполне можете уйти с помощью только UIKit и CoreAnimiation для графики, и это вполне может сделать игру-блокбастер. Они позволяют делать много рисунков с помощью удобного интерфейса, а также не требуют слишком глубоких знаний и достаточно хороши для небольших проектов.
Если у вас отличная идея игры, используйте самое простое графическое решение, которое удовлетворит вас и ваших игроков и осознает это. Как только вы это сделаете, вы можете улучшить его, если это необходимо.
[1] http://www.mcshaffry.com/GameCode/
[2] http://www.gameenginebook.com/
[3] http://www.opengl.org/documentation/red_book/