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

StackOverflow https://stackoverflow.com/questions/1176266

Вопрос

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

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

Большой вопрос, я знаю.Спасибо!

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

Обнаружение столкновенийКак я узнаю, что мой мяч ударился о стену?Ответ: обнаружение столкновений.Существует множество форм обнаружения столкновений, таких как «сфера-сфера», ААББ, ООББ, выпуклые оболочки, треугольная сетка и т. д.

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

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

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

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

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

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


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

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

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

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

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

Стон3Д для iPhone

Оолонг Двигатель

SIO2Engine

iTGB для 2D-игр

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top