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

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

Мы хотим сделать переход на Unreal Engine как можно более плавным для разработчиков — и здесь как раз пригодится Parrot Game Sample!

Что такое Parrot Game Sample

Parrot Game Sample — совместный проект Epic Games и опытной студии разработки Secret Dimension, созданный для поддержки разработчиков с опытом работы в Unity, которые ищут практический способ освоить Unreal Engine и разрабатывать на нём игру.

Secret Dimension создала одну и ту же игру — уютный 2.5D платформер с пиратской тематикой, тремя уровнями, титульным экраном и полноценной системой меню — используя одни и те же ассеты как в Unreal Engine 5.6, так и в Unity 6. Их цель: добиться максимального паритета между двумя версиями и по пути зафиксировать все выводы.

Результатом стал Parrot Game Sample, доступный бесплатно на Fab в версиях как для Unity, так и для Unreal Engine. Проект снабжён подробными комментариями и документацией, он приглашает разработчиков погрузиться в обе версии, прочитать документы и аннотации, изучить инструменты и усвоить ключевые уроки из кросс-движкового опыта Secret Dimension.

От запуска проекта с нуля до использования встроенных возможностей и упрощенных пайплайнов Unreal Engine 5 — Parrot предлагает практические, проверенные на деле инсайты, которые ускорят рост любого разработчика.

Цель проста: обучать и вдохновлять.

Далее идет прямая речь создателей Parrot Game Sample из Secret Dimension — старших разработчиков Дакота Герольд (Dakota Herold) и Джастин Томас (Justin Thomas) — о том, как они подошли к разработке.

Разработка Parrot Game Sample

Привет всем! Нас зовут Дакота и Джастин. Мы оба начинали карьеру профессиональными разработчиками на Unity, а после присоединения к Secret Dimension перешли на изучение Unreal Engine.

Когда мы приступили к созданию Parrot Game Sample, у нас был короткий список целей. Мы хотели сделать игру максимально похожей в Unreal Engine и Unity, чтобы упростить сравнение реализаций. Мы стремились к тому, чтобы наши игровые системы следовали хорошим инженерным практикам и стандартам кодирования Epic, обеспечивая прочную основу для начала разработки на Unreal Engine. И наконец: документация, документация и еще раз документация — мы писали код для Unreal Engine максимально ясно и прямо, снабжая его подробными поясняющими комментариями, чтобы объяснить, что именно мы делаем, как устроены внутренние системы Unreal Engine и не только. По сути, мы хотели, чтобы код сам служил документацией — как это принято в самом Unreal Engine.

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

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

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

Parrot показывает, как устроены системы ввода, освещения, шейдеров, материалов, аудио, контроллеры персонажа, физика и системы управления игрой.

Из конкретных систем Unreal Engine используются: 

  • Lumen для глобального освещения, 

  • Nanite для высокополигональных мешей, 

  • деревья поведения (Behavior Trees) для вражеского ИИ, 

  • World Partition для стриминга уровней, 

  • Sequencer для анимации плавающих акул, 

  • Unreal Motion Graphics (UMG),

  • CommonUI для пользовательского интерфейса, 

  • а также Enhanced Input.

С самого начала мы понимали, что вода будет частью игры, и подумали, что могли бы использовать физику воды для создания препятствий. Мы изучили плагин Water System от Epic и выяснили, что физическая симуляция нам не подходит. В итоге мы отказались от симулированной воды в пользу стилизованной плоскости воды. В Epic предложили попробовать Single Layer Water Shading Model, и она дала именно тот визуальный результат, к которому мы стремились. Раньше мы этой системой не пользовались, и нас очень впечатлили её возможности и качество итогового результата.

Чтобы добиться «приятной по ощущениям» платформенной физики, мы взяли CharacterMovementComponent в Unreal Engine и кастомизировали его под себя. Мы добавили платформенную механику прыжка, физику падения и coyote time, причём все параметры настраиваются в редакторе, чтобы можно было тонко «поймать» ощущения. В частности, мы вынесли в настраиваемые параметры «time-to-apex» (время до вершины) и «apex height» (высота вершины), которые, по нашему мнению, дают самый удобный способ регулировать ощущение прыжка и довести его до идеала.

Когда дело дошло до камеры, мы вдохновились классикой: сделали камеру с односторонним движением, естественно реагирующую на прохождение игроком наших уровней. Односторонняя природа и специфическое поведение камеры подходят не для каждого платформера, но в Parrot они ощущаются «на своём месте».

Чтобы общий визуальный стиль выглядел целостно, мы уделили время кастомизации материалов ассетов и освещения. Мы задействовали функции материалов в Unreal Engine для разных эффектов и настроили освещение так, чтобы лучше всего показать ассеты. Рекомендуем посмотреть, какие эффекты применены в материалах проекта и как у нас организована схема освещения.

В Parrot мы широко использовали ассеты с лицензией CC0. Мы сознательно хотели, чтобы любой мог взять содержимое проекта и свободно модифицировать под свои задачи. Спасибо Kenney.nl, Quaternius, OpenGameArt и многочисленным авторам площадки, которые щедро публикуют ассеты под CC0, без ограничений по авторскому праву. Надеемся, Parrot достойно демонстрирует эти материалы!

При разработке игр в Unity разработчикам приходится самостоятельно создавать базовый геймплейный каркас. В Parrot мы реализовали эти системы настолько близко к их реализациям в Unreal Engine, насколько это было возможно. Дополнительно мы добавили вспомогательный каркас, чтобы достичь лучшего паритета с нашим рабочим процессом в Unreal Engine.

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


Чтобы перевести инсайты Parrot в рабочие навыки, присмотритесь к курсу «Unreal Engine Game Developer. Basic»: от нуля до уверенной сборки TPS на UE5 с Blueprints и C++, AI/NPC, Niagara/Cascade, UI, системой сохранений и оптимизацией. Формат — живые разборы с практиками и постоянная практика; на выходе свой проект в портфолио. Чтобы познакомиться с преподавателями и попрактиковаться, записывайтесь на бесплатные уроки.

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

Комментарии (0)