Смена движка — один из вечных вопросов разработки игр, и разработчики знают, что перенос команды и проекта на новый движок может оказаться непростым испытанием.
Движки отличаются друг от друга на архитектурном уровне, и это сказывается на всем: от стиля кода и инструментов до арт-пайплайнов создания графики. Это означает, что паттерны разработки и накопленная экспертиза команды потребуют обновления, если вы переходите на другой движок.
Мы хотим сделать переход на 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 берёте нужные курсы сейчас, а при смене приоритетов — корректируете трек без доплат. Выгоднее, чем оплачивать каждый курс отдельно.