Сделали игру командой за месяц или История разработки игры "Под Горой"
Введение
В этот раз я ввязался в кооперацию, а не в одиночку стал делать игру, как обычно бывает у меня. Уже принимал участие в командной разработке на конкурсы, например, «Антивирус» (или «Cybxus Heart») на Гаминатор 19, «Изгоняющий» на Гаминатор 25, и «Из Тени» на ЗОК 2024.
В прошлых совместных разработках моя роль была исключительно графическая — рисовал графику, делал 3д модели. Короче говоря, художник, но с обсуждением каких-то геймплейных идей. Хотя, я немного программировал в случае с «Антивирус», когда он стал «Cybxus Heart» после конкурса. А когда делаю игру в соло, то я отвечаю за все аспекты: программирование, геймдизайн, графика, музыка и т. д.
И вот новый конкурс на сайте Gamin.me — Гаминатор 28. На нём я взял себе другую роль — на мне была вся техническая часть. Короче говоря в этом проекте я был программистом. Повествование в этой статье, разумеется, только с моей стороны и мои восприятия. Не могу знать что думали, как делали и ощущали другие члены команды.



Антивирус, Изгоняющий, Из Тени
Концепция
Всё началось ещё до старта конкурса Гаминатор 28. Задолго. Всё началось в 1799 году … ладно-ладно, не настолько давно. Всё началось после проведенного мной недо-конкурса Графических Ассетов на сайте Gamin, где был ровно один участник – Kot211. Конечно, я был расстроен таким положением дел, но благодарен Коту, что он поучаствовал. Как я понял, то ему понравилось, что его рисунки оживают в игре, пусть и столь примитивной. А я именно этого и добивался: дать художникам (начинающим или мастерам) возможность “оживить” свои художества.
Спустя какое-то время после окончания конкурса Ассетов Кот написал, что мой конкурс вдохновил его и он полон решимости сделать целую игру-платформер! И мы начали это долго обсуждать. Пока мы перекидывались идеями, появилась новость о скором проведении конкурса Гаминатор 28 пользователем Anim86. Мы решили делать игру на этот конкурс и стали обсуждать это меньше т.к. нужно было дождаться объявления темы. Однако, мы уже тогда определились, что я буду программистом, а Кот рисовать графику и уровни.
Тема появилась. Она мне не понравилась. Примерно со старта конкурса написал мне и Scorched. Он сразу обозначил, что ему интересно делать звуки и поинтересовался задумал ли я чего делать на этот конкурс — я ответил, что уже ввязался в кооперацию и решил спросить Кота по поводу ещё одного участника. И почти сразу же Кот создал чат в телеграмме для обсуждения разработки нашей игры.
Вот так у нас образовалась команда из
Kot211 — графика, уровни, сюжет, ведение проекта, и, как мне кажется, вся идея;
DarkDes (т.е. я) — программирование, техническая часть;
Scorched — звуки, некоторая музыка и подбор музыки;
Думал, что мы будем пользоваться чатом редко, но там оказался плотный и скоростной трафик сообщений! Пару раз писал команде в полу-шутку, что “да вот же, я уже сделал игру на эту тему – Красный Робот с Гаминатора 22! И он тоже платформер!”. Этот проект с Гаминатора 22 в итоге стал практически основой для текущего.
Скриншот игры Красный Робот. Как видно в заголовке — тогда я не придумал название, но сейчас в переписках используется именно «Красный Робот»
Мы начали придумывать игру. Мне показалось, что больше влияния было от Кота, чем от меня или Скорчеда. Т. е. геймплей и сюжет придумал он, мы лишь обсуждали эти аспекты, не сильно внося какие-то новые. Были там моменты от концепции, что я с Котом обсуждал до конкурса. Например, что главный герой является роботом, есть руины и игра в жанре платформер. Вот что пишет по этому поводу Кот:
Да, собственно, вся наша доконкурсная концепция сводится к трём словам: платформер, роботы, руины. Изначально у нас с тобой возникла идея сделать что-то вместе незадолго до Гаминатора, но никак с ним не связанная. Накидывали идей, чтобы понять, что нам обоим было бы интересно. Пришли вот к этим трём словам, и от них попробовали построить общую идею. Среди вариантов этой идеи был и вариант с горой, пространством внутри (не пещерой, а скорее имитацией поверхности), значительно более масштабным (но всё ещё камерным) сюжетом и более обширным миром, чем в конкурсной игре. Все эти идеи остались не проработанными, т.к. начался Гаминатор и мы решили что-то сделать на него. В итоге на конкурсную игру у нас остались те самые общие три слова: платформер, роботы и руины. А лично я в своих сюжетных придумках оставил гору, вдохновляясь Кейв Стори и той нашей большой идеей, и главного героя робота как наследника нашего с тобой незавершённого обсуждения, кем может быть герой в той большой истории.
Надо сказать, тема Гаминатора сама по себе очень удачно зашла в наш настрой. А наш настрой на совместную деятельность удачно лёг на начавшийся конкурс.
© Kot211
Очень много и очень долго мы общались в чате по поводу концепции игры. Я настаивал, что надо сделать краткий список ресурсов и моментов из игры и это позволило бы охватить взглядом время и сложность. Для меня это был проверенный способ — я так все свои игры сделал.
Наверно, не в деталях, а размыто суть игры была сформирована сразу: Платформер, история, персонажи, сюжетные моменты. Поэтому потребовалась таблица с описанием конкретики и Кот сделал настоящую Монстр-Таблицу, да ещё и из нескольких листов! Он написал как видит игру, какие ресурсы там были бы, звуки, музыка, графика. Казалось, что учтено всё. Забегая вперёд спойлер: не всё.
В каком-то смысле эта таблица похоже на Beat-Chart, где описывается уровень и механики на нём. Скажу сразу, что ориентироваться в ней было сложно.
Мы продолжали обсуждать концепцию в чате, от чего Скорчед даже начал переживать, что мы не успеем с такими объемами. Я с ним соглашался — ничего не успеем. Поэтому я предложил сделать игру за 2 недели, а не месяц, который отводился на этот конкурс. Это позволило бы сосредоточится на самом важном и потом полировать игру. Забегая вперёд: конечно же, мы не взяли лимит в 2 недели и да, мы не успели к оригинальному дедлайну, как и было предсказано.
Разработка
Общая идея игры и сюжет были готовы. Опять же, не в мельчайших деталях, но можно было начать что-то делать. Пока это обрастает дополнительными деталями, я решил взять и сделать базу для платформера, который будет использоваться в этом проекте. Мы с Котом уже ранее решили, что будем использовать GameMaker, так как он знаком с движком, да и я больше всего именно на этом движке игр сделал.
Я сделал немного платформеров или игр схожего жанра. Могу вспомнить такие игры как «Непонятна тьма» для КОД 16, «Рунтрис» или «Супер Матвей Галаксеевич» для КОД 17.2 (18), «Криста фон Граф» на MP3 Jam и конечно «Красный Робот» (он же «Игра без названия, но про робота») с Гаминатора 22, который послужил основой для текущего проекта.



