Как был создан конвертер из Flash в HTML5 под названием IceStone и почему на его базе было решено запустить полноценное мультиплатформенное издательство, — рассказал Игорь Чавычалов, занимающий пост исполнительного продюсера компании.

Статья — адаптированная версия доклада Игоря Чавычалова «Конвертация Flash в HTML5 с IceStone. Воскрешение продукта без затрат и с полным циклом паблишинга», прочитанная на митапе по разработке HTML5-игр в офисе Mail.ru 13 марта.

Игорь Чавычалов

С чего все началось?

У нас был собственный игровой движок на C++. На нем создавались игры, которые для отображения в вебе компилировались во Flash.

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

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

Казалось бы, победа, но далеко не все проекты из нашего портфолио были написаны на C++. Хватало игр, разработанных изначально на Flash.

Что делать с ними, было не совсем ясно, ведь вариант с портированием мы сразу отмели. При этом бросать проекты, у которых до сих пор есть продажи, было жалко.

Почему мы не взялись за портирование?

У тех, кто сегодня занимается портированием с Flash, обычно два пути — Unity и HTML5.

Unity

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

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

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

Последнее особенно критично, учитывая, что более 80% всего веб-трафика идет именно с мобайла.

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

HTML5

С HTML5 во многом те же проблемы, что и с портированием на Unity. То есть вам в первую очередь потребуется новая команда и много времени, которого сегодня у владельцев Flash-проектов нет.

Напомню, в декабре 2020-го Adobe официально прекратит поддержку технологии и закроет Flash Player. Google на протяжении всего будущего года полностью отключит поддержку технологии в Chrome. Некоторые браузеры, например, Mozilla Firefox, уже отключили поддержку Flash Player.

Само портирование также дорогое. Некоторые бюджеты достигают $300-500 тысяч. King может себе это позволить, большинство разработчиков проектов на ActionScript 3 — точно нет.

И мы сейчас не говорим о больших проектах в духе Clash of Clans. Тут вообще легче повеситься, чем пытаться перевести игру на HTML5.

Опять же, как и в случае с Unity, высока вероятность возникновения ошибки. Что-то где-то не досмотрели — и в результате получили не доходный проект на HTML5, а сломанный продукт.

Какие были альтернативы полноценному портированию?

Самым очевидным нам тогда показалось найти инструмент, который может пересобрать проект Flash в HTML5. Самостоятельно писать что-то свое мы тогда были не готовы. Плюс нам казалось, что кто-то уж точно должен был что-то придумать.

В итоге мы нашли всего четыре решения, которые в теории могли отвечать нашим запросам. И ни одно из них нам не подошло, и вот почему:

Shumway

Решение Mozilla c открытым исходным кодом конвертирует все непосредственно во время проигрывания в вычислительном окружении (runtime). Это катастрофически влияет на производительность. В лучшем случае мы имели 2-3 кадра в секунду у самых примитивных игр на десктопных устройствах. Плюс сама Mozilla в 2016 году прекратила поддержку медиа-проигрывателя.

Apache Royale

Ранее назывался FlexJS. Позволяет на MXML и ActionScript писать приложения для HTML5. Проблема этого решения с открытым кодом — отсутствие полной реализации Flash API. Оно заточено под MXML и Flex-компоненты, а не под Flash-игры. У Flash API недостаточная реализация и исполняется не идентично оригиналу. Проще говоря, с помощью Apache Royale Flash-игры не сконвертируешь.

OpenFL

Здесь две основные проблемы. Первая. Предполагается, что OpenFL должна полностью отражать Flash API, а SWF, созданные в Adobe Flash, могут работать в OpenFL. Но на деле часть API у ActionScript 3 работает не так, как работает во Flash. Вторая проблема: мультиплатформенность обеспечивается исключительно через Haxe.

Связка Adobe Animate и CreateJS

Подходит исключительно для переноса анимации. Код этот набор инструментов не поддерживает.

Разобравшись, что адекватных решений нет, мы закатали рукава и сами взялись за реализацию решения, который позволил бы нам при минимуме усилий перебрасывать проекты из Flash в HTML5.

Так на свет появился IceStone.

Как шла разработка IceStone?

Мы начали делать IceStone в 2016 году. На первую версию продукта у нас ушло два года.

Весь инструментарий нам пришлось делать с нуля самим. Например, мы создали собственный Flash Player на JavaScript, а также предиктивный компилятор под стандарты браузеров, батчинг рендера и многое другое. Все вместе это позволило нам добиться втрое лучшей производительности относительно оригинала на AS3.

