Как сделать персонажа для платформера: опыт Марка Брауна, ведущего GMTK
А также как создать инструменты, упрощающие задачи геймдизайнера, и грамотно работать с фидбэком игроков.
Иллюстрация: Game Maker’s Toolkit / YouTube / stockgiu / Freepik / Colowgee для Skillbox Media
Марк Браун — автор и ведущий Game Maker’s Toolkit, популярного ютуб-канала о геймдизайне. Вот уже девять лет он делает видео про то, как работают разные элементы видеоигр, проводит ежегодный GMTK Game Jam — а два с лишним года назад блогер начал делать собственную игру в движке Unity.
Мотивация у Брауна была простая: если уж он ведёт канал про игровую разработку, ему не помешает подкрепить свои теоретические знания практикой — а также показать, что абсолютно каждый может сделать свою видеоигру.
«Это будет очень маленькая видеоигра. Очень плохая видеоигра. Но это будет видеоигра. И я хочу поделиться с вами процессом своего роста — от ничего не знающего чайника до человека, выпустившего крохотную игру на, скажем, itch.io», — рассказывал Марк Браун перед стартом разработки.
С тех пор пазл-платформер про решение загадок с помощью магнитов давно перерос статус крохотной игры для itch.io: сегодня у Untitled Magnet Game появилось официальное название — Mind Over Magnet — и своя страница в Steam, а сам блогер уже снял целых 13 выпусков дневника про её разработку.
Мы решили написать серию текстов, в которых расскажем о самых важных моментах из этих видео и о главных выводах, которые сделал блогер. Первая статья была посвящена тому, как блогер осваивал Unity, а вторая — процессу создания публичной демоверсии.
В этой статье речь пойдёт о том, как Браун дорабатывал геймплей на основе фидбэка игроков: первым делом он взялся за главного героя.
Содержание
Как сделать персонажа, за которого приятно играть
Два года назад Браун выложил демоверсию игры в публичный доступ, чтобы получить обратную связь от игроков и других разработчиков. Результатом стало множество ценных замечаний — и одним из наиболее частых были жалобы в адрес главного героя, квадратного робота на колёсике, таскающего магниты.
Игроки отметили медленные, как будто плавающие движения главного героя, слишком длинные прыжки, раздражающую заминку при приземлении и чересчур сложное управление бросками магнита.
Всё это нужно было исправить, и Браун потратил полтора месяца на то, чтобы переделать протагониста. Блогер наметил четыре основные задачи:
- Улучшить ощущения от управления персонажем.
- Упростить броски магнита.
- Добавить шарма и уникальности как роботу, так и магниту.
- Добавить опции для людей с ограниченными возможностями.
Держа в уме эти цели, Браун открыл ещё один документ в Unity и взялся за работу.
Движения персонажа
Чтобы доработать управление роботом, Браун прошерстил YouTube в поисках контроллеров — по сути, инструкций по написанию кода, который отвечает за перемещения персонажа. Он остановился на контроллере от ютубера Shinjingi, потому что тот содержал меньше всего строчек кода: в нём есть только движущийся куб-персонаж и несколько настраиваемых величин — а значит, его проще адаптировать под конкретный проект.
В управлении Браун заметно улучшил прыжок. Для него были важны две характеристики: ускорение и максимальная высота — и в контроллере Shinjingi их можно настроить по-разному в зависимости от фазы прыжка. На подъёме Марк сделал ускорение более медленным, а при снижении, наоборот, выкрутил на максимум, сымитировав таким образом действие силы тяжести, — как изображено на графике внизу.
Определившись с основами, Браун перешёл к реализации подсистем, которые делают платформинг более интуитивным и приятным:
- Jump Buffer. По умолчанию игры активируют прыжок только в том случае, если персонаж стоит на земле. Jump Buffer заставляет игру обрабатывать нажатие кнопки прыжка несколько раз, прежде чем отменить действие, — и это позволяет игроку нажать прыжок за пару кадров до приземления, чтобы тут же прыгнуть снова.
- Coyote Time. Противоположность Jump Buffer. Игра помнит, что вы были на поверхности, в течение нескольких кадров после того, как вы её покинули, и позволяет совершить прыжок в это время. Это сделано, чтобы не наказывать игрока за ошибку в пару пикселей, когда персонаж прыгает с края платформы.
- Регуляция высоты прыжка. Если быстро нажать кнопку, то персонаж подпрыгнет только чуть-чуть, а если давить на неё в течение нескольких секунд — совершит высокий прыжок.
Кроме того, Браун изменил форму хитбокса робота с прямоугольника на обтекаемую капсулу, чтобы персонаж не рикошетил от платформ, если окажется на пару пикселей ниже или выше требуемой высоты, а скользил вдоль поверхностей.
Всё это сделало управление персонажем намного приятнее — но Марк решил дополнить его несколькими стилистическими штрихами. Так, он сопроводил движения робота визуальными эффектами вроде дыма из-под колёс и наклона корпуса; их источником послужил ещё один контроллер, уже созданный Tarodev.
Наконец, левел-дизайн тоже чуть изменился: на уровнях появились новые элементы — пандусы, позволившие роботу заезжать на высокие места, и движущиеся платформы, с реализацией которых блогеру помогли участники его канала в Discord.
Броски магнита
Разобравшись с роботом, Браун занялся магнитом. Большая часть связанного с ним кода правильно работала уже в демоверсии — так что блогер сосредоточился на том, чтобы упростить управление.
В новой версии все манипуляции с магнитом можно было проделывать одной кнопкой: быстрым нажатием игрок подбирал либо бросал этот предмет, а долгим удерживанием активировал прицельный бросок. Также Браун добавил поддержку мыши — и потратил немало времени, чтобы управление с неё ощущалось так же, как и прицеливание с помощью стика.
Харизма персонажей
Первым делом Браун перерисовал протагониста, сделав его более милым и мультяшным. На это же работала новая, более пружинистая анимация прыжка: голова робота взлетала мгновенно, а опора с колесом подтягивалась к ней на пару кадров позже.
В прошлом выпуске Браун упоминал, что хочет добавить магниту индивидуальности, поэтому его анимации тоже изменились: теперь магнит менял выражение «лица» в зависимости от ситуации, смена его полярностей сопровождалась вспышкой, а стыковка с металлической поверхностью встряхивала экран.
«Теперь и у магнита, и у робота есть шарм и индивидуальность. Они ощущаются как персонажи из настоящей видеоигры», — подытожил Браун.
Опции для людей с ограниченными возможностями
Как отметил блогер, в случае с настройками доступности очень важно выбрать правильный момент для их реализации. Не стоит делать это на стадии прототипа, когда идеи и код постоянно меняются, — но при этом не рекомендуется тянуть до релиза, иначе попытки вставить их в уже существующий код обернутся кошмаром для разработчика.
По этой причине Браун выбрал момент после релиза первой демоверсии, когда игра ещё достаточно сырая, но в ней уже присутствуют все нужные элементы. Марк добавил следующие опции для игроков с ограниченными возможностями:
- Смена клавиш управления.
- Возможность включать/выключать прицел магнита отдельной кнопкой.
- Снижение чувствительности прицела магнита.
- Отключение эффектов дыма, следов и тряски экрана.
- Смена цветов для людей с цветовой слепотой.
- Отображение полярностей магнита с помощью знаков плюса и минуса.
Браун отметил, что добавлять настройки доступности непросто, так как они требуют много времени и строчек кода; из-за этого ему даже пришлось отказаться от одной из опций. Тем не менее блогер постарался сделать всё, на что у него хватало навыков.
Таким образом, Брауну удалось реализовать все четыре намеченные цели — и он даже получил положительный отзыв от программиста и художника Celeste Ноэля Берри, которому отправил демоверсию с доработанным управлением.
Обрадованный Браун решил взять перерыв, чтобы избежать выгорания, — а после возвращения принялся за работу над куда более скучными вещами.
Рутинные технические этапы разработки и инструменты-помощники для левел-дизайна
«Как выяснилось, в разработке игр есть много не особо гламурных аспектов», — признал Марк Браун в начале седьмого выпуска.
Под этими аспектами Браун подразумевает такие элементы, как меню, интерфейс, система сохранений, поддержка разных контроллеров, переходы между уровнями и другие подобные вещи. Такое редко показывают в дневниках разработчиков и документальных материалах, потому что это не слишком интересно. Тем не менее кто-то должен их создавать, потому что без них игра не будет работать, — и здесь тоже есть нюансы, которые стоят отдельного пояснения.
К примеру, чтобы опции смены клавиш и выбора цветов работали на протяжении всей игры, они должны синхронизироваться между уровнями, сохраняться на компьютерах игроков и быть доступными для настройки в игровом меню. Браун реализовал эти функции следующим образом:
- Когда игрок заходит в главное меню, игра создаёт менеджер опций — невидимый объект, скрипты которого отслеживают настройки пользователя и сохраняют выбранные опции на жёстком диске. В коде объекта присутствует команда DontDestroyOnLoad — «Не уничтожать при загрузке», — она нужна для следующего шага.
- Когда игрок запускает какой-то уровень, главное меню стирается из оперативной памяти и заменяется локацией, но менеджер опций остаётся. Благодаря этому объекты на уровне могут посылать ему запросы вроде: «Насколько чувствительным должен быть прицел?» или «Какого цвета должен быть магнит?».
По сути, Браун разделил актуальную для всей игры метаинформацию и данные, нужные для конкретного этапа.
В ранней демоверсии такого механизма не было — и каждый уровень сопровождался отдельной копией кода для перехода между локациями, для системы сохранений и загрузки и даже для меню паузы. В результате тестирование уровней занимало много времени, а перенос данных с уровня на уровень требовал массу усилий.
«Это было крайне неэффективно, — отметил блогер. — Новая система оказалась куда умней».
После этого Браун решил построить ещё несколько систем-помощников. Так, блогер создал менеджер переходов, который стирал старый уровень и подгружал новый. Эта система работала в паре с музыкальным менеджером, который менял музыку при смене локаций. HUD-менеджер, в свою очередь, рисовал наверху экрана иконки клавиш, меняя их в зависимости от типа контроллера, а UI-менеджер отвечал за подгрузку меню паузы и настроек.
Наконец, Марк построил игровой хаб, где можно выбрать уровень для прохождения, и систему, которая позволила ему менять порядок уровней и тем самым настраивать прогрессию сложности.
Работает система просто: файл с каждым этапом имеет название вроде 01 Lift Key 02, где первые две цифры — номер хаба, последние — номер уровня в хабе, а Lift Key относится к ключу, который открывает выход из комнаты с пазлом. Таким образом, теперь Марку было достаточно сменить номер, и локация автоматически вставала на нужное место в общем хабе.
Всё это навело Марка на мысли о важности инструментов — частей кода, призванных упростить создание игрового контента.
«Я понял, что Unity — это программа для создания игр, но [сама по себе] она не предназначена для создания моей игры: эту задачу предстоит выполнить мне. Я должен создать инструменты и системы, которые позволят мне генерировать контент конкретно для моего проекта».
Этим Браун и занялся: он написал несколько простых скриптов, призванных облегчить процесс редактирования уровней. К примеру, он создал слайдер, регулирующий высоту и ширину магнитных лучей, и кнопку, меняющую цвета магнитных панелей одним нажатием.
Постепенно блогер создавал всё больше и больше инструментов, упрощающих работу над игрой: указатель траектории движущейся платформы, окно с основными объектами вроде кнопок и магнитных панелей, специальная кисть для того, чтобы кликать на объекты в сцене и менять их свойства и функции.
Эти инструменты помогали Браунy строить уровни, затем он тестировал их, улучшал созданные системы, строил новые уровни — и так, незаметно для себя, блогер сделал ещё одну демоверсию Untitled Magnet Game.
«Я думаю, это показывает, как много пользы могут принести эффективные инструменты. Они настолько упрощают и ускоряют процесс создания игры, что вы можете генерировать контент, даже не осознавая этого».
На основе этого Браун сделал вывод: «Лучше потратить чуть больше времени и сил на создание инструментов в начале разработки, потому что это избавит вас от головной боли и сохранит массу времени и сил во время основной части процесса».
Так, разобравшись с инструментами, Браун смог построить Untitled Magnet Game версии 2.0, которая по-прежнему доступна на портале itch.io вместе с остальными билдами, — и наконец-то перейти к основной части разработки.
Что вдохновило Марка Брауна взяться за игру всерьёз
Несмотря на прогресс, достигнутый Брауном на предыдущих этапах, в дизайне Untitled Magnet Game оставалось ещё множество аспектов, которые он не завершил, не утвердил окончательно или попросту не воплотил.
«Это вещи, которые я… перекладывал на плечи Марка из будущего», — признался блогер.
Однако вечно отлынивать от этой работы тоже было невозможно, иначе игру никогда бы не удалось завершить, — и в очередном выпуске дневника Браун поделился причинами, которые, по его собственному выражению, заставили его поднять задницу и двинуться навстречу финишной черте.
Причина №1
Положительные отзывы на вторую демоверсию
Игроки заметили работу, проделанную Брауном со времени выхода первой демоверсии: они похвалили более удобное управление и упрощённый платформинг — но, самое главное, им понравились новые пазлы с упором на магнитную механику. Браун много трудился, чтобы головоломки дарили пользователям так называемые ага-моменты, когда игрок вдруг находит решение для трудной задачи.
«Я сделал эти пазлы и выложил их в открытый доступ, где люди смогли найти их, сыграть в них, получить удовольствие от вещи, которую я создал, и [даже] порадоваться вслух — ощущение от всего этого было крутое. Я как будто наложил на этих людей заклятье… Никогда ничего подобного не делал».
Причина №2
Platformer Toolkit
После выхода второй демоверсии Untitled Magnet Game в голову Брауна пришла идея сделать интерактивное эссе про дизайн платформеров — по сути, ещё одну 2D-игру, только масштабом поменьше.
Её разработка заняла всего месяц — и летом 2022 года блогер выложил на itch.io проект под названием Platformer Toolkit, где в игровой форме демонстрируются самые важные параметры движений в любом платформере вроде длины и высоты прыжка или ускорения при беге. После вводной части игрок может сам покопаться в упрощённых настройках и протестировать результаты.
Как рассказал Браун, он хотел поделиться опытом создания протагониста для платформера в новом, интересном формате — и в процессе его создания познакомился с вещами, которые пригодились ему в работе над Untitled Magnet Game.
Во-первых, Марк узнал много ценного о заключительных этапах игровой разработки. Во-вторых, он понял, как приятно выпустить законченную игру: ведь это значит, что вы можете перестать постоянно о ней думать и перейти к другим проектам.
Причина №3
Похожая игра от другого разработчика
Когда в сентябре 2021 года вышла игра ElecHead, она сначала расстроила Брауна своей концепцией: 2D-платформер про робота, который бросает предметы, чтобы решать пазлы. «Это очень похоже на мою игру — и ощущается это так себе», — поделился Браун.
По этой причине блогер долго не трогал ElecHead — но в конце концов сдался и вдруг обнаружил, что она всё-таки сильно отличается от Untitled Magnet Game. Более того — прохождение ElecHead, наоборот, только сильнее мотивировало Брауна вернуться к собственному проекту.
Дело в том, что Браун всегда представлял Untitled Magnet Game масштабным произведением, которое потребует многие месяцы и годы для завершения. ElecHead меж тем показала, что хорошая головоломка вполне обойдётся без передовой графики или массы контента: куда важнее свежий геймплей и качественный дизайн пазлов.
«Когда я смотрю на ElecHead, то её масштаб, продолжительность и амбиции выглядят вполне достижимыми», — отметил Марк Браун.
Благодаря этому откровению Браун наконец-то перестал отлынивать от работы и потратил месяц на то, чтобы закончить основные элементы Untitled Magnet Game:
- Магнит. Несмотря на улучшения, сделанные во второй демоверсии, главные персонажи в игре требовали ещё много работы. Браун решил сделать вместо одного магнита целых три: это Макс, стандартный красный магнит; Мэгги, способная менять полярность, превращаясь в свою синюю сестру Мэг; и Магнус, огромный магнит, который сам по себе служит источником притяжения. Так каждая из основных механик, связанных с магнетизмом, стала отдельным персонажем со своим характером.
- Ключевые механики. Браун вернул в игру лазеры из первой демоверсии, добавил магнитные конвейеры, а заодно сделал новые инструменты, чтобы было удобнее строить из этих и других объектов комнаты с пазлами.
- Саунд-дизайн. Как отметил сам Браун, звуковые эффекты очень важны, чтобы игра ощущалась живой и отполированной. Поэтому он добавил в игру такие звуки, как стук магнита о металлическую панель и жужжание лазера. Кроме того, Браун добавил временную музыку с расчётом, что ближе к релизу заменит её саундтреком от профессионального композитора.
- Задники уровней. В ранних версиях игры фон на уровнях состоял из простой шахматной сетки — это выглядело скучно и мешало погружению. Поэтому Браун сделал простой задник, изображающий внутреннюю часть промышленного здания, добавил свет, струящийся сквозь окна, и заставил разные слои картинки двигаться с разной скоростью, чтобы придать ей глубины за счёт эффекта параллакса. В завершение Марк раскрасил картину цветовыми фильтрами, оживил её с помощью анимаций вроде пара, идущего из котлов, — и так получил интересный задник, соответствующий теме игры.
- Объекты на уровне. Браун также доработал визуал остальных элементов уровня: так, он сменил шейдеры для лазеров и добавил всем объектам толстую чёрную обводку, чтобы выделить их на фоне задника.
- Переходы между уровнями. Браун сменил ключи из предыдущей демоверсии на трубы, явно отсылающие к платформерам про Марио. Теперь робот в конце уровня открывал затычку — и его засасывало вместе с магнитом в следующую комнату с пазлом, где он выпрыгивал из трубы.
«Когда я всё это сделал, игра стала намного ближе к завершению. Может показаться, что она несильно отличается от того, что вы видели до этого, но я вычеркнул из списка дел действительно важные вещи, которые были нужны в игре».
Теперь Браун мог с чистой совестью взяться за игровой контент: сами пазлы и сюжет, который придаст им необходимый контекст. Об этом процессе мы подробнее расскажем в следующей части нашей серии текстов.
Подписывайтесь на наш телеграм-канал «Чекпоинт». Это уютное место, в котором мы рассказываем об играх и о том, как они создаются, а также делимся полезными советами разработчиков и пишем о важных обновлениях популярного софта. Комментарии открыты: вы можете предложить идею для нового текста или просто обсудить всё, что связано с геймдевом.