Первый босс | 23 день разработки игры
Всем привет! Продолжаю разрабатывать свою игру про стримеров и делюсь с вами прогрессом. На этот раз изменений немного, да и времени на разработку игры особо не было. По плану это должен был быть 28 день разработки, но сейчас я понимаю, что свомещать работу и хобби-проект -- очень сложно не только по времени, но и по токенам
Новый босс
В игру был добавлен новый и самый первый босс, пока что под кодовым названием Slime Boss. У него есть 3 стадии, которые зависят от здоровья, а также для каждой стадии свой набор атак.
Первая стадия:
Монстр обстреливает вас слизью, после которой остаются токсичные лужицы, наносящие вам урон
Вторая стадия:
Босс выплевывает свой глаз, который начинает рикошетить от стенок экрана и наносить главному персонажу урон. Также все ещё обстреливает вас желейными снарядами из первой стадии.
Третья стадия:
Глаз взрывается оставляя на своей позиции ядовитую лужицу, босс входит в свою последнюю стадию, стараясь отстранить от себя главного героя и выжить -- начинает распространять токсичную слизь вокруг себя. При этом атаки из первой и второй фазы отключаются. Мне хотелось этим продемонстрировать то, что, чем меньше здоровье босса, тем он хуже справляется со своей задачей по убийству главного героя, а также и сил у него становится меньше.
Проблемы и шейдеры
Чтож, механика третий фазы босса заставила меня побомбить на ИИшку, поскольку распространение слизи вокруг себя конфликтовало с механикой у одного из персонажей -- Hobo. Атака и ультимейт этого персонажа завязаны на лаве: с помощью маски убирался основной бекграунд и показывался второй -- лавовый. При попытке добавить беграунд из слизи и маску, то выходило так, что либо лава начинала быть выше слизи, либо наоборот в зависимости от порядка сортировки. Все что смогла придумать ИИшка, так это чередовать в игре лавовый и слизневый бекграунд, создавая непрятное мелькание, что явно не выход из ситуации.
После нескольких гневных сообщений и разъяснений, что механики друг другу противоречат, то ИИшка предложила мне использовать шейдеры и потенциально это стало решением! Если коротко объяснять как устроен шейдер, то:
Если пиксель попал в область слизи, то рисуем слизь;
Если попал в область лавы, то рисуем лаву;
Иначе прозрачный пиксель.
С помощью шейдера удалось добиться более менее приемлемого поведения: лава и слизь смогли существовать одновременно:
Кстати, сейчас есть ещё одна проблема: глаз, который рикошетится от стенок экрана начинает баговаться, когда быстро перемещаешься: он начинает на одном месте рикошетиться влево и вправо. Возможно у вас есть советы или идеи, как решить эту проблему?