Туториал по unreal engine: c++

О материалах

материал

Что такое «материал»?

  • Base Color: цвет или текстуру поверхности. Используется для добавления детализации и вариаций цвета.
  • Metallic: насколько металлическим выглядит материал. В общем случае, чисто металлический объект имеет максимальное значение Metallic, а ткань — значение 0.
  • Specular: управляет блеском неметаллических поверхностей. Например, керамика будет обладать высоким значением Specular, в отличие от глины.
  • Roughness: поверхность с максимальной roughness (шероховатостью) не будет иметь никакого блеска. Используется для таких поверхностей, как камень и дерево.

Редактор материалов (Material Editor)

  1. Graph: в этой панели содержатся все ноды (узлы) и нод Result. Перемещаться по панели можно, удерживая правую клавишу мыши и двигая мышью. Масштабирование выполняется прокруткой колёсика мыши.
  2. Details: здесь отображаются свойства выбранного нода. Если нод не выбран, то здесь отображаются свойства материала.
  3. Viewport: содержит меш предварительного просмотра, представляющий материал. Поворачивать камеру можно, удерживая левую клавишу и двигая мышь. Масштабирование выполняется прокруткой колёсика мыши.
  4. Palette: список всех нодов, доступных для вашего материала.

Добавление текстур

текстураBanana_Texture.jpgTextureSampleTextureSampleлевую клавишу мышиперетащив
TextureSampleраскрывающийся списокTexture
Banana_Texture
Resultлевую клавишу мышибеломTextureSampleПеретащитеBase ColorResult
Apply

GeekBrains

Факультет разработки игр на Unreal Engine 4

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

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

I четвертьJunior C++ Developer
Вы начнете осваивать технические основы профессии: поиск информации и основные операции с файлами, научитесь создавать и оптимизировать сложные запросы.

II четвертьОсновы Unreal Engine 4
Освоите основные методологии, которые используются при работе с UE4. Разработаете собственные компоненты и реализуете игровой инвентарь, который будет хранить данные о предметах игрока и загружать их с различных платформ.

III четвертьКроссплатформенность и мультиплеер в UE4
Научитесь работать с кроссплатформенностью в Unreal Engine 4, разберете системы анимаций и искусственный интеллект. Разберёте основные моменты в динамической загрузке данных и напишете две мультиплеерные игры.

IV четвертьUnreal Engine 4 OpenWorld
Разберёте тулзы и подходы в UE4 для создания открытых миров, а также техники оптимизации. Разработаете 2D-игру, двухмерный платформер и научимся работать с материалами в движке.

Нарратив

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

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

Чтобы разложить идеи в сценах мы сделали раскадровку. Отсюда мы начали процесс редактирования, чтобы выдержать ритм истории и самого мира. Так получилось выделить места, где надо что-либо вырезать, и места, где надо что-либо добавить для поддержания интереса и понятности сюжета.

Для создания сцен в реальном времени мы решили использовать Unreal Engine Sequencer. Мы хотели сохранить стандарты игровой индустрии, иметь адекватный фреймрейт и устранить пост-продакшн. С Unreal Engine мы могли поддерживать эти стандарты и создать то, что мы хотели, соответственно техническим возможностям.

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

Создание Pawn игрока

BlueprintsBlueprint ClassCharacterBP_Player
CharacterCharacterMovement
WASD

Создание привязок движения

Edit\Project SettingsInputAxis MappingsMoveForwardMoveRight
MoveForwardWSScaleS-1.0
вперёдположительномотрицателенназад
MoveRightDAScaleA-1.0

Реализация движения

BP_PlayerMoveForwardAxis Events
Axis ValueScale1W-1SAdd Movement Input
Add Movement InputScale ValueCharacterCharacterMovementGet Actor Forward Vector

  1. MoveForward выполняется каждый кадр и передаёт на выход Axis Value. Это значение будет равно 1 при нажатии на W и -1 при нажатии на S. Если не нажимать ни одну из этих клавиш, то на выходе будет .
  2. Add Movement Input умножает вектор forward Pawn на Scale Value. Благодаря этому в зависимости от нажатой клавиши вектор будет направлен вперёд или назад. Если не нажимать клавиши, то вектор не будет иметь направления, то есть Pawn не будет двигаться.
  3. Компонент CharacterMovement получает результат из Add Movement Input, после чего двигает Pawn в этом направлении.

