Блупринти Unreal Engine 5: Практичний Гайд для Початківців | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
12 блупринтів, які треба знати всім, хто працює з Unreal Engine 5

12 блупринтів, які треба знати всім, хто працює з Unreal Engine 5

Практичний гайд мовою візуального програмування

Будемо відверті: розробляти ігри складно. Якщо не говорити про музику, рівні, персонажів та купу арту, завжди залишається код. С++ та С# — дві найпоширеніші мови програмування для розробки ігор, і без них не обходиться жоден проєкт. 

Все ж код — доволі страшна штука, якщо не знати, як із ним працювати, з чого починати й куди рухатись. Epic Games, розробники Unreal Engine, давно визнали цю проблему й вигадали Blueprints

Це така собі мова візуального програмування, яка використовує інтерфейс на основі нод або вузлів для створення елементів ігрового процесу. Так, замість того щоб писати код, ви можете обирати ноди з величезного каталогу та зʼєднувати їх, таким чином будуючи систему. 

В цій статті спробуємо спростити флоу вивчення блупринтів. Оглянемо найкорисніші, які потрібно знати всім, хто працює з Unreal Engine 5, подивимось на їхню «граматику» та поділимось практичними порадами.

Основні типи блупринтів

Кожен шматочок логіки в Unreal Engine має десь «жити». Важливо розуміти, що не всі блупринти однакові — вони є «контейнерами» з різними можливостями та сферами застосування. Походять вони з різних класів: Actor, Character, Pawn та інших. 

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

Actor Blueprints 

Це ваш основний інструмент. Актор (Actor) — це будь-який об’єкт, який можна розмістити у світі (рівні) гри: двері, факел, монета, стілець, зброя. Вони можуть переміщуватися, взаємодіяти й мати власну унікальну логіку. Наприклад, якщо ви створюєте міст, який має руйнуватися, або ключ, який зникає при підборі, ви створюєте клас блупринта (Blueprint Class), батьківським елементом якого є Актор. 

Коли ви створюєте новий Actor Blueprint, ви отримуєте «порожню коробку», яку можна наповнити компонентами — додати фізичний обʼєкт (Static Mesh), світло, логіку, аудіокомпонент, колайдер або інші елементи.

Все, що відбувається в грі, починається з цих об’єктів: вони реагують на події, взаємодіють між собою та змінюють світ. До прикладу:

  • Двері — актор із сіткою дверей (тобто відповідною 3D-моделлю), логікою відкриття/закриття і колайдером, який потрібен для інтеракцій гравця з дверима.
  • Світильник — актор зі Static Mesh, точковим джерелом світла і логікою, яка передбачає, що світильник можна вмикати/вимикати.
  • Скриня — актор, який програє анімацію відкриття, відіграє звук і додає предмет в інвентар гравця.

Щоб зрозуміти принцип, можна зробити найпростіший приклад — вивести повідомлення під час запуску гри. Для цього знадобляться 2 ноди: 

  • Event Begin Play 
  • Print String

У кожному блупринті Unreal автоматично додає подію Event Begin Play — вона спрацьовує один раз, коли актор з’являється у світі. Далі її потрібно зʼєднати з Print String і додати своє кастомне повідомлення.

Щойно ви запустите рівень, у верхній частині екрана з’явиться цей текст. Це демонструє, як актор реагує на події в грі, в цьому випадку — на початок гри.

Character Blueprints 

Це спеціалізований тип актора, розроблений для гравців або AI-керованих істот. Важливо, що він розрахований саме на гуманоїдних істот, тобто двоногих. Він уже має все необхідне, щоб «ходити» по рівню: капсульний колайдер, скелетну сітку, а найважливіше — компонент Character Movement, який відповідає за біг, стрибки, падіння, прискорення, нахили та фізику пересування.

Щоб ним можна було зіграти, в цього блупринта має бути відповідна камера, а також логіка, пов’язана з керуванням (клавіші W, A, S, D для руху, пробіл для стрибків тощо) та особливими властивостями персонажа, як-от здоров'я, броня або інвентар. 

