{"id":4095,"url":"\/distributions\/4095\/click?bit=1&hash=bb60f204192cb79e0cc5357514b41ba28dbf84ab3bb368abba8fa7488b0d5471","title":"\u0421\u0442\u0430\u0440\u0442\u0430\u043f-\u044d\u043a\u0441\u043f\u0435\u0434\u0438\u0446\u0438\u044f \u0438\u0449\u0435\u0442 \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432 \u0410\u0440\u043a\u0442\u0438\u043a\u0435","buttonText":"\u0427\u0442\u043e?","imageUuid":"56a875c5-dcac-59c6-83cb-bda6d9c55dcd"}

Как заползти в PlayCanvas

PlayCanvas - игровой движок для webGL, использующий javascript. Разбираться в его среде разработки начал со сборки мини-демо с машинками, а теперь добавил туда скрипты лап для "паукомобиля".

Обитает движок по адресу:

В целом это похоже на такой Unity/Godot, но с разработкой онлайн - редактор открывается в браузере. Помимо документации есть различные примеры, которые можно форкнуть, начать их изучать и делать что-то на их основе.

Без вложений разработчику доступен 1Gb пространства, где можно размещать свои билды. Для того чтобы пользователь мог запустить ваш билд - достаточно дать ссылку, которую можно открыть на любом устройстве, через браузер. Телефоны тоже подойдут для запуска, правда тогда проекту нужно добавить элементы тач-управления.

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

Редактор более менее похож на прочие игровые движки. В сцене есть некое дерево элементов, местные префабы называются шаблонами, фокус на объекте происходит по кнопке F, скрипты добавляются в поле "компонент" (правда здесь для вывода полей скрипта в редактор дополнительно нужно жать кнопку парсинга), работа с UI напоминает Unity, используемые материалы желательно предпоказывать на камеру, как это практикуется в Godot, есть частицы, настройка материалов, ну и так далее.

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

Что касается скриптов, то писать предлагается на джаваскрипте. В принципе это всё не слишком сильно отличается от C# или GDScript, просто некоторые вещи выглядят иначе (синтаксически, конечно, ближе к C#). Редактор кода просто открывается в дополнительной вкладке барузера, когда вы начинаете редактировать скрипт.

Фрагмент кода отдельной лапки

Так получилось, что мне захотелось собрать "паучков" в различных своих проектах. Начал с Godot, потом повторил это в Unigine и, так как параллельно начал пробовать webgl, то дошла очередь до реализации этих скриптов и в playcanvas, заодно плотнее разобраться в его использовании.

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

Потестить получившегося на текущий момент кадавра можно здесь (сама ссылка выглядит так playcanv.as/p/rOebDLem/ ):

Я лично пробовал запускать на не слишком мощном смартфоне через Chrome и Dolphin, графика становится похожей на PsOne и вычисления для некоторых лап не работают, пока на экране виден уровень, у края карты лапы проявляются. На слабом ноутбуке наблюдались очень сильные тормоза в Chrome, но в Firefox всё катается нормально. На ноутбуке с дискретной видеокартой и на стационарнике летает в обоих этих браузерах.

На ПК, в отличие от смартфонов в этой демке работает прыжок (по кнопке пробел), заготовка стрейфа (Q и E) и перезагрузка уровня (на R).

0
23 комментария
Написать комментарий...
Mike Kozlov

О, я даже им коммитил немножко фиксы и активно на форуме помогал.

У движка есть ряд серьезных проблем с оптимизацией, которые давно пора решить с помощью wasm и просчетом физики в отдельном потоке.

Помню, даже экспериментировал с этим и получил жирнейший буст производительности.

А вообще, очень клевая штука, советую.

Ответить
Развернуть ветку
Alexander Kulkov
Автор

Ну да. Штука, действительно, весьма занятная. Особенно если проект небольшой, за счёт чего может быстро загрузится. Понравилось, что всё работает довольно шустро, даже не на самых мощных устройствах.
Плюс можно перейти на другие js фреймфорки, в том числе babylon.js, где можно использовать typescript. То есть технология не то, чтобы сильно привязана именно к среде playcanvas.

