Комментарии 28
Но ведь в Unity всё плохо с WebGL.
Конечно, все еще сыро, есть баги, есть куча ограничений самой платформы webgl.
Но у вас есть примеры альтернативных движков, которые делают это лучше?
Это неправда. В Unity такая «поддержка» WebGL, что даже в NASA от него оказались: https://habrahabr.ru/post/264457/
Единственный кросс-платформенный движок с адекватной поддержкой WebGL — это Blender + Blend4web.
А вот и пруф: https://habrahabr.ru/post/310086/
@ZoomLS очень неправильно выразился:
Единственный кросс-платформенный движок с адекватной поддержкой WebGL — это Blender + Blend4web.
Кроссплатформенный сам webgl, или даже платформа web кроссплатформенная.
И этот ошибочный пост родил другой ошибочный пост. Поэтому и со splatt Не могу согласиться, как не крути не могу:
Пока-что Unity — это фаворит игровых движков имеющих поддержку билда как нативно на различные платформы, так и в webgl
Нет, Unity имеет альфа версию экспорта в Webgl, вас обманули сказав что "Теперь webgl официально поддерживается". Это костыль на костыле. Вот тут чёрным по белому написано что они конвертят всё что не C++, собственно в C++, а потом это, с помощью emscripten, перегоняют в JavaScript. Это даже для нативных приложений было бы жёстко а они в веб это пихают.
Да вот, отличный пример — представьте, билдить нативные приложения для всех систем из Blend4Web и говорить сразу же что Blend4Web — это фаворит игровых движков имеющих поддержку билда как нативно на различные платформы, так и в webgl.
В общем, я поясню свою позицию конкретнее: Unity — отличный движок для игр на PC, приставках, Смартфонах и т.п. Но Unity Webgl — это недоразумение, нацеленное только на то, чтобы заморочить разработчикам голову, попытаться удержать как можно большую аудиторию в среде Unity и откусить кусок пирога под названием web, с амбициями съесть его весь.
В этом интервью разработчики из NASA говорят что планируют использовать Blend4Web в будущем.
Конечно, все еще сыро, есть баги, есть куча ограничений самой платформы webgl.Ну, то есть да, можно использовать только, чтоб поиграться, ничего серьёзного не сделаешь на нём.
Но у вас есть примеры альтернативных движков, которые делают это лучше?У вас есть примеры игр (не тетрисов, арканодидов и т.п.), написанных на Unity, которые нормально бы в WebGL работали?
Сразу советую переписать их загрузчик на свой собственный и проверить не делают ли они оптимизацию float32 на лету (делали вплоть до версии 5.4, сейчас не уверен), если делают — сделать ее сразу после компиляции, а не в рантайме, сейчас все достойные браузеры понимают Math.fround.
Общие рекомендации — если это не критично постарайтесь выпилить физику, она подло тянется со всякими колайдерами риджит бади и прочими безобидными на вид объектами.
Выпиливайте все сторонние библиотеки от которых вы зависите не очень жестко.
UI лучше делать средствами html+css давая обратную связь в игру с помощью жс.
Очень важно правильно подобрать формат текстур и настроить сжатие, иначе размер ресурсов будет слишком уж большой, а нужно рассчитывать максимум на 512 Мб размера кучи и не более того же по ресурсам (лучше 256 кучи и до 50 Мб ресурсов).
Минимизируйте колличество шейдеров — это заодно и видеопамять вам разгрузит.
В целом юнити собирает под вебжл весьма достойно, но лучше б они сделали открытой сборку без игровой логики — модели и шейдеры (они с этого собственно и начинали) и дали бы контроль к этим объектам в жс.
Такой фокус в целом возможен (отдельно экспорт моделей, отдельно компиляция шейдеров в жлсл), но это уже по сложнее чем одна кнопка и это явно не ваш случай ибо прийдется переписывать игровую логику.
Вся прелесть в том, что у нас при запуске не так много чего в память грузится. Изначально открывается почти пустая сцена, с который идут запросы к API, и только, физики никакой нет вообще. Но даже с этим бывают проблемы. Я повторюсь, там очень странная ошибка в консоли и стек трейс по их сгенерированному коду, по которому вообще не ясно, в какую сторону копать, чтоб понять, что ж вообще происходит.
У нас как-то была ошибка которая появлялась исключительно на стейджингах, но не в дев версии — console.errorMessage is not a function, что решалось простым переопределением console.errorMessage = console.error, но я так и не понял почему она не проявлялась при разработке.
Если после танцев с бубном решите поковырять модуль — смотрите на общую структуру, скомпилированный асм из юнити практически всегда не читаем. Если это ошибка в лоадере — он в принципе читается даже в скомпилированом виде и его в любом случае лучше переписать иначе намучаетесь с багами сафари и прочими браузерными различиями.
Нет ничего невозможного, удачи =)
Тут надо задать вопрос — а какие вообще игры вы считаете достойными для выпуска на webgl? По-моему, эта платформа как раз подходит в первую очередь для игр вроде тетриса.
Безусловно, если собрать проект с кучей кастомных библиотек и шейдеров, HD-текустурами и высокополигональными моделями, нажать кнопку Build and run и ждать, что клиент не будет крашиться, то можно сильно разочароваться.
Но если изначально разрабатывать игру с расчетом на webgl и постоянно тестировать — то все проблемы можно решить.
Ну и напоследок, хоть демка уже и заезженная http://beta.unity3d.com/jonas/AngryBots/
Во-первых, я не понимаю, почему тетрисы и арканоиды не являются хорошим примером игр.Потому что они в целом довольно просты.
Ключевая особенность Unity в том, что он отлично подходит под очень широкий круг игр. В некоторых аспектах, он, конечно, уступает другим движкам (если бы я делал трехмерный AAA-шутер, в котором важна красивая графика, я бы выбрал Unreal).
Тут надо задать вопрос — а какие вообще игры вы считаете достойными для выпуска на webgl? По-моему, эта платформа как раз подходит в первую очередь для игр вроде тетриса.
У нас мобильная MOBA. Мы не жалеем, что взяли Unity3d для написания. Но, к слову, даже в похороненном webplayer игра лучше работала.
Ну и напоследок, хоть демка уже и заезженная http://beta.unity3d.com/jonas/AngryBots/
В последней версии Firfox после загрузки данных у меня посреди экрана сообщение:
An error occured running the Unity content on this page. See your browser's JavaScript console for more info. The error was:
SyntaxError: expected expression, got ','
И в консоли:
Invoking error handler due to
SyntaxError: missing } in compound statement
Что весьма показательно.
Urho3D
Haxe + OpenFL, Haxe + Flambe, GameMaker
На сайте Юнити есть много отличных материалов для начинающих:
https://unity3d.com/ru/learn/tutorials/
Создаем игру для WebGL с помощью Unity 5 и JavaScript