Эксперименты с webGL

Наброски ещё одной небольшой игры на основе шаблона из PlayCanvas.

стандартный мир<br />
стандартный мир

Shift

Облачный фреймворк PlayCanvas показался в целом подходящим движком для каких-нибудь небольших игр, например, ремейков некоторых проектов, которые делал когда-то давно на Blitz3d и Flash.

вид из редактора<br />
вид из редактора

Между делом собрал заготовку для одного подобного ремейка, игры с переключением измерений. На данный момент есть враги, преследующие мячик в обычном мире. На уровне разложены бонусы, которые нужно собирать. Кнопкой PageDown можно переключиться в тёмный мир, где враги становятся проницаемыми и прекращают преследование (PageUp возвращает обратно в базовое измерение). Бонусы здесь не видны, но если собрать их все, то в тёмном мире откроется переход на следующий уровень.

тёмный мир<br />
тёмный мир
открывшийся переход<br />
открывшийся переход

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

Проект запускается в браузере с десктопа или смартфона (около 2 Мб скачается) : playcanv.as/p/OwdUfcGq/

Pad

Прототип частично похожей механики собирал на Godot engine, правда там другие принципы управления и на первом всё-таки механика переключения между различными видами материализации и видимости:

PAD, игра про переключение между джойстиками разных миров

Ту игру можно установить со странички на itch.io:

WildEngines

Прототип с паучьими лапками, с которого начал осваивать PlayCanvas и javascript, тоже немного доработал:

Находится здесь (его вес я в процессе понизил где-то с 10 до примерно 7 Мб): playcanv.as/p/rOebDLem/

Эксперименты с webGL
1616
2 комментария

А какие-нибудь "подводные камни" при работе с PlayCanvas возникли?
Я, например, заметил что с ассетами довольно неудобно работать. Нельзя просто разместить ассеты в папке проекта и загрузить потом нужный путем поиска по имени. Надо обязательно атрибуты в скриптах объявлять и назначать туда ассеты.

Я, пожалуй, подпишусь. Движок ну очень не популярный, особенно по сравнению с Годотом, информации по нему мало.

Ответить

Возникли. Просто в основном это особенности конкретно программирования javascript под webgl. Любой движок нужно осваивать.
Не знаю в чём проблема с ассетами, они должны быть добавлены в каком-либо виде на сцену, в составе каких-то entity. Или нужно их предзагружать в скриптах. Иначе откуда движку знать, что  нужно брать их в билд.
Есть некоторые нюансы работы с онлайн редактором, вроде того что шаблоны (префабы) создаются, но не отображаются сразу и приходится перезапускать редактор, чтобы снова сделать шаблон.
Или при сжатии текстуры с прозрачностью, назначенной на материал, проект может не запускаться. Или то, что нужно правильно объявить переменные (в initializate, а не раньше) и обращаться к ним (через this.). То, что var создаёт переменную видимую внутри всей функции, а не только внутри конкретных скобочек, причём все var ещё и всплывают в начало функции при выполнении, поэтому все var желательно объявлять в начале функции и единым вызовом,  перечисляя их в нужном порядке.
Используемые материалы нужно показать на камеру в начале, иначе во время игры когда каждый новый материал появляется в кадре - происходит небольшая задержка, на его компилирование. Собственно, в Godot тоже есть подобный момент. И с источниками света примерно такой же момент, но его уже сложно предварительно на камеру засветить.
Ещё тут есть группы батчинга. Но, опять же, с этим нужно аккуратно обращаться. Например, если отключить потом часть объектов группы, то и остальные пропадут, потому как становятся по сути единый мешем и не важно что они в иерархии раскиданы могут быть в совершенно разные места.
Ну и так далее. Нудно просто делать конкретный проект на котором и осваивать особенности фреймфорка.
Вобще писал статью с написанием кода "паучьих лап" на Godot, Unigine и PlayCanvas - как раз можно посмотреть отличия: https://habr.com/ru/post/536114/

1
Ответить