Adobe Air. Спасибо, что живой

Эта запись по мотивам дискуссий в Twitter, где мы «всем селом» активно обсуждали будущее AIR.

Как вы помните, еще совсем недавно, буквально год назад, я активно болел за AIR. А именно, возлагал большие надежды на эту технологию, и в случае окончательной и бесповоротной смерти Flash я рассчитывал перейти на AIR. Еще год назад Flash был чуть более живой, чем сейчас, но уже тогда его судьба была предопределена. Поэтому я активно искал пути отступления и возможность перехода на другую платформу. ? первым в списке платформ, на которые я хотел уйти был, конечно же, AIR.

Почему AIR?

Не смотря на то, что в AIR не было практически никаких преимуществ перед любыми другими платформами, я желал перейти именно на него по одной простой причине: это моя зона комфорта!

Проведя в работе над Flash-играми не один год, мне было очень грустно бросать Action Scritpt 3. Ведь это не только привычка к уже опробованным инструментам, использование проверенных библиотек, но и огромный багаж знаний о том, как правильно писать код, понимание слабых и сильных сторон языка. В общем, речь ведь шла практически о том, чтобы выкинуть и забыть весь этот опыт, накопленный за годы работ, и я старался найти причины и объяснения, почему этого не делать. Я боролся и хватался, как мог, за AS3.

Только вот беда, моя любовь к платформе затуманила мне глаза и не позволяла взглянуть на суть вещей трезвым взглядом. Нет, я конечно же, понимал, через что мне предстоит пройти, чтобы работать с AIR, но я не хотел осознавать всех тех последствий, которые могли возникнуть.

Когда я собирался переходить на AIR я активно изучал этот вопрос. Уже тогда я примерно старался оценить свои силы и возможности. Я реально был оптимистом. Я смотрел на Starling , смотрел на его сильные и слабые стороны, и пытался придумать, как можно переписать или адаптировать Anthill под аппаратную поддержку. Более того, появились даже энтузиасты, которые были готовы мне помочь с этим, и у нас образовалась небольшая Skype-группа, в которой мы обсуждали возможное развитие движка. Только вот дальше обсуждений дело не пошло.

Объем работ предстоял быть большим. То, что я сделал один на протяжении нескольких лет, постепенно разрабатывая Flash-игры и аккуратно компонуя и собирая небольшой Framework (не без недостатков конечно же), нам предстояло переписать в более короткие сроки на чистом энтузиазме, и мы просто не знали с чего начать.

Попутно я пытался решить вопрос с новой игрой. ? тут, как вы помните, я пытался протолкнуть идею новой игры на AIR — но эта идея не находила понимания у издателей. Причем, речь не про одного какого-то мифического издателя, а про нескольких разных издателей, которые все как один хотели видеть новые игры на Unity. Я сопротивлялся и настаивал на своем, но ни к чему хорошему это не привело.

Работа над движком тоже так и не пошла. Поковыряв разные библиотеки и общие возможности AIR, стало понятно, что это последнее, что стоит использовать для проектов выше среднего. Но почему?

Первое, что я сделал: я начал поиски интересных проектов на AIR. Но по факту оказалось, что игр на AIR очень мало. ? среди них есть даже крупные игры, но это скорее исключение, чем правило. Так что же с AIR не так!?

AIR и производительность

Одна из самых актуальных проблем AIR заключается в его производительности. Если в двух словах, то все упирается в достаточно тормозной AS3 и виртуальную машину, которая используется для «проигрывания» наших Flash-программ внутри AIR. Здесь было бы неплохо привести примеры тестов с их результатами, но уверяю вас, их так много, что они легко гуглятся, поэтому я не стал тратить время на создание своих. Безусловно AIR все еще обновляется и в некоторых обновлениях даже может похвастать более высокими показателями производительности, но они все еще далеки до идеальных.

Конечно же, фанаты AIR могут оспорить сей факт: «Зачем тебе 100500 спрайтов рендерить!?». Но, как показывают тесты, тормозит не только рендер, но и весь код в целом, а это означает, что запас производительности лимитирован и значит большой и сложный проект будет написать проблематично, упираясь в потолок производительности. А если речь идет о 3D?