Level Blueprint 

Це унікальний блупринт, який існує лише для одного конкретного рівня. Він ідеально підходить для логіки «одноразової» події, яка ніколи не повториться і не буде використана в іншому місці. 

Його зручно використовувати для простих тригерів, як-от: «Коли гравець наблизиться до цього місця, увімкни світло». Якщо ж ви плануєте використовувати логіку на багатьох рівнях (наприклад, стандартні двері, що відкриваються), завжди створюйте окремий Actor Blueprint який можна перевикористати. Так ви не навантажуватимете блупринт рівня й він завантажуватиметься швидше.

«Граматика» Blueprints в Unreal Engine

Щоб ефективно працювати з блупринтами, важливо розуміти їхні базові елементи. Це те, що формує «мову» блупринтів — події, потоки, дані та змінні. Без розуміння цих складників неможливо створювати навіть прості ігрові механіки.

Execution Pins

Простими словами, це білі стрілки які позначають флоу, або ж порядок виконання дій у вашому блупринті. Вони показують, які вузли (ноди) спрацюють першими, а які — пізніше. Кожна нода, що виконує дію, має свій Input Execution Pin і Output Execution Pin, через які потік передається далі.

Важливо памʼятати:

  • Потік Execution Pins завжди рухається зліва направо або зверху вниз.
  • Якщо вузли не з’єднані, вони не виконаються, навіть якщо стоять у графі.
  • Execution Pins не передають значення/дані, лише порядок виконання. 

Data Pins

На противагу Еxecution Рins, Data Pins — це кольорові з’єднання, які передають значення або посилання на об’єкти. Різні кольори позначають різні типи даних:

Наприклад: 

  • Нода Print String має Data Pin для тексту (String), а отже — приймає input у форматі тексту або змінну типу String.
  • Нода Set Actor Location, за допомогою якої можна перемістити актора на задану точку, використовує Vector Pin (X/Y/Z-координати), щоб встановити нову позицію об’єкта.
  • Нода Branch використовує Bool Pin як умову для вибору шляху виконання. 

Variables (змінні)

Змінні — це місця для зберігання інформації, яку можна використовувати й змінювати протягом життя об’єкта. Вони дозволяють блупринту пам’ятати стан, параметри або посилання на інші об’єкти. Змінні бувають різні:

На практиці ж це легше, ніж здається. 

  • В Actor Blueprint можна створити Bool-змінну IsDoorOpen.
  • Коли гравець натискає кнопку, перевіряємо IsDoorOpen через Branch ноду.
  • Якщо false — двері відчиняються, і змінна змінюється на true.
  • Наступний натиск вже спрацює зворотним шляхом.

Розуміння цих трьох елементів — базова граматика мови Blueprint. Саме з них починається будь-який функціональний Blueprint в UE5.

Найпоширеніші ноди, без яких не обійдеться жоден блупринт

Каталог нод в UE5 неймовірно великий. Це й не дивно: є купа кейсів, де повноцінні проєкти створювали виключно з Blueprints. Втім, є кілька нод, які розв’язують 90% типових задач новачка. Вони дуже часто використовуються, і памʼятати їх — це must.

Event BeginPlay / Event Tick — старт і цикл

Event BeginPlay

Ця нода контролює подію, яка спрацьовує один раз, коли об’єкт з’являється на рівні. Використовують її всюди:

  • Для ініціалізації змінних. Наприклад, щоб встановити стартове здоровʼя гравця — PlayerHealth = 100.
  • Для виводу повідомлень для тестування. Наприклад, якщо гравець наступає на тригер, гра має заспавнити ворога за рогом. Щойно ворог зʼявляється — виводиться кастомне повідомлення.
  • Для запуску всього: анімацій оточення, погодних ефектів, фонової музики на старті сцени.

Event Tick