MoveRightGet Actor Forward VectorGet Actor Right Vector

Технические трудности

Главной трудностью было коллективное изучение всего и сразу в Sequencer’е, нашем главном инструменте. От камер и таймингов до специфического управления визуальными эффектами, мы были готовы нырнуть в него с головой.

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

Для шейдеров и эффектов, основывающихся на узле “Time”, но не требующих точности, была найдена альтернатива: узел был полностью заменен регулируемой переменной с прямым линком в Sequencer через Material Parameter Collections. Этот подход позволил нам создать множественные переменные, контролирующие все части шейдеров: от времени наполнения цветом до того как “волнисто” двигается ударная волна. Разносторонность поражала: живой контролируемый визуал, редактируемый художниками, включая материалы постобработки.

Техническая особенность, которая заняла большинство времени разработки — эффект ударной волны/ глитча: необходимо было создать ей импульс, и мы хотели, чтобы она отличалась от голограмма-подобных эффектов. Был необходим контроль, поскольку нарратив позволял им воздействовать лишь с естественными ассетами, такими как олень, поляна и монолитное дерево. Таким образом мы создали функцию материала “Glitch” для пост-обработки. Ударная волна и экраны в ванной комнате — это простой перегруз ультрафиолетового излучения, но какой гибкий!

В центре эффекта глитча/ ударной волны было перемещение горизонтальных полос, чтобы деформировать ультрафиолетовое излучение целевого объекта. Применение к “Masked” материалам создало перегруженный силуэт, в то время как применение к экранам в пост-обработке перегрузило всю картинку, словно реальный глитч, без ограничений по геометрии или типе материала, давая результат как на изображении ниже:

Комментирование и группировка узлов: Just do it.

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

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

Вопросы и ответы

1. А когда выйдет Unreal Engine 5, этот курс будет актуален?
Unreal Engine 5 выйдет ориентировочно в конце 2021-го года. По заявлениям разработчиков будет иметь место обратная совместимость. То есть проект, созданный в, например, версии 4.25, без проблем откроется и будет работать в 5.0. А это означает то, что в плане создания игр на Unreal Engine ничего принципиально не изменится. Таким образом, курс и знания из него остаются полностью актуальными. Сами разработчики не скрывают, что выход Unreal Engine 5 — это просто маркетинговый ход. И отличаться Unreal Engine 5.0 будет от какой-нибудь 4.30 так же, как 4.25 от 4.24 или 4.24 от 4.23. И, как я понял (это уже мои догадки), этот маркетинговый ход они сделали для того, чтобы все услышали и узнали о новой системе оплаты движка. Так вот теперь платить 5% надо только, если Вы заработали на проекте больше 1 000 000$. И это отличная новость, которая полностью убивает всех конкурентов! Фактически, движок стал абсолютно бесплатным для всех, кроме тех, кто зарабатывает с его помощью целые состояния. Более того, те, кто в 2020-м году заплатили за движок 5% от продаж, получат эти деньги назад. Я думаю, что теперь ни у кого не осталось сомнений, что Unreal Engine — это движок №1 в мире.

2. Какое разрешение у видео?
FullHD (1920×1080)

3. Какова продолжительность курса?
Курс состоит из 184 уроков общей продолжительностью более 41 часа.

4. Актуальная ли информация в курсе?
Это курс 2020-го года, поэтому, безусловно, да, информация актуальная. А когда она становится уже не совсем актуальной, то курс снимается с продаж и выпускается его новая версия.

5. Можно ли оплатить картой в гривнах/долларах/евро?
Да, можно. При оплате произойдёт автоматическая конвертация по курсу Вашего банка.

6. Карты МИР принимаются?
Да, принимаются.

7. Выдаётся ли сертификат?
Да, сертификат выдаётся.

8. Есть ли упражнения в курсе?
Да, упражнения идут практически к каждому уроку, за исключением нескольких чисто теоретических уроков.

9. Есть ли защита у курса? Можно ли будет его посмотреть на разных компьютерах?
Защита у курса есть. Активировать его можно будет на 3-х различных устройствах.

10. После переустановки операционной системы потребуется ли замена лицензионного ключа?
Нет, не потребуется, так как лицензионный ключ привязывается к «железу» устройства, а не к его операционной системе.