Сегодня наше решение на 100% поддерживает Flash API и благодаря этому позволяет относительно безболезненно переносить код в HTML5-формат, где он хорошо воспроизводится с использованием аппаратного ускорения WebGL.

Мы работаем с любыми типами исходников: FLA files, Adobe Flash Builder, FlashDevelop, IntelliJ IDEA и даже SWF.

Еще на этапе бета-версии мы подключили первого партнера. Он предоставил нам достаточно много игр, порядка 20-ти. Все они были написаны в рамках одной архитектуры. У всех был очень хороший чистенький код.

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

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

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

И это было проблемой. Дело в том, что многие Flash-проекты создавались исключительно под десктопы с соотношением сторон 4 к 3. Для настольных систем широкоформатность продукта не критична. Совсем другое дело — мобильные устройства, рынок которых нельзя упускать.

Еще одну проблему, которую надо было решить — управление. Ряд Flash-игр подразумевает управление с клавиатуры. Принципиально менять управление даже в рамках одной игры — это серьезная задача, которая может затронуть в том числе дизайн, не говоря про код. Делать это «на потоке» — задача неосуществимая.

Самое очевидное решение здесь — создание виртуального стика и пары клавиш, которые мы и реализовали.

Чего мы добились?

К настоящему моменту у нас уже отконвертировано 170 проектов. Ни на одном нет проблем с производительностью как на десктопе, так и на мобильных устройствах (на самом деле речь идет о увеличении производительности в 2-3 раза в зависимости от специфики проекта.). Причем речь здесь не только о физических пазлах, к которым относится, к примеру, Cover Orange, но и о стратегиях, фермах и других социальных проектах.

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

И что теперь?

Еще во время разработки мы поняли, что делаем решение не для себя, но в целом для рынка. Аналогов ведь нет, а спрос огромен как со стороны разработчиков, так и со стороны платформ.

Сегодня очень многие игры на Facebook, VK, OK, Armor Games, Kongregate, Poga Games и других площадках остаются на Flash. Однако сами разработчики не готовы их переносить на новую технологию.

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

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

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

Как мы работаем с разработчиками?

Паблишинг у нас полного цикла.

Первый этап

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

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

Помимо этого, игру оценивают наши отделы маркетинга и QA. Только после этого мы отвечаем, интересен ли нам проект.

Второй этап

Подписывается контракт.

Третий этап

Конвертация проекта. Ее мы осуществляем сами с помощью вышеописанного инструментария.

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

Четвертый этап

Дистрибуция.

Мы стараемся охватить максимальное число площадок, в том числе не самые стандартные для HTML5-проектов:

  • игровые порталы (более 150 сайтов, включая SpilGames и Miniclip);
  • социальные сети («ВКонтакте», «Одноклассники», Facebook и так далее);
  • мессенджеры (KakaoTalk, Telegram и так далее);
  • мобильные сторы (App Store, Google Play и так далее);
  • десктопные сторы (Steam, Epic Games Store, Gameroom и так далее);
  • игровые зоны (The New York Times и USA Today и так далее).

Вот основные плюсы работы с нами:

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

Работаем по модели revenue share. Половина полученного дохода выплачивается разработчику, половина идет издателю.

***

Такая история. Если есть вопросы, обязательно задавайте.

Тэги:

Комментарии

Igor Chavychalov 2019-04-09 15:15:41

Как всегда будем рады ответить на конструктивные вопросы !

