TwerkyCat, игра для хакатона за 2 дня

Всем привет.
В хакатоне от Azur я решил участвовать в одиночку - хотел проверить собственные навыки. И результатом этого вызова и стала забавная игрушка "TwerkyCat" - ранер с физикой хвоста и попыткой сделать это всё "под музычку". О том, что пошло при разработке по плану и не очень, читаем далее. Сойдет за кликбейт же, ну?

1. Концепт

"Успеть за 60 секунд" я решил интерпретировать как "игровая сессия должна быть короткой". Вначале в основу игры я решил поставить Osu!-подобный геймплей - играет музыка, на экране появляются элементы (буду называть их дальше "нотами"), по которым нужно своевременно кликнуть, за что начисляются очки.
Но, в отличие от Osu, хотелось добиться такого эффекта, что идеальное прохождение одного игрока отличается от идеального прохождения другого. И добиться этого я решил с помощью физичной "куклы котика", и нужную ноту можно забрать хвостом на своё усмотрение. Мне кажется, так я заложил более-менее интуитивное однопальцевое управление.

2. Арт

Рисовать я не умею, но 1 спёртая картинка + немного подрихтовать + разные примитивы - сойдёт для хакатона.

Та самая спёртая картинка - гуглится запросто
Та самая спёртая картинка - гуглится запросто

У чёрного кота чёрная попа, и это проблема, ведь они будут сливаться. Гуглим туториалы, как сделать 2D-outline, пилим под это дело шейдер

Шейдерный "полуаутлайн"
Шейдерный "полуаутлайн"

Хвост собирался из примитивных "капсулей", чтобы обеспечить мобильность.

Почти полный пак использованных спрайтов
Почти полный пак использованных спрайтов

3. Корректировка идеи

После написания скриптов для движения котом, возник такой вопрос: а как дизайнить к этому уровни? Osu предполагает, что "ноты" появляются в режиме реального времени, но, чтобы удобно было с этим работать, нужно отдельный инструментарий пилить. Чего, конечно же, я не мог себе позволить.

Тогда было решено вместо Osu-подобного появления "нот" использовать подобие GuitarHero - когда "ноты" падают сверху.

В качестве "нот" решил использовать звёздочки - так более интуитивно понятно, что их нужно собирать.

TwerkyCat, игра для хакатона за 2 дня

Для разнообразия геймплея добавил обычные и разрушаемые "стенки".

Стенки
Стенки

Разрушаемые стенки - работают как обычные, но разрушаются при соприкосновении со стрелкой.

4. Unity, сцена и скриптинг

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

1) Для механики физичного хвоста используем RigidBody2D + HingeJoint2D.

Голова, кстати, по такому же принципу сделана, но не взаимодействует с объектами

2) Для перемещения пишем скрипт, который двигает попу кота к координате тапа на экране. Хвост при этом сам по инерции двигается. То, что нужно, в общем-то

3) Звезда - при соприкосновении хвоста с триггером засчитывает очко

4) Стрелочка - при соприкосновении хвоста с триггером добавляет стенке компонент RigidBody2D (можно сказать, меняем тип твердого тела с Static на Dynamic) и меняет слой (чтобы хвост дальше не коллайдил со стенкой)

5) Скрипты для UI - запуск, рестарт, счётчик очков и регулировка громкости

6) Скрипт для оптимизации - прячет объекты не в поле зрения, чтобы не лагало

7) Вспомогательные скрипты, чтобы не утонуть во взаимозависимых скриптах

5. Заканчиваем, заканчиваем уже

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

TwerkyCat, игра для хакатона за 2 дня

APK-шку можно скачать по ссылке, по запросу вывалю сборку под Windows и сборку на itch, надеюсь, вам понравится :)

Ну и видосик с геймплеем

77
6 комментариев

Наконец-то нормальные проекты завезли

1
Ответить

Спасибо

1
Ответить

Звёздочки коту под хвост )

1
Ответить

Ставить или не ставить, и если ставить, то звёздочку или точечку? Я задавался этим вопросом, но отложил его временно. А как известно, нет ничего более постоянного :) 

Ответить

Боже, у всех такие хорошие проекты.

1
Ответить

Спасибо

Ответить