? тут становится очевидно, почему нет больших игр на AIR — разработчики для более серьезных игр выбирают более серьезные движки и технологии, чтобы с запасом.

AIR и инструменты

Вторая проблема для меня заключается в том, что AIR не предоставляет какой-либо среды или IDE для работы. Все что дает AIR — это фактически низкоуровневое API, которое я могу использовать как угодно на свое усмотрение (речь в первую очередь про аппаратное ускорение). Таким образом, прежде чем приступать к разработке игры на AIR, мне нужно написать какую-то свою среду и инструменты или использовать сторонние, тут даже можно Flash IDE попытаться адаптировать. Но суть в том, что сторонних инструментов практически нет, а Flash IDE — это вариант уже от безрыбья. ? вот тут, оглядываясь на Unity и Unreal Engine, уже начинаешь крепко задумываться: стоит ли писать свой Unity или Unreal Engine на AIR?

Если хочется разрабатывать игру, а не инструменты, то, конечно же, свой аналог Unity писать на AIR нет смысла — это сделали уже за нас. А если вы любите создавать свои инструменты и IDE, то прежде, чем решаться на такую авантюру сейчас, крепко подумайте над тем, нужно ли это кому-нибудь кроме вас!?

Flash топит AIR

Третья проблема AIR заключается в том, что Flash, сам не желая того, тянет на дно за собой и AIR. В связи с тем, что Flash все больше и больше теряет свою актуальность и востребованность, многие Flash разработчики уходят на другие платформы и движки. ?нтерес к Flash, к AS3 и как следствие к AIR падает. А это значит, что многие open source проекты, библиотеки, как для AS3, так и для AIR забрасываются и более не обновляются. Признаться, еще год назад эта проблема не выглядела так явно, как сейчас. Но когда, в ходе жарких дискуссий я побежал на GitHub в поисках свежих и актуальных движков под Flash, я с ужасом обнаружил, что более 50% различных библиотек и движков, которые когда-то были на слуху, на текущий момент не обновляются уже по несколько лет.

Впрочем, кого я обманываю. Ведь и год назад многие большие компании уже открыто сворачивали свои движки, например, Alternativa Platform более 2х лет назад свернула поддержку и развитие своего движка Alternativa 3D, потому что уже тогда все было понятно. А что на счет Flare3D? ?х блог замер на 2014 году! Но покопавшись на форуме становится очевидно, что и этот движок практически прекратил свое свое развитие, и использовать его сейчас можно только на свой страх и риск, и это при том, что это коммерческая разработка. ? такая ситуация с подавляющим большинством фреймворков и библиотек. Достаточно заглянуть в гиты самых известных: Flixel, FlashPunk чтобы осознать всю горькую правду.

Но фанбои AIR бьют себя пяткой в грудь и кричат: «Все же компилится и работает!». Но что делать, если вдруг после очередного обновления AIR оно перестанет компилиться и работать!? Лютый фанбой ответит: «Там обратная совместимость, не то, что у Unity!». Да, у Unity и правда проблемы с обратной совместимостью, но это явно не умирающая технология, у которой есть живой саппорт и регулярные обновления, и это совершенно обычная ситуация, когда обновление движка что-то может сломать. Но рассчитывать, что обновление умирающей платформы не сломает старый движок, который уже два года не обновляется и саппорта нет — это словно пойти по тонкому льду в надежде не провалиться.

Более того, речь тут даже не о библиотеках, которые могут отвалиться с обновлением чего-либо, сколько о том, что нужно иметь хоть какой-то задел на будущее, верно?

Давайте представим себе ситуацию: я сейчас бросаю Unity и начинаю с нуля писать игру и инструменты под AIR. Пусть это будет даже не Зомботрон, а что-то по-проще. Я вложу какое то время и силы в код и инструменты, потом выпущу игру на мобилки с расчетом заработать на рекламе, а рекламная сеть, через пару недель после релиза внезапно обновит свой API и перестанет поддерживать AIR, потому что на AIR у них крутится 100 игр, а на Unity или UE по 100500 на каждую. Соотвественно какой профит им поддерживать и обновлять API для AIR, когда лучше бросить эти силы на то, что более востребовано!?

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

