Разрушаемые стены: от идеи до интересных способов использования
Как 7 минут работы программиста дают простор для творчества дизайнеру уровней.
Подход перекликается с эмерджентным геймдизайном, используется на этапе проектирования/создания игры.
Мы делаем метроидванию и одной из первых штук, которые нужно было добавить в игру (после комнаты, управления персонажем и тестового противника) - ломающиеся стены.
Какая метроидвания может без такого обойтись? Ведь это один из самых простых способов добавить в игру "секретку". И с системным подходом всё крайне легко реализуется.
Пример из юнити: берём обычную стену, добавляем скрипт, который просто требует наличие у объекта здоровья.
Дальше остаётся только выставить минимальное количество ХП (чтобы ломалось с одного удара) и назначить эффекты.
Благодаря ограниченному инструментарию и фантазии левел дизайнера, у нас етсь не только изначально задуманное.
1. Разрушаемая стена
2. Тайник. Пока что мало отличается от стены, но другая функция - прячет предметы непосредственно за собой, а не ведёт в другое пространство. Карта с секретами может быть компактней.
3. Сделать коллайдер тригерром (убрать "твёрдость" объекта) - и вот есть разрушаемые декорации, которые вносят небольшое разнообразие.
4. Ловушка для игрока. Всего лишь прикрепив другие объекты как дочерние к изначальному, можем ломать очень длинную стену/пол/потолок.
5. Ловушка для (метод избавления от) врагов.
При этом, шипы - просто наносят урон всему, у чего есть здоровье. Повесили такой скрипт на колючего врага - он наносит урон и игроку, и врагам. Повесили на пушку - она может разбивать стены, до которых игрок не достаёт.
6. Внезапное продолжение комнаты, с любым содержимым внутри, так как дочерними можно сделать не только объекты, но и просто спрайты, на переднем фоне, закрывающие видимость.
7. Шорткат, где рабиваемая стена только с одной стороны.
8. Кинематографичные моменты!
9. Даже откртие сундуков! Для этого будем делать что-то отдельное, но дизайнера было уже не остановить.
Что же будет, если в его инструментарий добавить второй скрипт, больше чем на пару строк кода...