One-on-one. Девлог. Карта с кастомным эффектом

Делаю коллекционную карточную PvP-игру. Делюсь наработками этой недели и планами на следующую.

Карта с кастомным эффектом

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

Для кастомных карт у меня отдельный скрипт, в котором по ID карты определяется, что она должна сделать:

One-on-one. Девлог. Карта с кастомным эффектом

Рефакторинг анимаций

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

Сам эффект для карты сделал очень быстро - долго бился над тем, как изменить код, чтобы это выглядело красиво. До конца недели не успел. Но! У меня появился план, как это сделать. Возьмусь за это на следующей неделе.

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

One-on-one. Девлог. Карта с кастомным эффектом

А вот как это выглядит сейчас. Никаких временных пауз, только чистая логика:

One-on-one. Девлог. Карта с кастомным эффектом

Но потребность в паузах то осталась: чтобы карточки вылетали на экран не все одновременно, а красиво по очереди. Собственно, над этим и работаю.

Что сделаю к следующей субботе

Помимо рефакторинга анимаций делаю еще одну карту с кастомным эффектом: в следующем ходу вытащить на 1 карту больше. Ух, чувствую еще куча сложностей меня ждет.

Этот пост входит в цикл постов про игру, которую я потихоньку делаю уже несколько месяцев. Я делюсь всем производственным процессом: какие решения я принимаю в разработке, геймдизайне, интерфейсе, арте и других сферах. Подписывайтесь тут или в телеграм-канале: @nigylamchan.

66
22 комментария

Но потребность в паузах то осталась: чтобы карточки вылетали на экран не все одновременно, а красиво по очереди. Собственно, над этим и работаю.

Рендер можно вообще полностью отвязать от логики.

ИИ выложил на стол 5 карт разом -> для каждой карты посылается событие "карту поместили на стол", потом сразу же одна карта ушла в колоду -> опять посылаем событие "карту убрали в колоду", на эти события подписан рендер, который запихивает в очередь анимации. Потом эти анимации проигрываются в порядке очереди.

2

Я вот и хочу что-то такое сделать. А есть примеры, как это лучше реализовать? Как события передавать, как их обрабатывать? У меня пока идея сделать это корутинами

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

1

я так понял что автор делает игру просто чтобы сделать, по фану так сказать, больше для себя чем для игроков

2

Для меня главным отличием является динамичная боевка как в Slay the Spire, но адаптированная под ПвП. В других играх я такое не видел, все клонируют Хартстоун и МТГ. Получается слишком занудно и заезженно

Странная архитектура, где спец способности карт описываются не в самих картах, а в какой-то функции по свичкейсу. Когда таких "пристроек" будет несколько (в одной выбираем спрайт, в другой звук при размещении, в третьей эффект, в четвертой еще что-нибудь), то поддерживать это станет очень тяжело.
Спрайт карточки и ее визуальные эффекты не в таком же свичкейсе лежат? Почему тогда игровой эффект в виде пристройки сбоку сделан?

1

Согласен, костыльное решение. Пока не знаю как лучше хранить кастомные эффекты