11. Нужен ли доступ в Интернет для просмотра уроков?
Интернет нужен только во время активации, которая проводится лишь единожды. Для последующего использования курса Интернет не обязателен.

12. Можно ли будет посмотреть курс на Mac?
Да, можно будет.

13. Можно ли заказать курс на дисках?
Да, можно. Для этого при оформлении заказа надо указать способ доставки: «По почте»

Однако, обратите внимание, что этот способ дороже, так как требует оплату изготовления бокса, дисков (10 штук), а также стоимости самой доставки.

14. Нужно ли знание английского языка?
Для успешного прохождения курса точно не нужно

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

15. У меня остались ещё вопросы. Куда мне их написать?
Любые вопросы можете задать в мою службу поддержки: https://support.myrusakov.ru/ask

Стрельба методом HitScan

В игровой индустрии распространены два основных метода стрельбы. Физическими пульками, которые действительно летят по баллистике и врезаются в объекты. И так называемая лучевая стрельба (или же HitScan). HitScan выстреливает лучем (без баллистики) и поражает цель мгновенно. Такой подход используется в огромном количестве современных соревновательных и не только игр.

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

Итак, первое, что нам нужно сделать — понять, что игрок нажал ЛКМ. Для этого идем в EventGraph, нажимаем ПКМ по пустой области и ищем ноду Left Mouse Button.

Нас интересует нажатие на кнопку, поэтому мы будем работать с выходным пином Pressed. По знакомой схеме ищем ноду LineTraceByChannel, именно она будет запускать луч. Соединяем эту ноду с пином Pressed.

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

Помочь получить проекцию двумерного экрана на трехмерный мир нам поможет нода Deproject Screen To World.

Из нод, что вы видите на скриншоте, соберите вот такую конструкцию.

Deproject Screen To World принимает PlayerController (о нем не сегодня) и позицию экрана в пикселях, чтобы нам получить центр экрана — нам необходимо взять размеры всего экрана и поделить их пополам с помощью ноды деления (ее можно найти как Vector2D/float). Теперь в пине WorldPosition будет проекция экранной плоскости на 3Д мир — эта точка пойдет, как точка начала луча. Соединим все как показано ниже.

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

Предположим, что хотим пускать луч на 10000 едениц вперед (кстати по умолчанию единица в координатах — это 1 сантиметр). Таким образом пользуясь вектором направления создаем вот такую конструкцию.

И единственное, что нам осталось — это добавить отрисовку нашего луча. Нажимаем на стрелочку на ноде трейса и ставим настройки как на скриншоте ниже.

Не забываем нажать кнопку Compile и идем тестировать в игре.

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

Выдаем оружие персонажу

Сейчас нам в первый раз нужно будет взаимодействовать с так называемым Блупринтом персонажа. Для того, чтобы открыть редактор — нужно найти блупринт персонажа (ранее мы перетаскивали его на игровую карту) и два раза кликнуть по нему.

Вы увидите что-то похожее на скриншот ниже

Нас сейчас интересуют вкладки Construct script и Viewport. Во viewport мы можем увидеть как будет выглядеть то, что мы насоздавали в нашем блупринте в игровом мире. А в Construction script находится логика, которая выполняется каждый раз, когда мы меняем положение нашего персонажа в редакторе в сцене и/или когда персонаж появляется в игровом мире. В дальнейшем воспринимайте Construction script как кусок кода, который выполняется всякий раз, когда персонаж проходит инициализацию (в т.ч. и после изменения свойств). Открываем вкладку Construction script. Видим следующее.

Перемещаться по рабочей области мы можем, зажав ПКМ.

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

Мы видим, что на нашем персонаже уже есть компоненты. Теперь кратко по каждому.

  • Capsule Component (коллизия, то, что позволяет нашему персонажу соприкасаться с окружающим его миром, для столкновений в играх используется облегченная модель коллизий, такие как капсула — для упрощения расчетов и увеличения FPS, как следствие)

  • Arrow (визуальная стрелочка, которая не отображается в игре, полезна исклютельно для редактирования и удобства работы дизайнеров)

  • Mesh (тело нашего персонажа, именно этот компонент отвечает за то, что тело отображается, а также именно на нем проигрываются все анимации)

  • CameraBoom (умный компонент, который следит за положением камеры и приближает ее к персонажу, если она упирается в стену. таким образом мы не проходим сквозь стену нашей камерой)

  • PlayerCamera (камера от лица которой мы видим все происходящее в игре)

  • Character Movement (наделяет нашего персонажа возможностью передвигаться, прыгать, плавать, летать и делать очень много всего. у меня есть информация еще не для одной статьи именно про него)

