Модульный дизайн уровней из плана этажей

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

Модульный дизайн уровней из плана этажей

Уровень был замоделен в Blender с помощью аддона Sprytile. Я разрабатываю игру в одиночку, как и почти все инди, в этом нет ничего особенного, поэтому стараюсь упрощать и ускорять многие процессы. Первым аддоном для создания уровней в моей коллекции был Level Buddy, он позволяет очень быстро размечать геометрию уровней и даже назначать разные материалы на стены, пол и потолок. В итоге он мне не подошел, так как не решает проблему текстурирования. С ним пришлось бы вручную накладывать текстуры и в дальнейшем использовании, если бы вдруг понадобилось изменить уровень, то текстуры тоже пришлось бы переделывать. Но возможно кому то он и пригодится. И так на смену Level Buddy пришел Sprytile. Этот аддон не только позволяет создавать новую геометрию уровней, но также и решает проблему текстурирования в тот же самый момент. Так как текстуры основаны на тайлах, поэтому можно сразу моделить новый уровень вместе с его текстурированием, или можно использовать один и тот же тайл, если достаточно прототипа, а раскрасить уровень уже позже. Получается что все здорово и удобно, но все еще не достаточно быстро, а так как весь уровень получается уникальным, а на его создание уходит очень много времени и из за этого сильно хромает детализация. И тут я решила попробовать модульный дизайн уровней. Я начала с создания своих модулей-ассетов, которые буду использовать в своем новом уровне.

Модульный дизайн уровней из плана этажей

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

Модульный дизайн уровней из плана этажей

После создания базовых ассетов я попробовала набросать несколько комнат разного размера с дальнейшим экспортом их в игру, чтобы можно было по ним побегать, попрыгать - протестировать геймплей. Так как уровни теперь будут модульные то и собираются они соответственно из модулей. Каждый ассет копируется через инстансы, таким образом что при редактировании одного типа ассетов, редактируются все модули того же типа. И опять это оказалось не очень то и быстро. Каждый модуль нужно двигать и поворачивать, все модули нужно расставить на свое место. Даже после создания всего лишь двух-трех комнат окно outliner уже начинает насчитывать до сотни объектов, найти нужный в котором становится проблематично. Можете попробовать сами или посмотреть различные видео по модульному дизайну уровней. Некоторые дизайнеры уровней даже умудряются не включить привязку к сетке или другим объектам и подгоняют их по пикселям вручную. При создании уровней многие советуют использовать концепты, даже те что были набросаны на бумаге, а также планы этажей. И я решила что стоит попробовать использовать нечто другое для разметки и расстановки модулей и объектов на уровне, что в тоже время можно будет использовать как концепт и прототип. Для таких целей отлично подошел Tiled Map Editor. Но сначала нужно было нарисовать карту тайлов для будущего плана этажей.

Модульный дизайн уровней из плана этажей

Я нарисовала в Inkscape схемотичные тайлы для тех ассетов, которые у меня готовы на данный момент и импортировала их в Tiled.

Модульный дизайн уровней из плана этажей
Модульный дизайн уровней из плана этажей

Каждый тайл ничего не значит, это всего лишь картинка, которая никак не связана с моими 3D моделями. Я завела для себя список объектов, таким образом чтобы названия совпадали с названиями объектов в Blender. И добавила нужные объекты на соответствующие тайлы с помощью редактора коллизий. Расположение объекта внутри тайла не важно, так как все они будут центрированы, но вот угол поворота объекта пригодится.

Модульный дизайн уровней из плана этажей

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

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

4141
20 комментариев

И тут я решила

И тут читатель взбодрился.

21
Ответить

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

Ответить

Скетчи делают для того чтобы передать стилистику и для поиска форм-отправной точки для дизайна. Использовать 2д тайловый редактор для планировки 3д уровня это очень неффэктивный пайп-лайн т.к. там масса переходов которые в 2д планировке будут плохо читаться. Быстрее набросать в 3д редакторе тестовую геометрию и посмотреть её в объеме и далее уже порезать на этажи, и потом уже на модульность.

4
Ответить

Да, все это может выглядеть неэффективно, но для меня было удобно)

"там масса переходов которые в 2д планировке будут плохо читаться"
Ну у меня весь уровень в голове и я могу быстро его экспортировать и поиграть на любом этапе редактирования.

"Быстрее набросать в 3д редакторе тестовую геометрию и посмотреть её в объеме и далее уже порезать на этажи, и потом уже на модульность"
Мне такое не подошло, мне всегда нужна возможность сделать шаг назад чтобы что то поменять, даже когда весь уровень уже готов, а не начинать весь процесс с нуля.

2
Ответить

Когда-то давно делал:

4
Ответить

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

3
Ответить

Возможно. Мне вообще понравился подход который они используют в этом пакете и я его даже запускала) Но дальше дело не пошло, как то все это было слишком сложно >_<

1
Ответить