Геймдев
#статьи

Как сделать персонажа для платформера: опыт Марка Брауна, ведущего 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 выпусков дневника про её разработку.

Скриншот: демоверсия игры Untitled Magnet Game / Game Maker’s Toolkit

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

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

Содержание

Как сделать персонажа, за которого приятно играть

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

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

Всё это нужно было исправить, и Браун потратил полтора месяца на то, чтобы переделать протагониста. Блогер наметил четыре основные задачи:

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

Держа в уме эти цели, Браун открыл ещё один документ в Unity и взялся за работу.

Движения персонажа

Чтобы доработать управление роботом, Браун прошерстил YouTube в поисках контроллеров — по сути, инструкций по написанию кода, который отвечает за перемещения персонажа. Он остановился на контроллере от ютубера Shinjingi, потому что тот содержал меньше всего строчек кода: в нём есть только движущийся куб-персонаж и несколько настраиваемых величин — а значит, его проще адаптировать под конкретный проект.

В управлении Браун заметно улучшил прыжок. Для него были важны две характеристики: ускорение и максимальная высота — и в контроллере Shinjingi их можно настроить по-разному в зависимости от фазы прыжка. На подъёме Марк сделал ускорение более медленным, а при снижении, наоборот, выкрутил на максимум, сымитировав таким образом действие силы тяжести, — как изображено на графике внизу.

Более медленный взлёт и быстрое приземление сделали прыжки в игре куда более интуитивными
Источник: Game Maker’s Toolkit / YouTube. Инфографика: Майя Мальгина для Skillbox Media

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

  • Jump Buffer. По умолчанию игры активируют прыжок только в том случае, если персонаж стоит на земле. Jump Buffer заставляет игру обрабатывать нажатие кнопки прыжка несколько раз, прежде чем отменить действие, — и это позволяет игроку нажать прыжок за пару кадров до приземления, чтобы тут же прыгнуть снова.
  • Coyote Time. Противоположность Jump Buffer. Игра помнит, что вы были на поверхности, в течение нескольких кадров после того, как вы её покинули, и позволяет совершить прыжок в это время. Это сделано, чтобы не наказывать игрока за ошибку в пару пикселей, когда персонаж прыгает с края платформы.
  • Регуляция высоты прыжка. Если быстро нажать кнопку, то персонаж подпрыгнет только чуть-чуть, а если давить на неё в течение нескольких секунд — совершит высокий прыжок.

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

Хитбокс в виде капсулы помогает компенсировать мелкие неточности во время прыжков
Кадр: Game Maker’s Toolkit / YouTube

Всё это сделало управление персонажем намного приятнее — но Марк решил дополнить его несколькими стилистическими штрихами. Так, он сопроводил движения робота визуальными эффектами вроде дыма из-под колёс и наклона корпуса; их источником послужил ещё один контроллер, уже созданный Tarodev.

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

Броски магнита

Разобравшись с роботом, Браун занялся магнитом. Большая часть связанного с ним кода правильно работала уже в демоверсии — так что блогер сосредоточился на том, чтобы упростить управление.

Кадр: Game Maker’s Toolkit / YouTube

В новой версии все манипуляции с магнитом можно было проделывать одной кнопкой: быстрым нажатием игрок подбирал либо бросал этот предмет, а долгим удерживанием активировал прицельный бросок. Также Браун добавил поддержку мыши — и потратил немало времени, чтобы управление с неё ощущалось так же, как и прицеливание с помощью стика.

Харизма персонажей

Первым делом Браун перерисовал протагониста, сделав его более милым и мультяшным. На это же работала новая, более пружинистая анимация прыжка: голова робота взлетала мгновенно, а опора с колесом подтягивалась к ней на пару кадров позже.

В прошлом выпуске Браун упоминал, что хочет добавить магниту индивидуальности, поэтому его анимации тоже изменились: теперь магнит менял выражение «лица» в зависимости от ситуации, смена его полярностей сопровождалась вспышкой, а стыковка с металлической поверхностью встряхивала экран.

