Ответ 1
Я использую Marmalade/Airplay почти два года в моей инди-игре. Для меня это победа, потому что я всего лишь один программист, и я могу делать практически всю свою работу в Windows с помощью MS Dev Studio (которая на сегодняшний день является моей любимой средой для разработчиков), и потому, что она защищает меня от необходимости иметь дело с большим количеством специфические для платформы детали, особенно с различными инструментами разработки, которые могли бы съесть много времени, которое я предпочел бы потратить на игровой контент.
Скорость не будет проблемой с Мармеладом. Ваш код на С++ запускается изначально. Кроме того, доступ к камере и другим функциям не должен быть большой проблемой; он либо уже предоставлен, либо может быть добавлен с помощью расширения SDK, что довольно просто использовать.
Marmalade - зрелый продукт, и компания очень помогает в решении проблем быстро, даже для разработчиков indie, которые бесплатно используют этот продукт. В дополнение к кросс-платформенному, у него есть некоторые хорошие инструменты, встроенные, такие как трекер утечки памяти, система ведения журнала, инструменты графического анализа и другие.
Есть некоторые недостатки, которые я испытал с Marmalade.
-
Хотя теоретически любой API или сторонний SDK доступен через систему расширений, на практике то, что вам нужно, возможно, еще не существует. В качестве примера, некоторые разработчики в настоящее время пытаются получить пакет аналитики Flurry, и для некоторых это было проблемой. Ситуация похожа на множество других SDK сторонних разработчиков; они могут быть всего лишь пару строк для интеграции, если вы делаете разработку Objective-C, но с помощью Marmalade может быть сложнее.
-
Некоторые вещи менее естественны из-за кросс-платформенного уровня, через который вы работаете. Некоторые примеры для меня были:
-
У меня возникли проблемы с отображением экранов заставки (экранов запуска приложений) для правильного отображения во всех размерах экрана как на iOS, так и на Android. И было трудно заставить их показывать без каких-либо мерцающих, коротких периодов кратковременного или резкого изменения изображений, когда они переходят между загрузкой устройства самого приложения Marmalade, а затем шаг Marmalade по загрузке вашего кода приложения.
-
Marmalade налагает очень простую модель памяти, где вы получаете фиксированную кучу спереди, а все выделение памяти осуществляется через Marmalade. С системной точки зрения приложение просто имеет и хранит большой блок (или несколько больших блоков) памяти. У этого есть некоторые преимущества, но у меня были проблемы, возводимые в квадрат этой модели с iOS-моделью, например, с получением предупреждений о памяти и ожиданием выброса ненужных ресурсов. Это, по-видимому, случай, когда "один размер подходит всем" заканчивается тем, что фактически лишает некоторые ключевые функции.
-
Вы можете использовать диспетчер расширений и некоторые другие методы для отображения собственных элементов пользовательского интерфейса, но интеграция значительного количества пользовательского интерфейса с собственным интерфейсом может быть проблемой. Поэтому, если ваше приложение похоже на игры, и пользователи могут иметь дело с нестандартными кнопками и т.д., Это прекрасно, но если вы ожидаете, что вам нужен значительный собственный интерфейс, это сложнее. Недавние версии Marmalade добавили собственный интерфейс пользовательского интерфейса, который позволяет вам указывать стандартные элементы пользовательского интерфейса общим способом, а затем реализует, используя соответствующие виджеты для устройства. Я не использовал это, но выглядит довольно всеобъемлющим.]
-
-
Если у вас возникают проблемы, часто неясно, является ли это проблемой общей ОС или проблемой Marmalade, и может быть одиноко пытаться найти помощь. Например, недавно я добавил покупку в приложение для своей игры, как на iOS, так и на Android. IAP является сложной задачей, и даже без дополнительного SDK-слоя существует множество особых дел. В моем случае у меня была ситуация, когда приложение было отклонено Apple за небольшую проблему, и, хотя это было в отклонённом состоянии, моя покупка в приложении также находилась в "отвергнутом" состоянии (хотя ничего не было сломано сам IAP, это всего лишь причуда процесса Apple). Когда я пытался выполнить регрессионную проверку функциональности покупки в приложении (в то время как я отправлял исправление для этой проблемы, не связанной с покупкой приложения), игра фактически рушилась, а не получала соответствующий результат ошибки. Я смог определить, что авария не была в моем коде игры, так что это была либо OS (маловероятная), либо средний уровень Marmalade для обработки обратных вызовов в приложении (это то, что оказалось [обновление 11/28/2012: Marmalade, как сообщается, исправил эту проблему в недавнем обновлении SDK]).
Итак, в подобной ситуации вы можете попробовать переходить на Stack Overflow, чтобы получить справку, но на самом деле никто не поможет вам, поэтому вы зависите от команды Marmalade, чтобы вернуться к вам с ответом. Как я уже сказал, они неплохо справляются с этим, но никак не могут конкурировать с почти мгновенными ответами на Qaru от всемирного сообщества обычных программистов iOS. Поэтому я бы сказал, что это последнее - моя самая большая проблема с использованием такой системы, как Marmalade. Это экономит ваше время, не требуя ускорения деталей различных SDK платформы, но когда вы сталкиваетесь с проблемами, вы "на милость" команды Marmalade (или дружественных членов сообщества Marmalade), чтобы вернуться к вы с ответом. (Имейте в виду, что я пишу, как разработчик индивидуала freebie, который получает стандартный приоритет для разрешения проблемы. Вы можете заплатить, чтобы получить гарантированное быстрое разрешение.) Для меня лично было трудно продолжать возвращаться к моему продюсеру и говоря: "Я жду ответа от парней Мармелада на этом".
(Еще один пример проблемы 3 заключается в том, что до недавнего времени возникла проблема с задержкой звуковых эффектов на некоторых устройствах Android. Это была проблема мармелада, и в конечном итоге она разрешила ее, но потребовалось некоторое время, и там в принципе ничего не было вы можете сделать это.)
Имейте в виду, что (как указывали другие респонденты) даже без мармелада вы все еще можете получить основную часть своей базы кода на С++ на iOS или Android.
Несмотря на длинный список потенциальных проблем выше, я являюсь поклонником Marmalade, и я ценю, что вся компания предоставила мне бесплатно. Инструмент действительно сияет, когда дело доходит до других платформ, с которыми вы бы никогда не беспокоились, например (для меня) bada или PlayBook. Вы действительно можете использовать широкий набор устройств с комфортом вашего ПК и Developer Studio (или с Mac с xcode, если вы хотите сделать вашу жизнь немного сложнее;). Инструмент симулятора, который у них есть, замечательный, и было только небольшое количество случаев, когда мне приходилось отлаживать само устройство; в общем, если он работает на симуляторе, он просто работает. IdeaWorks взяла на себя огромную задачу, и они отлично справляются со всеми этими функциями (т.е. В основном, всеми функциями, когда-либо предлагаемыми на мобильном устройстве) на всех этих платформах (т.е. Все значимые устройства, за исключением Windows Phone 7, потому что в настоящее время он не разрешает собственный код). Он просто приходит с некоторыми оговорками.