Настольная игра для iPhone: OpenGL ES или CoreGraphics?

Я хочу запрограммировать настольную игру (похожую на шашки) для iPhone. Будет ли OpenGL ES или CoreGraphics лучшим вариантом? Что большинство игр этого типа в App Store используют?

7 ответов

Решение

На самом деле, в этом случае я бы предложил Core Animation или даже сами UIViews. Если вы выполняете прямое рисование всех своих элементов в одном представлении с помощью Core Graphics, а затем обновляете это представление для каждого кадра анимации, вы получите ужасную производительность.

Я бы предложил нарисовать отдельные элементы игрового поля (фигуры, жетоны, квадраты доски и т. Д.) В виде отдельных UIViews или CALayers, а затем анимировать эти слои или виды вокруг. UIViews не намного тяжелее, чем CALayers, и они используют Core Animation за кулисами для создания простых движений, масштабирования или затухания анимации. Они также могут реагировать на сенсорные события. CALayers полезны, если вы хотите создать более кроссплатформенную (Mac и iPhone) игру или если вам нужно сделать более сложные анимации.

Для двумерной игры я бы остановился на OpenGL, пока вы не были абсолютно уверены, что не можете получить желаемую производительность от Core Animation. OpenGL гораздо менее элегантен для кодирования.

Для хорошего примера того, как сделать настольную игру с использованием Core Animation, Apple предоставила пример кода GeekGameBoard. Хотя это приложение для Mac, код Core Animation может транслироваться прямо на iPhone.

Вы также можете проверить cocos2d для iphone - это довольно полнофункциональная 2d библиотека игр; у него есть мозаичные карты, спрайты, параллакс, планирование и т. д. Я использую его для своей игры, и это мне очень помогло.

http://code.google.com/p/cocos2d-iphone/

Если ваша перспектива в основном является видом сверху, пользовательский вид находится в фиксированном положении, и вам не нужно отображение текстуры во время выполнения или специальное освещение, тогда основная графика будет проще. В противном случае я бы пошел с OpenGL (или с одним из тех сторонних наборов для создания игр, как Unity, которые делают его простым).

Это действительно зависит от того, какой вид вы собираетесь.

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

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

Если вы не очень заинтересованы в производительности, чего, скорее всего, нет в настольной игре, используйте CoreGraphics. Вы получаете роскошь работать на более высоком уровне абстракции, а также получаете некоторые вещи, которые вам придется писать вручную, например, анимацию. (PS Я полагаю, вы говорите о 2D.)

Для этого однозначно основная графика и основная анимация. У Джеффа ЛеМарша есть образец шаблона для игры в Блэк Джек в его блоге - я только что закончил головоломку suduko с этим подходом. Что касается cocos2D, который я использую для платформенной игры - openGL не улучшит и не улучшит графику - это определенно не улучшит внешний вид графики - вы можете сфотографировать свое сердце на этом, чувствовать себя в безопасности и знать, что он будет отлично смотреться, Изучение Cocos2D для этого слишком много - так же, как и изучение openGL ES - просто используйте основную графику и получайте ее. Что касается знания OpenGL ES на будущее - конечно, - но вы должны понять "ядро" Apple, прежде чем пытаться делать это.

OpenGL. В конечном итоге это будет стоить того, и я подумал, что кривая обучения была еще проще, чем CoreGraphics для 2D спрайтов.

Другие вопросы по тегам