Как называется компания которая разработала unreal engine 4?

22 ответов на вопрос “Как называется компания которая разработала unreal engine 4?”

  1. Beazeswyn Ответить

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

    Уровень навыков

    Достаточно ли у вас навыков, чтобы эффективно использовать выбранный вариант? Если у вас нулевой опыт в программировании, то придётся многому научиться, прежде чем вы будете готовы создавать игру из набора разрозненных библиотек.
    Если у вас нет ни технических навыков, ни интереса к их изучению, то вариантов и в самом деле нет — придётся работать с движком (или убедить кого-нибудь заняться технической частью за вас; удачи вам в этом!).
    Есть промежуточное состояние между полным отсутствием навыков и профессиональным уровнем. В основном он находится в стране скриптовых языков: Scratch, Game Maker, Pygame, Unreal Blueprints, LOVE2D и т.д. Все они для тех, кто желает получить определённый уровень технических знаний, чтобы быстро достичь результатов.
    Если вы опытный/профессиональный программист, способный уверенно освоить стороннее ПО, то можете воспользоваться этим навыком и решить, насколько минималистичным/максималистичным будет ваш подход (будет ли это исключительно минимальный SDL или же полностью оборудованный Unreal Engine).

  2. Manarad Ответить

    Компания Epic Games анонсировала что с сегодняшнего дня любой желающий может получить доступ к Unreal Engine 4 всего за 19$ в месяц + 5% от стоимости каждой проданной копии продукта, сделанного на основе UE4.
    Что вы получаете за эти деньги:
    Возможность разработки для PC, Mac, iOS и Android.
    Полный исходный код движка. (C++)
    Различные заготовки, примеры игр и контента, которые можно получить через встроенный в редактор магазин.
    Системные требования редактора и движка для платформ PC и Mac достаточно суровые:
    64-битная операционная система
    Четырехъядерный процессор частотой от 2.5 ГГц
    NVIDIA GeForce 470 GTX или AMD Radeon 6870 HD и выше
    8ГБ оперативной памяти (для игр возможно меньше)
    Как по мне очень интересное и совершенно неожиданное предложение, но я не уверен насколько UE4 будет дружелюбен для людей, которые на полноценных языках никогда не программировали так как судя по словам разработчиков в движке нет никакого полноценного скриптового движка вроде UnrealScript, только так называемые «визуальные скрипты», которые вряд ли настолько же функциональны как UnrealScript.
    Подробная информация, документация и оформление подписки доступны на официальном сайте Unreal Engine 4.

  3. Fezragore Ответить

    Взаимодействие редактора и скриптов, которое в Unity не требует специального кода, работает в Unreal через генерацию кода. Этот специальный код Unreal генерирует при сборке. Чтобы редактор мог показать свойства нашего объекта, мы делаем специальные обёртки: UCLASS, GENERATED_BODY и UPROPERTY. Также мы декорируем свойства и описываем, как редактор должен с ними работать. Например, EditDefaultsOnly означает, что мы можем изменить свойства только дефолтного объекта, blueprint class’а (prefab’а, если провести аналогию с Unity). Свойства могут быть сгруппированы в разные категории. Это позволяет быстрее найти интересующие нас свойства объекта.
    Функция OnImpact — аналог OnCollisionEnter в Unity. Но для работы с ней требуется подписаться на события компонента USphereComponent в конструкторе или даже во время игры. Это не работает автоматически, как в Unity, зато здесь есть возможность оптимизации. Если нам больше не нужно реагировать на столкновения, мы можем отписаться от события.

    Блупринты (Blueprint)

    Типичное действие после создания C++ класса в Unreal — создание на его основе Blueprint Class’а. Это расширение объекта, которое нам предоставляет Unreal. Система Blueprint’ов в Unreal используется для визуального программирования. Мы можем создавать визуальные схемы, соединять события с какими-то реакциями на них. Через блупринты движок упрощает взаимодействие программистов и дизайнеров. Мы можем написать на С++ часть игровой логики и предоставить доступ к ней дизайнерам.
    При этом Unreal позволяет отделить, если требуется, C++ исходники проекта от его бинарников и контента. Дизайнеры или аутсорсеры могут работать с собранными dll-библиотеками и никогда не узнают, что происходит внутри C++ части проекта. Это дополнительная степень свободы, предоставляемая движком.

    Unreal хорош тем, что в нём практически всё связано с Blueprint’ами. Мы можем расширять ими С++ классы, создавать из них Blueprint-наследников и т. д. Эта система тесно связана со всеми компонентами движка, от его внутренней логики до визуальных компонентов, collision, анимации и т. д.
    В Unity есть схожие системы визуального программирования, например Antares Universe. Они не входят в состав движка и созданы поверх него, поэтому в любой момент что-то может сломаться (например, при обновлении версии движка). Система визуального скриптования в Unity не предусмотрена. На мой взгляд, это серьёзный недостаток по сравнению с Unreal. Ведь благодаря таким системам даже далекие от программирования люди могут составить схему взаимодействия объектов или связать какую-то последовательность действий. К слову, в Unreal все шаблоны проектов имеют две версии: как на основе C++ кода, так и целиком на Blueprint’ах. Таким образом, создать простой проект без использования кода, целиком на блупринтах — вполне реально.

    Демка шутера (UShooter)

    В Unity мы пишем демку с нуля, а в Unreal опираемся на шаблоны. В шаблоне выберем управление и вид камеры, и Unreal сгенерирует проект с указанными настройками. Это хорошая основа, от которой вы можете отталкиваться для ускорения разработки и создания прототипа проекта.

    Поверх шаблона Side Scroller мы добавляем собственный интерфейс (HUD), бочки, несколько видов оружия и звуки. Дадим игроку ракетницу и railgun, пусть героически стреляет по взрывающимся бочкам.

    Система ввода (Unity)

    Управлять персонажем будем с помощью системы ввода. В Unity мы обычно настраиваем ввод через Input Manager, создаём виртуальные именованные оси. Например, «идти вперёд» или «стрелять». Даём им имена и потом получаем значение какой-либо оси или состояние виртуальной кнопки. Обычно скрипты, которые занимаются управлением объектами, получают состояние осей в функции Update. В каждом кадре опрашивается состояние оси и целого ряда кнопок управления.

    Система ввода (UE4)


    В Unreal тоже есть виртуальные оси, но там есть разделение на собственно оси (значения, полученные от джойстика, и т.п.) и кнопки действия. В отличие от Unity, мы привязываем оси и кнопки к функциям класса, который реализует управление персонажем. Связь создаётся через компонент UInputComponent. Такой компонент ввода есть у класса персонажа ACharacter.
    Вызовом BindAxis(“MoveRight”, this, &AUShooterCharacter::MoveRight) в Input Component мы привязываем нажатие кнопки MoveRight к вызову одноимённой функции движения. Не требуется каждый кадр заниматься опросом кнопки.
    Также в Unreal не ограничено количество альтернативных кнопок. В Unity в Input Manager есть только основная кнопка и альтернативная. Чем больше устройств ввода в вашей игре, тем острее может быть эта проблема.

    Работа с 3D-моделями

    Как уже говорилось, в Unreal мы не видим в сцене структуру скелета персонажа. Дело в том, что компоненты скелета не являются Actor’ами или чем-то подобным. Это внутренние свойства скелета и анимации. Как тогда привязать к персонажу оружие или скрыть одну из его частей? Может, мы хотим надеть на него модную кепку или привязать оружие к руке.
    В Unity мы выделим модель оружия в редакторе, перетащим в нужную кость, можем даже повесить на него отдельный скрипт управления. В Unreal мы будем пользоваться сокетами (Socket) — точками крепления на игровых объектах. Сокеты — это часть скелета в моделях со скелетной анимацией (в Unity такие модели называются Skinned Mesh, в Unreal’е — Skeletal Mesh). Также сокеты можно добавлять в статические меши (Static Mesh).

    Выбираем кость, к которой крепится сокет, и задаём имя сокета, например S_Weapon, если к точке крепится оружие. После создания сокета можно создать («заспаунить») объект в позиции этого сокета или привязать его к сокету через механизм привязки (функции AttachTo). Система немного запутанная, в отличие от Unity, зато более универсальная. Мы можем один раз настроить названия точек, тем самым отделив игровую логику от настроек моделей. Причём если у нас имеется несколько моделей с одним скелетом, то сокеты надо будет добавить только в скелет. В демке шутера сокеты используются при создании снарядов и эффектов выстрела.

    Система анимации (Unity)

    У нас есть персонаж, мы знаем, как работать с вводом, теперь нужно проигрывать анимацию. В Unity для этого есть Animation Controller, в нём мы описываем определённые состояния персонажа. Например, бежать, прыгать или умереть. Каждому блоку соответствует свой анимационный клип, и мы настраиваем такой граф переходов:

    Хотя эта схема называется Animation Controller, внутренней логики у неё нет. Это просто схема переключения анимации в зависимости от состояния. Чтобы она работала, мы заранее объявляем в этом контроллере названия переменных, соответствующих состоянию персонажа. Скрипт, управляющий анимацией, зачастую сам передаёт эти состояния контроллеру каждый кадр.
    В переходах между состояниями (на схеме показаны стрелочками) мы настраиваем условия переходов. Можно настроить смешивание (crossfade) анимации, т. e. время, в течение которого одна анимация затухнет, а другая продолжится, для их плавного совмещения.

    Система анимации (UE4)

    В Unreal всё сделано Blueprint’ами, анимация не исключение. Создаём Animation Blueprint, который будет управлять анимацией. Он тоже представляет собой граф состояний. Так выглядит машина состояний, она управляет финальной анимацией персонажа в зависимости от движения или состояния смерти.

    Тут мы видим уже знакомые нам состояния Idle/Run, Jump, Dead. Но один узел совмещает в себе Idle и Run. Внутри него находится так называемый Blend Space 1D, он используется для плавного перехода анимации в зависимости от значения одной или нескольких переменных. С помощью Blend Space можно привязать скорость персонажа к переходу между анимацией Idle и Run. Кроме того, получится настроить несколько точек перехода. Например, от нуля до метра в секунду персонаж идёт медленно — это будет движение, интерполированное между анимацией Idle и Walk. А после некоторого порогового значения включается бег (Run). И всё это будет в одном узле Animation Blueprint’а, который обращается к Blend State.
    Стрелочками показаны переходы между состояниями, но, в отличие от Unity, мы можем создать Blueprint, реализующий внутреннюю логику работы этих переходов. В Animation Blueprint есть доступ к персонажу, на котором он используется, поэтому Blueprint сам обращается к его параметрам (скорость движения и т. п.). Это можно рассматривать как дополнительную оптимизацию, так как позволяет не рассчитывать параметры, которые не используются для текущего состояния персонажа.
    В Unreal существует множество инструментов для анимации. Montage представляет собой подсистему и редактор, который позволяет совмещать анимационные клипы и их фрагменты.
    Тут представлено совмещение машины состояний движения с анимацией атаки, которую мы проигрываем через инструмент Montage.

    В нижней части рисунка — фрагмент схемы Animation Blueprint, который отвечает за реакцию на выстрел из оружия. Команда Montage Play включает анимацию выстрела, затем Delay ждёт, пока она закончится, и анимация выключается командой Montage Stop. Так сделано, потому что в машине состояний анимации мы не можем задать однократное проигрывание анимационного клипа. Если анимация зациклена и соответствует какому-то состоянию персонажа, мы можем управлять анимацией через машину состояний. А если требуется проиграть один клип анимации по событию, то можем сделать через Montage.

    Проблема вложенных Prefab’ов

    Большая проблема в Unity — вложенные prefab’ы. На случай, если проблема вам не знакома, рассмотрим пример.
    Предположим, объект «стол с ноутбуком» сохранили в prefab table1, а затем понадобился второй подобный объект, но уже с зелёным цветом экрана ноутбука. Создаём новый prefab — table2, перетаскиваем в него старый ноутбук, меняем цвет экрана на зелёный, сохраняем. В результате table2, второй prefab, становится совершенно новым объектом, у него нет никаких ссылок на оригинал. Если мы поменяем исходный префаб, это никак не отразится на втором префабе. Простейший случай, но даже он не поддерживается движком.
    В Unreal, благодаря наследованию Blueprint’ов, такой проблемы нет: изменение исходного объекта отразится на всех дочерних объектах. Это пригодится не только для игровых объектов, персонажей, какой-то логики или даже статических объектов на сцене, но и для системы интерфейсов.
    С другой стороны, можно попытаться победить эту проблему в Unity, используя ассеты в Asset Store. В Unity есть плагины, расширения движка, которые так и называются — Nested Prefabs. Существует несколько подобных систем, но они немного костыльные, сделаны поверх движка, поддержки нет. Они пытаются сохранить в себе внутреннее состояние объекта. Когда запускается игровая сцена, они пробуют восстановить внутренние структуры, их поля, свойства и т. д., удаляют устаревшие объекты в сцене и заменяют их экземплярами из префабов. В результате мы получаем не только удобство вложенных префабов, но и ненужные тормоза, лишнее копирование данных и создание объектов. А если что-то в движке поменяется, то эти системы могут и вовсе отвалиться по неизвестным причинам.

    Системы UI

    В Unity нельзя сохранить в prefab элементы окон или какие-то виджеты. Можем попытаться, но возникнет та же самая проблема префабов: движок забудет о старых объектах. Поэтому зачастую в Unity мы создаём элементы управления, добавляем скрипты и потом их копируем, не создавая prefab. Если приходится добавлять в такие «виджеты» что-то новое, требуемые изменения нужно повторять вручную.
    В Unreal мы можем сохранить элементы интерфейса в виджеты (Widget Blueprint), быстро сделать на основе одних элементов управления новые. Cделали кнопку и надпись, пусть это будет наш status bar widget. На основе стандартных и новых виджетов получается быстро и удобно строить окна интерфейса. К слову, виджеты также расширяются за счет Blueprint’ов, можно описать логику их работы на визуальных схемах.
    В Unreal система редактирования интерфейсов и всех виджетов открывается в отдельной вкладке редактора. В Unity интерфейс редактируется через специальный объект Canvas, расположенный прямо в 3D-сцене и зачастую даже мешающий её редактировать.

    Преимущества и недостатки

    Для новичка значительно проще движок Unity, у него устоявшееся сообщество, множество готовых решений. Можно расширять редактор скриптами, добавлять новые меню, расширять инспектор свойств и т. п.
    В Unreal тоже можно написать для редактора свои окна и инструменты, однако это чуть сложнее, так как надо делать плагин, и это тема для отдельной статьи. Это посложнее, чем в Unity, здесь нельзя написать маленький скрипт, чтобы появилась полезная кнопка, расширяющая функционал редактора.
    Из плюсов Unreal стоит отметить визуальное программирование, наследование blueprint’ов, виджеты UI, систему анимации с множеством возможностей и многое другое. Кроме того, в Unreal Engine 4 существует целый набор классов и компонентов, рассчитанных на создание игр: Gameplay Framework. Gameplay Framework является частью движка, на нём созданы все шаблоны проектов. Классы Gameplay Framework открывают множество возможностей — от описания игровых режимов (Game Mode) и состояния игрока (Player State) до сохранения игры (Save Game) и управления персонажами (Player Controller). Особенная фича движка — продвинутая сетевая подсистема, выделенный (dedicated) сервер и возможность запуска сетевой игры в редакторе.

    Заключение

    Мы сравнили движки Unity 5 и Unreal Engine 4 на конкретных примерах и проблемах, с которыми вы можете столкнуться, начав работу с движком Unreal. Часть сложностей, присущих Unity, решена в Unreal Engine 4. Конечно, невозможно в одном докладе сделать всесторонний обзор этих технологий в полной мере. Однако мы надеемся, что данный материал поможет вам в изучении движка.

  4. Kenrad Ответить


    Хотелось ли вам когда нибудь сделать свою игру или 3D презентацию, или просто узнать как работают другие игры? Мне всегда хотелось сделать свою игру, и было интересно узнать как работают уже существующие. Не буду скрывать что одной из моих любимых игр является Unreal, работающая на движке UnrealEngine от Epic Games. Первая версия движка появилась 1998 году. На данный момент актуальная версия движка четвёртая. Кроме самой серии Unreal на движке было сделано очень много игр.
    Выпустив первую версию движка Epic Games приложила к движку UnrealEditor — редактор позволяющий делать свои уровни и моды для игры. В 2009 году Epic Games выпустила UDK который позволил делать свои игры. На мой взгляд этот движок достоин того, чтобы разобраться как с ним работать и что он может.
    Я попытаюсь описать основы работы с UnrealEngine, но в силу некоторых причин я буду описывать его в основном по второй его версии. Большинство из описанного будет работать и в UDK и в UnrealEngine4. Итак, если вас это заинтересовало, добро пожаловать под кат.

    Немного теории

    Любое действие UnrealEngine происходит на уровне(Level). Уровень в свою очередь состоит из геометрии уровня и Акторов(Actor). И, собственно, во время работы движка происходит перемещение игрока по уровням, и взаимодействие его с Акторами.
    Геометрия
    UnrealEngine использует CSG геометрию. Это значит, что изначально весь мир заполнен твёрдым веществом, и мы можем вырезать из него куски нужного нам размера и формы, либо добавлять в уже вырезанное пространство нужные нам части. То есть, что бы получить простую сцену состоящую, например, из двух комнат соединённых коридором, мы должны последовательно вырезать две комнаты и соединить их коридором. Если же мы в одной из комнат захотим добавить, например, лестницу, колонну, или просто сферу под потолком, то будет необходимо уже не вырезать, а наоборот добавить нужную геометрию. Все указанные манипуляции производятся при помощи Киcтей(Brush). Кисти можно делать разных форм и назначений. Движок также позволяет импортировать и экспортировать кисти, в текстовый формат t3d. Формат довольно простой и позволяет при знании других 3d форматов написать конвертер, так же в зависимости от версии UnrealEd(редактор уровней UnrealEngine) импортировать кисти из общепринятых форматов таких как DFX/ASC/ASE. К работе с геометрией также стоит отнести и наложение текстур на полученную геометрию.
    Акторы
    Вторая составляющая уровня это акторы. Акторы это куда более сложная вещь, чем геометрия. Если копнуть глубже, то все акторы это наследники от класса актор. Но думаю сейчас это мало, что вам скажет. Но в общем UnrealEngine объектно ориентирован, и один из базовых компонентов используемых в UnrealEngine это Actor, есть ещё более базовый Object, но они не используются напрямую на уровне. В итоге актором может быть любая вещь на уровне, как видимая так и невидимая. Например, практически всегда на уровне есть актор PlayerStart, который отвечает за место где появится игрок, или, например, актор Light отвечает за освещение уровня. Акторы также могут влиять на глобальное поведение уровня. Например, актор ZoneInfo может изменить освещение, гравитацию, фоновую мелодию и другие параметры замкнутого пространства, где он находится. А могут быть и просто декоративные акторы в виде стола, стула, торшера. В, общем, можно сказать, что всё в мире UnrealEngine — это акторы, включая вышеописанные кисти(Brush).

    Практика

    Читать всё это и не попробовать сделать что-то своё, по-моему, довольно скучно. Поэтому предлагаю сделать простой уровень. Я догадываюсь, что у многих есть какая нибудь игра из серии Unreal, с ними идёт UnrealEditor, который можно найти в каталоге System каталога игры. Вы можете попытаться использовать его. Скорее всего у вас это отлично получится, хотя могут быть небольшие отличия от описанного далее(особенно, это касается UT3 и UDK. С ними я не работал).
    Подготовка
    Для тех, у кого по каким либо причинам не оказалось игр серии Unreal, есть вариант использовать Unreal Engine 2 Runtime,. Что это такое расскажет wiki.
    Плюсы данного выбора: маленький размер, щадящие системные требования — работает на очень тормозном в плане 3D железе; нет кучи лишнего, что по началу может сильно отвлекать; бесплатен для некоммерческого использования.
    Минусы: многие вещи не работают(хотя не факт, что вы найдёте какие); мало встроенного контента, почти всё придётся делать самому.
    Для тех кто решил им воспользоватся вот ссылка на скачивание.
    Запускаем, наконец, UnrealEditor(UnrealEd.exe) и видим довольно стандартный для 3D редакторов вид с четырьмя окнами. А, именно, вид сверху, спереди, сбоку и окно с просмотром получившегося уровня. Редактор настраиваем, и можно расположить окна по разному, можно убрать ненужные или добавить новые. Делается это через меню View-ViewPorts.
    Создаём уровень
    Находим слева панель с примитивами, и делаем правый клик по кубу. Появляются свойства создаваемой кисти. Ставим ширину, высоту, и глубину равной 1024 и нажимаем Build, потом Close. В окнах проекций должен появится красный куб, это так называемая строительная кисть. Она может быть на карте только одна. Она не является геометрией, а служит только для её создания. Теперь, в окне Top щёлкаем левой кнопкой в полученную кисть, зажимаем Ctrl и двигаем мышью вправо. В, принципе, мы сейчас можем вырезать наш первый куб, но он тогда получится с текстурой по умолчанию, а она не очень красивая. Поэтому выбираем View->Show Texture Browser и подбираем там понравившуюся теустуру. Я выбрал из пакета EM_RunTime_T группа LigthWell текстура StoneBrickBig2 — просто оставьте её выделеной.
    Теперь смотрим панель с действиями над кистями и находим там действие Substract или просто выбираем из меню Brush->Substract. Вот мы и вырезали первый свой браш — это геометрия, уже пригодная для использования. Посмотреть что получилось мы можем в проекции DynamicLight.

  5. Bloodpick Ответить

    Персонаж
    Управление персонажем
    Система жизненных показателей (Жизни, броня, стамина, голод, жажда)
    Переключение вида (от первого лица и от третьего)
    Моделька (сделали во Fuse, анимации взяли с Mixamo)
    Настроенные анимации передвижения и использования оружия
    Универсальное взаимодействие с предметами
    Объектная система инвентаря
    Компонент инвентаря (встраивай в любой объект, куда хочешь)
    Клеточная система с поддержкой различного размера предметов
    Размер инвентаря по клеткам на страницу и по весу.
    Класс предметов, которые можно положить в инвентарь. Предметы хранятся в качестве объектов.
    Вес, размер, информация, состояние предмета
    Функционал для стака (когда в одной ячейке много одного предмета)
    Возможность добавить логику использования предмета
    Выбрасывание из инвентаря
    Интерфейс для взаимодействия с инвентарем
    Интерфейс для обмена между другим компонентом и своим.
    Drag&Drop манипуляция объектами между инвентарями и внутри одного.
    Контекстное менюу предметов
    Подсказки при наведении на предметы в инвентаре и в мире.
    Список генерируемых предметов при создании объекта с компонентом / начале игры.
    Список начальных предметов при создании объекта с компонентом / начале игры.
    Система торговли между другим инвентарем
    Интерфейс торговли
    Компонент менеджмента денег (необходим для работы торговли)
    Система экипировки
    Экипировка нескольких типов предметов: Шляпы, Топ, Брюки, Ботинки, Оружие
    Скелетная синхронизация у Топа, брюк и ботинок. (Шляпы и оружие по сокетам)
    Удобное окошко для экипировки с поддержкой Drag&Drop
    Поддержка логики-модификаторов при одевании
    Оружие
    Дальнобойное оружие
    Перезарядка
    Использование предметов-патронов из инвентаря
    Поддержка классов снарядов/пуль
    Автоогонь/одиночный огонь
    Отдача с разбросом (свой + от факторов, н.п. бег или приседание)
    Холодное оружие (с несколькими видами проверок на урон на выбор)
    Состояние оружия ухудшается при использовании
    Система крафта
    Крафт по рецепту (выбрал рецепт, он скрафтил, аля фоллаут)
    Крафт по предметам (закинул нужные предметы, он скрафтил, аля майнкрафт)
    Интерфейс пользователя только для второго типа крафта.
    Агрессивные мобы
    Мобы ближнего боя (если увидят, побегут и начнут бить)
    Мобы смешанного типа (стреляют, но если достаточно близко, побегут что бы ударить)
    Дальники оббегают препятствия, если не могут выстрелить.
    Есть встроенный инвентарь для лута после убийства.
    Зона спауна
    Список классов
    Шанс спауна
    NPC
    Городские NPC, патрулирующие свою зону спауна
    Уникальные NPC
    Базовый контроллер расписания для уникальных НПЦ
    Реакция на урон (убегают или используют имеющееся оружие)
    Встроенный инвентарь для лута после убийства.
    Объектная диалоговая система
    Дерево диалогов
    Каждый ответ — объект
    Для каждого ответа можно докинуть любую логику или условие доступности.
    Интерфейс диалога
    Несколько готовых классов ответа (запускает торговлю, забирает ресурсы, если есть, выходит из диалога)
    Строительство
    Класс конструкций, которые поддерживают размещение
    Использование предметов-ресурсов из инвентаря при размещении.
    Снаппинг на некоторых типах конструкций (н.п. Стены, фундамент, окна)
    Менюшка с конструкциями
    Подсвечивание конструкций, на которые хватает ресурсов
    Дополнительно
    Небольшая карта с городом, лесом, водоемами (можно плавать).
    Система смены дня/ночи
    Автомобили
    Вид от первого или третьего. Общее с персом
    Включение/выключение фар.
    Встроенный компонент инвентаря (нужно взаимодействовать у багажника)
    Кое как работающие лестницы вертикального типа.
    Главное меню
    Меню паузы
    Меню с настройками графики

  6. Brandis Ответить

    Горячие клавиши используют все. Банальные Ctrl+C и Ctrl+V, а сколько раз выручал Ctrl+Z? Ну а Alt+F4? А если вспомнить количество негативных отзывов, когда в новых MacBook Pro добавили тачбар и вырезали ряд командных клавиш?
    Увидел хороший гайд по полезным хоткеям и небольшим советам в Unreal Engine, которые точно упростят левел-дизайнерам жизнь. Перевод под катом.

    Меня зовут Якуб Пандер. Я гейм- и левел-дизайнер в Carbon Studio, где мы создаем VR-игры практически для всех возможных платформ. В этой статье я поделюсь тем, чему научился за три года работы с Unreal Engine 4 и расскажу, как оптимизировать воркфлоу дизайнера с помощью горячих клавиш и других полезных приемов.
    Идея для статьи возникла, когда я начал писать фоллоу-апы своим ученикам, которые создавали прототипы своих самых первых уровней на Unreal Engine. Из-за недостатка опыта некоторые из них боролись с базовыми действиями и задавали: «Как разместить блоки в pixel perfect grid», «Могу ли я переместить половину уровня чуть выше», «Нужно ли мне копировать этот элемент по частям» и другие. С самого начала своего знакомства с Unreal я старался найти любую свободу действий, которая помогла бы мне более эффективно выполнять самые элементарные задачи. В процессе поиска каждый полезный шорткат или подсказка попадал в мой виртуальный блокнот, который рос в течение нескольких месяцев.
    Я разделил шорткаты на две категории: Базовые и Расширенные. Базовые будут полезны для всех, кто начинает работать с UE4, и для тех, кто уже имеет небольшой опыт. Расширенные подойдут тем, кто хочет использовать UE4 более эффективно.
    Комбинации клавиш можно изменить или добавить самостоятельно: Edit > Editor Preferences > Keyboard Shortcuts.

    Горячие клавиши

    Выбор (Selection)

    Выбор, группировка и расположение ассетов (в основном мешей) — основные инструменты, которые облегчат вашу работу. Дальше самые полезные команды.
    Базовые:
    Group и Ungroup (Ctrl + G/Shift + G)
    Это позволяет пользователям организовать ассеты в кластерах для будущего использования или расположить части уровня.
    Unlock и Lock (ПКМ > Group)
    Разблокировка позволяет перемещать или удалять отдельные ассеты. Блокировка снова объединяет всю группу.

    Toggle group mode (Ctrl + Shift + G)
    Включает/выключает выбор групп или отдельных ассетов в них.
    Select object’s level > set as current (M)
    Забыли, на каком уровне находится выбранный вами ассет? Нажмите «M», и движок установит уровень ассета как текущий.
    Select all (Ctrl + A)
    Это, вероятно, знают все. Может показаться излишним, за исключением случаев, когда вы сначала скрываете ненужные ресурсы, а затем нажимаете Ctrl + A. Шорткат удобно комбинируется с Select by class.
    Расширенные:
    Select by class и Invert selection (ПКМ > Select > Select Matching (Selected Class))

    Также в меню ПКМ > Select находится много полезных опций, благодаря которым можно сразу выбрать объекты, подходящие определенным критериям (выбрать аналогичные, выбрать с таким же материалом, инвертировать выбранное и другое).
    Хотите выбрать все блюпринты дверей и ничего больше? Можно. Могу ли я выбрать все с помощью материала M_SelectMe? Конечно. Но я хочу выбрать все, кроме блюпринтов дверей! Без проблем. Делайте так:
    ПКМ в Content Browser > Asset Actions > Select Actors Using This Asset
    Это полезно в тех случаях, когда нужно выделить больше объектов с общими элементами (быть тем же самым блюпринтов, использовать тот же материал, быть всем остальным, но не нужным объектом).

    Преобразование (Transform)

    Преобразование — это хлеб и масло левел-дизайна в UE4. Если вы освоите это, то можете ускорить работу на 200 процентов.
    Базовые:
    Cycle transform (пробел) и Transforms (W/E/R)
    Плавный переход от масштабирования («R»), затем перевод (moving — «W») объекта к вращению («E») имеет важное значение. Как левел-дизайнер вы будете делать это постоянно, поэтому нет необходимости менять transform на что-либо другое, кроме нажатия нужных шорткатов или пробела.
    World/Local Transformation

    В этом примере мне нужно переместить объект влево, но не влево от мира, а влево от объектов. Это удобно, когда вращение объекта (или всего остального) не связано с окружающим миром.
    Snap to floor (End)

    Этот стул должен стоять на полу, верно? Не нужно вручную перемещать его. Просто нажмите End и все готово.
    Если стул с чем-то пересекается, то End его может не опустить. В таком случае поможет команда Shift + End, которая опускает объект не по якорной точке, а по нижней границе. Вы можете найти другие полезные функции привязки: ПКМ > Transform > Snap/Align.
    Расширенные:
    Snap to grid
    Хотите создать идеально подогнанный лабиринт? Сделайте привязку и меняйте размер снаппинга:

    Помните о правильном масштабе объектов, чтобы их можно было правильно расположить.
    Set pivot position (ПКМ > Pivot > Set pivot offset here)

    Иногда разместить объект может быть сложно, даже если его ось находится в правильном месте. Тогда почему бы нам не переместить ось? Мы можем поместить ее туда, куда только что нажали (Alt + СКМ) или туда, куда хотим, перетащив его с помощью СКМ. Также можно снаппить ось к вертексам, что очень полезно для модулярки (V + СКМ).
    Attach actor (ПКМ > Attach to > Напишите имя объекта/Выберите объект)

    Прикрепление Actor будет полезным в нескольких ситуациях. Просто помните, что оба объекта должны иметь одинаковую настройку Mobility (static/moveable). Это не обязательно. Но может возникнуть проблема, если попытаться подвинуть мобильный объект уже в игре, к которому привязан статичный объект.

    Ориентация (Orientation)

    Здесь я опишу некоторые ориентационные методы, которые пригодятся при осмотре, редактировании и демонстрации ваших уровней.
    Базовые:
    Focus (F)

    Нашли или выбрали объект внутри world outliner, и думаете, что он так далеко, что прокручивать до него придется дольше нескольких секунд? Нажмите F. Вы сфокусируетесь на выбранном объекте и немедленно переместите камеру поближе.
    Outlines (G)

    Нажатие G скрывает все полезные инструменты в области просмотра (сетки, повороты, контуры, значки и многое другое). Идеально подходит, чтобы увидеть чистый игровой уровень.
    Set camera (Ctrl + 1-9)

    Вы построили огромный уровень, в котором перемещение от начала до конца занимает больше времени, чем хотелось бы. Сделайте этот процесс проще и разместите несколько чекпоинтов с помощью Ctrl + 1-9 и возвращайтесь к ним через 1-9. Например, Ctrl + 1 можно поставить в начале уровня, 2-8 будут важными местами, а 9 будет концом.
    Fullscreen (F11)
    Уровень будет играться, тестироваться, демонстрироваться и проверяться в полноэкранном режиме гораздо более удобно.
    Совет: Shift + F11 вызывает редактор поверх панели задач.
    Расширенные:
    Translucent selection (T)
    Вы когда-нибудь сталкивались с ситуацией, когда нужно нажать на меш в области просмотра, но вместо этого случайно выбирается что-то другое? Или, может быть, вы хотите щелкнуть на определенном полупрозрачном окне, но курсор выделяет объект за ним? Возможно, это вина Translucent Selection. С помощью кнопки T можно включать и выключать выбор полупрозрачных объектов. Теперь вы можете щелкать по стеклу, воде, лучам и другим.
    View Modes (находятся в одноименном меню)

    Пригодятся абсолютно в разных ситуациях.
    Show navigation (P)

    В проектах, использующих навигацию Unreal, важно заметить, могут ли какие-либо объекты на уровне заблокировать путь ИИ или игроков.
    Perspective/side/top/front view (Alt + G/K/H/J)

    Если вам нужна архитектурная точность при создании уровней, то взгляд с различных перспектив может помочь. Ещё можно назначить «пробел» на максимизацию и минимизацию вьюпортов — в настройках хоткеев называется Maximize Viewport. Это очень полезно и удобно, когда занимаешься левел-дизайном.
    Snap object to view and view to object

    Для меня этот трюк оказался наиболее полезным, когда я хотел поместить камеру в нужное место. Привязка выбранного объекта к камере изменяет не только его местоположение, но и вращение. Поэтому камера будет указывать именно туда, куда вы смотрите в области просмотра.

    Другие

    Вот несколько горячих клавиш, которые не подходят в предыдущие разделы. Но они тоже весьма полезны.
    Find asset in Content Browser (Ctrl + B)
    Данный шорткат будет полезен для поиска выбранного ассета и его папки.
    Find in Level Blueprint
    Хотя у этой команды нет шортката по умолчанию, я предлагаю создать свой собственный в настройках редактора. Это позволит вам автоматически выполнить поиск выбранного объекта на блюпринте уровня и показать, куда на что он ссылается.
    Play > Simulate (Alt + P/Alt + S)
    Пропустите нажатие на стрелку для воспроизведения или симуляции уровня (или активируйте функцию воспроизведения, когда стрелка скрыта — например, в полноэкранном режиме). Я рекомендую установить собственные горячие клавиши. Лично я использую Alt + Q для воспроизведения в VR, Alt + S для симуляции и Alt + P для воспроизведения в редакторе.
    Open level (Ctrl + O)
    Комбинация клавиш делает открытие уровней быстрее и непринужденнее.
    Show references (Alt + Shift + R)
    Проверьте, ссылается ли конкретный ассет на другой блюпринт, уровень, материал и т.д. И быстро найдите зависимости.
    Tab Navigation (Ctrl + Tab)

    Если у вас много открытых вкладок (материалов, мешей, блюпринтов и т.д.), вы можете перелистывать их с помощью клавиши Ctrl.

    Заключение

    Эти хоткеи — малая часть возможных способов оптимизации и организации воркфлоу в Unreal Engine, попробуйте. Помните, что всегда можно изменить клавиши в Edit > Editor Preferences > Keyboard Shortcuts. И не забудьте экспортировать их в качестве бэкапа для следующих проектов.
    Большинство горячих клавиш появляются из-за вопроса: «Я делаю (определенные действия) так часто, можно ли сделать это удобнее?»

  7. imhotepp Ответить

    Эти видео очень помогли мне в начале и стали фундаментом.

    Очень сложный способ построения ландшафтов

    Рельеф был очень сложным. Проиллюстрирую процесс создания, чтобы все поняли:

    Источник: Создание местности в Houdini
    Шучу. Это слишком просто.

    Эффект реки

    Первые шаги на 100% скопированы из туториала Бена, и они крутые. Сначала вы создаете сплайн и даете ему «упасть» на местности. Это делается путем считывания высоты рельефа в точках сплайна, а затем перемещения точек на эту высоту:

    Затем вы позволяете сплайн-точкам «скатиться» вниз по склону, чтобы лучше интегрировать реку в рельеф:

    На самом деле, они не скатываются физическим способом. Вместо этого используется базовая нормаль поверхности и нормаль точки для вычисления локальной оси для каждой точки (которая перемещается от сплайна вниз по склону). Затем вы немного перемещаете точки вдоль расчетной оси (этот процесс очень хорошо показан в видео Бена).
    Следующий шаг — убедиться, что река не течет вверх по течению из-за ландшафта (потому что есть небольшой холм, где река идет вдоль).

    Небольшой скрипт на Python гарантирует, что точка сплайна в 3D-пространстве никогда не будет выше, чем предыдущая:

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

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

    Давайте быстрее перейдем к созданию геометрии реки, так как все это прекрасно объяснено в видео Бена. Наиболее важным моментом является то, что только внешние края реки снова выравниваются с рельефом (как мы это делали со сплайном в первую очередь):

    Деформирование ландшафта согласно потоку

    Опять же, это 100% рабочий процесс Бена, начинающийся с перемещения рельефа ниже геометрии реки, чтобы они никоим образом не пересекались:

    Затем для каждой точки местности вы проводите лучи вверх. Если они попадают в геометрию реки, то эти точки переместятся вверх в место попадания:

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

    На этой гифке видно, что происходит при изменении сплайна:

    Затем область высоты ландшафта преобразуется в полигоны и повторно перемешивается. Теперь она готова для использования в Unreal:

    Теперь поговорим о UV-преобразовании, материалах, картах течений и многом другом.

    Геометрия реки

    Геометрия реки, которую вы видели раньше, была использована только для вырезания местности. Настоящая река немного тоньше, имеет UV и была разделена (обратите внимание, что мои цвета склонов все еще там):

    Генерация UV

    Поскольку сплайн всегда варьируется по длине, UV должен адаптироваться к этому. К счастью, это очень легко в Houdini. Сначала вы создаете UV в 0-1-UV-Space, а затем измеряете длину сплайна. Это значение можно использовать для масштабирования UV. Здесь вы видите, как я меняю сплайн, а в нижней части — как UV автоматически адаптируется. Поверьте мне, если вы однажды попробовали это, то больше никогда не захотите создавать UV вручную.

    Русло

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

    А вот пример с использованием маски в материале для присвоения различных значений расплывчатости и шероховатости:

    Карта течения

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

    Можно добавить еще один нод, который заставит карту потока реагировать на препятствия. Теперь вода потечет вокруг них:

    И самое крутое: вы можете вызвать запекание карты потока в Unreal! Нет необходимости переключаться между Unreal и Houdini. Просто выставьте кнопку Render в Houdini в качестве параметра. Здесь вы видите, как я меняю препятствия, а затем визуализирую новую карту потока (учтите, что запекание занимает больше времени, чем на гифке):

    Маска пены

    Чтобы сделать пену на воде вокруг препятствий, я использую так называемый нод isoOffset. В основном он хранит расстояние до объекта в цвет вершины реки. Затем я добавил немного шума и маска готова:

    Чтобы сделать маску пены менее статичной, я использую простой облачный шаблон Photoshop, который перемещаю вдоль реки и вычитаю его из оригинальной маски:

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

    Системы частиц

    Я отметил, где находятся верхняя и нижняя части моего каскада, поэтому могу фильтровать эти элементы (линии использовались для создания геометрии реки), создать точку в их центре и скопировать в нее dummy-box. Позже заменим ее на систему частиц в Unreal:

    Для частиц вокруг препятствий я использую нод под названием Intersection Analysis, чтобы получить пересечение препятствий и реки. Эти ребра пересечения имеют точки. К их случайному числу я снова копирую dummy-box (который позже обменивается с системой частиц в Unreal):

    Так это выглядит, когда я заменю dummy-boxes в Unreal:

    Экспорт проекта в Unreal

    Так называемый движок Houdini представляет собой плагин для Unity, Unreal, 3ds Max, Maya и Cinema 4D и выполняет сети нод, которые вы создаете в Houdini непосредственно в указанных программах. Мне нужно сделать так, чтобы появилась местность и река для сохранения Houdini-файла как цифрового ассета. Его можно импортировать и использовать, как любой другой ресурс в Unreal:

    Теперь я могу изменить параметры (которые я выставил в Houdini) или изменить сплайн, чтобы река текла другим путем:

    Материалы по-прежнему создаются и назначаются в Unreal, но вы можете назначить их предварительно (ниже мой туториал об этом).

  8. VideoAnswer Ответить

Добавить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *