Как я делал RUNEDUCK!!! для LOWREZJAM 2022

OgHhGhh

Ну не то чтобы я делал RUNEDUCK!!! для этого джема. Просто я делал какую-то игру, а ей оказалась RUNEDUCK!!! потому что оказывается играм нужны названия. Это одна из тех мелочей, что я решил оставить на последнюю минуту. Но обо всем по порядку.

Всем привет.

Пару недель назад я скроллил джемы на итче и наткнулся на интересный челлендж — нужно сделать игру в разрешении не более, чем 64×64. Я подписался на джем и стал ожидать начала и объявления опциональных тем. И через пять минут наткнулся на микропост на этом сайте, где некий AndreyMust19 писал:

Основная проблема — текст, которого очень мало помещается на экране.

И тут я подумал хм, текст. не знаю как я это сделаю, но точно хочу игру про буквы. Как-то сама собой появилась идея типа SpaceInvaders, но вместо пулек сбиваешь врагов разными буквами.

LGFyUx6

Для начала я попробовал отрисовать все буквы и цифры, решив ограничиться размерами 5×5. Меньше делать поле скучно, а если делать больше — будет сложно предсказать как именно будет начертана буква.

Дополнительно порисовал какие-то головы и бомбы, которые конечно же не войдут в игру.

На этом этапе я столкнулся с первой проблемой — буквы не хотели мне помогать с честным геймплеем. Проклятая латиница тяготела к крайним столбцам и рядам. Частотность появления пикселя в левом верхнем углу (клетка 1;1) превышало частоту появления в его соседе по диагонали (2;2) больше, чем в 4 раза ! По сути монстр в центре поля был практически неуязвим. Эта проблема решалась перерисовкой букв.

Но тут есть подстава — какие буквы менять, какое неочевидное начертание будет менее неочевидным? Какой минимум букв нужно поменять, чтобы отбалансировать частотность до соизмеримых параметров?

Видно, что когда я отрисовывал первый драфт букв, я почему-то изобразил букву I шириной в три клетки. Видимо она странно выглядела широкой или что-то еще меня смутило, но я подумал — а что если все гласные будут шириной в три клетки. Удивительно, но это помогло. Да, неочевидно возможно, но хотя бы легко запомнить после первого раза (понимаю, что надеяться, что игру запустят больше одного раза это очень мило, но все равно надеялся).

tFouYfc Изначально я хотел, чтобы буква вылетала откуда-нибудь в своем изначальном габарите, разрасталась, и падала на положенные поля. Но быстро понял, что это точно пойдет под нож.

Задумавшись о геймплее я понял, что если у меня есть замечательная буква, занимающая все поле (В — имба!!!), то почему бы игроку не кастовать ее по кулдауну? Отсюда родилась важная идея одноразовых букв. Во время одной волны каждую букву можно использовать только один раз. Неожиданно появилась игра.

Увлекшись буквами я решил отрисовать и главного героя и противников. (бомбочки очень красивые, знаю,  но повторяюсь, они никуда не пошли, мне очень жаль)

MzWF4mn

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

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

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

три — анимацией можно попытаться передать некоторые статусы — удачное заклинание, промах и тд

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

jwYLzgM

Так как мы играли с буквами, которые отключались, я хотел дать игроку визуальную шпаргалку, которая помогла бы в геймплее, ну и обучала бы на ранней стадии игры. Первой идеей было что-то типа клавиатуры, подключенной к монитору, где уже появлялись враги. Но я понял, что монитор в мониторе это треш, осталась клавиатура. Но почему клавиатура вообще? Раз у нас тут волшебники, давай стилизовать, но так, чтобы клавиатура подсознательно угадывалась. Отсюда конечный вариант с «книгой рун». Далее я задумался откуда и куда идут враги, где находится главный герой (на маленькой башне в правом нижнем углу) — вот и лес, вот замок. Общий вид был готов.

MXRJwvp Еще была идея заменить кнопочное отображение букв на буквальное. Это было бы нагляднее и веселее (и не так уж и сложно). Но получавшееся месиво занимало больше места, чем я рассчитывал и не очень хорошо считывалось. Предполагалось, чтобы ассоциация с кнопками была мгновенной, подсознательной, а буквы как ни странно этому мешали.

Что я вынес из этого опыта:

  1. Джемы это клево
  2. Если что-то делаешь временно в качестве заглушки — есть большой шанс, что временное решение пойдет в финальный билд) Анимации взрывов, кристалл и много плохих решений в коде так и останутся в игре навсегда.
  3. Не стоит оставлять загрузку игры на сайт на последний час. Все что может пойти не так — точно пойдет не так. Итч не хотел открывать страницы, принимать игру, юнити не хотел скачивать WebGL, юнити не хотел больше открывать проект, юнити больше не хотел запускаться вообще. Пришлось грузить то, что было. UPD почему-то мне разрешили загрузить веб-сборку спустя три дня. Круто
  4. Звуки это важно. Музыка, бог с ней, но без звуков никуда.
  5. Сюжетные заставки можно сделать за 15 минут, если прижмет.
  6. Нужно сделать абсолютный минимум, чтобы игру можно было считать игрой. И только потом накручивать на неё свистелки. Большинство свистелок так и осталось лежать в коробке, зато игра закончена к сроку. Страшно представить что было бы, если бы я решил сначала добавить три вида врагов, босса, сам написал музыку, обновил анимации взрывов, добавил БОМБЫ. Двухнедельный джем плавно переполз бы в месячный.
  7. Нечетные пиксели — мои враги. Наверное самый большой проблемой почему-то оказались спрайты с нечетным количеством пикселей в разрешении. Постоянно они куда-то улетали, при анимации по всему кадру шли артефакты, ведьмовство какое-то. Пришлось половину спрайтов пересохранять в другом разрешении. В остальном 64×64 было приятным челленджем.

Зачем этот пост? Интересно, что вы дочитали до этого момента и только теперь задаетесь этим вопросом. Во-первых, конечно же мне нужно куда-то выплеснуть оставшиеся эмоции, сорян если задело. Во-вторых надеюсь это будет кому-то интересно. В-третьих, я был бы безумно рад любому фидбеку по игре. Ссылку оставил.

Ну и спасибо AndreyMust19 за вектор к идее.