Ответить
Развернуть ветку
Grim Ork

Из того что я тестировал, движок показался очень шустрым. Не только на десктопе, но и на мобильных браузерах. Хотя я физику не трогал, говорю по большей части про рендеринг по большей части.
А какие там еще серьезные проблемы с оптимизацией кроме физики?

Ответить
Развернуть ветку
Dozaemon

ЛЕГО!

Ответить
Развернуть ветку
Alexander Kulkov
Автор

цифровое :)

Ответить
Развернуть ветку
Dozaemon

AH YEAH BABE

Ответить
Развернуть ветку
Сергей Чемоданов

Тоже как то делал видос про него

Ответить
Развернуть ветку
Alexander Kulkov
Автор

нормальное интро по среде разработки :)

Ответить
Развернуть ветку
смари умираю

У годота тоже вродь редактор в онлайне открывается

Ответить
Развернуть ветку
Alexander Ksenks

Годот - приложение. У него нет никакого "онлайна". Редактор gdscript встроенный, да.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Alexander Ksenks

А вот про это не знал, спасибо.
Однако всё же надеюсь что команда разработчиков будет развивать основной движок, а не пилить веб для неясных целей.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Alexander Ksenks

Также в ожиданиях. В основном из-за новой системы навигации с динамическими препятствиями. Был неприятно удивлён отсутствием таковой в текущей версии.

Ответить
Развернуть ветку
смари умираю

Вот, да. 

Ответить
Развернуть ветку
Alexander Kulkov
Автор

Да, у Godot тоже есть подобное направление, но тут речь ещё и о хостинге для проектов.

Ответить
Развернуть ветку
orga nizm

Зачем он нужен 

Ответить
Развернуть ветку
Alexander Kulkov
Автор

Не нужен - не используй. Есть, кстати, другие js фреймфорки, но в этом проще научиться, например.

Ответить
Развернуть ветку
Grim Ork

Затем что он быстрее Unity в WebGL приложениях.

Ответить
Развернуть ветку
Grim Ork

Я как раз сейчас пробую этот движок. В общем нравится, в отличии от конкурентов (BabylonJS) намного более дружелюбный интерфейс. Но недостатков тоже достаточно:
1) Редактор только облачный, без онлайна работать не будет.
2) JS вряд ли придется по вкусу C# (ООП) программистам, очень уж функционально-ориентированный язык. И синтаксис малость уродливый, например если передавать функцию в качестве параметра. Ну и динамическая типизация тоже не особо в духе С#.
3) В редакторе очень плохо организована работа с шейдерами. Как я понял, их только два стандартных, а кастомные назначаются как-то при помощи скриптов.

Ответить
Развернуть ветку
Alexander Kulkov
Автор

Как будто есть какие-то альтернативы. Почти нет, если не идти в самописные фреймворки. Babylon вобще-то не хуже, только редактор совсем простой, но от редактора на самом деле не так уж много требуется - главное иерархии создавать, а всё остальное не такая проблема скриптами набросать. Тем более, что в реальных играх уровни обычно всё-равно преимущественно собираются и пересобираются из кусков кодом, а в вёбе это ещё более актуально.
JS так-то тоже развивается, а динамическая типизация - это не есть плохо, просто это своеобразный подход. В том же babylon можно и на typescript писать.
Шейдер можно писать кодом, в чём проблема. К тому же 90% реальных задач покрывают предложенные шейдеры.

Ответить
Развернуть ветку
Grim Ork

Сам Unity и есть альтернатива. Пару лет назад WebGL экспорт был откровенно убогим, но сейчас вполне себе. Если не нужно чтобы игра работала в мобильных браузерах и не жалко трафика (билды весят неприлично много), то намного проще использовать Юнити, на мой взгляд.

Ответить
Развернуть ветку
Alexander Kulkov
Автор

Экспорт в webgl из Unity - это на уровне забавы.

Ответить
Развернуть ветку
16 комментариев
Раскрывать всегда
null