Существуют библиотеки, которые работают годами без обновлений — таких библиотек тоже много, например какой-нибудь парсер для JSON или упаковщик данных, аля ZIP. Но, как не крути, добрая половина сторонних библиотек, конечно же, требует поддержки и обновлений. ? когда мы берем в проект брошенную библиотеку, мы должны учитывать возможный риск в будущем.

Конечно, речи не идет о том, что AIR бросят завтра или послезавтра. Но когда мы, как разработчики, принимаем решение на тему, что использовать, мы должны закладывать некоторую перспективу на будущее и понимать, что если мы беремся за дело, то даже если это и схлопнется, то явно не через год, и у нас будет время, чтобы пересмотреть стратегию со своим проектом.

Перспективы AIR

Тут сколько на кофейную гущу не смотри, уже и так очевидно, что у AIR нет будущего. Причины примерно такие же, как и у Flash, отсутствие развития, слабая поддержка и…. отсутствие кредита доверия!

У каждого разработчика и не только всегда есть определенный процент доверия к той или иной компании. Где доверие, там лояльность и вера в определенные инструменты и компанию в целом. Так вот, не знаю как у вас, а у меня к Adobe не осталось никакого доверия, тем более в том, что касается Flash.

У Flash по прежнему нет достойного технологического конкурента, но он мертв, как никогда. Flash Professional переименован в Animate CC, а новые фичи настолько скудны, что, установив старый добрый Flash CS4, разница с новым Animate CC будет заметна только в темном скине и бесцветных иконках. У Flex были отличные возможности, но эта технология так же выброшена в корзину. Конечно, энтузиасты еще используют Flex в своих проектах, но если говорить о серьезном бизнесе, то как можно строить серьезный бизнес из того, что перестали развивать и поддерживать и выбросили «на помойку»?! А что ждет AIR?

Да, AIR все еще обновляется и поддерживается, даже появляются какие-то новые фичи. Но на активное развитие это уже не похоже, скорее обновления ради обновлений, впрочем, это лучше, чем ничего. Но знаете, мне все чаще кажется, что Adobe где-то на верху уже дернула рубильник отключения поддержки и развития Flash и AIR, просто из-за большой компании и как следствие бюрократии, сигнал до нужных людей дойдет только через два годика.

Стоит ли работать с AIR?

Не смотря на все выше написанное, AIR, конечно же, актуален и годится для решения некоторых задач. Если вы компания или команда разработчиков, которые успешно работают с AIR и зарабатывают с игр, с заказов или еще с чего-то, что как-то связанно с AIR, то очевидно, что нет смысла на ровном месте бросать эту технологию и срочно что-то менять.

Тут фанбои AIR часто любят мне писать: «Пока ты ругаешь AIR — кто-то на нем бабло гребет!». Так это же отлично! Вот если бы фанбои топили за AIR и при этом не зарабатывали бы на нем денег, вот тогда было бы совсем печально!

Но суть-то в другом: если уровнять количество разработчиков, зарабатывающих на AIR, на количество разработчиков, зарабатывающих на Unity, то сей аргумент выглядит по-детски глупо.

Так вот, если вы команда, работающая с AIR, и все у вас отлично идет — я лично никого не агитирую бросать AIR и бежать куда-нибудь еще сломя голову. Но, когда приходит новичок вроде меня, у которого нет инструментов и непонятно с чего начинать — то стоит десять раз подумать, прежде чем решаться на AIR. ? не стоит агитировать новичка баблом за AIR, так как прежде ему придется пройти через «медные трубы».

А с чем работать?

Фанбои считают, что если я против AIR, то значит я за Unity.

Ну, во первых, я все еще не понимаю как можно сравнивать эти две совершенно разные платформы с совершенно разными возможностями. Unity можно сравнивать с Unreal Engine, или с Cry Engine или даже с Game Maker и Construct 2. Но, не с AIR, это уж точно! AIR для разработчиков игр дает ровным счетом ничего! Поэтому слезно прошу, не нужно ставить AIR на одну ступеньку с Unity и Unreal Engine, и даже на ступеньку с Game Maker или Constrcut 2 не стоит его ставить.

Во вторых, конечно логично, что раз уж я работаю сейчас с Unity, то вроде как я по умолчанию должен быть за него. Но это не так! Я слишком мало поработал с Unity, чтобы его полюбить и даже пропагандировать. Более того, я уже много разных игровых движков повидал, в том числе и до Flash и прекрасно понимаю, что каждый движок хорош по своему. Сейчас конечно времена другие, движки более навороченные и возможностей у них куда больше, не говоря уже об Asset Store, где практически всегда можно найти любой дополнительный функционал (кстати вы не знаете где у AIR ассет стор?).

Так вот, когда меня спрашивают какой движок выбрать, я никогда не посоветую Unity, потому что я на нем работаю. Я всегда рекомендую отталкиваться от целей и задач, которые нужно оценить и найти оптимальное решение. Даже выбирая между UE и Unity — будет та еще задачка, так как у каждого движка есть свои слабые и сильные стороны.

Чтобы выбрать хороший движок для своей игры, нужно ответить на несколько простых вопросов:

  • Какой жанр, какая аудитория?
  • Какой вид 3D или 2D, будет ли физика?
  • Какая платформа: ПК, веб, консоли, мобилки, другие?
  • Вы тру инди и планируете разрабатывать игру ради удовольствия в свободное время от основной работы?
  • Какой бюджет на движок/разработку, есть ли бизнес план?
  • Есть ли готовый код/графика/анимации, которые нужно адаптировать под новый движок?

Далее, исходя из ответов на выше представленные вопросы уже делать свой выбор, рассмотрев разные варианты. Признаться, сейчас я советую выбирать из Unity, Unreal Engine, Game Maker и Construct 2 — так как эти движки сейчас наиболее актуальны и соответствуют разработке игр, так как имеют практически весь необходимый функционал. Кроме выше перечисленных движков есть и другие, которые так же следует рассматривать. А вот AIR и Flash уже давно вышли из этого списка как мало имеющие отношение к современному гейм-деву, и как следствие потеряли актуальность.

НО! Если вы в прошлом флешер и хотите попробовать свои силы на мобилках или даже портировать свой Flash-шедевр на мобилки или в Steam максимально быстро и без лишнего стресса связанного с освоением новой технологии и покупкой дополнительных инструментов, то вам определенно стоит пробовать и использовать AIR для решения поставленной задачи, а почему нет? :)

Заключение

В игровой индустрии балом правят не технологии, а игры. Как правило, для игрока не важна какая технология была взята и использована для той или иной игры. Поэтому технология важна только для разработчика — это ключ к успеху разработчика, к тому как он быстро и удобно сможет использовать выбранную технологию для достижения своей цели, для создания своей игры.

Часто обновляемые и развивающиеся технологии — это всегда преимущество. Развлечения не стоят на месте, все постоянно меняется и растет, приходят новые возможности вроде VR и контроллеры. ? разработчики вроде меня, боящиеся выходить из своей зоны комфорта, имеют больший риск проиграть в этой битве за выживание. Никому не важно сколько времени потратил разработчик на создание своих инструментов или использование чужих — важен только результат, которого он в итоге достиг. Поэтому успешен будет тот, кто сможет балансировать на грани между созданием инструментов и разработкой классной игры.

Никакая игра не обходится без своих уникальных инструментов, которые создаются под конкретную игру. Но если работать только над инструментами, то и до игры руки не дойдут. Поэтому движок нужно выбирать тот, который поможет вам, а не тот, который заберет на себя слишком много времени. ? вот, поскольку AIR не имеет ничего для разработки игр (сторонние библиотеки уже не в счет) — эта платформа как была, так и останется навсегда на скамейке запасных в гейм-деве.