Нам нужно добавить оружие. Нажимаем на Add Component и ищем Skeletal Mesh и перетаскиваем его на компонент Mesh, чтобы закрепить компонент на теле нашего персонажа.

Теперь нужно поставить модель нашего оружия внутрь этого компонента, чтобы оно отображалось. Я выберу AK 47.

Но, как мы видим, оружие находится не в руках у персонажа, а в ногах. Вот именно здесь мы и используем Construct Script. Заходим внутрь Construct Script, жмем ПКМ по пустой области и находим команду (в дальнейшем буду называть их нодами) Attach Component To Component (Skeletal mesh). После добавления оно должно выглядеть вот так.

Теперь нам нужно с помощью простого зажатия обведенного Пина (соединения) соединить эти две ноды как показано на скриншоте ниже. Таким образом после команды Construction Script (а точнее не команды, а начала функции) выполнится команда AttachComponentToComponent.

Как понятно по названию, нода прикрепляет один компонент к другому. У нас уже указан Target (т.е. то, что мы прикрепляем), но не указан Parent (к чему мы будем крепить Target). Просто перетягиваем Drag&Drop операцией компонент Mesh на граф и подсоединяем его в Parent.

Далее нам необходимо указать кость, на которую будет крепиться оружие. Указывайте hard_r в поле Socket Name.

Должно получиться вот так.

Для того, чтобы наш персонаж обновился — нужно нажать кнопку Compile внутри нашего блупринта.

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

Ура! У нас есть оружие.

Обновление виджета

CompileWBP_HUDDesignerCounterTextIs Variable
CounterText

Создание функции обновления

Graph+Functions
UpdateCounterTextEntry
CounterTextShapesCollectedGameManagerПеретащите левой клавишей мышиGet Shapes Collected
SetText (Text)CounterTextПеретащите левой клавишей мышиSetText (Text)
SetText (Text)TextShapesCollectedIntegerIntegerTextShapesCollectedIn TextSet Text (Text)ToText (int)
EntrySet Text (Text)

  1. При вызове UpdateCounterText функция получает переменную ShapesCollected от BP_GameManager
  2. Нод ToText (int) преобразует значение ShapesCollected в тип Text
  3. SetText (Text) задаёт текст CounterText из значения ToText (int)

UpdateCounterText

Вызов функции обновления

UpdateCounterTextShapesCollectedIncrementShapesCollected
CompileBP_GameManagerUpdateCounterTextWBP_HUDHUDWidget
перетащите правый контактSet HUDWidgetотпуститеUpdateCounterTextCounterTextShapesCollected
FunctionsДважды щёлкнитеIncrementShapesCollected
HUDWidgetПеретащитеотпуститеUpdateCounterText
IncrementShapesCollectedShapesCollectedUpdateCounterTextCounterTextShapesCollectedCompileBP_GameManagerPlayCounterText
TimerTextпривязкой

Keencentre

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

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

Онлайн курс Unreal Engine для детей – это возможность изучить основы движка Unreal, освоить анимацию и дизайн персонажей, создать реалистичное окружение и собственный проект – интересную игру.

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

В этом курсе ребенок:

  • Изучит базовый C ++
  • Создаст собственную 3D игру
  • Научится Blueprint программированию
  • Пройдет 9 захватывающих квестов
  • Выполнит 54 задания программирования
  • Изучит каждый раздел разработки игры в полном цикле
  • Настраивать игровые объекты различных типов и проектировать трехмерные сцены

UNREALSKILLS

Стартовый курс по работе в движке Unreal Engine 4.

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

Как проходит курс:

  • Консультации по любым возникающим вопросам касательно движка и курса от автора проекта.
  • Закрепляйте пройденный материал проходя тесты и выполняя домашние задания.
  • Гарантия качества: возврат полной стоимости в течение 7 дней при прохождении курса менее чем на 30%.
  • Уделяйте по 1-2 часа в день на изучение движка в любое удобное время.
  • Общайтесь с единомышленниками, получайте обратную связь по домашним заданиям в группе курса VK.

