Создание 3д-графики в рамках геймджема Ludum Dare 39

Геймджем - это событие, на котором собираются команды, интересующиеся разработкой игр, и делают игру на заданную тему за 2-3 дня. Ludum Dare один из самых крупнейших и старейших глобальных геймджемов.

Вот и мы тоже решили поучаствовать.


Нас было 3 человека: 3д-художник, программист и “3д-разработчик”(всего понемножку).  Надо сказать, что никто из нас не практически не имел опыта работы в сфере разработки игр. Программиста мы нашли через интернет за пару недель до начала джема, и надо сказать он себя отлично проявил!

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

В общем очень интересный опыт, всем советую.


В этот же раз мы работали удалённо и на разработку игры было дано 3 дня. Темой Ludum Dare 39 оказалась “Running out of power”, т.е. что-то типа “иссякает энергия/силы/власть”. Тема нас особо не зацепила, так что мы решили воспринять её дословно: “у тебя кончается энергия, действуй или проиграл”.

Учитывая состав нашей команды, нам надо было сделать игру в 3д и на движке Unity. Потому что ничего другого мы не умели :)

Что получилось, можете посмотреть и пощупать тут:

https://ldjam.com/events/ludum-dare/39/energy-scraps


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


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

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

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

Выглядело это так:

Модульные блоки вгрузили в движок, создали на их основе префабы и собрали из них простенькую сцену.

Тестовая сцена состояла из коридора и пары комнат с дверьми. На двери была сразу прикручена простенькая анимация. Коллайдеры были сгенерированы прям из мешей и программист смог работать с такой сценой весь первый день.

А я тем временем посочинял и смоделил эти блоки до состояния, которое мы посчитали финальным. Модульные блоки уже на этапе простых боксов были подогнаны по сетке. И всё, что мне оставалось в движке, так это заменить в префабе меш и указать новый коллайдер. Анимация двери тоже легко подтянулась из нового файла. Сцена обновилась автоматически и осталось играбельной.

Такой подход сберёг время на расстановку объектов заново.


Тестовая сцена после подгрузки “финальных” мешей интерьера:


В окончательном варианте интерьер эволюционировал. Модульность блоков очень помогла нам сократить время создания локации. И всё создание сводилось к копи-пастам и привязке к сетке уже в движке:


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

Выгядела она вот так (Albedo+Emissive):

Можно было бы использовать Vertex Color для раскраски, но текстура помогла нам быстро подкручивать цвет во всей сцене, просто изменяя цвет кубика в фотошопе. Иметь один материал на всех объектах также позволил на полную использовать оптимизацию батчингом.


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

Мы отделались самым минимальным набором:


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

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

Все остальные материалы наружней зоны пошли без текстур.


Осталось сделать пропсы и врагов:


Они пошли по той же схеме, что и интерьер. Большинство из них использует ту же самую текстуру.

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


В итоге мы умудрились создать локацию вот таких объемов:

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


На моделирование и развертки у нас ушло примерно 10-15 часов работы. Надо заметить, что даже в таком простеньком проекте примерно половина моделей переделывалась, некоторые - полностью.

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

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

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


370 0 850 5
2
2017-08-04
Понравился пост, поддержим вас в соц.сетях 37 000 подписчиков.
2017-08-04
Благодарю! :)
RENDER.RU