Каковы подводные камни при разработке игры для iPhone?

Я привык разрабатывать бизнес-приложения и справочные приложения. Теперь мне нужно сделать игру для iPhone. Какими советами вы можете мне помочь:

  1. понимание масштабов проекта
  2. определение результатов
  3. указание игрового процесса и других параметров
  4. оценка усилий по разработке
  5. тестирование игры

Я знаю, это большой вопрос. Спасибо!


person Piedad    schedule 24.07.2009    source источник
comment
Если вы спрашиваете подсказки и подсказки, должно ли это быть вики Сообщества?   -  person Xetius    schedule 24.07.2009


Ответы (2)


Основное различие между бизнес-приложениями и играми, особенно на мобильных устройствах, заключается в важности производительности. Приложение, которое создает форму и ожидает ввода пользователя, вероятно, пока что ничего не делает. С другой стороны, игровой цикл происходит постоянно и, вероятно, делает много. Бизнес-программисты не привыкли думать подобным образом, но игры расходуют заряд батареи, и, хотите верьте, хотите нет, то, как вы реализуете свою игру, будет иметь большое влияние на то, как быстро разрядится эта батарея.

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

Если ваши бизнес-приложения были на iPhone, вы, вероятно, использовали 100% Objective-C. (Если вы создавали приложения C # или Java на настольных компьютерах, тогда добро пожаловать в управление собственной памятью.) Некоторые скажут вам, что управление типами времени выполнения в Objective-C слишком медленно для сложных игр. Конечно, люди делают нормальные игры, используя его с Cocos2D и другими движками, но опять же, это зависит от игры. Есть профессиональные разработчики, которые будут работать только на C ++ или даже на чистом C.

person Buggieboy    schedule 06.10.2009

Мой ответ не соответствует ответу методологии водопада, который вы искали, потому что я думаю, вам нужно будет изучить навыки программирования игр, прежде чем вы сможете планировать, проектировать, внедрять и тестировать его. Игровое программирование ОЧЕНЬ отличается от бизнес-программирования и от целой другой области как таковой.

Из-за того, что у вас нет опыта в программировании игр, вам нужно будет изучить несколько концепций, прежде чем вы сможете программировать игровой период, не говоря уже об одном на iPhone.

Некоторые из этих вещей будут зависеть от того, программируете ли вы 3D-игру или придерживаетесь стиля 2D-платформы.

OpenGL ES Первое, что вам нужно будет изучить, - это язык программирования OpenGL ES. По сути, это 3D API, который позволяет рисовать трехмерные примитивы. Вам все равно нужно будет использовать это, если вы кодируете 2D-игру, поскольку это быстро из-за использования графического процессора для ускорения. В Google есть несколько хороших руководств, с которых вам следует начать.

Векторная математика. Если вы занимаетесь трехмерной математикой, вам нужно будет изучить трехмерную векторную математику, векторы в основном используются для всего в играх, направления взгляда камеры, положения персонажей, скорости, обнаружения столкновений и т. д. 2D-векторы (x, y) без компонента z по-прежнему необходимы для программирования 2D-игр.

Обнаружение столкновения Как я узнаю, когда мой мяч ударяется о стену? Ответ - обнаружение столкновений. Существует множество форм обнаружения столкновений, таких как Sphere to Sphere, AABB, OOBB, выпуклая оболочка, треугольная сетка и т. д.

AI Как заставить врага атаковать моего персонажа? Искусственный интеллект - еще одна важная область, позволяющая неигровым персонажам / врагам принимать разумные решения. ИИ может быть простым, например, с операторами if else, но для его эффективности обычно требуются конечные автоматы или нечеткая логика.

Поиск пути. Если вы хотите переместить персонажа из точки A в точку B, избегая врагов и движущихся препятствий, вам необходимо использовать алгоритм поиска пути. Звезда (А *) - одна из самых популярных.

График сцены Если вы хотите, чтобы на экране одновременно отображалось 10-20 + врагов, вам нужно будет закодировать граф сцены для управления динамическим отрисовкой, логикой, а также созданием и удалением ресурсов. Если вы не знаете, что такое полиморфизм, вам необходимо знать его, так как это важно для ваших игровых объектов, и он связан с графом сцены.

Физика. Положение, скорость, ускорение, гравитация и лучи - все они представлены с помощью векторов, и вам может потребоваться освежить свои знания математической физики, чтобы закодировать любую игру. Начнем со Второго закона движения Ньютона F = MA (Сила = Масса * Ускорение). Физический движок с открытым исходным кодом, такой как Bullet, ODE, Newton, Tokamak, упростит задачу, а это значит, что вам не нужно будет писать эти правила физики самостоятельно.

Objective-C ++ Это необязательно, но рекомендуется. Если вы не знаете C ++, это, по сути, смесь C ++ и Objective-C. Я предпочитаю использовать C ++ для основного игрового движка и программирования из-за скорости C ++ и доступности сторонних библиотек на C ++.

Звук. Если вам нужен звук, вы можете просто пойти дальше и использовать простые аудиофреймы, которые предоставляет Apple, однако для трехмерного позиционного звука потребуется что-то получше. Я бы порекомендовал изучить FMOD SDK для iPhone. Как упоминал @Stowelly, FMOD требует лицензии на коммерческое распространение, но есть и другие, которые не требуют лицензионных отчислений.


Используйте игровой движок. В настоящее время для iPhone доступны игровые движки, которые значительно упростят вам запуск игры. В вашем случае это будет быстрее, хотя вам все равно придется учиться. концепции, о которых я упоминал выше.

Вот некоторые известные мне игровые движки:

Unity3D Это, вероятно, самый популярный из известных мне. Unity - это игровой движок для ПК / Mac, который позволяет вам писать код на Mac и компилировать для Windows / Linux / Mac OS X. Я сомневаюсь, что корпус iPhone совместим напрямую с другими платформами, я предполагаю, что вы будете ограничены iPhone, если вы начали новый проект. Однако коммерческое развертывание этого движка стоит от 199 до 399 долларов.

Cocos2D. Это движок для 2D-игр с открытым исходным кодом, который может быть полезен для многих игр. Стоит взглянуть. Размещено в коде Google.

Вот еще несколько вариантов, на которые стоит обратить внимание:

Ston3D для iPhone

OOlong Engine

SIO2Engine

iTGB для 2D-игр

person Community    schedule 24.07.2009
comment
Хороший ответ. Понятия не имею, почему это было отклонено, хотя OP, похоже, не знает, чего они хотят, кроме игры для iPhone. - person Xetius; 24.07.2009
comment
Небольшой совет, если вы планируете опубликовать свою игру в магазине приложений, для FMOD sdk потребуется лицензия ... но в целом отличная информация :) - person Stowelly; 24.07.2009
comment
Вы упомянули, что для разработки под iPhone доступны игровые движки. Не могли бы вы перечислить некоторые из них, о которых вы знаете или порекомендуете? - Благодарность. - person Shrill; 24.07.2009
comment
Публиковать игры Unity3D на нескольких платформах несложно. Таким образом, с относительно небольшими усилиями вы можете опубликовать свою игру на iPhone и в Интернете (используя плагин для браузера Unity) и на Mac, Linux ... и Wii и т. д. (я на них не работаю, но мне нравится Unity :)) - person Felixyz; 24.07.2009