Даже простые анимации могут существенно оживить персонажа
Кадр: Game Maker’s Toolkit / YouTube

«Теперь и у магнита, и у робота есть шарм и индивидуальность. Они ощущаются как персонажи из настоящей видеоигры», — подытожил Браун.

Опции для людей с ограниченными возможностями

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

По этой причине Браун выбрал момент после релиза первой демоверсии, когда игра ещё достаточно сырая, но в ней уже присутствуют все нужные элементы. Марк добавил следующие опции для игроков с ограниченными возможностями:

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

Браун отметил, что добавлять настройки доступности непросто, так как они требуют много времени и строчек кода; из-за этого ему даже пришлось отказаться от одной из опций. Тем не менее блогер постарался сделать всё, на что у него хватало навыков.

Меню опций доступности в демоверсии, где можно настраивать цвета и отображение символов на магнитах
Скриншот: демоверсия игры Untitled Magnet Game / Game Maker’s Toolkit

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

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

Рутинные технические этапы разработки и инструменты-помощники для левел-дизайна

«Как выяснилось, в разработке игр есть много не особо гламурных аспектов», — признал Марк Браун в начале седьмого выпуска.

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

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

  • Когда игрок заходит в главное меню, игра создаёт менеджер опций — невидимый объект, скрипты которого отслеживают настройки пользователя и сохраняют выбранные опции на жёстком диске. В коде объекта присутствует команда DontDestroyOnLoad — «Не уничтожать при загрузке», — она нужна для следующего шага.
  • Когда игрок запускает какой-то уровень, главное меню стирается из оперативной памяти и заменяется локацией, но менеджер опций остаётся. Благодаря этому объекты на уровне могут посылать ему запросы вроде: «Насколько чувствительным должен быть прицел?» или «Какого цвета должен быть магнит?».

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

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

«Это было крайне неэффективно, — отметил блогер. — Новая система оказалась куда умней».

После этого Браун решил построить ещё несколько систем-помощников. Так, блогер создал менеджер переходов, который стирал старый уровень и подгружал новый. Эта система работала в паре с музыкальным менеджером, который менял музыку при смене локаций. HUD-менеджер, в свою очередь, рисовал наверху экрана иконки клавиш, меняя их в зависимости от типа контроллера, а UI-менеджер отвечал за подгрузку меню паузы и настроек.

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

Работает система просто: файл с каждым этапом имеет название вроде 01 Lift Key 02, где первые две цифры — номер хаба, последние — номер уровня в хабе, а Lift Key относится к ключу, который открывает выход из комнаты с пазлом. Таким образом, теперь Марку было достаточно сменить номер, и локация автоматически вставала на нужное место в общем хабе.

Во второй демоверсии для завершения пазла игрок должен был подобрать ключи, лежащие на уровне
Кадр: Game Maker’s Toolkit / YouTube

Всё это навело Марка на мысли о важности инструментов — частей кода, призванных упростить создание игрового контента.

«Я понял, что Unity — это программа для создания игр, но [сама по себе] она не предназначена для создания моей игры: эту задачу предстоит выполнить мне. Я должен создать инструменты и системы, которые позволят мне генерировать контент конкретно для моего проекта».

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

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

Окно с основными элементами левел-дизайна
Кадр: Game Maker’s Toolkit / YouTube

Эти инструменты помогали Браун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, где в игровой форме демонстрируются самые важные параметры движений в любом платформере вроде длины и высоты прыжка или ускорения при беге. После вводной части игрок может сам покопаться в упрощённых настройках и протестировать результаты.

Трейлер Platformer Toolkit

Как рассказал Браун, он хотел поделиться опытом создания протагониста для платформера в новом, интересном формате — и в процессе его создания познакомился с вещами, которые пригодились ему в работе над Untitled Magnet Game.

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

Причина №3


Похожая игра от другого разработчика

Когда в сентябре 2021 года вышла игра ElecHead, она сначала расстроила Брауна своей концепцией: 2D-платформер про робота, который бросает предметы, чтобы решать пазлы. «Это очень похоже на мою игру — и ощущается это так себе», — поделился Браун.