Структура курса:

  • Введение. Знакомство с движком. Скачивае и становка Unreal Engine 4, создание первого проекта, разбирете интерфейс редактора, особенности навигации в 3D-пространстве и важные настройки проекта.
  • Работа с объектами. Научитесь манипулировать объектами, изучите привязки и освоите расстановку объектов в сцене. Основы ООП, классы, наследование, работа с компонентами в UE4.
  • Виды контента. Учитесь работать с различными типами файлов, доступных для импорта в движок, и создания внутри редактора. Импорт 3D-моделей, текстур, звуков, скелетной анимации, создание материалов, звуков.
  • Материалы. Знакомство с редактором материалов Unreal Engine 4: создание собственных PBR-материалов. Бонус: создание Parallax-материал.
  • Освещение. Основные типы источников света, их параметры и важные свойства. Научитесь запекать свет в текстуры и настраивать качественное непрямое освещение сцены. Работа с пост-процессингом в движке.
  • Blueprints. Освоите язык визуального программирования Blueprints, нодовый редактор кода, изучите макросы и функции. Программирование небольших зарисовок игровой логики.

Создание туннелей в точке спауна

CompileBP_TunnelSpawnerBP_TunnelSpawnPointсамого дальнего
SpawnTunnelНажмите правой клавишей мышиReturn ValueSpawn Actor From ClassPromote to VariableNewestTunnel
SpawnTunnelAtSpawnPoint
SpawnPointBP_TunnelBP_TunnelSpawnerBP_TunnelSpawner

Создание ссылки на спаунер туннелей

CompileSpawnTunnelAtSpawnPointBP_TunnelTunnelSpawnerVariable TypeBP_TunnelSpawner\Object Reference
CompileBP_TunnelSpawnerSpawnTunnel
BP_TunnelSpawnerBP_TunnelSpawnerTriggerZone

Скриптинг зоны триггера

CompileBP_Tunnelнажмите правой клавишейTriggerZoneAdd Event\Add OnComponentBeginOverlap
ActorTriggerZoneActorTriggerZoneПеретащитеOther Actorлевую клавишу мышиCast to BP_Player
Примечание:концеTriggerZoneCast to BP_PlayerOther ActorCast to BP_Player

  1. Когда Actor касается TriggerZone, выполняется нод On Component Begin Overlap (TriggerZone)
  2. Нод Cast to BP_Player проверяет, является ли касающийся актор игроком
  3. Если это игрок, то BP_TunnelSpawner создаст новый туннель. Его местоположение будет находится в компоненте SpawnPoint последнего созданного туннеля.
  4. Поскольку старый туннель уже не нужен, игра удаляет его с помощью нода DestroyActor

CompilePlayвыглядят

Гарантия