1

    Konstantin Boronenkov 2019-04-09 16:23:07

    Igor Chavychalov, Заработал ли кто-нибудь из подписавшихся с вами разработчиков деньги? Если да, то какие порядки?

    0

      Igor Chavychalov 2019-04-09 20:41:04

      Konstantin Boronenkov, спасибо за вопрос. Первый партнер с FTP проектом уже заменил свои продукты на портированные. Абсолютные цифры по очевидным причинам мы не разглашаем. Из того, что можем огласить :
      1. Исчез отвал на запуске (20%)
      2. Увеличение притока пользователй более чем в 3 раза. Алгоритмы большинства платформ уже сейчас отдают предпочтения HTML5 играм, никто не будет гнать органику в приложение, которое вскоре умрет.
      3. Увеличене количества покупок более чем в 2 раза.
      4. Длина сессии +25% ( при большом наплыве нового трафика )
      5. Среднее количество сессий +25% при большом наплыве нового трафика )

      Сейчас мы все еще на этапе мягкого запуска.

      2

    Вадим Дяченко 2019-04-09 19:08:17

    Igor Chavychalov, задам наиболее очевидный вопрос: кто является целевой аудиторией сего решения?

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

    Цитируется абстрактная цифра в $500K (10-15 тысяч человеко-часов работы?), но не кажется ли вам, что доход проекта в таких случаях будет тоже пропорционален, в следствии чего "цена" вашего решения будет несоизмеримо больше?

    При этом, в том же абзаце упоминается два года и то, что это "уже не говоря о играх габаритов Clash of Clans", хотя по многочисленным докладам (взять же недавний по Хроникам Хаоса с годом на всё дело, включая параллельную поддержку оригинала и доработку инструментов) цифры не настолько заоблачны даже для больших проектов.

    Итого... поскольку стоимость портирования пропорциональна размеру игры, но доход, зачастую, тоже, остаются преимущественно лишь игры что технически на своем end-of-life, но 10М сессий (ежемесячных? В тексте не указано) у таковых обычно нет, что приводит нас к вопросу Константина выше. Но поправьте меня, если я не прав..

    Прочее: Современный OpenFL поддерживает так же JS и TS, в связи с чем "Haxe only" хорошо бы заменить на "Can't use AS3"... и в целом подправить английский в слайдах перед тем, как показывать их каким-либо англоязычным разработчикам

    0

      Igor Chavychalov 2019-04-09 21:01:16

      Вадим Дяченко, спасибо за вопрос.

      1) Круг компаний которым это интересно :
      а) Успешные проекты которые не находятся в фокусе компании (доход части из из подписанных 200k+$/месяц)
      b) Взрослые проекты, которые за годы выросли в глубь и в ширь. Переписать их попросту невозможно, об этом сказано в статье говорил.
      c) Проекты которые хотят быть в сетке паблишера с потенциально самым большим количеством трафика на рынке ( многие разработчики на HTML5 сейчас предлагают свои проекты на тех же условиях, естественно без портирования).

      2) $500K - средне медианная оценка от наших партнеров, добавите сюда риски. Мы не предоставляем услуги "портирование за 50%" в тех кейсах которые сейчас на мягком запуске партнер на 2ю неделю начал получать чек выше, чем получал имея 100% дохода.

      3) Предлагаю вам прослушать повторно доклад по "Хроникам Хаоса" особенно часть про вопросы, это частный случай с конкретными вводными.

      4) Не совсем понял вопрос, если это был вопрос. 10кк сессий - критерий для веб игры c рекламной моделью с публичными данными, для FTP - метрики. Доход очень слабо коррелируется с размером игры.

      1

        Вадим Дяченко 2019-04-09 23:52:57

        Igor Chavychalov,
        4) Я имел в виду, что в тексте не указано, то ли это 10кк сессий lifetime, то ли за прошедший месяц, или за какой другой интервал.

        Судя по остальной части ответа и ответа Константину, вы делаете упор преимущественно на средние/крупные FTP игры, а не поддерживаемые одной лишь рекламой и/или иными методами монетизации?

        1b, 3) Есть ряд случаев этого рода с докладами; Хроники Хаоса я выбрал, так как это недавний, русскоязычный, и они опубликовали свою модернизацию as3hx (в отличии от большинства других компаний, использовавших его в пайплайнах).
        Если проект достаточно обширный, его почти гарантированно будут портировать кросс-компиляцией и написанием/адаптацией покрывающего нужды проекта рантайма, а не руками (иными словами, делать где-то то же, что и вы, но лишь в рамках одного проекта).
        Это распространяется и на не-веб проекты -- к примеру, для Hotline Miami был написан компилятор из похожего на JS языка в C++ (доклад с Game Baker); я однажды писал для компании частичную реализацию Flash API под их расклад (нативное приложение грузило AS2/AS3 мини-игры, сконвертированные в ES6 и SWF-ки без байт-кода), и это не тянулось особо долго, так как игры не использовали и четверти API.
        Но это уже отдельно взятые случаи, конечно - как вы упомянули, если проект не основной, может быть рентабельнее не искать себе новые заботы.

        0

          Igor Chavychalov 2019-04-10 00:16:26

          Вадим Дяченко,
          4) 10KK сессий для проектов на исключительно рекламной монетизации, например физические пазлы и тд (lifetime). То есть критерий - узнаваемость игры.
          Средне медианный показатель для этой группы 80KK сессий (170 проектов).

          Для FTP - метрики в частности текущий доход.

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

          3) Совершенно верно, мы не ставили для себя задачу найти решение отдельно взятого проекта. Задачей было охватить любой проект на AS3 - собственно она и решена.

          1