Ця нода спрацьовує кожен кадр гри. До прикладу, її використовують, щоб зчитувати постійне оновлення позиції обʼєкта або напрямку його руху. Також вона потрібна для читання часу, якщо в грі є таймери або вам потрібно засікти певний часовий проміжок.  

Часто її використовують для чіткого слідкування за станом гравця: наприклад, яка дистанція до цілі, наскільки високо він відносно землі, яка швидкість його автомобіля.

Важливо памʼятати, що Event Tick не можна перевантажувати складною логікою. Він  працює покадрово та може впливати на продуктивність і стабільність фреймрейту (FPS).

Branch — приймач рішень

Це нода, яка приймає булеве значення (true/false) і вирішує, який шлях виконання вибрати. Branch — це основний спосіб реалізувати логіку «якщо … тоді … інакше …». Так, вона передбачає просту логіку:

  • IsDoorOpen = false → відчинити двері
  • IsDoorOpen = true → зачинити двері

Використовувати Branch теж просто. Ця нода приймає булеве значення, яке виступає умовою, а виходи відповідно позначають, що стається у випадках, якщо true або false. 

Cast To [Blueprint] — комунікація між блупринтами

Ця нода дозволяє одному блупринту «спілкуватися» з іншим, отримуючи доступ до його змінних та функцій. Без Cast To неможливо передати дані між об’єктами без посередників. Ця нода використовується в дуже багатьох сценаріях: 

  • Як ключ взаємодії з гравцем: Cast To PlayerCharacter → Add Coins +1
  • Як спосіб перевірити стан іншого обʼєкта: при натисканні кнопки перевіряємо змінну іншого об’єкта (IsDoorOpen) і відчиняємо двері.

Навчитись користуватися Cast To можна дуже інтуїтивно:

  • До Cast To підключається Object Reference (посилання на об’єкт, який ми хочемо «перевірити»).
  • Якщо об’єкт потрібного типу, виконується Output, тобто дія, і ми можемо отримати змінні та викликати функції.
  • Якщо об’єкт не того типу, виконується гілка Cast Failed, яку можна обробити або ігнорувати.

Event Actor BeginOverlap — тригер

Це подія, яка спрацьовує, коли один об’єкт торкається іншого через колайдер. Ця нода використовується в дуже багатьох сценаріях — наприклад, коли гравець заходить у зону, щоб відчинити двері, підібрати предмет або коли вороги реагують на наближення гравця.

Налаштувати цю подію можна так:

  • Потрібно додати компонент Box Collision або будь-який Collider до вашого блупринта.
  • В Event Graph потрібно додати сам компонент — On Component BeginOverlap.
  • Далі потрібно побудувати логіку того, що має відбуватись, коли гравець торкається колайдера, який ви додали.

Для практики цю ноду можна використати багато для чого. Так, на курсі з Unreal Engine від robot_dreams лектор пояснював, як її використовувати, на прикладі створення простої платформи, яка підкидає гравця, коли на неї застрибують, як у класичних платформерах. 

Працює все просто:

  • Створюється сам обʼєкт, на який потрібно застрибнути й в якого є колайдер.  
  • Використовується нода Cast To Character, щоб обʼєкт підкидав саме вашого гравця, а не будь-який інший обʼєкт на рівні.
  • Далі додається нода Launch Character, яка буквально запускає гравця з заданою швидкістю в заданому напрямку.

Print String

Ця нода виводить текст на екран або в Output Log. З нею можна перевіряти, чи спрацьовує ваша логіка, особливо на початку роботи з блупринтами. На початку це окей — використовувати її всюди, адже це суперлегкий та швидкий спосіб впевнитись, що логіка спрацьовує.

Наприклад, її можна використати, щоби перевірити, чи дійсно гравець стрибнув на платформі з попереднього прикладу. Щоб це зробити, потрібно лише додати Print String після Launch Character. Якщо стрибок відбувся, на екрані зʼявиться кастомне повідомлення, яке ви залишили.

Ще статті
Порівнюємо швидкість, якість і відповідальність за результат