Я занимаюсь обучающей деятельностью с 2010-го года, за это время я записал десятки и десятки как платных, так и бесплатных видеокурсов по самым различным темам, прямо или косвенно относящихся к программированию (https://blog.myrusakov.ru/courses.html).

Разумеется, у меня много тысяч клиентов из множества стран мира. И, безусловно, часть из них просила деньги назад по самым разным причинам: передумали заниматься, купили случайно повторно (забыв, что покупали его уже раньше), не подошёл сам курс.

По моей статистике, клиентов, просящих у меня возврат, примерно 1%. Учитывая такое малое количество возвратов, мне нет смысла отказывать в них. Более того, я уже много лет даю безусловную гарантию. То есть независимо от причины, возврат Вам будет сделан.

1% прибыли – это копейки по сравнению со стоимостью той репутации, которую я копил столько лет. Поэтому Вы можете быть уверены в том, что либо Вы останетесь довольны курсом, либо получите все уплаченные за него деньги назад.

Срок действия гарантии составляет 30 суток с момента оплаты.

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

Анимации

В «Fortnite» персонаж состоит из 5 основных частей: Базового Скелета, головы, тела, рюкзака и оружия. «Базовый Скелет» это пустой скелет без какой либо информации о внешности. Каждая часть анимации имеет свой собственный AnimBP и все они выполняют свои процессы после CopyPose с «Базового Скелета», например, симуляция физики. Это решение очень гибкое и удобное, но несет большие трудности с точки зрения эффективности обработки. Так как у нас 100 игроков, что означает что около 500 SkeletalMesh, которые необходимо постоянно обрабатывать в GameThread. Мы конечно можем применить LOD к мешу, не сильно, но он уменьшит количество костей, но эти расчеты костей проводятся в WorkerThread.

Есть несколько альтернатив данному решению, например Mesh merge, который использовался в «Unreal Tournament», но оно несет свои проблемы. Во-первых, увеличивается количество используемой памяти, так как каждый игрок имеет свою уникальную сетку. Во-вторых, этот подход теряет какую либо гибкость. Ведь каждая часть может иметь свою собственную уникальную логику и если материалы объединить, уникальность анимации может исчезнуть.

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

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

(Подробнее можно ознакомится с методами в оффициальной окументации)

Процесс обновления анимации в Unreal Engine разделен на 3 этапа. Сперва выполняется операция обновление в GameThread. Обновление используется для расчета некоторых значений, таких как веса например. Следующим шагом идет тяжелый процесс по обработке Eval, такие как анимация, декомпрессия, смешивание(blend) и т.д. И завершает этот процесс запуск Notify и отправку данных в RenderThread.

«Создание ММОРПГ на Unreal Engine 4»

https://youtube.com/watch?v=videoseries

Пройти

В обучение входит 160 уроков, без выдачи документа об окончании курса. Формат как всегда представлен в просмотре роликов на ютубе. Автор делится созданием ММОРПГ на реальном проекте, в котором ты создашь как персонажей, так внутриbгровые магазины.

  • Подготовка контента для создания ММОРПГ.
  • Настраивание меню входа для ММОРПГ.
  • Работа над различными персонажами и добавление меню выбора главного героя.
  • Симуляция загрузки персонажей из базы данных.
  • Работаем над миникартой.
  • Создание игрового интерфейса.
  • Разработка инвентаря.
  • Работа над внутриигровым магазином.
  • Готовить материалы и разрабатывать меню ММОРПГ.
  • Настраивать персонажей.
  • Настраивать внутриигровые магазины и склады.
  • Работать с экипировкой.
  • Добавление характеристик для персонажей.
  • Видеоматериалы можно просмотреть совершенно бесплатно.
  • Подойдёт и для неопытных программистов, и для профессионалов.
  • Материал конкретно по созданию ММОРПГ.

Avenue

Очевидно, что разработка игр одна из самых интересных областей мира IT. Создавать персонажей, анимировать их движения и конечно писать игровую логику. Ваши будни на позиции «Разработчик Игр» точно не будут похожи на рутину!

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

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

Удобные пакеты для обучения:

  • Online
  • VIP
  • Standart

Разбираемся с интерфейсом движка

Когда откроется проект, вы увидите что-то похожее на скриншот ниже.

Самое интересное — по центру. Окошко с игровым миром. Оно также называется Viewport. Вы можете редактировать положения и вращения объектов просто кликая по ним и меняя режим редактирования с помощью кнопок W (изменение положения), E (изменение ротации), R (изменение размера). Также, зажав ПКМ, вы можете вращать камерой (перемещая мышь) и перемещаться по миру привычными WASDQE кнопками.

Далее Content Browser. В нем вы видите все ассеты, файлы с блупринтами, карты и все, что относится к вашему проекту. Любые взаимодействия с файлами проекта нужно делать строго с помощью Content Browser внутри Unreal Engine, иначе возникнут проблемы.

World Outliner — список всех объектов на карте, где мы находимся. Их можно выделять как по-одному, так и сразу несколько, выделяя через зажатый Shift или Ctrl.

Place Actors — панель, в которой вы можете найти любой интересующий вас объект и перетащить его на сцену, как в гифке ниже.

Объединение поддеревьев

Selectorуспешно выполняетсяBT_MuffinSelectorRoot

  • Attack: Selector запустит первым поддерево атаки. Если все задачи выполнены успешно, то Sequence тоже завершится успешно. Selector обнаружит это и остановит выполнение. Благодаря этому поддерево случайного движения выполняться не будет.
  • Roam: селектор попытается сначала выполнить поддерево атаки. Если Enemy не задан, то MoveTo завершится неудачей. Поэтому Sequence тоже завершится неудачей. Поскольку поддерево атаки завершилось неудачно, Selector выполнит следующий дочерний элемент, то есть поддерево случайного движения.

Play
Enemyдекораторы (decorators)