Toadally Fair - как мы делали на GMTK Jam игру, в которой можно лизать своего босса, чтобы получить повышение
26 июля были официально опубликованы результаты GMTK Jam 2022, самого большого игрового джема в истории itch.io. Наша игра Toadally Fair заняла в общем рейтинге 58-е место из 6165 участников, и мы в абсолютном восторге, что смогли попасть и в топ-100, и в топ 1%, и в видео-нарезку в начале видео Марка Брауна.
Мы не планировали как-то продолжать продвижение и разработку игры, если только не попадём в топ-20, и придерживаемся этого мнения. У нас получилась хорошая игра для джема, а не основа для какого-то полноценного проекта. Но в комментариях к посту про результаты джема нас попросили рассказать больше про процесс разработки, и мы решили, что это может быть полезно для других разработчиков, дизайнеров и энтузиастов.
Команда
Команда состояла из 7 человек:
- Геймдизайнер (я)
- 2 разработчика
- 2 художника
- Композитор
- Мальчик на побегушках
Команда вышла мульти-национальная - Украина, Россия, Болгария и Германия. Главного разработчика и композитора мы нашли через Team Finder - замечательный инструмент, который команда GMTK Jam выкатывает перед каждым джемом, и, к сожалению, закрывает позже. Очень удобный сайт, на котором можно и вступить в чужую команду, и набрать себе недостающих специалистов, и всё это с интеграцией с Discord, где ты в один клик сразу пишешь автору объявления. Все остальные участники команды - старые друзья, многие уже раньше участвовали в джемах вместе.
Подготовка
Джем начинался в пятницу в 20:00 МСК. Финальный состав команды мы собрали уже в четверг, и у меня было время подготовить всё необходимое для старта. Сюда входило:
- Discord-сервер для участников, с ролями и отдельными каналами для разработчиков, художников, и одним общим каналом. Языком общения выбрали английский, чтобы не смущать не-русскоязычных членов команды долгими обсуждениями на русском;
- Miro-доска для брейншторминга, референсов и визуального дизайна;
- Unity (сошлись на версии 2021.3.4f1) и репозиторий для проекта;
- План разработки - не буду скидывать его целиком, но в целом это приблизительная разбивка по времени, когда нужно срезы игры, чтобы быть уверенными, что мы успеваем всё сделать.
Брейншторминг
Тему джема раскрыли одновременно с его началом, в пятницу в 20:00. Тема была Roll of the Dice - тема хорошая, с большим простором для фантазии, хотя Марк Браун в своём джем-постмортеме на Patreon признался, что выбирать основанную на рандоме тему на джем было не лучшим решением, потому что дизайнить рандом очень сложно.
Мы назначили общий звонок в Discord на 21:00, чтобы дать сначала всем время накидать идей в Miro.
На брейншторме каждый быстро представил свои идеи. Вот примеры того, что мы забраковали:
- Русская рулетка с кубиками
- Мухлёжник, которому нужно перекрашивать кубики в процессе игры
- Курьер, который разносит случайные товары
- Рыбалка с кубиками
Участники геймджемов часто повторяют один и тот же совет - берите свою первую идею и работайте с ней, чаще всего она оказывается самой лучшей. Так вышло и с нами.
Первая же ассоциация, которая пришла мне в голову после выбора темы - кубики с действиями, которые продаются в, кхм, специализированных магазинах. Отсюда мы начали набрасывать, как можно использовать случайные действия для геймплея, и быстро пришли к ассоциации с серией Рика и Морти, где Джерри в низкосортной симуляции презентует группе директоров свой рекламный питч - что бы он там ни сказал, это бы так или иначе сработало.
Так мы приходим к финальной идее:
Игрок бросает кубики с действиями и объектами на них, и составляет из них действия, с помощью которых должен пройти один день жизни, разбитый на три уровня - приготовить завтрак, убедить босса поднять тебе зарплату и хорошо провести свидание с девушкой. Игрок проиграет, если будет вести себя слишком странно.
На брейншторме мы проговорили эту идею, и набросали первый блокаут уровня - двумерный уровень наверху и трёхмерное поле для дайсов внизу.
Из питча мы вышли с готовой идеей, что уже большой успех. Разработчик начал работать над архитектурой использования кубиков, художники начали подбирать визуальный стиль, а я начал готовить список кубиков, механики и блокаут уровня в Unity.
Разработка - суббота
К нашему первому звонку в субботу в 11:00 у нас был готов блокаут, набор механик и выбран художественный стиль. Где-то в это же время мы передали композитору список всего, что нам понадобится - звуки кубиков, реакции босса и две музыкальные темы.
Часть работы, конечно же, сразу перешла в любимый инструмент любого геймдизайнера:
Первый день геймджема всегда хорошее время - у всех есть работа, все делают что-то полезное, и слишком рано для любых противоречий. Когда нужно - созваниваемся или списываемся, чтобы ответить на текущие вопросы.
Где-то в это же время мы добавляем в проект единственные два ассета, которые мы используем в этом джеме - Text Animator For Unity для эффектов на текст и DoTween для твининга. Если что, официальные правила GMTK Jam разрешают использовать ассеты и предварительно написанный код.
К второму общему звонку в 18:00 у нас уже есть графика офиса, визуализация кубов, способностей и официальный шрифт.
На звонке мы понимаем, что играбельный прототип, который мы надеялись получить к вечеру субботы, будет готов только утром, даже с учётом того, что разработчики собираются сидеть допоздна. Это наш тревожный звоночек, что количество контента придётся сократить.
К концу субботы у нас готова звуки, графика офиса, персонажей, кубиков, подноса для них и базовый UI, но не игра - кубики уже роллятся, но ещё не составляются в действия. Художники начинают работать над главным меню и полишить UI.
Разработка - воскресенье
В воскресенье утром, за двадцать минут до намеченного общего звонка в 12:00, я замечаю коммит с странной подписью:
Это совсем не то поведение, которое я ожидал - кубики должны просто выкидываться все вместе, а инвентарь существует только для визуализации кубиков игрока и их возможных сторон. Я пишу разработчику, и оказывается, что мы неправильно поняли друг друга. Мы ещё раз подробно проговариваем игровой луп, и он принимается за работу, но драгоценное время, конечно, уже потеряно на miscommunication. Более того, днём главному разработчику нужно встретить родителей из аэропорта, а это тоже отнимает у нас минимум два часа.
Мы окончательно отказываемся от лишнего контента - лучше получить один хорошо отполишенный уровень, чем три плохих. Мы по умолчанию готовы к этому решению, и кидаем все усилия на уровень с боссом.
Здесь же на меня сваливается большое количество ручной работы - нужно в Unity заполнить руками все возможные комбинации кубиков, а это 6х24 комбинаций.
Как ни странно, это занимает всего полтора часа - хорошо, что я продумал возможные реакции ещё вчера, хотя бы в значениях шкалы странности и результата.
К 17:00 мы получаем первую рабочую версию игры, и к нашему облегчению, в неё уже весело играть! Нарративные комбинации и полный рандом кубиков создают кучу весёлых сценариев, где игрок постоянно оптимизирует свои действия, но часто оказывается с абсурдными комбинациями, за которые его почти не наказывают.
Мы сразу же отправляем первый билд на плейтесты всем друзьям, о которых только можем подумать, и получаем первый фидбек. Остаток вечера мы занимаемся полишингом - добавляем туториалы, меню, резалт скрины, расставляем звуки, добавляем отсутствующую графику, правим фиксы, твикаем баланс. Мальчик на побегушках, кстати, всё это время невероятно полезен - делает нам страницу на itch.io, делает дополнительный арт, плейтестит.
Первый билд мы заливаем за пять часов до дедлайна - что бы ни пошло не так, у нас будет опубликовано хоть что-нибудь играбельное. В последствии мы собираем и заливаем ещё шесть билдов - поэтому финальная версия и называется Toadally Fair Win 0.7.
К дедлайну в 23:00 мы окончательно вымотаны, разработчики держатся на последнем издыхании, но продолжают фиксить баги до последнего, а itch.io, как обычно, ложится под натиском участников джема. До последней минуты мы вносим правки в страницу игры, что оказалось совсем не обязательно, ведь её, в отличие от билда, можно править и после завершения джема.
Продвижение
Вы думали что геймджем заканчивается вместе с дедлайном? А вот фиг там!
Чтобы вашу игру заметили и оценили среди 6 тысяч участников, нужно приложить усилия. Можно, конечно, пойти лёгким путём и оставить всё на органические просмотры от авто-распределения на itch.io, но во-первых это ненадёжно, а во-вторых это путь слабых духом.
Стримы на Twitch оказались, вне всякого сомнения, самым полезным и приятным способом продвижения игры. После каждого большого джема на Twitch появляются стримеры, которые играют в предложенные игры - в этот раз таких было около двадцати. Стримеры это:
- Плейтесты, которые вы можете увидеть вживую;
- Поставленные на стриме оценки, по которым можно оценить успешность игры;
- Взаимодействие с чатом и увеличение аудитории.
Возможно, вся история с гласностью не очень сильно влияет на результат джема, и может быть даже где-то участники с небольшим количеством отзывов могут обойти игру с большим количеством отзывов чисто за счёт удачных оценок, но в любом случае это очень интересный и полезный опыт. Кстати, медиана количества оценок на этом джеме была 14, а у Toadally Fair к концу джема было 83 оценки.
Некоторые примеры стримов с тайммарками:
Что пошло не так?
Конечно, основные проблемы были связаны с временными ограничениями. Мы планировали и не успели:
- Добавить контроль рандома, чтобы игроки не получали только скучные или одинаковые кубики;
- Доделать вторую способность, которая поворачивала один кубик как хочешь;
- Исправить проблемы с читаемостью, в частности на кубике, который добавляет новые кубы;
- Исправить баг, из-за которого игра может софтлочиться на большом количестве кубов;
- Добавить дополнительную визуализацию на персонажа - передвижение, динамика анимаций;
- И много-много другого.
Другая проблема: языковой барьер. Игроки без знания английского не могут понять игру, и ставят ей низкие оценки. Когда я впервые увидел русскоязычного стримера, который поставил 3-3-3 просто потому что ничего не понял, я был в ужасе. 90 переходов по ссылке с DTF, которые мы получили накануне, из благословления превратились в проклятие, и я на всякий случай больше не носил игру на не-англоязычные стримы. Конечно, для органических просмотров и рекламных постов у нас не было никакого контроля над уровнем английского языка у игроков.
Третья проблема: высокая конкуренция и большое количество участников. Посмотреть шесть тысяч игр просто физически невозможно. Из топ-100 игр я до объявления результатов играл только в 6, и совершенно не знал своих соперников. Конечно, эта информация вряд ли бы как-нибудь повлияла на исход голосования, но было бы гораздо спокойнее знать, с кем ты соревнуешься, а не узнавать это в последний момент.
Как-то так. Исходом джема лично я очень доволен - это лучше любого моего предыдущего результата, мне искренне нравится получившаяся игра, я познакомился и поработал с двумя новыми замечательными людьми, и увидел очень много стримеров, которым искренне нравилась игра. Топ-100 и топ-1% это прекрасный результат, большое спасибо всей команде и всем кто играл и оценивал Toadally Fair.
Игру, повторюсь, мы развивать не планируем - это хорошая игра для джема, и у нас у всех достаточно работы и своих проектов, чтобы пытаться сделать из неё что-то большее.
Где-то здесь, наверное, должны быть ссылки на вещи, которые я продвигаю. Давайте добавим сюда ссылку на Toadally Fair:
Хоть джем и закончен, но мы будем рады любому фидбеку, любым комментариям и просто если вам будет весело!
А ещё посмотрите (и добавьте в вишлист!) игру, над которой я сейчас работаю в качестве второго геймдизайнера в замечательной компании DO MY BEST - The Bookwalker:
Спасибо всем! Это мой первый (и безобразно длинный) пост на DTF, и я рад буду всем комментариям и отвечу на любые вопросы. Участвуйте в геймджемах, это круто, весело и невероятно полезно!
Гачи-мужики в идеях, это правильные и светлые идеи в футуристическое будущее которое мы заслужили
Собеседование в gym из гача фраз. Это была бы победа!
Это очень круто! Поздравляю. 🍻 После прочтения я даже задумалась над тем, не податься ли мне в геймдев. Хотя, если честно, не представляю, чем бы я занималась. 😅
если честно, не представляю, чем бы я занималась
В смысле? Ребята «лизанием босса» занялись, и ты смогла бы ;)
а в каком виде эти 6х24 комбинаций задавались в юнити? или гугл-табличек прям данные импортировались?
Вот такими конструкциями через SerializedObject в юнити. Импорт из гугл-табличек или каких-нибудь json-ов - тоже не для джема задача, по крайней мере если у разработчика не налажен этот процесс в обычной работе.