По этой причине блогер долго не трогал ElecHead — но в конце концов сдался и вдруг обнаружил, что она всё-таки сильно отличается от Untitled Magnet Game. Более того — прохождение ElecHead, наоборот, только сильнее мотивировало Брауна вернуться к собственному проекту.

Скриншот: игра ElecHead / NamaTakahashi, Tsuyomi

Дело в том, что Браун всегда представлял Untitled Magnet Game масштабным произведением, которое потребует многие месяцы и годы для завершения. ElecHead меж тем показала, что хорошая головоломка вполне обойдётся без передовой графики или массы контента: куда важнее свежий геймплей и качественный дизайн пазлов.

«Когда я смотрю на ElecHead, то её масштаб, продолжительность и амбиции выглядят вполне достижимыми», — отметил Марк Браун.

Благодаря этому откровению Браун наконец-то перестал отлынивать от работы и потратил месяц на то, чтобы закончить основные элементы Untitled Magnet Game:

  • Магнит. Несмотря на улучшения, сделанные во второй демоверсии, главные персонажи в игре требовали ещё много работы. Браун решил сделать вместо одного магнита целых три: это Макс, стандартный красный магнит; Мэгги, способная менять полярность, превращаясь в свою синюю сестру Мэг; и Магнус, огромный магнит, который сам по себе служит источником притяжения. Так каждая из основных механик, связанных с магнетизмом, стала отдельным персонажем со своим характером.
  • Ключевые механики. Браун вернул в игру лазеры из первой демоверсии, добавил магнитные конвейеры, а заодно сделал новые инструменты, чтобы было удобнее строить из этих и других объектов комнаты с пазлами.
  • Саунд-дизайн. Как отметил сам Браун, звуковые эффекты очень важны, чтобы игра ощущалась живой и отполированной. Поэтому он добавил в игру такие звуки, как стук магнита о металлическую панель и жужжание лазера. Кроме того, Браун добавил временную музыку с расчётом, что ближе к релизу заменит её саундтреком от профессионального композитора.
  • Задники уровней. В ранних версиях игры фон на уровнях состоял из простой шахматной сетки — это выглядело скучно и мешало погружению. Поэтому Браун сделал простой задник, изображающий внутреннюю часть промышленного здания, добавил свет, струящийся сквозь окна, и заставил разные слои картинки двигаться с разной скоростью, чтобы придать ей глубины за счёт эффекта параллакса. В завершение Марк раскрасил картину цветовыми фильтрами, оживил её с помощью анимаций вроде пара, идущего из котлов, — и так получил интересный задник, соответствующий теме игры.
Скриншот: демоверсия игры Untitled Magnet Game / Game Maker’s Toolkit
  • Объекты на уровне. Браун также доработал визуал остальных элементов уровня: так, он сменил шейдеры для лазеров и добавил всем объектам толстую чёрную обводку, чтобы выделить их на фоне задника.
  • Переходы между уровнями. Браун сменил ключи из предыдущей демоверсии на трубы, явно отсылающие к платформерам про Марио. Теперь робот в конце уровня открывал затычку — и его засасывало вместе с магнитом в следующую комнату с пазлом, где он выпрыгивал из трубы.

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

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

Подписывайтесь на наш телеграм-канал «Чекпоинт». Это уютное место, в котором мы рассказываем об играх и о том, как они создаются, а также делимся полезными советами разработчиков и пишем о важных обновлениях популярного софта. Комментарии открыты: вы можете предложить идею для нового текста или просто обсудить всё, что связано с геймдевом.

Попробуйте новую профессию в геймдеве — бесплатно

Доступ к курсам за 0 р.

Я не знаю, с чего начать
Кто вы в мире геймдева? Узнайте на бесплатном курсе ➞
Вы на практике попробуете 3 профессии: геймдизайнера, 2D-художника и разработчика на Unity. Создадите свою первую игру в стиле Mario. Подробности — по клику.
Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована