MoonGun — игра в жанре экшен/стратегия о защите лунной базы от астероидов. Игра была создана Ивенсом Серпой — автором множества статей о геймдизайне — в рамках Github Game Off Game Jam в ноябре 2020 года. Занимался он ей в одиночку в свободное от работы время. Игра получила немало положительных отзывов, так что ее создатель решил поделиться опытом ее разработки: описать весь процесс создания и поделиться методами, которые он использовал, включая этапы концепции, планирования, непосредственно разработки и релиза.
Прежде чем перейти к теме статьи, стоит упомянуть несколько важных замечаний: этот материал больше касается дизайна игры, чем технической стороны ее разработки. Проект был разработан при помощи Unity 3D (версия 2020.1), с которой автор уже довольно хорошо знаком и в которой уже писал другие игры. Несмотря на то, что над проектом он работал в одиночку, ему все равно помогали друзья, тестируя игру и делясь своими мыслями на этот счет. Большая часть ассетов либо была взята в Интернете (например, с сайта Kenney.nl), либо была сделана моделером Калео Мендесом.
Игровые джемы, тема и идеи
Игровой джем — соревнование по разработке игр, в котором участники пытаются разработать игру с нуля за некий короткий промежуток времени — обычно от 24 до 72 часов. В ноябре GitHub проводил Itch.IO Game Off Game Jam, который продлился весь ноябрь. У таких джемов обычно есть основная тема, которая направляет творческий процесс разрабатываемых игр. В 2020 году эта тема касалась Луны.
Разработчики могут интерпретировать тему максимально свободно, креативность здесь — ключевой фактор. Она же является одним из критериев ранжирования работ и выбора победителей.
Итак, фазу концептирования стоит начать с мозгового штурма игровых механик и идей, соответствующих теме.
В результате такого брейншторма у Серпы родилось три основных концепции:
- Игра по сбору ресурсов, в которой игроки управляют лунной базой до тех пор, пока не будет достигнут определенный порог — то есть, пока игрок не соберет определенное количество ресурсов;
- Игра, основанная на физике, в которой игроку необходимо построить или запустить некий механизм на лунной базе;
- Интерактивная история о персонаже, работающем на лунной станции.
Хотя все три идеи кажутся неплохими, возникала проблема с их масштабом: большинство основных функций, которые для них необходимы, просто нельзя было реализовать за столь короткий промежуток времени.
Вторая идея основана на физике и требует обширной кодовой базы для обеспечения реалистичности игры. Техническая осуществимость может поставить под угрозу проект и сделать первичное прототипирование слишком сложным. В результате можно рискнуть — и потратить время на реалистичную игру, в которую неинтересно играть.
Что до интерактивной истории, технической осуществимостью здесь можно пренебречь, а вот творческим процессом — нет. Взявшись реализовывать эту идею всего за месяц, вы рискуете получить увлекательную историю, которая была бы, по сути, просто визуальным романом — без каких-либо примечательных элементов геймплея.
Помимо этих факторов, еще было неясно, какие механики здесь лучше использовать — что будет основным движителем игры. Ведь лучше начать разрабатывать игру с прототипа одной механики, а затем работать над ней до тех пор, пока не добьетесь увлекательного геймплея и не доведете игрока до финиша.
Итак, за основу будущей игры была взята идея по сбору ресурсов. И поскольку просто щелкать по кнопкам довольно скучно, в качестве источника вдохновения была взята Space Invaders, а сама концепция игры была сформулирована следующим образом:
Игрок управляет пушкой (турелью), защищающей лунную базу от падающих астероидов, а также базовыми объектами (шахта, лаборатория и ангар), которые собирают лунную руду до тех пор, пока Луна не истощится (условие победы).
Ниже можно увидеть изображение первого рабочего прототипа:
MoonGun Version 0.1 — не слишком красивый, но функциональный прототип
Прототип и гипотезы
Для проверки изначальных гипотез был сделан первые прототип игры. И поскольку ни одна из этих гипотез не была связана с графикой или производительностью, визуальные эффекты, как можно убедиться на изображении выше, были далеко не самыми впечатляющими.
Краткая версия этих гипотез звучала так:
- Стрелять в падающие астероиды — интересно или увлекательно?
- Можно ли имитировать «лунную» поверхность с помощью большой 3D-сферы?
- Следует ли сделать управление пушкой с помощью клавиатуры или мыши?
Также нужно было проверить несколько технических гипотез, в основном связанных с выпуском игры в виде сборки WebGL с использованием Unity. В связи с пандемией имело смысл разместить игру прямо на Itch.io, чтобы облегчить тестирование и распространение ее версий. Беспокоило то, сколько времени потребуется, чтобы пройти весь цикл сборки-деплоя-тестирования на платформе Itch.io (в часах или минутах), а затем — какого качества графики можно достичь, чтобы при запуске игры в браузере сохранялась приемлемая частота кадров.
Первый прототип оказался весьма успешным. Не то чтобы все гипотезы подтвердились, но все они получили свою оценку, а это и есть истинная цель прототипирования. Первая версия игры была размещена на сайте 3 ноября. Цикл сборки-деплоя-тестирования занял около 15 минут, что оказалось приятным сюрпризом.
Поскольку идея выглядела достаточно перспективной, чтобы продолжить над ней работать, прямо поверх скриншотов было сделано несколько концепт-артов: это позволило быстро увидеть некое приближение, как будет выглядеть финальная версия игры. Последнее облегчило демонстрацию идей другим людям для получения фидбека.
Концепт-арт для игры на основе скриншотов прототипа
14 ноября была выпущена уже более стабильная версия с подтянутой графикой, приличным скайбоксом и хорошей постобработкой. Большая часть времени работы над обновлением ушла на проработку аспектов, отмеченных в отзывах, и на улучшение графики, чтобы оценить, насколько производительной может оказаться сборка WebGL.
К тому времени уже сложилось более ясное представление о назначении турели и лунных сооружений. Турель будет генерировать ресурсы астероидов, сбивая их выстрелами из пушки. Задача шахт — пассивная генерация минералов (для этого нужны астероиды). Ангар нужен для улучшения туррели (с использованием минералов). Лаборатории должны помочь привести игрока к победе (истощение Луны) с использованием обоих ресурсов: как астероидов, так и минералов.
Скриншот из этой версии (V0.4 Лунные сооружения) можно увидеть ниже:
Тесты, стабильная версия и геймплей
Во время разработки версий с 0.1 по 0.4 большая часть тестов проводилась самостоятельно либо с помощью близких друзей. Но начиная с версии 0.4 началось уже более активное продвижение игры для тестирования.
Версия 0.4 вышла на Itch.io уже со всеми основными функциями игры — то есть, была так называемой стабильной версией: в ней были все необходимые функции, чтобы пройти игру до конца, и она уже могла вовлекать игроков по полной.
Отзывы, полученные во время тестирования, очень помогли с дальнейшим улучшением игры. Элементы управления были изменены с клавиатуры на мышь, визуальные эффекты тоже поменялись. Затем сборка WebGL была выставлена на самые высокие настройки, поскольку большинство игроков имели частоту кадров выше 60 FPS — за исключением одного тестировщика, который пытался запустить ее на Chromebook.
Более того, теперь уже стало яснее, что люди действительно получали удовольствие от игры. Был даже один тестировщик, который просил больше обновлений и введение дополнительных действий. Это означало, что кто-то активно играл в игру до ее (текущего) конца!
В версии «Лунные сооружения» уже был реализован весь основной игровой цикл, каким он показан на схеме ниже:
Как упоминалось ранее, игра основана на сборе двух основных ресурсов: астероидов, собранных путем уничтожения их турелью, и минералов, которые время от времени собираются автоматически из шахт. Турель и шахты можно улучшить, используя противоположные ресурсы (минералы для турели, астероиды для шахт). Использование противоположных ресурсов позволило избежать сильных положительных циклов обратной связи в игровой экономике: когда механика улучшается при помощи того самого ресурса, который она генерирует.
Не (всегда) нужны сложные или дополнительные механики
На представленной выше схеме для обозначения основной цели игры используется термин «основной квест» (Main Quest). Она была реализована в виде простой кнопки, которая тратит запрошенные ресурсы. Чтобы выиграть, игрок должен тратить все больше ресурсов, пока полностью не исчерпает Луну.
Механика победы была разработана для достижения произвольно большого числа, которое активирует условие «победы», и игроку присуждается статус победителя. После истощения Луны шахты перестанут генерировать минералы, и все — конец игры.
Вариант основного квеста (Минеральный лазер) на объекте Лаборатория
Какой отсюда можно сделать вывод? Вам не всегда нужно усложнять свою игру (например, добавляя больше механик), чтобы обеспечить условия победы или сделать игру лучше. Для MoonGun, поскольку игроки уже получали от нее удовольствие, не было необходимости тратить больше времени на разработку новой механики только для условия победы — его можно было сформулировать с помощью основной механики.
Также помните, что игру нужно было сделать в течение одного месяца, поэтому меньшее количество реализаций здесь означало больше времени на полировку и улучшение игры.
Залп! Баланс и честность игры
В соответствии с советами тестировщиков в игру стали вводиться дополнительные элементы, не особенно расширяющие основные механики и игровой цикл. Первой идеей здесь было расширить возможности игрока, добавив к турели дополнительное оружие — лазер.
MoonGun, версия 0.7 — лазер
Лазер был тепло принят тестировщиками и добавил игре дополнительную степень свободы. Однако он также дестабилизировал воспринимаемую мощность игрока. Из-за того, что лазер обладал большей дальностью и длительностью действия, обычная пушка теперь казалась слабой. Необходимо было сбалансировать процесс улучшения обоих видов оружия.
Так, в какой-то момент по мере прохождения игры пушка получит больше улучшений и превзойдет лазер. Тогда лазер получит собственные улучшения и вернет себе лидерство. Этот обмен предпочтительным оружием туда-сюда увеличивал динамику игрового процесса.
В то же время выбор оружия по-прежнему оставался за игроком. Игра не мешает использовать любое из представленных в ней видов оружия.
Балансировка — задача сложная. Поэтому главной целью здесь было добиться честного игрового процесса — который был бы увлекательным и захватывающим, но не обязательно сбалансированным.
Лунные квесты
Фактически лазер был добавлен в версию 0.5. Тем не менее, его более стабильная реализация была представлена только в версии 0.7 под названием «Лунные квесты», которая также включала:
- Дрожание камеры;
- Эффекты разрушения астероидов;
- Смену оружия (нажатием клавиши SHIFT);
- Изменение элементов управления для использования мыши и/или клавиатуры;
- Подзапросы на дополнительные ресурсы;
- Разнообразие астероидов (с разными скоростями, размерами и наградами за уничтожение);
- Улучшение средней частоты кадров.
Обратите внимание, что два пункта связаны с улучшением внешнего вида игры (1 и 2), два — с добавлением/изменением элементов управления (3 и 4), еще два — с дополнительными элементами игры (5 и 6). Один же предназначался для анализа и отладки. Это разделение было полностью преднамеренным.
Учитывая ограниченность отведенного на разработку времени, необходимо было сбалансировать свою рабочую нагрузку по многим аспектам, которые требовали улучшений.
Версия «Лунных квестов» была более полной и позволяла игрокам экспериментировать с игрой, а также взаимодействовать с большим количеством элементов управления. Это помогло увидеть, что хорошо работает в игре (например, астероиды и вариативность оружия), а чего не хватает.
В то же время стало приходить все больше комментариев, касающихся отсутствия объяснений и контекста игры. До сих пор это была просто аркадная игра без какой-либо четкой цели. Пришло время добавить в нее элементы повествования.
Встречайте Титана и Луну S/2009 S1
В начале игры появилась небольшая подсказка, которая должна была связать сценарий, мотивацию игрока и условия победы. Выглядела она так:
Луна S/2009 S1 полна богатым минералом — флеботием, и вы, игрок, отвечаете за защиту объектов станции во время его добычи. База покрыта полем, который может защитить ее от слабых астероидов. Однако по мере того, как продвигается добыча, ядро Луны становится все тяжелее, привлекая к себе более быстрые и опасные астероиды, которые могут повредить щит и прервать работу на объектах.
Для помощи с повествованием в игру был введен Титан — робот, сначала вводящий игрока в курс дела, а позже выступающий проводником по ходу развития сюжета. Титан был придуман, смоделирован и анимирован Калео Мендесом, который также занимался UI-дизайном игры.
На изображении ниже показана первая версия введения с Титаном, новым UI-интерфейсом и — на заднем плане — щитом, покрывающим всю Луну.
Версия V0.8, «Лунное меню», была выпущена 26 ноября — всего за несколько дней до дедлайна. Она включала в себя существенную переработку UI, а также информацию о щите.
Помимо этого, в игре были и другие улучшения: были изменены эффекты, и теперь игроку стало легче переключаться между оружием по правому щелчку мыши. Кроме того, был изменен интерфейс перезарядки оружия: теперь на туррели отображалась информация об обоих видах оружия сразу. Это позволило игрокам использовать их более продуманно, переключаясь с одного на другое, когда одно из них находилось на перезарядке.
Также было улучшено дрожание камеры, усиливающее ощущение мощности обоих видов оружия, и снова изменены эффекты разрушения астероидов. Обратите внимание, что большинство этих изменений было сделано для улучшения стабильной версии игры, и очень мало значительных изменений было внесено непосредственно в основной цикл игрового процесса.
Финальная версия и ее проблемы
Финальная версия V1.0a MoonGun была выпущена 29 ноября. В ней были реализованы все рабочие функции, еще больше настроек и более сбалансированный опыт для основного квеста. Были добавлены легкие астероиды в первые минуты игры и более смертоносные — для поздних этапов. Уже имелись все звуковые эффекты и музыка для создания атмосферы и полноценного игрового опыта.
Также в игре были реализованы некоторые элементы управления настройками, такие как ползунки звука и музыки, а также ползунок для управления эффектами яркости — как это было умно упомянуто одним из тестеров. И добавлено предупреждение на экран загрузки, уведомляющее игроков о сильных световых эффектах в игре.
MoonGun, версия 1.0a
Отзывы и (будущие) улучшения
Хотя игра получила весьма хороший фидбек, некоторые проблемы так и не было времени доработать. Самым существенным здесь оказалось то, что в игре нет четкого завершения: вы не можете ее проиграть. Если на Луну упадет множество астероидов, шахты перестанут работать, пока вы не почините щит, потратив на это собранные астероиды, но при этом база никогда не разрушится.
По задумке игра должна была оказаться легкой и не наказывать игроков, пока они учатся в нее играть. И поскольку она основана на постоянном прогрессе, казалось слишком демотивирующим позволить игроку потерять все из-за того, что не удалось защитить базу. Судя по отзывам, пожалуй, следовало пересмотреть этот аспект и подумать о других решениях.
Кроме того, в игре нет заключительного ролика. После выполнения последнего основного квеста появляется Титан и передает последнее сообщение, но после этого игроки могут продолжать игру столько, сколько захотят. Некоторых тестеров это так разочаровало, что они даже написали об этом на странице игры.
Более того, оказалось, что многие игроки пропускают введение и начинают играть в игру, не понимая ее контекста и мотивации. Здесь тоже можно что-то придумать, чтобы это происходило как можно реже.
Процесс в ретроспективе
MoonGun определенно не станет следующим инди-хитом, но этого никогда и не планировалось. Скорее это был опыт создания игры, который оказался весьма положительным и позволил извлечь много уроков. Кроме того, в результате действительно получился готовый продукт. Несмотря на то, что в игре нет никакой сложности, она была тепло принята людьми, особенно за пределами круга друзей и семьи автора. А для такого проекта это уже успех.
Рабочий процесс строился на следующем: быстрое достижение стабильной версии игры, а затем ее улучшение. Оглядываясь назад на разработку за эти 4-5 недель, можно расписать основные шаги так:
- Концепция и прототип главной механики;
- Улучшение опыта и создание стабильной игры;
- Тщательное тестирование и внедрение обратной связи;
- Развитие механики, повествования, экономики и эстетики;
- Полировка.
Поскольку автор не мог (да и не хотел) бросать текущую работу, чтобы полностью отдаться этому делу, над разработкой приходилось работать поздно ночью и по выходным. Один метод, который в этом очень помог — хранение трекера выявленных проблем в репозитории, куда можно было заносить всю работу, которую необходимо выполнить. Это помогало быстро вернуться к работе над проектом через некоторое время и выяснить, где ты в последний раз остановился.
Более того, автор стремился всегда идти по пути меньших усилий. Это не означает написание «ленивого» кода или поиск плохих решений (исходный код доступен здесь) — это значило, что сначала проводилось тестирование простых подходов, прежде чем переходить к более крупным реализациям или рефакторингу.
Также не стоит пренебрегать действенными инструментами из Unity и сторами ассетов, чтобы ускорить процесс разработки. В данном случае самыми полезными оказались DOTween, LeanPool и Cinemachine.
Постобработка (магия, которую вы заслужили)
Добавление слоев эффектов постобработки помогает создать нужную атмосферу в игре и сформировать уникальный внешний вид. На изображении ниже показано сравнение одной и той же сцены с постобработкой и без нее:
Игра без постобработки (на оригинальной PlayStation) и с постобработкой (на ПК)
В частности, использовались следующие эффекты:
- Lift Gamma Gain: улучшение освещения;
- Искажение объектива (Lens Distortion): изображение, как если бы оно проходило через реальную камеру;
- Хроматическая аберрация: для создания атмосферы «космического искажения»;
- Зернистость пленки: добавление шума и динамики в сцену;
- Глубина резкости: размытие объектов вне фокуса для добавления реализма изображению;
- Виньетка: затемнение краев, чтобы игрок сосредоточился на центре изображения;
- Блум: чтобы свет выглядел волшебно!
Здесь вы можете увидеть, как эти эффекты накладываются друг на друга:
Вместо заключения
Каждый геймдизайнер и разработчик может подтвердить: создавать игры сложно, но, тем не менее, вдохновляюще само по себе. Каждый новый тестировщик, возвращающийся с положительными отзывами, дает вам энергию и подпитывает стремление довести проект до конца.
Более того, опыт работы с Unity 3D поможет быстрее перейти от прототипа к рабочему продукту за довольно короткое время. Во время разработки MoonGun в ход шли различные методы быстрого прототипирования для Unity 3D с использованием таких инструментов, как Unity Events, Scriptable Objects, и LINQ statements. Большинство материалов было сделано с помощью Unity Shader Graph и Prefab Variants.
Однако, эту игру вряд ли можно было бы сделать без четкого плана и стратегии. Поэтому стоит повториться язе раз, что важно сначала придерживаться простых механик, а затем уже развивать игру на их основе.