с чего начать разработку игр? UIKit против Core Animation против QuartzCore против OpenGL против cocos2D - PullRequest
16 голосов
/ 22 ноября 2011

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

  • UIKit
  • Базовая анимация
  • QuartzCore
  • OpenGL
  • Cocos2D

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

1 Ответ

39 голосов
/ 22 ноября 2011

Хорошо, я постараюсь сделать довольно длинный ответ коротким: это зависит.

Теперь несколько длинных мыслей и объяснений - это долго. Если вы не прочтете его до конца, обязательно прочитайте последние несколько предложений.

Прежде всего мне необходимо уточнить, что перечисленные вами "технологии" или API в основном касаютсяисключительно с графикой (кроме UIKit, который также обрабатывает ввод), и это нормально, если вы понимаете, что графика - это только часть (и, как я понимаю, я мог бы добавить «незначительную») всей игры.

Помимо графики, в реальной игре будет гораздо больше возможностей.Чтобы не отвлекаться от вопроса, позвольте мне добавить несколько модных слов: игровая логика, искусственный интеллект, управление ресурсами, физика, взаимодействие, создание сетей (возможно), звук и т. Д. Моя рекомендация - получить хорошую книгу.о теме и окунемся в [1,2].

Теперь, когда я снял это, вернемся к вашему вопросу:

По сути, OpenGL и QuarzCore являются основными технологиями, чтобы «привлечь внимание»экран".Все остальные технологии построены на этом.Таким образом, теоретически, если вы хотите пойти по этому пути, вы можете реализовать все, что связано с выводом графики, только с помощью OpenGL или QuarzCore (тогда как вам придется учитывать тот факт, что QuarzCore является только 2D-рисованием, тогда как OpenGL также поддерживает 3D, а 2Dдействительно просто особый случай 3D).Я на самом деле верю, что Quarz также построен поверх OpenGL, но я не уверен в этом.

UIKit построен поверх них, и его использование делает в основном две вещи: a) избегать повторного изобретения колесаи б) сделать создание пользовательских интерфейсов проще, быстрее и надежнее.Конечно, вы можете нарисовать каждую кнопку самостоятельно, указав координаты квадрата и отправив их в 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/

...