Подтвердить что ты не робот

С чего начать разработку игры? UIKit против Core Animation против QuartzCore против OpenGL против cocos2D

Если бы мне было интересно получить информацию о разработке игр на iPhone/iPAD, какие предложения о том, на какие технологии начать изучать? На самом деле просто простая пуля по каждой из этих технологий, которая подчеркивает, как она вписывается в типичное развитие игры, была бы замечательной, поскольку причиной этого вопроса было то, что я не понимал, как они сочетаются друг с другом. Итак, в этом случае, где они примерно подходят здесь:

  • UIKit
  • Основная анимация
  • QuartzCore
  • OpenGL
  • Cocos2D

У меня создалось впечатление, что cocos2D будет способ пойти, и это, кажется, более простая оболочка для OpenGL? Не знаете, где это происходит после UIKit против Core Animation и QuartzCore?

4b9b3361

Ответ 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/