Двигай и разгружай. История разработки 2D игры на Unreal Engine 4 [Часть 2]

Двигай и разгружай. История разработки 2D игры на Unreal Engine 4 [Часть 2]

DarkDes

Первая часть: https://telegra.ph/Dvigaj-i-razgruzhaj-Istoriya-razrabotki-2D-igry-na-Unreal-Engine-4-04-26

Начинается звуко-музыкальная прямая

Апрель, 10 число. Начинается финальный этап работ над игрой. Для меня всегда  последний этап это звуки и музыка. В этот раз ничего нового: я пошуршал в микрофон и покопался в своих старых записях.


Звуки коробок это буквально звуки коробок, хотя ладно – это звуки шуршания картона от коробки. А картонка эта при транспортировке защищала две книжки, которые я приобрёл относительно недавно – одна по геймдизайну, другая по музыке.


По-честному раскрывал картонку, записывал, обрабатывал. Нравится мне это дело, возиться с обработкой аудио, есть в нём что-то от творца. Однако, забегая вперёд, скажу, что после творческого этапа по наводке TheDreik приобрёл себе пак звуков, так что кто знает – может быть, это последняя моя конкурсная игра с моими собственными звуками.

В Unreal звуки можно воспроизводить через ресурс типа Cue. Это по сути своей тоже блюпринт, но для исполнения логики звука. Например, именно через такой Cue (на самом деле я все звуки продублировал в Cue) собран звук завершения этапа: можно добавить в один “звук” несколько “проигрывателей” и задать им задержку, либо ещё какие-то параметры воспроизведения. Очень интересная штука эти Cue.



Самым монструозным звуковым блюпринтом является “шаг”. На всём этапе разработки я не мог выбрать, какой же мне комплексный звук оставить: тот, что записал специально, или же с моих старых проектов малозаметные шуршания ног. В один момент меня озарило, что я могу смешать звуки в один! Из нескольких новых берётся звук, потом смешивается с одним из двух старых. При правильных параметрах звучит всё достаточно интересно.



Музыка

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

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

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

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


Причесать игру

Решил устроить рефакторинг миссий – до этого одни данные были в Акторе, другие в таблице, третьи в триггере-зоне. Затем, после переосмысления, стало достаточно удобно – все данные миссии хранятся в одной DataTable.

Физика

Оставалась одна большая проблема в игре – физика. Ну, помимо странного геймдизайна, конечно. Боролся разными способами, но ничего не помогало. Вышло даже так, что в попытках сделать “как лучше” вышло “как всегда” –  я сломал игру полностью. Думал, что знаю коллизии Unreal и каналы для trace, но как оказалось – ничего я не знаю. Наделал для столкновений каналы-пресеты: расположенный предмет, предмет в руках, стены, пол, плакат. Кое-как решил проблемы, но одного врага мне не удалось победить совершенно никаким образом – Стол-Г. Помимо своей формы буква отсылает и к тому как этот стол можно назвать при использовании в игре. Он буквально рассыпается на части, ведь там два коллайдера, а почему рассыпается? Не могу понять.

Последний день разработки

13 число. Суббота, не пятница. По сути игра готова, началась полировка того, что имеется. Финальные штрихи. Одним из таких штрихов стали иконки для выбора уровня. Сначала я хотел поступить очень просто, как я уже делал в КОД 19: BIBONICLELE – сделать скриншот из редактора уровня и уменьшить картинку.

Но всё оказалось не так просто: в Unreal нельзя из Top вида включить Gameview* и с Unlit освещением. Вернее как. Нельзя именно в том порядке, который я описал! Что?! А вот что. Оказывается, можно в Top view включить Game view с Unlit светом: для этого надо ещё в Perspective включить игровой вид, освещение, а уже потом включить Top. Почему? Почему? Почему?! Не знаю. Крайне странно.

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

Вспомнил об одной функции в Photoshop, результат удивил! Но не подходил. Не имеет смысла делать такой даунскейл.

Иконки уровней

В своём любимом Aseprite, лучшей программе для пиксель арта, подготовил холст, закидывал туда уменьшенные замыленные картинки уровней, а потом обрисовывал контур квартир, добавил несколько штрихов и вот иконки уровней готовы!



Убрать в коробку

Совсем внезапно придумал добавить новую фишку – убрать предмет из рук в коробку. Понимая, что вероятно это даст 1001 проблему (так и получилось), я внес этот функционал как  бонус за прохождение игры. Быстро добавить это в игру позволило то, что так уже работали плакаты – их можно убрать в коробку.


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


Ключевой арт, финал

Абсолютно финальным действием было рисование заглавного арта. В последний момент решил нарисовать так называемый “маркетинг арт”. В планах не было, но что-то загорелся мыслью и совсем не понял, как это произошло – смотрю, а арт уже готов! Хотел использовать композицию из главного меню, а в итоге она потерялась где-то на заднем фоне. Центральный элемент – это, конечно же, персонаж с коробкой в руках. Забавно, что коробки-то герой не таскает в этой игре.