Непонятна тьма, Супер Матвей Галаксеевич, Криста фон Граф
Собрав старые наработки я сделал проект Platforman 2. Где первый? Судя по датам он стал основой для Красного робота и собран после Непонятной тьмы.
Platforman 2 основа для всех моих следующих платформеров, неким хабом откуда будут тянутся скрипты и объекты в другой проект, а потом доработанные версии этих скриптов из проекта должны вернутся в этот хаб-проект.
В будущем я хочу сделать технический монстр-проект Framework, где будут все мои наработки, чтобы глобально отслеживать изменения своей кодовой базы GameMaker. Для меня является проблемой — трекать изменения всех своих модулей, скриптов и объектов. Я делал таблицу и сейчас наткнулся на airtable, где попытаюсь выстроить целую БД, чтобы было проще оперировать своими наработками. Это было небольшое техническое отступление.
Пока я делал основу, где герой может прыгать, собирать монеты, и бегать по кривым поверхностям, концепт оброс некоторым количеством деталей концепта. Я приступил к созданию конкретного списка что нужно сделать т. е. список To-Do. Думал, что пока я пишу список и реализую его, то вся конкретика появится и устаканится. Но вышло так, что даже в своих списках (враги, например) всё ещё не появились как конкретный концепт и на тот момент было непонятно что вообще реализовывать.
Скорчед хотел попробовать использовать FMOD, и я даже скачал его себе на компьютер. Есть официальное расширение для GameMaker. Но честно, я сомневался в решении использовать FMOD. Мне было непонятно зачем такая сложность для простого проигрывания звуков. Там была пара интересных моментов, например, что из звуков можно составить более сложный звук и «запрограммировать» какие-то параметры. Но хоть демка от самого GameMaker у меня работала, но уж слишком много кода и телодвижений нужно было сделать для добавления всего лишь одного звука. Я решил, что это неоправданно и отказался от этой библиотеки.
Моё решение Скорчед принял и мы стали использовать обычные звуки в GameMaker. Я создал скрипт GameSFX() с кучей функций ffx_ (нет, это не final fantasy x!) — так обозначил всю группу звуко-эффектных функций, в которых Скорчед мог делать всё что захочет. А я вызывал эти ffx_ функции в коде игровой логики. ffx_ не называется sfx_ от того, чтобы не создавать путаницу. FFX (первая F это Feedback) я хотел расширить с просто звуковых эффектов, до более глобальных: vfx (спрайты дыма, например), тряска камеры, вибрация контроллера. Но это, наверно, уже только в будущих проектах.
Помню, Скорчед написал, что он так-то программист, но не хочет участвовать в конкурсах в этой роли. И теперь я понимаю почему! Об этом позже. Но программерские навыки явно помогли ему с легкостью дополнять функции звуков, если он что-то захотел изменить. Он попросил меня только добавить возможность блокировки воспроизведения звуков, если их больше чем N. Чтобы не игралось 10 выстрелов, например, а только 4 одновременно.


