«Мы считаем себя спасителями»: беседа с создателями технологии конвертации из Flash в HTML5

IceStone о работе с платформами и собственном методе конвертации игр.

К 2020 году Adobe намерена прекратить поддержку плагина Flash Player. Многие компании-разработчики браузеров уже постепенно отказываются от него — платформу называют небезопасной, да и большинство её функций взяла на себя технология HTML5. Из-за этого многим авторам игр приходится либо бросать уже успешные проекты, созданные на Flash, либо переносить их на новую платформу.

Компания IceStone разработала технологию, которая позволяет конвертировать Flash-контент в HTML5. И, как уверяют создатели, без потери качества. Мы пообщались с Игорем Чавычаловым из IceStone и выяснили, как работает технология и зачем вообще на рынке нужны такие услуги.

«Мы считаем себя спасителями»: беседа с создателями технологии конвертации из Flash в HTML5

Расскажите немного о своей команде: сколько вас, как сошлись, с чего начинали.

Мы разрабатывали свой кроссплатформенный игровой движок на C++, для отображения в вебе компилировали код во Flash. Когда стало очевидно, что «флешу» осталось жить недолго, мы перешли на HTML5 для отображения веб-версий.

Собственно, в этот момент и зародилась идея развивать данное направление. Изначально выделили небольшую команду для анализа имеющихся на рынке решений и концепций построения архитектуры. Сейчас команда состоит из 20 программистов, 7 маркетологов, 3 бизнес-девелоперов, 2 сейлзов и 3 художников.

Почему и когда возникла потребность конвертировать Flash в HTML5?

После новостей о скорой «смерти» Flash? За годы существования «флеша» было создано огромное количество контента: от игр и анимаций до видео-плееров и практически всех анимированных баннеров. Думаю, многим приходила в голову мысль, что неплохо бы создать технологию, которая бы переводила Flash в HTML5.

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

Несколько мультимилиардных корпораций пытались создать такую технологию, но не преуспели по самым разным причинам: неправильный подход, неправильная архитектура, низкий приоритет проекта; во многом они боролись за рынок рекламы, а не игр. Спасать всех разработчиков игр на Flash посчастливилось IceStone.

Epic War
Epic War

На рынке уже существуют готовые решения для этого: тот же Shumway от Mozilla. Почему вас не устроили эти варианты?

Можно, даже не вдаваясь в глубинные плюсы и минусы реализаций, очень просто ответить на этот вопрос. Это один из хороших примеров неправильно выбранного подхода. Shumway интерпретирует Flash в HTML5 в рантайме (то есть непосредственно на компьютере пользователя). Даже самая простая игра имеет 1-2 FPS на хорошем современном компьютере. Естественно, про нагруженные проекты и мобильные устройства можно сразу забыть.

А есть ли какие-то примеры правильно выбранного подхода для осуществления портирования с Flash на HTML5?

Обратиться к IceStone. Или переписать с нуля на HTML5, имея соответствующую команду, хорошо задокументированный код и полный геймдизайн-документ.

Расскажите поподробнее, как работает ваша технология?

После получения игры в виде проекта или же в виде SWF (да мы работаем даже с SWF) извлекаем ресурсы и конвертируем их в браузерный формат. После парсинга всех AS3-файлов мы подгоняем или модифицируем их под стандарты браузера, также исправляем проблемы после декомпиляции. Всё это делается при помощи препроцессора.

Предиктивный компилятор оптимизирует код, транспилер переводит AS3 в JavaScript. После этого сжимаем оптимизированный билд, добавляя джойстик, ресайз и универсальное IceStone SDK. Также неотъемлемой частью продукта является JavaScript-библиотека, полностью повторяющая Flash Player API. Каждый из этих элементов является внутренней разработкой, так как любые существующие не отвечали нашим требованиям.

Bubble Shooter
Bubble Shooter

Сколько времени в среднем уходит на портирование одной игры?

Это сильно зависит от проекта. На простую игру с прозрачной архитектурой обычно уходит до недели. На большую стратегию — до шести недель.

Вы говорите, что добавляете джойстик в игру. Понятно, что это решение стандартное для всех игр, чтобы в них попросту было можно играть. А может ли разработчик отдельно попросить что-то добавить?

На самом деле не столько стандартное — добавляются только те инструменты управления, которые необходимы в конкретном проекте. Для RPG это может быть восемь кастомных клавиш и два джойстика (для управления движением и поворотом персонажа). Для игр, в которых нужны всего две кнопки — их будет две.

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

С какими трудностями вы столкнулись при создании технологии?

Мы работали над Flash Player без исходного кода, где большинство внутренних функций не имеет документации в силу закрытости движка. Благодаря тому, что большая часть команды имела 10-летний бекграунд разработки на Flash, и большому количеству экспериментов над реальными проектами нам удалось определить особенности алгоритмов, правила поведения в тех или иных ситуациях. Это позволило добиться 100% соответствия.

Там, где большинство конкурентов решили остановиться на общепринятых практиках, мы пошли до конца и нашли инновационные решения, позволившие получить прирост производительности в 300% относительно Flash Player.

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

Cover Orange
Cover Orange

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

Web-программисты поймут, насколько важна точность при переходе с одной технологии на другую, когда речь заходит, например, о Dictionary, E4X-синтаксисе или цикле инициализации статики. Одно из достижений – это предиктивный компилятор, который оптимизирует код по аналогии с V8 от Google. В целом, мы столкнулись с тысячей и одной трудностью (буквально).

Как устроена работа с разработчиками? Они сами обращаются к вам, чтобы конвертировать свои игры?

На самом деле, мы впервые публично презентовали технологию 13 марта 2019-го и только для русскоязычной аудитории. Контракт с первым партнёром-разработчиком подписали ещё в январе 2018 года и с тех пор заключили соглашение с ещё более чем 50 разработчиками по 160 тайтлам. С каждым партнёром общались индивидуально.

В период закрытого набора производилось огромное количество улучшений IceStone: как архитектурно, так и в плане производительности. Не обкатав технологию на сотне с лишним проектов, отполировать её было бы невозможно.

Назовите, пожалуйста, несколько ваших разработчиков? Хотя бы самых крупных.

На первом этапе мы брали исключительно игры с рекламной моделью; это подразумевало менее сложные проекты без real-time мультиплеера. Соответственно, критерием оценки служила не прибыльность, а узнаваемость тайтла, то есть количество сыгранных сессий.

Если ближе к цифрам, Cover Orange – 1, 25 миллиарда сессий; Bubble Shooter – 2 миллиарда сессий, Epic War – 920 миллионов сессий; Fitz – 650 миллионов сессий. Список можно было бы продолжить. Минимальным требованием для игр подобного типа монетизации является порог в 10 миллионов сессий. Это позволяет нам создать очень сильное портфолио издателя исключительно с бестселлерами.

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

Оригинальная  Alien Hominid была сделана на Flash
Оригинальная  Alien Hominid была сделана на Flash

На митапе Mail.Ru Group вы рассказывали, что занимаетесь ещё и издательским бизнесом, но при этом не берёте денег с разработчиков за саму конвертацию. Почему так?

У нас предложение полного цикла – мы не оказываем услуги по портированию. Наверное, если бы кто-то предложил сумму с шестью знаками, мы могли бы рассмотреть такой вариант, но это не наш основной фокус.

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

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

Влияет и фокус компании: многие начали делать новые проекты, понимая, что Flash скоро умрет. Немаловажным фактором являются сроки: если вы не успели хотя бы на неделю после смерти Flash Player, вы потеряли всю аудиторию игры и вложенные ресурсы. Большинство не готовы принять такие риски. Разве не здорово, когда к разработчику приходят с таким предложением: «Мы решим все ваши проблемы совершенно бесплатно и заработаем кучу денег»? Такая модель позволит создать крупнейшую сеть действительно качественных игр.

На каких условиях вы сотрудничаете с разработчиками? Какой процент с выручки переходит вам?

Условия для всех одинаковые: 50 на 50 с эксклюзивным правом на мировой паблишинг на всех платформах.

Что значит «лучшие условия с платформами», о которых вы говорили на митапе?

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

Мобильные платформы, социальные сети и мессенджеры – рынки достаточно устоявшиеся. С ними всё понятно, но от этого не менее сложно для разработчика. Разработка 95% проектов не окупается из-за низкого трафика. Поддержку от платформы можно ожидать только в том случае, если ваш аккаунт ежемесячно приносит значительную прибыль. Как итог, разработчику нужен опытный издатель с релевантным портфолио и хорошими отношениями с платформами, который при этом согласится его взять.

Что касается игровых порталов, здесь для разработчика всё совсем грустно. До каждого отельного портала нужно достучаться, подписать договор, вставить SDK, которое ты видишь в первый раз, пройти специфический для каждой площадки QA. Большинство платформ, даже если вы пройдёте этот путь, предложат вам небольшой единоразовый платеж, а если вы и сможете выбить процент от прибыли, он будет очень небольшой.

Crush the Castle — flash-игра, которая послужила прообразом Angry Birds
Crush the Castle — flash-игра, которая послужила прообразом Angry Birds

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

Кроме договоренностей с платформами, важным фактором является и возможность оперировать трафиком на всех доступных платформах, объединив их. Например, мы перенаправляем условно недорогой закупленный и органический трафик в вебе на это же приложение в мобильном магазине. Или к нам приходит очередная «ферма», и мы можем слить на неё базу 100 тысяч платящих пользователей, которые уже тратили деньги в подобных проектах сети.

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

На том же митапе вы сказали, что сами разработчики, которые к вам обращаются, могут продолжать делать свои игры в среде разработки Flash. То есть им не надо будет переучиваться, ведь всю работу по конвертации вы берёте на себя. Не кажется ли вам, что так может образоваться «пузырь» никому не нужных разработчиков, ведь Flash фактически мёртв?

Как я уже говорил ранее, у многих разработчиков нет возможности перевести свой проект с Flash на HTML5, а Unity3D не самая подходящая технология для веба – про мобильный веб можно сразу забыть. Нас (и не только нас) изначально больше всего волновала смерть сотен тысяч продуктов.

Сегодня многие платформы очень обеспокоены тем, что в 2020 году они лишатся 80% своего контента. Мы же, находясь в постоянном контакте с платформами, разработали программу, при которой они продвигают наше решение разработчикам на своих площадках. На данный момент подобная программа работает с Microsoft и ещё пятью площадками. Это исключительно вопрос времени (2-3 месяцев), когда она начнёт работать со всеми остальными крупными игроками.

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

Super Meat Boy появилась из игры на Flash
Super Meat Boy появилась из игры на Flash

То есть вы считаете, что разработчикам не стоит переставать делать игры на Flash, если они не хотят переучиваться?

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

Какие перспективы у IceStone? Со стороны кажется, что это всё временное явление, лишь до тех пор, пока все разработчики окончательно не перейдут на HTML5, а AS3-игры не закончатся. Есть ли у вас какие-то планы на такой случай?

Наш паблишинг ни коей мере не ограничен технологией Flash или любой другой, на которой разрабатываются продукты. У нас уже подписаны более 30 HTML5-продуктов и 7 продуктов на Unity3D; безусловно, мы учитываем специфику той или иной среды разработки и при продвижении продуктов. Например, для продуктов на Unity3D будет сделан меньший упор на web из-за плохой производительности на этой платформе и будет использован несколько другой инструментарий продвижения.

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

4040
42 комментария

Не понял смысл статьи. Полезной информации мало, больше похоже на рекламу.

Ну и главное разочарование тут - "На простую игру с прозрачной архитектурой обычно уходит до недели. На большую стратегию — до шести недель"

Из своего опыта скажу, что игра типа несложного физпаззла (вроде Cover Orange) или match-3 без социальных фич портируется на Typescript + CreateJS "вручную" за пару дней. Возможно, еще пару дней можно накинуть на адаптацию под разные размеры экрана, тач контроль, интеграцию специфических SDK типа рекламы и т.п.

Синтаксис почти такой же, API - также. Единственное, что надо менять при таком портировании - это рендер. Но у меня, например, есть скрипт для экспорта почти любой флеш анимации в последовательность спрайтов для спрайтшита и xml/json файла с описанием анимации. И есть ts класс с API как у мувиклипа. Думаю, подобное есть у многих разработчиков. Так что и этот вопрос совсем не вызывает проблем.

Кажется, самое время открывать контору по портированию на HTML5 со своей "технологией"

17
Ответить

Спасибо за вопрос )

CreateJS не содержит и 20% того что действительно необходимо в играх. Он создавался в первую очередь для отображения картинок и анимаций, а не для поддержки Flash API. Так же у него есть блокеры в плане производительности, например фильтры. Они там не все реализованы, а те что есть используют при обработке массивы пикселей (ImageData). А это просто не применимо, тем более на мобильных устройствах. Наши же фильтры написаны на OpenGL ES.

Но вы конечно можете проверить самостоятельно =)

Статья новостная и для многих разработчиков единственный способ не потерять свой продукт.

7
Ответить

А можете показать 1-2 примера тех игр, что вы спортировали за 2 дня?

2
Ответить

Спасибо за стек. Завалялось штук 5 миниигр на флеше, выбросить жалко, сейчас вот перенесу наверно.

1
Ответить

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

Ответить

В статье сплошной маркетинг, а не интересная инфа. Интересного - на пару предложений.

Срок портирования ‘вручную’ при должной сноровке действительно может быть сравним с приведённым, но при этом конечно может на это не хватить ресурсов просто.

4
Ответить

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

Ответить