Выпуск игры

Игра готова. Можно выдыхать. Марафон по тасканию виртуального дивана подошёл к концу, теперь разве что дополнить его подушками.

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

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

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


Локальный лор и отсылки

Не знаю, куда отнести эти факты, но очень хочется поделиться:

>>> Иконка кнопки привязки к сетке (snap) – из моего локально мем-долгострой проекта TheСтенки! Прямиком оттуда скопировал.

>>> Отсылки в постерах уже озвучены, но ещё раз: Final Fantasy 7, Devil May Cry 3, игра Дрейка на этот же конкурс, моя игра на КОД 14 “Рецепт” Великий Готовить Приключение, зверёк фенёк.

>>> Звук штанги, беговой дорожки и велотренажера это звуки из моей игры на КОД 20 “Движение – жизнь”, которая называется “Спотрмен” (именно так, НЕ Спортсмен).

>>> Из Спотрмена ещё звуки компьютера и телевизора.

>>> Звук стола плотника был в игре Gaminator 24 Infinity и в игре Про Робота с Gaminator 22.

>>> Мелодии при взаимодействии с синтезатором тоже с КОД 21 “Судя по звуку”, где я сделал игру про угадывание мелодии.

>>> Из мелодичной игры так же звук восторга при завершении этапа.

>>> Персонажу игрока снится, опять же, моя игра на КОД 18: “Свободное падение”, которая называет Супер Матвей Галаксеевич.


The Стенки. Старый “секретный” проект для GameMaker с функцией 3D. Включает редактор и игровую базу в стиле игры Doom 1 или Duke3D

ВЫВОДЫ

Время итогов

Считаю свою цель полностью выполненной: 2d pixel art игра на Unreal Engine. Это даже похоже на игру в каком-то смысле. Соответствует ли игра тематике конкурса? Считаю что да, а если не согласны – пишите в комментариях почему.

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

И моя хотелка приступить к освоению движка продолжалось достаточно долго, поэтому я решил – если не брать и не сделать сейчас, то, вероятно, и не сделаешь, вот и решил взять и сделать. Не игру по Сонику, а исследовать Unreal Engine. Глядишь – и будущий фан-проект выйдет куда лучше.


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

С Unreal Engine решил пойти путём, который я провернул с Godot – есть задача, нужно гуглить и смотреть видео, чтобы было наглядно видно решение. Тем самым поработал и с ресурсами, и делал вещи с нуля, набрался опыта. Есть, конечно, то, что не смог освоить – физика и неправильно отображаемые цвета, что для пиксель арта очень критично.



Про контроль версий

Блюпринты и Git (системы контроля версий), откровенно говоря, это какая-то дичь – думаю попробовать потом использовать C++ в Unreal для сравнения. Дебаг этих спагетти тоже не самое приятное дело. Вообще, этот способ визуального программирования, его поддержка и дебаг отнимают очень много, так сказать, визуальных сил. Нужно не читать текст, а вглядываться в картинку и связи, что с одной стороны проще, а с другой более утомительно.


Конец

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

Доволен ли я своей игрой? Сложный вопрос. С одной стороны, мне нравится, что вновь с нулевыми знаниями разобрался в движке, но с другой, игра именно как ИГРА опять показала себя плохо. Я решил, что это последняя моя игра на конкурсы. На неопределенный срок. Только причина и следствие тут не те, о которых вы подумали. Остановить своё участие в конкурсах я подумал ещё в начале разработки этой игры, чтобы отдохнуть от дедлайнов.


Исходники этой игры на моём Бусти! А саму игру можно скачать через itch.io: https://darkdes.itch.io/move-and-unpack


Выражаю благодарность всем: сыгравшим, прочитавшим, оставившим отзывы. Особо хочу поблагодарить Dieberry(Умрика) за помощь в редактировании данной статьи!

Всем спасибо за внимание!


Библиография или полезные ссылки

Ссылки по Unreal Engine:

  1. Создание 2д платформера на Unreal Engine, 3.5 часа (Youtube)
  2. Настройка Pixel Perfect через материал (Youtube)
  3. Создание главного меню (Youtube, Docs)
  4. Физика. Тащить объект мышкой. (Youtube, Youtube,Youtube)
  5. Физика. Тащить объект. (Youtube,Youtube,Youtube
  6. Физика. Толкать объект. (Youtube)
  7. Строительство, расстановка. (Youtube)
  8. Тайловые карты (Youtube)
  9. Персонаж из спрайтов (Youtube)
  10. Программный интерфейс интератива (Youtube)
  11. Камера как в Метроиде (Youtube)
  12. Изменение активной камеры (Youtube)
  13. Установка своего курсора (Форум, Youtube, Youtube)
  14. Задания, квесты, таблицы (Youtube, Youtube)
  15. Добавление шрифтов (Youtube)
  16. Сохранение и загрузка данных (Youtube, Статья)
  17. Анимация UI (Youtube)
  18. Конвенция имён в Unreal (Docs)
  19. Rich Text (Youtube)


Report Page