Как стать автором
Обновить

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

Интересно, спасибо! А что нужно сделать, чтобы движение платформ было более плавное и не мелькало?
Не советую начинать знакомство с Unity используя UnityScript. Ходят упорные слухи, что его поддержку скоро уберут, так как его использует крайне мизерное количество разработчиков. Подавляющее большинство разработчиков все равно используют C#.
Тем более, зачем его использовать, если можно использовать C#?
НЛО прилетело и опубликовало эту надпись здесь
Это даже не слухи, а заявление сотрудников Юнити. Они его не развивают уже несколько лет, и это правильно, он кроме фрустрации других чувств не вызывает.
>>Создаем игру для WebGL с помощью Unity

Но ведь в Unity всё плохо с WebGL.
Что значит «всё плохо»? Пока что это единственный кроссплатформеный движок с такой поддерожкой webgl.
Конечно, все еще сыро, есть баги, есть куча ограничений самой платформы webgl.
Но у вас есть примеры альтернативных движков, которые делают это лучше?
>>Пока что это единственный кроссплатформеный движок с такой поддерожкой webgl.

Это неправда. В Unity такая «поддержка» WebGL, что даже в NASA от него оказались: https://habrahabr.ru/post/264457/

Единственный кросс-платформенный движок с адекватной поддержкой WebGL — это Blender + Blend4web.

А вот и пруф: https://habrahabr.ru/post/310086/
Blend4web — это не кроссплатформенный игровой движок. Это фреймворк для 3d симуляции и рендеринга в браузере. Я не понимаю, какой смысл сравнивать Unity с его огромным комьюнити, тысячями выпущенных игр, десятками топовых игр (как 3d, так и 2d) с Blend4web, на котором не сделано толком ни одной игры. Blend4web решает конкретную задачу. Возможно, он решает ее лучше, чем Unity. Но сравнивать их просто бессмысленно. Я говорил именно о кросс-платформенных игровых движках, имеющих поддержку билда как нативно на различные платформы, так и в webgl. Пока-что Unity — это фаворит, хоть у него, безусловно, и куча недостатков, и поддержка webgl еще очень сырая — об этом никто не спорит.

@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, с амбициями съесть его весь.

И от бленд фор веб для следующих проектов насса отказались, а еще они отказались от анриала и скорей всего будут писать на чистом js + webgl.
Откуда вы взяли информацию про то, что в NASA отказываются от Blend4Web? Нам ничего про это не известно.
А какие проекты кроме того единственного, после которого был проект на анриале они делают на бленд фор веб?

Похвастайтесть, интересно очень.

В этом интервью разработчики из NASA говорят что планируют использовать Blend4Web в будущем.

Конечно, все еще сыро, есть баги, есть куча ограничений самой платформы webgl.
Ну, то есть да, можно использовать только, чтоб поиграться, ничего серьёзного не сделаешь на нём.
Но у вас есть примеры альтернативных движков, которые делают это лучше?
У вас есть примеры игр (не тетрисов, арканодидов и т.п.), написанных на Unity, которые нормально бы в WebGL работали?

Я не просто так спрашиваю, мы текущий наш проект пытались завести под WebGL — не получилось. Запуск занимает десятки секунд (а то и минут, каждый раз по-разному), часто странная ошибка с нехваткой памяти (пробовали разные способы с форумов, ничего не помогает), странные ошибки внутри их кода без нормального стек трейса, на которые не нашлось ответов на форуме.
Вы наверное грузите все одним скопом, нужны ассет бандлы, оптимизация ресурсов (сжатие и выпиливание все чего можно и нельзя) и жесткий контроль над памятью (не используете ресурс — выгрузили). В целом весь деплой в юнити заключается в нажатии кнопки, что круто, но у вас и контроля будет столько же, а захотите больше — прийдется страдать и лезть в скомпилированый жс+асмжс код.

Сразу советую переписать их загрузчик на свой собственный и проверить не делают ли они оптимизацию float32 на лету (делали вплоть до версии 5.4, сейчас не уверен), если делают — сделать ее сразу после компиляции, а не в рантайме, сейчас все достойные браузеры понимают Math.fround.

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

Выпиливайте все сторонние библиотеки от которых вы зависите не очень жестко.

UI лучше делать средствами html+css давая обратную связь в игру с помощью жс.

Очень важно правильно подобрать формат текстур и настроить сжатие, иначе размер ресурсов будет слишком уж большой, а нужно рассчитывать максимум на 512 Мб размера кучи и не более того же по ресурсам (лучше 256 кучи и до 50 Мб ресурсов).

Минимизируйте колличество шейдеров — это заодно и видеопамять вам разгрузит.

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

Вся прелесть в том, что у нас при запуске не так много чего в память грузится. Изначально открывается почти пустая сцена, с который идут запросы к API, и только, физики никакой нет вообще. Но даже с этим бывают проблемы. Я повторюсь, там очень странная ошибка в консоли и стек трейс по их сгенерированному коду, по которому вообще не ясно, в какую сторону копать, чтоб понять, что ж вообще происходит.
Да, это тяжело хотя и не невозможно. Если физики нет в игре — еще не факт, что ее нет в сборке, проверьте логи сборки. Но проблема конечно явно в другом, тут могут помочь такие танцы с бубном как удаление кеша эмскриптена, перестановка юнити, даунгрейд на предыдущие версии.

У нас как-то была ошибка которая появлялась исключительно на стейджингах, но не в дев версии — console.errorMessage is not a function, что решалось простым переопределением console.errorMessage = console.error, но я так и не понял почему она не проявлялась при разработке.

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

Нет ничего невозможного, удачи =)
Кажется я знаю представители какого движка минусуют мои комментарии =)
Во-первых, я не понимаю, почему тетрисы и арканоиды не являются хорошим примером игр. Ключевая особенность Unity в том, что он отлично подходит под очень широкий круг игр. В некоторых аспектах, он, конечно, уступает другим движкам (если бы я делал трехмерный AAA-шутер, в котором важна красивая графика, я бы выбрал Unreal).
Тут надо задать вопрос — а какие вообще игры вы считаете достойными для выпуска на 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
Да, не всё гладко, но уже намного лучше чем было и уже сейчас можно делать как-никакие но релизные версии проектов.
Щас бы нормально объяснить, где и что находить, как будто я каждый день юзаю Unity.
Unity3d 5.2.2? UnityScript? Вам не кажется, что вы несколько устарели? Даже WebGL экспорт в юнити меняется с каждым! релизом, а не только с выходом мажорной версии.
Это статья для тех у кого туго с английским?

На сайте Юнити есть много отличных материалов для начинающих:

https://unity3d.com/ru/learn/tutorials/

Зарегистрируйтесь на Хабре, чтобы оставить комментарий