Как мы делали The Waystone Circle - игру на GMTK jam 2025. Девлог и постмортем

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

Команда состояла из 3 человек:

  • ChipTune — идея, геймдизайн, баланс;
  • AlexSilent — арт;
  • и я — геймдизайн, код и музыка.

Началось всё совершенно случайно: мне попался на глаза анонс джема, я даже уже не помню где. Я закинул идею поучаствовать нескольким людям, кто-то даже откликнулся. Не сказать, что я был готов участвовать, скорее просто нравится пред-джемовая суета. Так что после отправки сообщений я пошел за пивком (Ballmer peak is real), ни на что особо не рассчитывая. Но пара человек все-таки откликнулась. И тут все завертелось…

День 0 — идея

Тема на джеме — loop. Почти сразу после анонса мы с Чиптюном созвонились и стали штормить идеи. Было много разного, но остановились на том, что в центре должна быть идея «перерождения», что каждый новый цикл основывается на том, что происходило в прошлом. За референсы были взяты: Loop Hero, Reigns и Kingdom. Чуть позже, в этот список добавится Фрирен.

часть из документа с брейнштормом
часть из документа с брейнштормом

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

Вообще, идей было довольно много, из самых интересных:

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

— очень хотелось применить Dual Purpose Design, поэтому каждая либо использовалась в двух местах, либо шла под нож.

— случайные события. Во время путешествия игрок мог получить случайное событие, которое бы давало апгрейд. Чуть позже это и принесло в дизайн нотки из Фрирен. Я хотел заменить «души» на «воспоминания» и сделать чуть больше эмоциональной привязки, и случайные события хорошо бы с этим сочетались. Но тут нужен хороший писатель…

— смена сезонов года. Каждый сезон давал бы свои дебаффы, ломал бы некоторые здания и спавнил сезонных врагов.

уже ближе
уже ближе

Все это обсуждение заняло часа 2, после чего все отправились спать.

День 1 — основы

Спать я особо не смог, очень хотелось что-то поделать. Поэтому спустя 4 часа сна, я приступил к написанию диздока (~4 часа).

Даже такой примитивный диздок сильно помог структурировать мысли и сделать план работ, чтобы успеть в короткий срок. С этим же диздоком меня нашел Алекс. Я закинул ему список ассетов, которые нужны были в первую очередь и палитру, и перешел к коду.

В первую очередь была система передвижения по таймеру, и началось все вот с такого:

на самом деле персонаж всегда на одном месте, а все остальное двигается
на самом деле персонаж всегда на одном месте, а все остальное двигается

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

арт
арт
и в игре

И первый фидбек неплохо так мотивировал:

Как мы делали The Waystone Circle - игру на GMTK jam 2025. Девлог и постмортем
первые варианты персонажа и монстра
первые варианты персонажа и монстра
декоративные элементы
декоративные элементы

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

Позже в этот день удалось сделать полностью передвижение, работу с картой и сбор ресурсов, после чего я лег спать на 12 часов.

День 2 — строения, враги и условие поражения

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

Больше всего было кода, но могу отметить, как я Алексу описывал эффекты:

а еще там были рефы из Байонетты
а еще там были рефы из Байонетты

Всего в этот день я провел над кодом порядка 14 часов. Отвлекался только на покушать и покурить. А спать опять лег на 4 часа xdd

День 3 — текстовые описания, музыка, vfx, repel и обучающие сегменты

К третьему дню, базовые вещи были почти сделаны. Поэтому у меня фокус был больше на полише, добавлении всяких фишечек и ожидании ассетов от Алекса. Так же, к обеду подоспел Чиптюн с первой версией баланса по ресурсам и врагам.

Из интересного — была механика пропуска врагов. Пройти через врагов можно 3 способами: побить врага магией огня, сдуть врага магией ветра, и впитать урон. Последние две опции оставляют врага на этой же клетке, и в следующий цикл игрок мог натолкнуться на эволюционировавшего врага. Так вот, возвращаясь к repel’у. Мне очень нравилась анимация атаки ветром в SMT IV, хотелось сделать что-то похожее. И вроде получилось, выглядит забавно (если вы конечно не пиксель арт пурист с криками «пиксели нельзя вращать!»):

Ах да, спал я 13 часов 😈

Последний день

День начался с того, что Алекс скинул вообще ВСЕ ассеты. Хорошее начало дня.

programmer art vs artist art
programmer art vs artist art

Первая половина была занята добавлением новых ассетов, новых врагов, новых зданий. Потом проход по балансу, что игра проходима. Потом какие-никакие звуки. В последние часы была добавлена основная механика рандомизации сегментов на смене сезонов и разрушение зданий. А дальше оказалось, что какая-то из новых механик ломает html билд xdd. И музыка не работает. И итч лежит. Да, релиз был не очень приятный, но не сказать, что это было неожиданно. Дедлайн продлили на час, что позволило нам добавить первый экран-менюшку, что поправило проблему с музыкой и успели убрать один из эффектов, потому что он крашил html версию, но не windows.

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

шрифт не очень удачный, конечно, но хотелось что-то готическое
шрифт не очень удачный, конечно, но хотелось что-то готическое

Постмортем

Это скорее микро постмортем, но все равно хотелось бы поделиться.

  • Фокус на геймплее и контенте. Обычно я делаю только геймплей, сейчас же изначально поставил себе требование про быстрое добавление новых событий. Поэтому мой процесс выглядел примерно так: сначала добавить новую сущность максимально просто, если похожая сущность есть — то вынести условия в отдельные таблицы и генерализировать код, чтобы он принимал данные-описания. То есть, сначала добавляем здание, когда нужно добавить другой вид зданий — перерабытываем код, чтобы можно было отдать структурку (BUILDING_MILL, mill_requirements), и потом расширяем список.
  • Помощь от других людей. Прошлые джемы я обычно участвовал в соло, так что участие в команде для меня в новинку. Ну и последние часы прошли намного менее стрессово, потому что на фоне был 4 часовой созвон с обсуждением, что делать с проблемами, так что никакая проблема не была страшна.
  • Время для отдыха. Хоть у меня и были 14 часовые периоды работы, но они были так сказать «гармоничные» для меня. Если я чувствую, что просто не могу писать код, то надо пойти прогуляться, переключится на что-то физическое. У меня это были цветы, растущие на балконе.
  • методика ABZ. Начинаем с A и Z: A — точка, где я сейчас нахожусь, Z — куда хочу прийти. Следующий шаг — это описать B, что нужно сделать, чтобы немного продвинуться из точки A в точку Z. У меня под эту методику отдельный документ, и это сильно помогает структурировать мысли и не скакать от одной вещи к другой.

И еще раз ссылка на игру:

А еще, зацените наши другие игры:

Frame Cat - платформер в стиле Comix Zone-панка

Crazy Cats vs Crazy Cyborgs - шмап в стиле... хз чего на самом деле.

А еще я ищу двух человек на ревшейр: кого-то, кто сможет постить видосики в ютуб (у меня ебейшая социальная тревога, даже этот пост писать - тряска); и помощника по коду, сейчас не хватает рук. Готов учить и прокачивать, было бы желание у самого человека.

11
3 комментария