Voxels. Violence. Vandalism.

Готовить может каждый

Рататуй

Что это такое

Это "демократичный" 3д движок, с физической разрушаемостью почти всего, ориентированный на использование воксельных моделей (точнее - моделей формата .vox созданных в MagicaVoxels) в качестве ассетов.

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

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

Например, для 3d roguelike подошло бы замечательно.

Ну и, прежде всего, пишу для себя, так как у самого уже накопилось достаточной идей, которые хотелось бы испробовать, и для которых такой формат вполне подошел бы. Например, написать свой Daggerfall :)

16 апреля

Допилил уровни, залил релиз, написал статью на Канобу http://kanobu.ru/pub/440158/

10 апреля

Кроме всяких доделок и багофиксов, сделал "настоящую" разрушаемость. Теперь объекты с параметром sticky "приклеиваются" к соседним объектам. Это позволяет создавать сложные объекты из частей, и самое главное, их можно потом разломать обратно на чати.

 

 

 

 

 

8 апреля

Добавил звуки, скайбокс и возможность задавать глобальную освещенность по-мирово. Так что, теперь можно делать день:)

Скайбокс решил сделать в соответствии с традициями, и.е. в вокселях:

Получилось немного странно, но в общем неплохо.

Звуки тоже вполне удовлетворительны, хотя и пока в довольно ограниченном количестве.

7 апреля

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

6 апреля

Занимаюсь оптимизацией вокселей.

Проблема с вокселями в том, что они относительно "дорогие". Обычную полигонную можель можно увеличивать без особых проблем, разве что текстуры стунут более размытыми. А воксельная можель увеличивается по объему в 8 раз при увеличении стороны в два раза, и, соответственно, увеличивается память и время обработки. Особенно, если это делать "в лоб", как я, собственно, и делал.

Сейчас пришло время оптимизации. За счет того, что вместо Dictionary я стал хранить воксели в (почти) Octree, скорость повысилась почти вдвое. Сейчас я делаю загрузку асинхронной, чтобы можно было не дожидаться подгрузки дальних чанков на более крупных картах. Еще можно кэшировать чанки, что я тоже уже делаю. Может, даже, стоит хранить обраотанные чанки в файлах, т.е. кэшировать между сессиями.

Другой метод оптимизации - использовать воксели разного размера. Это уже используется для моделей персонажа - в них используется масштаб 0.1 (метр на воксель), по сравнению с 0.4 для чанков.

Можно еще использовать более крупные или более мелкие воксели.

Более крупные воксели могут использоваться для cплошных заполненных пространств (которые часто получаются в MagicaVoxel, если злоупотреблять Attach Face, например).

Для мелких вокселей у меня тоже есть планы. Можно будет давать движку модели в произвольной детализации, и маркеры, которые они должны будут заменить в сцене.

Например, если движок имеет такую модель в списке "замен", то он будет находить и заменять все 3х3х4 "креслица" как в верхнем углу на более детализированную модель внизу. С учетом цветов и ориентации.

25 марта - 5 апреля

24 марта я ковырялся в своем другом проекте для джема ( http://gamesjam.org/3112/ ). Получалось не очень - прототип был, и в общем геймплей был неплох, но "wow" не было.

И параллельно слушал записи всяких лекций про геймдев. И как раз попалась мне лекция про Madness Road https://www.youtube.com/watch?v=z4P4tSoQag4

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

Во-первых, воксели могут нести информацию не только о внешнем виде и форме объектов, но и о других его свойствах. Например, о том, что у них внутри. Скажем, у человека могут внутри воксели органов, а у танка - воксели танкистов, и из этого можно считать, что  с ними будет, если их повредить или разобрать.

Во-вторых, воксели хороши для User-generated content. Скажем, если кто-то хочет сделать мод для современного монстра, вроде Skyrim или GTA5, ему придется делать ассеты соответствующего качества. А если эта игра в воксель-стиле, и можно уровни, персонажей, предметы для них делать просто в редакторе вокселей, то сделать что-то не слишком убого выглядящее (а то и действительно красивое) могут гораздо больше потенциальных моддеров.

И я начал делать игру, которая ориентирована прежде всего на легкость модификиций. Ну и с физикой, как полагается. Десять дней спустя, получилось вот это.

Геймплей:

Редактирование:

Можно добавлять новые уровни, или менять существующие прямо во время игры - она сама заметит, что произошло изменение и заменит соответствующюю часть уровня (или внешний вид персонажа) на новый.

Уровни находятся в папке data/vox/worlds. Имена их должны состоять из двух цифр, задающих их положение по соответствующей координате (вместо отрицателоьных цифр используются буквы a-z).

Некоторым цветам можно задавать дополнительный свойства. Для этого используется файл materials.json - общий в data/vox или персональный для уровня в его папке.

Например, свойство dynamic сделает части уровня соответствующего цвета перемещаемыми объектами, light сделает источниками света, transparent сделает прозрачыми, а ethereal - проходимыми (используется, например, для воды).

Свойство marker покажет, в каких точках нужно спавнить каких врагов. Типы и свойства врагов, соответственно, задаются в файле world.json, а их графическое представление - в папке characters.

Логотип проекта

3d-стрелялка с чуть менее чем полной разрушаемостью

Играть
3


Участие в джемах


blog comments powered by Disqus