Список todo когда ещё не было сильной конкретики. Как видно — завершил я не всё. А потом появился список с большими конкретными моментами (уровни, катсцены) и ОГРОМНЫЙ список правок и изменений от чего я сильно бухтел.
Как я писал ранее, мы сразу обозначили свои роли: я технический отдел, Кот рисует графику, сюжет, делает уровни, а Скорчед отвечает за звуки (в будущем он с Котом подбирали музыку, я в это не лез). Однако, ещё на этапе обдумывания думал, что катсцены, которые были прописаны в сюжете, будет делать Кот через мою удобную систему написания катсцен кодом, предполагая, что он с движком знаком. Моя система такая, что нужно писать последовательность действий в виде функций. Это не тоже самое, что и встроенные в GameMaker Timeline и Sequence, но думаю, что оба вида ресурсов можно использовать внутри моей системы. Это опять было небольшое отступление.
Но оказалось так, что и реализацию конкретных катсцен должен делать я. Ладно катсцены — система удобна мне и с ней относительно быстро сделал… или не сделал, потому что пошла зависимость от конкретики и проблемы. Вернее сказать, что этой конкретики не было в каких-то вещах. Я не могу сделать катсцену для сцены-1, которая на уровне-1, потому что этого уровня ещё нет в хоть каком-то виде. Конечно, те вещи что я мог реализовать я таки реализовал, где нет зависимости от уровня. Мне казалось, что я большую часть времени делал не конкретную игру, а какой-то эфемерный набор вещей, который мог пойти под нож и «ну надо переделать», хотя я и так много сил тратил на это. Почти весь этап разработки я провёл на тестовых уровнях под названием playground, без тестирования на конкретных игровых уровнях.
Поворот
Это не сюжетный поворот, а скорее точка слома-перелома. Мне кажется, что я перегорел. Постоянно добавляющиеся список фичей рос, а игры не было видно. Пункты из списка закрывались один за другим, и казалось уже вот всё готово, то тут и возникали некие новые детали и те самые «надо сделать», хотя вот же готовое, но нет. Именно тут, как мне кажется, я понял о чём писал Скорчед — почему он не хочет быть программистом в конкурсных участиях (хотя, может я не так его понял). Какие-то вещи добавлялись, чтобы быть переделаны т.к. изначально были не чётко обозначены. Вы можете сказать, что это нормальная практика и итеративный процесс в разработке. Может быть это так, может быть это я такой ворчун, но когда ты сделал систему и нужно снова вносить правки, которые изначально не предполагались, когда значительную часть разработки\конкурса провели в обсуждениях и вроде всё выяснили — это раздражало. Программировал игру из последних сил на тот момент. Я далеко не перфекционист и мне важнее закончить игру, а тут я видел, что с таким подходом закончить не успеем никак.
Конечно я не хочу наговорить на команду, но мне в тот момент, с моей стороны казалось то, что всегда меня преследовало при неудачных коопах, где я был на технологиях: словно я делаю всё, а другие либо ничего, либо незначительно мало относительно моих вложений. Как я писал во ведении: я не знаю как это ощущали Кот, Скорчед и что они делали и как старались, а может были какие-то обстоятельства IRL. Например, Кот писал, что он рисовал графику в последние дня 3 и из этих трёх дней он спал крайне мало, если вообще спал.
Подходил дедлайн и моя твёрдая уверенность, что не успеем и что время будет потрачено зря, отвердевает до состояния алмаза. Так и хотел написать в чат «я же говорил» (а может и написал!?).
Кто-то наверно скажет, что плохой тайм менеджмент, координатор и лидер проекта, надо было брать сеньёра с 40 летним стажем ради игры на локальном сайте для небольшой группы энтузиастов … и вы будете серьезны? Это же конкурс хоббистов, по сути. Вся проблема, как мне кажется, была в объеме самой игры. Изменилось бы что-то, если бы я был ведущим лидером проекта, который бы снижал хотелки? Не знаю, может быть мы бы успели в срок, а может и нет, а может получилась бы не игра, а какая-то пустышка.
Когда делаешь игру в одиночку (соло), то ты ответственен только перед собой. Не успел — виноват ты сам. Сделал плохой геймплей — виноват ты сам. Весь срок конкурса бегал по неотложным делам в IRL — виноват … ладно, тут может быть кто-то другой виноват!
Может показаться, что я ругаю команду, но это не совсем так — я лишь слегка бухчу, хотя в тот момент я действительно уже был выжат. Мне, конечно, не понравилось, что нельзя просто сесть и написать код один раз и это пойдёт в «продакшен». Разумеется со своими итерациями, но не такими, что по сути надо делать две игры по объемам.
Конкурс продлили ещё на неделю. Хоть в чате разработки я писал, что не выдержу при продлении, но каким-то образом нашёл силы доделать игру. И опять делал свои списки с задачами. Мне это помогает сосредотачиваться на проекте т.к. это конкретика, конкретная вещь, делаешь только её и всё. Список багов и других моментов постоянно появлялся в чате и быстро улетал в историю и я просил писать в особый гуглдокумент, где у нас была информация по проекту и где я отслеживал свои задачи в виде простого списка.
Но и продления не хватало. Было решено вырезать небольшой, и как мне кажется, незначительный кусок в игре, где была ещё одна локация. Мне скорее обиднее за один небольшой игровой объект, которую просили сделать, а в итоге она и не была использована. Не то чтобы это меня сильно задело, но с этим связано то, что для добавления взрывчатки нужно было менять поведение объекта нанесения урона… короче запутанная история, детали которой я забыл. Суть в том, что потратил время и силы на этот объект, а он не оказался нужен.
Графика была не вся готова. Поэтому я вызвался помочь с ней и нарисовал Босса. Когда я считал примерное количество анимаций и кадров, то ужаснулся — 73 кадра! И это только по предварительным расчётам. Конечно, нужно было это нарисовать очень быстро и я осилил это за два дня.
Потом, продолжаю тематику злодеев, я нарисовал и всех трёх врагов с простейшими анимациями. Но врагов я рисовал уже во время так называемого багодня, где по идее можно было только исправлять баги, но организатор Anim86 разрешил «полировать игру». Поэтому были дорисованы некоторые спрайты (многие) Котом и враги мной.
Выводы
Многое я уже забыл спустя месяц разработки. Но мы сделали игру! Ура! Не 100% какую задумывали, но всё же дошли до конца.
И в качестве эксперимента решил выложить видео на Youtube и VKVideo продолжительностью в 30 минут, где я собрал короткие видео (и пару скриншотов) с этапов разработки в виде эдакой хроники:
Всегда предполагал и закрепил на опыте: разработка в команде это ДОЛГО и сложно! Очень много времени тратится на связь, обсуждения, разговоры, координацию и прочее. Проекту нужен тот, кто видит игру и поведёт других — тимлид, можно сказать.
Может от того, что я был программистом и бухтел, но мне кажется, что таким лидером должен быть именно программист — он будет знать все технические аспекты и возможности игры.
С другой стороны делегирование т. е. разбивка задач на другие области помогает сосредоточится на одной, но не без минусов. Когда ты не делаешь уровни, то для тебя они становятся интереснее, нежели ты сам их спроектировал и протестировал раз 100. Отдать кому-то собирать уровни это интересно!
Особо мне понравилось взаимодействие с отдельным человеком на звуках, наверно, как и музыке: я всегда оставляю звуки и музыку под конец разработки и иногда не успеваю их добавить. Мне кажется это достаточно долгим выбирать или синтезировать звук, в то время когда можно было бы дорабатывать игру. А когда эти звуки подберут\сделают за тебя ты можешь действительно делать игру, а не тонуть в поисках звуковых файлов и подбирать звучание.
Наверно аналогично можно сказать и о графике: когда ты бегаешь в своей игре с системными и техническими спрайтами, а потом добавляя игровую графику это ощущается очень круто! Так как я художник-программист в своих играх, то я не ищу ассеты графики, а рисую свою. Поэтому тут не совсем тоже самое, что и со звуками для меня.
У нас в планах имеется выпуск пост-конкурсной версии с некоторыми изменениями и улучшениями. Можете скачать текущую версию с Google Drive и следить когда появится пост-конкурсная версия в этой папке Google Drive.
Так же можно скачать из моего ТГ канала.
Да, был момент, когда я очень сильно устал от проекта и наверно готов был бросить это дело, но не бросил — ответственность перед командой и игрой. Я рад, что у нас получилось сделать игру!
Однако, такой опыт нужно переварить и отдохнуть. В соло-разработка ощущается более комфортно и лично мне показалось, что с таким подходом вероятность завершить игру выше. Ведь это текущее участие удачное и с игрой, а сколько у меня было без результатов? Поэтому я продолжу советовать быть другим разработчиками-оркестрами, которые в случае чего могут в одиночку сделать игру. А если есть слаженная команда, то это же хорошо и можно использовать только свой сильный навык!
Задавайте вопросы! Участвуете ли вы в конкурсах по разработке? Если да, то в команде или в одиночку? Каков ваш опыт, мнение и чем можете поделиться по этому поводу?






































