GMTK Game Jam 2020. Создание Fractured Sky

GMTK Game Jam 2020.  Создание Fractured Sky

Всем привет! Как известно, вчера закончился крупнейший онлайн-джем среди разработчиков компьютерных игр GMTK Game Jam 2020. В этом году темой конкурса стала фраза “Out of Control” (пер. Вне Контроля). И в этой статье хочу поделиться процессом разработки нашей игры Fractured Sky.

Подготовка к джему

В прошлом году я также принимал участие в джеме от GMTK в качестве музыканта и саунд-дизайнера.

О моем участии в нем можете ознакомиться в этой статье.

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

Я сразу решил, что хочу поработать с более опытными людьми, делать игру в 3D и на движке Unreal Engine 4. Для этого я подготовил портфолио по саунд-дизайну и музыке. Сделал пост в Discord-канале джема и почти сразу мне написал моделлер по имени Justin с которым мы начали искать остальных членов нашей команды.

Изначально он хотел создать трио – звукач, дизайнер и программист, но я предложил еще найти аниматора, на всякий пожарный. В течении 2-3 дней мы нашли опытного Unreal программиста по имени Timon и хорошего аниматора по имени Stephen, который преимущественно работал в Unity.

Аниматор в течении недели осваивал UE4, дизайнер сразу оформил дискорд-канал нашей команды для максимальной эффективности, создав все необходимые ветки, а программист тестировал разные системы для Source Control проекта.

За день до начала джема мы решили опробовать эти системы.

Мы попробовали Git LFS Plugin. Быстро от него отказались т.к. он работает слишком медленно, а в условиях ограниченного времени - это решающий фактор. Попробовали обычный Git Hub. С ним работать было лучше, но в нем есть много ограничений связанных с бинарными файлами и нужно быть очень внимательными, чтобы чего не поломать, а если учесть что в условиях джема можно элементарно не туда кликнуть, то от этого варианта мы тоже отказались.

У дизайнера и программиста уже был положительный опыт работы с Perforce, поэтому мы решили пробовать и его.

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

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

Почему дизайнер тестил Perforce, а не программист? Все просто. Мы были раскиданы в разных часовых поясах.

Джастин (дизайнер) живет в США в поясе GMT-8, а мы в поясах около GMT+2. И в момент теста у нас на часах была ночь, а у него разгар рабочего дня.

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

Джем. Начало

В 22-00 по Киевскому времени объявили тему конкурса

Out of Control

Мы сразу начали накидывать самые разнообразные идеи во многих жанрах. Была идея сделать Puzzle на основе физики, где нужно заранее расставить заготовленные объекты на уровне таким образом, чтобы неуправляемый шарик мог добраться до финиша. Были идеи с Tower Defense играми, с гоночными играми. Но чаще всего всплывали идеи, что есть некие платформы, которые меняют или забирают управление у игрока. Мы быстро придумали как именно эти платформы могут менять управление, какие из этих функций реально веселые, а какие раздражают.

Джастин (дизайнер) предложил сделать быстрый платформер в котором нужно забираться на верхушку башни по этим платформам.

А Тимон (программист) предложил другую очень клевую идею.

Идея была в создании головоломки где игрок может делать каждый шаг на новую платформу, но одни платформы забирают какую-то часть контроля у игрока, а другие возвращают. Игроку же нужно найти оптимальный маршрут, чтобы дойти до финиша. От этой идеи мы отказались т.к. у нас всех не много игрового опыта в головоломках и мы решили, что за 48 часов сделать действительно увлекательную Puzzle-игру у нас врядли получится.

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

Я заметил, что все 3 идеи крутятся вокруг платформ, которые функционально будут одинаковыми. Тогда я предложил начать создавать ассеты, анимацию и блупринты для платформ, чтобы в плейтестах выявить не только удачные решения, но также косяки и недочеты.

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

День Первый

Еще во время обсуждений идеи игры Джастин скидывал разные арты и скриншоты в качестве визуального оформления игры, а также музыкальные референсы.

Была идея сделать более волшебный мир (Dreamy mood)

Вот визуальные референсы

Нам очень понравилась идея парящей в воздухе архитектуры
Также нам нравились эти платформы и общее настроение картинки
Также нам нравились эти платформы и общее настроение картинки

И вот такой музыкальный референс

Легкое, воздушное, электронное звучание с мечтательным настроением

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

Нашел эти два варианта

Подборка для более легкого геймплея
Подборка для динамичного геймплея

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

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

Вот финальный результат

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

В процессе первого дня программист много экспериментировал с передвижением, бегом, прыжками и бегом по стенам. Когда уже начал вырисовываться core-геймплей мы собрались в голосовом чате и обсудили наши дальнейшие действия. Там мы решили, что нужно создать разные интересные объекты по которым можно бегать, а не обычные платформы. Также были внесены пожелания по анимациям, озвучке, дизайну меню и музыки для него.

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

Было решено сделать светящийся трещины, чтобы игрок мог сразу визуально отличать обычные объекты от объектов с модами

После обсуждений Джастин принялся за создание ассетов, Тимон продолжил работать над механиками, Стефен продолжал делать мягкие анимации, а я начал делать звуки шагов, прыжков и звуки приземления на разные платформы, чтобы по звуку можно было понять какая модификация управления/передвижения была применена к игроку.

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

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

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

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

Вот итоговый результат.

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

На этой приятной ноте я пошел спать.

День Второй

Утром второго дня я вновь проверил весь чат, вытащил актуальные обновления для проекта из Perforce, чтобы посмотреть как идут дела и протестировать улучшения по механикам, анимациям и заодно настроить все громкости в игре.

Для этого я создал Sound_Cue для всех необходимых событий в игре (музыка, шаги, прыжки, приземления на платформы, звуки меню). И так же создал Sound_Classes, чтобы в главном меню у нас были рабочие слайдеры для громкости.

Благодаря программисту у нас уже был создан Class Sound Mix и мне оставалось только настроить правильную маршрутизацию для Sound_Cues и Sound_Classes, чтобы все работало, как нужно.

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

У нас еще была идея, чтобы уровни были короткими и сложность частично возрастала и сначала была одна музыка, а когда шли финальные уровни, то должна была играть более жесткая и злая музыка, а-ля Boss Battle.

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

Вот этот трек.

По итогу мы его не использовали и правильно сделали) без него игре гараздо лучше)

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

К 15-00 по Киевскому времени, за 7 часов до дедлайна, нам оставалось только минимально править механики, анимацию и создавать уровни. У Джастина в это время было около 5 часов утра. Так что, заниматься левел дизайном пришлось мне и программисту.

Подобного опыта у меня не было и поначалу дело шло достаточно медленно, но потом я влился в процесс и успел создать 3 уровня вокруг разных типов платформ. Тимон же создал 2 уровня – самый легкий и самый трудный.

В итоге у нас получилось 8 интересных уровней разной степени сложности.

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

Мы решили для игрового джема – это оптимальное решение и судя по отзывам и стримам мы поступили правильно.

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

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

Окончание джема

Заявку с нашей игрой мы отправили за 19 минут до окончания джема.

После чего мы еще вносили мелкие правки в описание, добавляли гифки, скриншоты и тестили финальный билд.

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

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

Все желающие могут ознакомиться с нашей игрой пройдя по этой ссылке

Больше спасибо за ваше внимание! Если я не осветил какую-то тему или у вас остались вопросы можете их оставлять в комментариях. Постараюсь всем ответить.

2121
Начать дискуссию