2009-07-04 4 views

ответ

21

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

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

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

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

3

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

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

+4

«OpenGL, если все сделано правильно, вероятно, будет выглядеть лучше». Я полностью не согласен с этим комментарием. Вероятно, у вас будут проблемы с псевдонимом, проблемы фильтрации текстур и т. Д. И т. Д., Которые у вас не будут с предварительно обработанными частями. Конечно, если бы вы имели в виду, что «это будет более впечатляюще с 3D-вращением вокруг доски», да. – jv42

+0

Он не будет выглядеть лучше с OpenGL. Для простых игр CoreAnimation будет работать отлично! – bentford

3

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

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

2

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

+2

CoreGraphics наверняка. Он может легко обрабатывать анимацию 20 - 30 спрайтов на экране одновременно с очень небольшими проблемами с производительностью. Это будет быстрее изменить, потому что вы можете использовать инструменты, такие как photoshop, для повторной сборки изображений. OpenGLES может быть очень аккуратным, если вы хотите сделать, может быть, некоторые действительно крутые движения камеры или некоторые действительно аккуратные анимации. –

+0

Вы также можете использовать свой ценный Photoshop с OpenGL. Apple предоставляет код для загрузки UIImages в виде текстур OpenGL. –

6

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

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

+0

Используйте Cocos2D, вы никогда не столкнетесь с блоком, который из-за сильной анимации кадра. Также вы можете добавить эффекты фантазии частиц. Это очень легко узнать и начать видеть результаты. Обеспечивает управление сценой. –

0

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

2

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