unity3d как средство разработки трехмерных flash приложений



    На Хабре прошло незамеченным событие довольно-таки значимое в мире gamedev’a – unity3d обновилась до версии 3.5 . Помимо прочего, в этом релизе появилась возможность компилировать проекты под платформу Adobe Flash .
    Что это дает разработчикам игр и какие возможности открывает перед digital рекламой?

    Обо всем этом рассказать, хотя бы коротко, будет совсем нелишним. Тем более, что пока еще можно скачать версию с экспортером под flash абсолютно бесплатно. С выходом из состояния “developer preview” эта возможность будет стоить отдельных денег.

    Всем любопытствующим добро пожаловать под хабракат!

    О самом движке unity3d рассказывать не имеет смысла, на хабре достаточно статей на эту тему. Выход версии 3.5 был очень долгожданным и принес целый ряд приятных нововведений.
    Сами по себе они вполне достойны отдельного повествования, я лишь коротко упомяну их:
    • новая система частиц shuriken: полностью переписанные частицы, с огромным потенциалом;
    • собственный pathfinding, очень быстрый и приятный;
    • light probes – псевдоотскоки света от стен, сильно улучшают картинку и достаточно дешевые по производительности;
    • встроенная поддержка рендера в HDR и гамма коррекция;
    • родная система LOD-ов;
    • поддержка Google Native Client – помимо прочего, дающая возможность создавать проекты под linux запуская их из google chrome

    Ну и самое любопытное и интересное – появился экспортер под Adobe Flash!



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

    Кроме того, существующие популярные игровые площадки изначально заточены под flash. Такие монстры как Kongregate и Armor Games, социальные сети – facebook, вконтакте и.т.д. дают огромную армию игроков и у всех стоит плеер от Adobe. Да, тут можно поспорить, что, мол, тот же Kongregate размещает игры на unity3d, да и в социальных сетях продукты подобного рода уже не редкость. Но! Не у всех стоит unity плеер и не каждый спешит установить его себе.
    А разработчику хочется иметь как можно более широкую аудиторию.

    Теперь же можно портировать свой (готовый) проект из unity во flash применив минимальное количество усилий. Но еще далеко не все гладко и идеально, есть вещи которые пока не реализованы. Это лишь только версия “developer preview” и вполне можно ожидать, что к релизу все станет намного лучше.

    Еще одна очень заманчивая особенность платформы flash состоит в том, что это самая продвинутая платформа для красивых пользовательских интерфейсов (GUI).
    Интерфейсы на flash делать проще, быстрее и попросту дешевле. Они получаются богатыми на анимацию, всяческие красивые переходы и переливы. Найти специалиста аниматора на flash намного проще, чем программистов, которые плюясь и матюгаясь будут отлаживать такие «рюшки» как анимация и эффекты в GUI. Дальновидные «Scaleform» не зря зарабатывают на своем продукте.
    Теперь же такая возможность есть и у разработчиков на unity.

    Если посмотреть в сторону рекламных компаний и их промо-сайтов – крупные бренды практически никогда не согласились бы сделать сайт, конфигуратор или шоурум на сомнительной (с точки зрения распространенности плагина) технологии вроде unity3d, shiva, nebula и т.д. Да, попытки были, кто-то что-то делал и быть может даже удачно, но охват аудитории всегда страдал. Теперь же это стало возможным.

    Клиентам (в данном случае это рекламные агентства) будет абсолютно все равно на чем разрабатывается продукт. Будет то away3d, alternativa3d или свое собственное детище – будет важен лишь результат.
    Выбор конечно всегда остается за разработчиком, но на мой взгляд unity подходит на эту роль прекрасно. Скорость разработки продуктов на нем значительно выше, соответственно низка и себестоимость.



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

    Поддерживается:
    • Lightmapping
    • Occlusion culling
    • Basic scripting
    • Editor scripting (JavaScript / C# / Boo). Note: for JavaScript, use #pragma strict.
    • Custom shaders
    • Animation / skinning
    • Basic audio features, such as AudioSource / AudioListener
    • Physics
    • Navigation meshes
    • Baked substance textures
    • PlayerPrefs
    • UnityGUI, except for text input
    • Realtime shadows

    Не поддерживается:
    • Unity profiler
    • Asset bundles
    • Text input in UnityGUI
    • WWW classes. Note that you can write your own ActionScript that uses Adobe networking APIs.
    • Raknet networking (if you need networking, you can write it in Action Script 3 directly, using flash API)
    • Terrain
    • Cloth
    • Using VertexLit shaders in combination with:
      — Specular highlights
      — Spot lights
      — Emissive material color
    • Advanced audio features, such as audio effects. Also pitch manipulation is not supported.
    • Deferred rendering
    • AnimationEvents that carry arguments

    Частично поддерживается:
    • Image Effects. Some work, some don’t.
    • Not all parts of .NET scripting work (lambda expressions and LINQ aren’t supported, for example)
    • GUIText will have a dramatic impact on performance
    • The new Particle System (Shuriken) works, but scripts that use the Shuriken API will fail to convert to flash

    Как видно, не любой проект возможно портировать на данный момент, но большинсво точно можно. Я попробовал собрать несколько проектов, которые уже находились на стадии разработки, под flash, и большинство из них в итоге собрались.

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

    Также, тут можно посмотреть, что мне удалось добиться от второй версии шейдеров (автомобиль из картинки к посту).

    Познакомиться поближе со списком всех фич версии 3.5 можно здесь.

    Буду рад ответить на вопросы в комментариях.

    Спасибо что дочитали до конца!
    Поделиться публикацией

    Комментарии 40

      0
      Интересно, как они дотнет вовнутрь флеша запихнули.
        +2
        Я так понимаю, что никак. Скорее наоборот — они переводят код в Action Script.
        «If you script your game with C# or strict JavaScript, everything gets converted to and compiled as ActionScript», подробнее есть тут
          0
          Т. е. плюшек в виде Remoting не будет, да? Ну и чёрт бы с ними, можно самостоятельно врапперов нагенерить.
            0
            О да… ото очень большая потеря ))
              0
              Ну вообще говоря, если делать что-то с онлайн-составляющей и сервером на C#, то можно было бы прозрачно пинать серверную сторону вообще не задумываясь о том, что там есть какой-то протокол.
                0
                Конечно можно… если вопрос производительности вас мало волнует…
              0
              Там вобще с сетью на C# все плохо :), пока это надо писать на Action Script.
                +1
                Да. Пока не реализованы классы WWW для сетевых функций, также нет подгрузки бандлов.
                Остаётся лишь ждать релиза
                  0
                  Да и www юнитевский не был как ахти хорош. Предоставляет всего-лишь базовую функциональность. Однажды пришлось писать свою обертку над tcp для поддержки редиректов. Так что это даже к лучшему.
            0
            прошу прощения, конечно же тут
            +1
            Ого! Поддержка Google Native Client это круто)
              0
              Если кто-нибудь знает, скажите пожалуйста, будут ли работать во флеше всякие эдвенсед-штуки типа мягких теней, АА и прочих красивостей? Эти штуки доступны только в unity pro и возможности оценить по бетке бесплатной 3.5 не было, а онисания этих штук я не нашёл.
                +2
                AA есть абсолютно точно (в моем сэмпле он включен), а вот тени мягкие я не помню. Но кажется есть.
                  0
                  Спасибо! А отсутствие поддержки deferred rendering подразумевает невозможность использовать риалтайм тени? Прошу прошения за идиотские вопросы, просто только думаю попробовать Юнити и толком не разбирался
                    0
                    Хм… Как буду на работе — перепроверю.
                      0
                      тени есть в forward rendering
                        0
                        Да, но кажется только от источника света типа «Directional», т.е. от точечного источника света теней в forward не будет
                          0
                          вроде это настраивалось
                  0
                  Такой крутой тачке нужно мощное охлаждение :)
                    0
                    может автор не ограничил количество кадров в секунду через vsync в настройках проекта, вот и жарит по полной
                      0
                      Это у вас еще и AA не работает, почему-то (:
                        +3
                        Все просто. У вас софтовый рендер включен. Или видяха встроенная или дрова старые… или все вместе.
                        К сожалению 11-й флеш не все видеокарты поддерживает, но очень старых не работает.
                        0
                        У меня демка с машиной не работает.
                        В левом верхнем углу: Fatal Error: null
                        Версия плеера: 11.1.102.55, ускорение включено
                          0
                          у меня 11.1.102.62 — все работает, обновите flash player
                          +1
                          Начиная с плеера 11.2 Эдоби прекращает поддержку старой алхимии, которая интенсивно использовалась при портировании Юнити. Новая версия алхимии будет платной, что выльется либо в увеличение стоимости лицензии Юнити, либо в дополнительное лицензирование фитчи, либо в исключении фитчи вообще. Эдоби как держатель платформы получает деньги только с продажи средств разработки, поэтому Юнити становится прямым конкурентом, и она не упустит шанса содрать три шкуры на лицензиях конкуренту, в итоге расплачиваться будут разработчики. Так что, если таргетить разработку сейчас под флеш, то нужно или очень быстро релизиться, или ждать во что все это в итоге выльется.
                            0
                            Я бы вообще рекомендовал не делать под 11 FlashPlayer что-либо на алхимии, пока не выйдет новая реинкарнация. Если вы делаете под 10 плеер, то все должно работать и на 11.2
                            –1
                            Ну… или не обновлять редактор (:
                              +1
                              Тут дело не в редакторе, скомпилированная флешка просто не запустится в новом плеере.
                                0
                                Юнитеки всегда нормально решали подобные проблемы,
                                я сплю спокойно.
                                  0
                                  Ну тут от них вообще ничего не зависит. Алхимию делают сами адобовцы.
                                  Вопрос только в какие деньги эта новая алхимия встанет конечному разработчику…
                                  Ибо выложить 3-5к$ за юнити с возможностью выпуска флешек, не у каждого будет возможность.
                                  Крупным конторам пофиг, а вот у инди могут быть проблемы.
                                    0
                                    В юнити уже включено много коммерческого industry grade мидлвара (beast, umbra, итд) и на конечном разработчике вплане цены это никак не отражается.
                                      0
                                      Всетаки это разные вещи.
                                  0
                                  Кстати, в паблик доступе появился Flash Player 11.2 RC, как и ожидалось демки собранные на Юнити не работают.
                                    0
                                    Нда. Пока официальные Unity молчат. По всей видимости пройдет несколько месяцев, прежде чем это всё утрясётся.
                                0
                                Дык вышел же давно 3.5, почему release candidate?
                                  0
                                  О «release candidate» речи не шло. Речь шла о том, что конкретно экспортер во flash находится в стадии «developer preview». Пруф
                                    0
                                    ясн
                                  0
                                  Интересное наблюдение — если открыть ту же машинку во второй вкладке, то второй экземпляр падает с ошибкой.
                                    0
                                    Оч интересная статья! А вы сами над каким-нить Unity-проектом сейчас трудитесь?
                                      0
                                      Разумеется! Возможно косвенно я о них однажды и напишу. Конечно же лишь после релиза (NDA и все такое).
                                      А вот рассказать о том, какие технологии используются и какой опыт из этого выносит команда — дело доброе и важное, так что, как появится время, обязательно опубликую здесь

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

                                    Самое читаемое