15 апреля 2013

iOS: стартуем...

Сегодня я немного позанимался портированием игры с Flash на iOS, и решил рассказать об этом занятии, поделиться что ли...
В общем, все делом в том, что я никогда не программировал под iOS, никогда не исследовал этот вопрос, не изучал все тонкости портирования флеш-игр. Первым делом у меня возникла надежда, что тонкостей особо и нет, что все должно пройти гладко и спокойно. Но этого не произошло, сборка с помощью Air оказалась намного более сложным процессом, чем я мог представить ранее
Поэтому я решил попробовать собирать свои мысли и находки по вопросу iOS-разработки в журнале, чтобы и самому не забыть и с другими поделиться! А сегодня - первая подборка, введение как бы... поэтому не ждите кусков кода или каких-то великих открытий. Сегодня - только мои первые бессвязные мысли, немного об инструментах и общие положения, связанные с портированием флешки на iOS...
Установка
Сначала нужно загрузить Air, подключить в FDT и указать все необходимые сертификаты для сборки.


Первый запуск
Получилось! Ура! Какой-то ipa выплюнулся на выходе. Что это за файл? Это и есть файл-приложения, устанавливаемый на i-девайс... Что теперь с ним делать? Нужно-таки и  установить на девайс и проверить как все работает... Я скачал программу iFunBox, в которой использовал только одну кнопку - Install App. Все было замечательно, но немного нудно, если честно... Туда-сюда переключись, приложение загрузки и т.д...
Порывшись в настройках сборки проекта в FDT, я нашел возможность заливать ipa-файл в автоматическом режиме. Выглядит это так:


Я - новичок...
Хочу еще раз напомнить, что я собираю приложение в FDT, не так давно пересев на этот IDE, я в нем пока не успел разобраться как следует и зачастую допускаю глупые ошибки... если что - поправляйте меня в комментариях, буду рад любому совету!
Также добавлю, что, если на флеш я программирую где-то года два, то iOS-устройства для меня новинка... И здесь также имеются подводные камни, которые мне пока не разглядеть. Поэтому я буду стараться описывать свои находки здесь, в журнале. Например, сейчас меня гложат вопросы - "что такое ASC 2.0?", "стоит ли переходить на Starling?", "стоит ли отказываться от растеризации объектов?", "как определить, сколько приложение кушает оперативки?", "как избавиться от подтормаживаний при растеризации?", "стоит ли заморачиваться на iPhone, или сконцентрироваться на iPad?"... и так далее и тому подобное...
Но, вернемся к текущей разработке...

Версия Air
Взглянув на используемый Air, я немного встревожился - стояла версия 2.5... В предыдущих сообщениях мне посоветовали установить самую свежую версию, таким образом есть возможность того, что производительность сильно возрастет. Но, загрузив Air 3.6 и скопировав его в нужное место, я обнаружил, что сборка проекта вообще перестала работать! Начали вылезать странные ошибки, связанные с java. Погуглив, я все время натыкался на советы "откатите jdk до версии 1.6"... Так у меня и так установлена только 1.6! Что делать?!

Flex 4.6, Air 3.6, jdk- ?
Я долго мучался, пытаясь разобраться что и как... Скачивал последнюю версию jdk, сливал различные flex и air, даже вообще удалял jdk с компьютера. Ничего не помогало! И вот, о, чудо, заработало! Я снова как и прежде слил Flex 4.6 и Air 3.6, а также удалил jdk, и ошибки пропали! Конечно, стоит во всем этом разобраться, чтобы не допустить этого снова... но пока я праздную, ведь мне удалось добиться желаемого результата!

Frames per second
Ну и как? - спросите вы... Как теперь производительность? Ну, определенно стало лучше! Не могу сказать точно, пока ориентируюсь на глаз, но заторможенность процесса и след простыл. Конечно, я буду оптимизировать графику, снижать общую нагрузку, но результат уже на лицо... Adobe трудядся в поте всего тела, раз смогли так значительно увеличить скорость работы своего Air! Молодцы!

Что дальше?
Теперь я буду переносить весь проект на новый лад. Буду многое переделывать, добавлять новые фичи, бороться со всякого рода проблемами. Например, сейчас не работает звук. Как я понял, для корректного воспроизведения на iOS, нужно переписывать код загрузки и запуска самих звуков. Не уверен, что с этим получится разобраться быстро. Также я встретил 
проблему, связанную с разницей в мышке и тапах. Выглядит это так, что кнопки не отжимаются в нормальное состояние после тапа. То есть я тыкнул пальцем, кнопка подсветилась, но не вернулась обратно. Таким образом, тапнув по всем кнопкам на экране, можно подсветить их всех, ужас! Ну и, конечно, одна из гравных проблем - все жутко долго грузится... Выбираю какой-нибудь уровень и игра зависает на десяток секунд. Выглядит удручающе... Но проблемы таятся не только в программной части игры! Достаточно вспомнить, что разрешение флешки и iPad-а, например, отличаются довольно сильно!

Разрешение
Изначальная флешка имела размер 640x480. Разрешение экрана iPad'а - 1024x768 (не учитывая Retina-экраны). С одной стороны - это катастрофа, нужно переделывать все, начиная с меню и заканчивая элементами уровней, расположением хинтов, масштабом игровых объектов и вообще всего-всего. Но с другой - высовобождается немного лищнего места, из-за чего я смогу делать чуть более сложные уровни, добавить каких-то новых веселых фич.
Масштабный коэффициент игровых объектов получился 1.3, и тапать удобно и громоздко пока не выглядит. Так что сделать играбельными уровни, надеюсь, будет не трудно... А вот меню, все диалоги, прелоадер, расположение хинтов и многое другое придется переделывать практически с нуля.

Когда ждать релиза?
Не знаю... планы такие: первую работоспособную демку буду рассылать всем известным мне паблишерам на iOS. Когда они все откажутся - буду допиливать сам и попробую выпустить своими силами... Посмотрим, что из этого выйдет! Кстати, тыкать пальцем по экрану вместо кликов мышки - определенно классно! Какое-то ощущение живости происходящего, как бы близкий контакт с игровым миром... Супер! 

Вот такие дела... постараюсь отписываться по ходу разработки, возможно и вы найдете что-то интерсное для себя в моих записях!

Сообщения, схожие по тематике: