Как мы свет в игру завозили!

Это одна из маленьких историй о трех маленьких, но храбрых и независимых разработчиках в жестоком мире гейм дева! Приключения Сира Т, Сира R и Сира I с их славной игрой "First Feudal" начинается здесь и сейчас!

Как мы свет в игру завозили! Игры, Gamedev, Gamemaker Studio 2, Инди, Видео, Длиннопост

Сегодня окунемся в мир игрового света и тьмы на пальцах! Поехали!

Скрин того, что получилось для затравки сразу в студию:

Как мы свет в игру завозили! Игры, Gamedev, Gamemaker Studio 2, Инди, Видео, Длиннопост

Сир I, Сир T и Сир R не просто так получили свой титул. Ведь они взялись разрабатывать не на модных Юнитях, а на тру движке - GameMaker. Выбор сий был сделан обдуманно, т.к. для 2д игры все же бОльшая часть наворотов не нужна. Что очень сильно ускорило понимание что делать, создание прототипа и разработку.

Однако, когда речь заходит о сложных штуках - их из коробки там тупо нету.


В частности одним ноябрьским вечером Сир R решил добавить в игру освещение, да не простое, а в динамике (чтобы бежишь ты с факелом, а он меняет освещение от обстановки).

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

Игра про средневековье с крестьянами и феодалами) Вот и движок ему под стать - в определенных моментах - тоже средневековье) Хочешь свет - будь добр рассчитай, отрисуй и обнови сам!

Пол кастрюли геометрии, полкило кастомного кода, щепоть костылей и добротная горсть смекалки - вот и готов прототип)

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

Но за всей этой магией лежит просто один кружок, да с десяток трапеций) Но обо всем по порядку)

Сначала вешаем на всю карту тьму) Да будет ночь!

Как мы свет в игру завозили! Игры, Gamedev, Gamemaker Studio 2, Инди, Видео, Длиннопост

Потом из этой тьмы вырезаем круги света вокруг источников) Да будет свет!)

Как мы свет в игру завозили! Игры, Gamedev, Gamemaker Studio 2, Инди, Видео, Длиннопост

А дальше вырезаем из круга темные трапеции, которые загораживают непрозрачные объекты. Да будет геморрой!

Как мы свет в игру завозили! Игры, Gamedev, Gamemaker Studio 2, Инди, Видео, Длиннопост

На последнем пункте остановимся подробно)

Модель у нас сильно упрощена, ведь это 2д и все непрозрачные объекты (стены, горы) - прямоугольные, со стороной кратной одной клетке в игре. Да еще 2д с видом сверху. Это позволяет для всех непрозрачных объектов по внешней стороне построить линии непрозрачности и работать с ними.

Дальше от точки освещения до каждой ближайшей линии непрозрачности строим лучи.

Ну и чтобы не строить их до бесконечности - ограничиваем лучи по длине и отсекаем от трапеции края)

Как мы свет в игру завозили! Игры, Gamedev, Gamemaker Studio 2, Инди, Видео, Длиннопост
Как мы свет в игру завозили! Игры, Gamedev, Gamemaker Studio 2, Инди, Видео, Длиннопост

Думал описание получится сложнее) Но как-то словами оно прям просто получается)

А дальше это все обмазывается тонной оптимизаций, ведь расчеты делаются каждый шаг игры!

Для начала статичные светильники - перерассчитываются только когда в зоне их освещения появляется новый объект, ну или они перемещаются)

Затем линии непрозрачности рассчитываются отдельно - в фоне. Ну а для перемещающихся объектов рассчитываются только при смене клетки.

А для красоты, чтобы свет казался живым - слегка меняем диаметр круга света) Круг света - как заклинание звучит)


Вот и сварена похлебка) Кругляши да трапеции.


Напоследок к свету также относится и молния во время дождя.

Достаточно просто на мгновение во время дождя убрать тьму) Видео прилагаемс (качество при заливке пострадало что-то).

Вот так кругляши, трапеции да пресвятой GameMaker смогли привнести в игру свет.

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


Всем добра, господа и дамы. Пойду пилить следующий патч и хотфиксить старый ;)

Лига Разработчиков Видеоигр

6.8K постов22.2K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"