Почему в NASA отказались от Unity в пользу Blend4Web
Совсем недавно был опубликован пресс-релиз на сайте NASA, где говорилось об уникальной возможности «прогуляться» по Марсу. Я не утерпел и перешел по ссылке — открылась потрясающая интерактивная сцена, где можно «прокатиться» с марсоходом, просмотреть видео с «камеры» и даже узнать технические параметры агрегата. Но самой шокирующей была новость, что все это сделано с помощью движка Blend4Web… А где же Unity?
Еще два года назад (или даже больше) были публикации о создании подобной сцены для NASA на Unity. Однако, дальше беты дело не продвинулось и космическое агентство отказалось от использования Unity. Интересны причины, побудившие программистов столь крупной организации забросить начатое дело и начать работу с нуля. Я не поленился и нашел в сети Интернет упомянутую бета-версию «марсохода». Честно говоря, похоже на недоделанную игру. Медленно загружается сцена (еще дольше грузится terrain), функциональность — только покататься, картинка ужасающая.
Но мы то знаем, что на Unity делаются потрясающие игры, а портфолио забито сотнями качественных проектов. Так в чем же дело?
Версия на Unity
Дело в том, что Unity серьезно опаздывает с окончательным выходом экспортера в WebGL. Первый сигнал прозвучал, когда создатели Google Chrome объявили о грядущем отказе от NPAPI. Процент пользователей в мире, работающих с этим браузером, слишком велик, чтобы разработчики программ могли оставить их «за бортом». В сети Интернет появились советы использовать волшебную команду chrome://flags/#enable-npapi. Однако в сентябре 2015 года будет прикрыта и эта лазейка.
Создание игр или презентаций для сайтов — это бизнес. Никто не любит терять своих клиентов. И если ранее скачивание веб-плеера Unity не доставляло хлопот и он успешно конкурировал с flash-технологией, то сейчас ситуация в корне изменилась. Привычный веб-плеер стремительно теряет свои позиции, а экспортер в WebGL все еще в «детском» возрасте.
Разработчики всех мастей поднимали шум, требуя от команды Unity каких-то активных действий. И вот случилось долгожданное событие — выход Unity 5 с WebGL, но только, как превью. Прошло полгода, а воз и поныне там. Появилось даже «гениальное» предложение проверять браузер пользователя и предлагать ему запускать веб-плеер в каком-нибудь другом. К сожалению, это по понятным причинам, не всегда приемлемо.
И все же, что происходит у Unity с WebGL? Почему не выходит стабильная версия? Какие перспективы? Эти вопросы интересны многим разработчикам. Я не технарь и мне сложно понять проблемы Unity в этой области, но кое-что найденное в сети Интернет, навевает на грустные размышления.
На официальном форуме Unity есть тред, который называется «WebGL Roadmap». Официальное лицо от команды разработчиков дает разъяснения по поводу будущего WebGL в Unity. Я просматривал вдоль и поперек этот текст, и все больше убеждался, что «светлое будущее» еще только на горизонте.
WebGL по умолчанию должна работать на браузерах для всех платформ, включая и мобильные. Этого нет. И если каким-то чудом вы скомпилируете в WebGL свою игру, то вычеркивайте мобильные устройства из списка. Причины банальны — катастрофически большой расход памяти и низкая производительность. Да, игра запустится на топовом устройстве с терпимой скоростью, но более слабые превратятся в черепах.
И не надейтесь, что проект спокойно заработает на десктопных системах. Браузеры — это программы, которые просто пожирают свободную память компьютера и сырой билд от Unity зачастую приводит к падению или закрытию вкладок. Особо этим грешит Chrome.
Есть определенные проблемы со звуком. Лично я, когда пробовал экспортировать несложную игру под WebGL, при движениях героя получал какое-то кваканье. Звук банально заедал и исправить это толком не удалось. Причина — недостаточная производительность. Но у других-то движков звучит…
Забудьте о проигрывании видео в игре. Класс MovieTexture просто не поддерживается для WebGL, В виде альтернативы разработчики предлагают использовать напрямую возможности HTML5.
Проблемы с сетью. Классы System.IO.Sockets и UnityEngine.Network не работают для WebGl и не будут в дальнейшем, так как это вызывает проблемы с безопасностью.
Я перечислил не все проблемы, но это не дает ответа на вопрос, когда заработает? Увы, комментарии разработчиков Unity невнятны, туманны и без каких-либо конкретных сроков. Хотя кое-что я нашел:
«We are not committing to specific release dates for any of these features, and we may decide not to go ahead with some of these at all»
«Мы не фиксируем конкретные даты реализации для любой из этих функций и мы можем вообще принять решение отказаться от некоторых.»
Они ждут…
Ждут, когда появится WebGL 2.0, который будет базироваться на OpenGL ES 3.0. Будущая версия Unity 5.2 уже запланирована с возможностью экспорта под новый API. Только не факт, что браузеры сразу начнут полноценно работать с ним. Пока WebGL2.0 доступен, как экспериментальная опция.
Ждут WebAssembly, который очень перспективный, но еще на этапе становления. Разговора о сроках его реализации и в помине нет.
Простите, если дело исправит только выход новых сторонних технологий, то, возможно, проблема в реализации Unity WebGL?
Unity — это удобный, популярный и кроссплатформенный движок. Отличный инструмент для создания игр и мне он очень нравится. Но все же это инструмент, который перестал годится для работы с веб. Cамое неприятное, что будущее слишком туманно.
Кто-то может мне сказать: «Ты пессимист!». Нет, я просто реалист. Реалисты и ребята из NASA. По сути, это дает ответ на вопрос из названия: «Почему в NASA отказались от Unity в пользу Blend4Web?».
Отказались по простой причине — Unity WebGL не готов, а когда будет?
«We are not committing to specific release dates…»
А что же с Blend4Web? Я могу только поздравить разработчиков с явно убедительной победой на поприще WebGL и порадоваться за наших программистов, ведь презентация NASA, сделанная на b4w будет показана при открытии секции WebGL на SIGGRAPH 2015. И это уже признание.