Знаешь PUBG лучше всех? Забери сертификат 4000 руб. на STEAM
3 1 717

"Voxels. Violence. Vandalism." - FPS где уровни быстро делаются и быстро ломаются

"Voxels. Violence. Vandalism." - FPS где уровни быстро делаются и быстро ломаются. - Изображение 1

MagicaVoxel - редактор для создания статических воксельных изображений. Но, может быть, можно в нем рисовать сразу уровень игры целиком - с физикой, монстрами, предметами и т.д.?

Естественный вопрос - зачем? Если кратко - для простоты и скорости. Более-менее удобоваримый уровень с персонажами и предметами без использования готовых ассетов можно сделать за дня три-четыре. Даже не художнику. Выглядеть он будет, конечно, не так роскошно, как может сделать команда моделлеров и текстурщиков. Но достаточно привлекательно для почти любой аудитории. И с этой графикой можно реализовать почти любую игровую механику. Так что - почти идеальная среда для инди, и что немаловажно, для user-generated content. Т.е. и игроки, даже не имея особых художественных способностей и навыков, и без существенных временных затрат, смогут тоже добавлять в игру уникальный контент, который будут стилистически сочетаться с остальной игрой.

Мотивировав себя таким образом, я стал писать прототип. И мои предположения, в общем, подтвердились. В качестве демонстрации возможностей сделана простенькая FPS.

Уровень сверху выглядит вот так

"Voxels. Violence. Vandalism." - FPS где уровни быстро делаются и быстро ломаются. - Изображение 2

Он состоит из 9 чанков (частей) 125x125 вокселей.

Вот, например, чанк из левого верхнего угла.

"Voxels. Violence. Vandalism." - FPS где уровни быстро делаются и быстро ломаются. - Изображение 3

Снизу - чанк в игре, до и после расфигачивания соответственно.

Слева сверху - модель чанка в MagicaVoxel (крыша временна поднята для удобства редактирования).

Справа сверху - она же, но с другой палитрой. Дело в том, что MagicaVoxel кодирует цвета как GIF - палитрой в 255 цветов. А я, кроме цветовой информации, "навешиваю" на разные цветовые индексы разные физические и логические логические свойства. Это конфигурируется в текстовом файле - materials.json. И чтобы было проще понять, где какой материал в палитре и на уровне, я использую дополнительную палитру, где разные свойства имеют разные цвета.

Оттенки черного - статические объекты, белого и серого -динмаические (могут дигаться, падать и т.д.). Коричневые "крепежи", это динамические объекты, которые "приклеиваются" к соседним с силой, пропорциональной площади соприкасания. Они "отвечают" за разрушаемость. Желтые - источники света. Интенсивность света пропорционально объему объектов, так что пришлось сделать отдельный тип пониженной яркости для "витрин", иначе они были слишком яркими. Также имеется стекло, жидкость и растительность. Последние два являются "бестелесными" - они не имеют физического тела и сквозь них легко проходят персонажи и предметы.

"Voxels. Violence. Vandalism." - FPS где уровни быстро делаются и быстро ломаются. - Изображение 4

Последний тип (розовый) - самый интересный. Это "маркеры". Они предназначены для всего того, для чего обычных вокселей недостаточно. Например, для обозначений места и типа предметов и персонажей.

"Voxels. Violence. Vandalism." - FPS где уровни быстро делаются и быстро ломаются. - Изображение 5

Вот, например, модель персонажа Leon. В верхнем углу - его маркер. Если на уровне в игре где-то будет найден такой же маркер, то он подменится соответственной моделью, и он будет анимирован, инициализирован и т.д. правильным образом (параметры персонажей и предметов, такие как здоровье и т.д. конфигурируются текстовыми файлами).

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

видео игрового процесса -

Ссылка на страницу проекта на Джеме - http://gamesjam.org/3260/

Ссылка на играбильную (и модификабельную) версию -

https://drive.google.com/open?id=0B7D2WkCqZE77WE9hZm16U05qUXM

Кстати, если кому интересно - в том же архиве unitipackage с кодом проекта, так как он планируется быть open source.

#gamesjam #voxel #physics

1 комментарий

"Mass Effect: Andromeda, которую мы заслужили". Итоги конкурса