Николай Костоправ 2019-04-10 08:18:40

но ведь Unity отлично билдит версии для мобильного браузера (webGL 1.0), довольно давно. Зачем вводить в заблуждение?

0

    Николай Костоправ 2019-04-10 08:20:24

    (забыл добавить, что скоро из тестирование выйдет Unity Project Tiny с еще меньшими размерами движка для веба)

    0

      Igor Chavychalov 2019-04-10 10:37:14

      Николай Костоправ, вы не правы по абсолютно всем пунктам.
      1) На мобильном браузере вы запустите максимум косынку, и даже нее не на всех устройствах.
      2) Все, что вы напишите на Tiny сейчас, через год прийдется выкинуть, смотрите доклад по ссылке ниже.
      3) Tiny будет хоть сколько-то готов года через 2, может быть. Тайминг не позволяет рассматривать Unity как альтернативную платформу ( к моменту релизной версии, Flash давно будет мертв как и аудитория проектов).
      4)Дальше больше - Unity WebGl даже для десктопа это -25% пользователей на старте игры, и -30% всем KPI по сравнению с HTML5. При голландском аукционе трафика на всех платформах, это смертельные потери.

      Ниже приложил доклад Unity



      https://www.youtube.com/watch?v=VD4uAR2E394&feature=youtu.be

      0

        Николай Костоправ 2019-04-10 15:47:07

        в смысле не прав? у меня коммерческие игры работают в мобильных браузерах, с физикой и 3д графикой. Какая косынка?
        2) про тайни всё ясно, что она пока не готова. Но будет. В чем я не прав-то?

        Короче, вы передергиваете. Для точности стоит писать HTML5/Canvas что ли. Вы почему-то зарубаете WebGL, никак это не обозначив.

        0

          Igor Chavychalov 2019-04-11 14:16:38

          Николай Костоправ,
          1) Можете предоставить ссылки на 3D игры
          2) Статистика регистрация/10 секунд после инициации игры.

          Тогда это будет хоть сколько-то предметно.

          3) Tiny предполагает модульность, если вам нужны "все модули" то Tiny, не такой уж и Tiny =) А для нагруженных проектов нужны если не все, то многие модули.

          4) Я не знаю как детальнее ответить на вопрос "почему Unity не поддерживает мобильный веб". Потому, что они официально заявляют в документации и на выступлениях, что не поддерживают. И реальные проекты не работают. Может, что-то у кого-то и работает при определенных условиях, но это частный кейс.

          0

          Николай Костоправ 2019-04-11 17:49:38

          >Можете предоставить ссылки на 3D игры
          зачем мне-то предоставлять? я ж не у прокурора. вы продаете свой продукт, пытаясь утвердить позицию за счет принижения качеств конкурирующих платформ, приводя какие-то домыслы и ложные заключения. мне вообще наплевать на это.

          -1

        Николай Костоправ 2019-04-10 15:48:14

        Хотелось бы каких-то аргументов, почему WebGL это такие большие минусы. Почему это происходит так?

        0

        Николай Костоправ 2019-04-10 15:49:19

        игры Plarium, например, работают в браузерах десктопа именно как юнити вебгл билды. Они почему-то не испугались этих страшных -25%. Где подвох-то?

        0

          Андрей Мещеряков 2019-04-10 17:33:56

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

          0

          Николай Костоправ 2019-04-11 05:43:50

          вроде викинги, они много пишут на хабре. я сам в это не играю

          https://habr.com/ru/company/plarium/blog/343084/

          0

          Igor Chavychalov 2019-04-11 14:06:56

          Николай Костоправ, опять же вопрос к Plarium.

          0

Андрей Мещеряков 2019-04-10 11:15:28

>2) Все, что вы напишите на Tiny сейчас, через год прийдется выкинуть, смотрите >доклад по ссылке ниже.

Я так понимаю, что речь о том, что уберут поддержку TypeScript, после того как сделают поддержку C#?
А можено тайминг, на какой минуте доклада говорится о том, что это произойдет через год?

0

    Igor Chavychalov 2019-04-10 11:31:29

    Андрей Мещеряков, речь идет именно об этом. Могу ошибаться, но вроде в конце доклада. Вопросы про Unity лучше задать команде Unity =)

    0