- Вы здесь:
- Главная
- Тематики видеокурсов
- Программирование
Видеокурс "Программирование на C++ в Unreal Engine 5"
-
ПОДРОБНОЕ ОПИСАНИЕ
Автор: Михаил Русаков
Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.
Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.
Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.
Программирование на C++ в Unreal Engine 5. (Михаил Русаков) -
Модуль №1. Введение
- Как проходить курс?
В уроке будут даны важные рекомендации по эффективному прохождению курса.
- Установка необходимого ПО
В уроке скачаем и установим весь необходимый софт. Уже даже на этом этапе у новичков возникают проблемы, но благодаря этому уроку у Вас их не будет.
- Установка и настройка clang-format
Совершенно необходимый инструмент, нужный для быстрого форматирования/выравнивания кода.
После этого модуля у Вас будет уже всё готово для работы в самом движке.
Модуль №2. Основы C++ в Unreal Engine
Материал этого раздела совершенно необходим, прежде чем пытаться хоть что-то делать в Unreal Engine на C++.
- Создание первого проекта
Создадим проект из шаблона ThirdPerson и подробно разберём каждую строчку кода. Это уже будет отличным стартом.
- Как работает движок изнутри?
Достаточно важный урок, если Вы действительно хотите понять, как работает вся «магия» изнутри. Это, во-первых, может пригодиться на собеседовании, во-вторых, Вы лучше будете понимать, что делаете.
- Рефакторинг шаблона от третьего лица
В уроке мы почистим сгенерированные классы от лишнего мусора, переименуем классы (а это не так просто сделать, как кажется), наведём порядок.
- Создание C++-класса
В уроке создадим C++-класс с нуля.
- Типы данных
В рамках урока Вы познакомитесь с основными типами, которые нам предоставляет фреймворк Unreal Engine 5.
- Логирование
После урока Вы научитесь делать записи в лог, в том числе, выводя переменные самых разных типов. Это необычайно важные знания, особенно, когда речь заходит об отладке.
- Макрос UPROPERTY
Подробно обсудим этот важнейший макрос в Unreal Engine.
- Construction Script в C++
Разберём аналог Construction Script из Blueprint, но в рамках C++.
- Asserts
Разберём эту группу макросов, которые очень важны, если Вы хотите писать качественный код.
- Макрос UFUNCTION
Ещё один фундаментальный макрос, который мы тщательно обговорим.
- Структуры
Обсудим создание структур в C++, которые будут доступны, в том числе, и в Blueprint.
- Перечисления
После этого урока Вы научитесь создавать перечисления в C++ для Unreal Engine.
- Делегаты
Это эквивалент Event Dispatcher из Blueprint. И из урока Вы узнаете, как создавать делегаты с параметрами или без, только для C++ или для C++ и Blueprint.
- Виджеты
Обсудим процедуру создания виджетов с использованием C++. Здесь очень много тонкостей и нюансов, дойти до которых можно лишь, имея большой опыт. Но Вы получите всё и сразу в этом уроке.
- Таймеры
После этого урока Вы научитесь использовать таймеры в C++.
- Delay
Функция Delay является очень часто используемой (гораздо чаще, чем надо, кстати), и как её реализовать в C++ мы и обсудим.
- Интерфейсы
В уроке мы разберём процедуру создания и применения интерфейсов на C++, которая доступна благодаря фреймворку Unreal Engine.
После данного раздела Вы уже будете иметь очень серьёзную базу. Даже этих знаний уже достаточно, чтобы уверенно начать программировать на C++ в Unreal Engine. Но, безусловно, это пока всего лишь теория с абстрактными примерами. А ведь гораздо лучше всё усваивается, когда после теории идёт наглядный пример. И вот во всех последующих разделах будет создаваться достаточно серьёзный проект на C++.
Модуль №3. Создание игры: подготовка проекта
Материал этого раздела совершенно необходим, прежде чем пытаться хоть что-то делать в Unreal Engine на C++.
- Разбор технического задания
Один из ценнейших уроков курса, в котором мы, во-первых, подробно разберём то, что мы будем создавать. Во-вторых, Вы научитесь писать свои технические задания (для себя или для других), узнаете про итеративные методики создания ПО, поймёте, как, в целом, строится pipeline разработки.
- Создание и настройка проекта
Сделаем все необходимые стартовые вещи.
- Добавление персонажа
Добавим персонажа для игрока, импортируем анимации, наведём порядок.
- Добавление животных
Добавим животных и все необходимые ассеты для них.
- Добавление предметов
Поскольку у нас будет создаваться инвентарь в будущем, мы заранее добавим сами предметы в наш проект, чтобы потом на этом не останавливаться.
Модуль №3. Создание игры: подготовка проекта
Материал этого раздела совершенно необходим, прежде чем пытаться хоть что-то делать в Unreal Engine на C++.
- Разбор технического задания
Один из ценнейших уроков курса, в котором мы, во-первых, подробно разберём то, что мы будем создавать. Во-вторых, Вы научитесь писать свои технические задания (для себя или для других), узнаете про итеративные методики создания ПО, поймёте, как, в целом, строится pipeline разработки.
- Создание и настройка проекта
Сделаем все необходимые стартовые вещи.
- Добавление персонажа
Добавим персонажа для игрока, импортируем анимации, наведём порядок.
- Добавление животных
Добавим животных и все необходимые ассеты для них.
- Добавление предметов
Поскольку у нас будет создаваться инвентарь в будущем, мы заранее добавим сами предметы в наш проект, чтобы потом на этом не останавливаться.
Модуль №5. Создание игры: AI
В рамках этих уроков мы реализуем на C++ всю логику искусственного интеллекта для животных.
- Создание AnimalAIController
Создадим основной контроллер, который будет своего рода «пультом», отвечающего за включение и выключение тех или иных компонентов, которые будут созданы впоследствии.
- Создание базового AI-компонента
Создадим базовый AI-компонент, от которого будут наследоваться остальные.
- Создание компонента патрулирования
При запуске в контроллере этого компонента животные будут спокойно прогуливаться по территории недалеко от своего спавна.
- Создание компонента для убегания от противника
Если животное увидит противника, то немедленно начнёт от него убегать до тех пор, пока расстояние не будет безопасным. Как реализовать подобную логику, Вы узнаете в этом уроке.
- Подключение AI-компонентов к контроллеру
В уроке мы возьмём созданные компоненты и подключим их к нашему контроллеру, а также настроим логику их включения/выключения.
- Создание спавнера
Создадим спавнер для животных (вообще говоря, он подойдёт для любых Actor), который можно будет в редакторе вытащить на сцену и настроить.
Модуль №6. Создание игры: инвентарь
В рамках этого раздела мы будем создавать техническую часть инвентаря для нашей игры.
- Добавление своих настроек в Project Settings
В этом уроке Вы увидите, как можно добавить свои собственные настройки в Project Settings, доступ к которым потом получить из кода на C++.
- Создание структуры и DataTable
В уроке мы создадим структуру для предметов, а также таблицу с ними, которую будет очень легко заполнять, добавляя всё новые и новые предметы в игру.
- Создание класса предметов
В уроке Вы узнаете, как использовать DataTable, создадим необходимые Helper и, само собой, сам класс предмета.
- Создание компонента инвентаря
Я своими глазами видел, как один «учитель» с очень положительными комментариями под его видео создавал инвентарь в виде Actor (видимо, у инвентаря по мнению автора есть местоположение и поворот в мире), а попутно хранил сами предметы в массиве опять же типа Actor. Мы же всё с Вами реализуем, как полагается: с интерфейсом, с хранением только RowName и в виде ActorComponent.
- Сбор предметов
Реализуем подбирание предметов и добавление их в инвентарь.
- Создание компонента стартовых предметов
Чтобы в начале игры у наших персонажей (игрока и животных) были уже какие-то предметы в инвентаре, мы реализуем и добавим необходимый для этого компонент.
Модуль №7. Создание игры: виджеты
В рамках этого большого раздела будут созданы все необходимые виджеты. Помимо большого объёма C++-кода, здесь нам потребуется использовать и редактор виджетов для их вёрстки.
- Создание базового класса виджета
В уроке разберём, зачем нужен наш собственный базовый класс для всех виджетов, и создадим его.
- Создание виджета кнопки
Поскольку кнопки мы будем использовать многократно в других виджетах, разумно создать отдельный виджет для неё, чтобы всегда можно было поменять её дизайн, а, по сути, автоматически изменить дизайн всех остальных виджетов.
- Создание виджета для взаимодействия
Непосредственно создадим логику виджета и сделаем его вёрстку.
- Создание компонента InteractWidgetComponent
Создадим компонент, который будет отвечать за вывод виджета при наведении на объекты мира (например, на предметы, которые можно подобрать) с информацией о них и о том, как с ними взаимодействовать.
- Вывод виджета при взаимодействии с миром
Объединим созданный виджет из позапрошлого урока с компонентом из прошлого и подключим всё это, например, в тот же класс предмета.
- Создание GameHUDWidget
Создадим и выведем виджет, который будет доступен во время игры.
- Создание виджета для слота инвентаря
Создадим виджет слотов инвентаря.
- Создание виджета инвентаря
Полностью создадим весь виджет инвентаря, включая логику и вёрстку.
- Открытие и закрытие виджета инвентаря
Используя делегат, реализуем механизм открытия и закрытия инвентаря.
- Создание виджета для сообщений инвентаря
Реализуем механизм, при котором, подбирая или тратя предметы в инвентаре, у нас будет писаться соответствующее сообщение.
- Создание стратегий для инвентаря
Реализуем паттерн Strategy, благодаря которому мы гибко сможем делать обработку нажатий на предмет в инвентаре.
- Создание главного меню
Создадим виджет для главного меню.
- Обработка главного меню
В уроке обработаем кнопки главного меню.
- Создание загрузочного виджета
Процесс перехода из главного меню на уровень игры занимает некоторое время, на протяжении которого желательно вывести какой-нибудь загрузочный виджет, чем мы и займёмся в этом уроке.
- Открытие и закрытие загрузочного виджета
Реализуем логику появления и плавного исчезновения загрузочного экрана.
- Создание меню паузы
В этом уроке мы создадим меню паузы.
- Открытие и закрытие виджета паузы
Из этого урока Вы узнаете, как правильно реализовать функционал переключения видимости виджета с помощью нажатия одной и той же кнопки.
- Обработка меню паузы
В меню паузы будет несколько кнопок, обработку которых мы реализуем в этом уроке.
- Добавление курсора
Добавим свой собственный курсор в нашу игру.
Модуль №8. Создание игры: лук и экипировка
В этом разделе мы займёмся созданием механизма экипировки и стрельбы из лука.
- Создание класса оружия
В уроке будет создан общий класс для любого оружия.
- Создание анимации лука
Поскольку в игре тетива лука будет натягиваться, нам потребуется AnimInstance и AnimBlueprint, чем мы и займёмся в этом видео.
- Создание базового компонента для экипировки
Данный компонент будет являться общим для любых других компонентов-экипировки.
- Создание компонента для экипировки оружия
Создадим компонент экипировки, который подойдёт для любого оружия. Всю общую логику, характерную именно для экипированного оружия, мы пропишем в этом компоненте.
- Создание компонента для экипировки лука
Реализуем компонент, который будет отвечать за экипировку лука.
- Создание класса стрелы
Реализуем класс для стрелы, которая будет лететь по баллистическому закону.
- Создание класса лука
Создадим класс для лука.
- Экипировка лука
Реализуем нужную стратегию и экипируем уже сам лук, путём клика по нему на слот в инвентаре.
- Реализация стрельбы из лука
Реализуем саму стрельбу из лука, а так же сделаем так, чтобы при попадании стрелы в голову, наносился повышенный урон.
- Сборка ресурсов с животных
Сделаем сбор ресурсов с животных и добавление их в инвентарь.
Модуль №9. Создание игры: магазины
В рамках этого раздела мы реализуем механизм магазинов. У нас будут магазины, которые скупают товары (например, кожу и мясо), а будут магазины, которые продают товар (например, различные луки и стрелы).
- Создание базового класса магазина
В уроке мы создадим общую логику для любых магазинов.
- Создание класса для магазина-покупателя
Реализуем магазин, который будет скупать соответствующие предметы у игрока, когда тот взаимодействует с магазином.
- Создание класса для магазина-продавца
Создадим логику магазина, который продаёт различные предметы. И при взаимодействии с ним игрок сможет делать покупки.
Модуль №10. Создание игры: смена времени суток
В этом разделе мы создадим динамическую смену дня и ночи.
- Создание кривой для солнца
Поскольку солнце будет двигаться, то мы заранее создадим CurveFloat, в котором опишем движение солнца.
- Создание класса для изменения времени суток
Напишем основной класс, в котором можно будет задавать текущее время, а также в котором будет происходить его течение.
- Добавление Луны
В уроке добавим Луну и подключим к нашей системе., причём не только с её движением по небосводу, но и с фазами луны.
- Движение Луны и её фазы
Настроим движение Луны по небосводу, а дополнительно сделаем и плавное изменение фаз Луны.
Модуль №11. Создание игры: звуки и музыка
В рамках этого раздела мы добавим в наш код проигрывание самых разных звуков и музыки.
- Добавление звуков лука
Натягивание тетивы, выстрел из лука, попадание стрелы – для всего этого мы добавим звуки.
- Добавление звуков кнопки
Достаточно простой урок, в котором мы обойдёмся без программирования.
- Добавление звуков животных
Добавим различные звуки для животных. Они будут проигрываться произвольным образом в случайное время.
- Добавление звуков леса
Поскольку часть нашего мира будет покрыта лесами, то разумно будет сделать правильную атмосферу в нём с помощью звуков, чем мы и займёмся в этом уроке.
- Добавление звука попытки уйти с карты
Добавим фразу персонажа при попытке уйти за границы карты.
- Создание классов AnimNotify
Объекты данных классов будут вызываться во время проигрывания анимации. Таким образом, в определённые моменты анимации мы сможем выполнить определённую логику.
- Добавление звуков шагов
В рамках этого урока мы, используя класс AnimNotify из прошлого урока, реализуем проигрывание звуков шагов в зависимости от поверхности под ногами персонажа.
- Добавление музыки
Добавим музыку в игру.
Модуль №12. Создание игры: игровой уровень
Заключительный раздел, в котором мы соберём все наши уже работающие механики в рамках игрового уровня, а также сделаем и протестируем готовую сборку.
- Рефакторинг
Проведём небольшой рефакторинг для улучшения кода.
- Замена Input на Enhanced Input
Заменим классические Input на Enhanced Input, которые уже на данный момент являются стандартом Unreal Engine 5.
- Импорт ассетов
В уроке мы импортируем необходимые ассеты для дизайна уровня.
- Создание игрового уровня
Используя импортированные ассеты, создадим мир нашей игры.
- Добавление игровых элементов
Добавим все необходимые элементы: спавнеры животных, звуки леса, навигационную сетку, магазины, дом ловчего, стартовые предметы и много чего ещё по мелочи.
- Сборка проекта
Соберём и протестируем shipping-версию.
- Заключение
Важные слова напутствия и советы, в каком направлении стоит двигаться дальше, исходя из моего опыта.
-
Программирование на C++ в Unreal Engine 5. (Михаил Русаков)