Як навчатися та прокачувати навички розробникам на Unreal Engine. Поради фахівців 4A Games, Farom Studio, Fractured Byte
Unreal Engine — один з найпопулярніших рушіїв в індустрії наряду з Unity. Якщо студія планує створювати проєкт категорії АА чи ААА і не має власного рішення, вона у 90% випадках скористається технологією Epic Games. Саме тому в індустрії зростає потреба у спеціалістах, які знаються на UE.
Цій професії й присвячений наш новий випуск рубрики «як навчатися та прокачувати навички». Минулого разу ми поспілкувалися з розробниками на Unity, а тепер заглянули на іншу сторону барикад. У матеріалі пʼятеро Unreal Engine Developers розповіли про свою карʼєру, як опановували професію та розвивалися у цьому напрямку. Вони дали поради новачками, відзначили основні проблеми своєї спеціальності та поділилися переліком корисних ресурсів.
Вхід у професію Unreal Engine Developers
Всі спікери підкреслили спільну базу, яка потрібна розробникам на Unreal Engine. Йдеться про вивчення мови програмування C++. На ній побудовано рушій, тож це очевидний шлях. Багато розробників відзначили, що без С++ стати спеціалістом з UE не вдасться.
Блупринти не можуть повністю замінити написання коду. А багатьом студіям потрібні фахівці, які здатні розібратися у структурі Unreal Engine 5 та модифікувати його під потреби конкретного проєкту. Тому саме з вивчення С++ починається шлях у професію.
Тим паче що в UE застосовується власна версія цієї мови програмування, яка відрізняється від стандартної. Тут свій фреймворк, інші структури даних та ще багато різних нюансів. С++ загалом вважається складною для вивчення, а у випадку з Unreal Engine поріг входу тільки підвищується.
Варіантів, як саме опановувати мову програмування, багато. Найпопулярніші — гайди на YouTube та курси на Udemy. А ще розробники рекомендують звернути увагу на офіційний портал Epic Games, де знаходиться вся документація. Тут можна знайти достатньо корисної інформації, включно з матеріалами для новачків.
«Я почав самостійно цікавитися програмуванням на С++ і розробкою ігор на Unreal Engine. Пішов на Udemy та взяв декілька курсів, присвячених загальному програмуванню на С++ і Unreal Engine», — Владислав Кулінич, Development Team Lead у Fractured Byte.
«Моє вивчення почалося з тоді ще робочого порталу Unreal Learning. Зараз його перетворили на Epic Games Dev community. Раджу зайти у секцію навчання та відфільтрувати матеріали за курсами від Epic. Ось так. Серія Begin Play допоможе почати орієнтуватися в рушієві та визначити для себе напрямки, які подобаються», — Валерій Дяченко, C++ / Unreal Engine Developer у Fractured Byte.
Коли зʼявляється теоретична база, потрібно переходити до практики. Тут теж є два шляхи, як її здобути. Перший — власні прототипи або навіть пет-проєкти, якими заодно можна наповнити портфоліо. А другий — пошук роботи інтерном або джуніором у кращому випадку. Таким варіантом скористався Олександр Афанасьєв, Unreal Engine Developer у 4A Games.
Що ж до інших способів увійти в професію, то вони теж існують. Юрій Смажний, Senior Unreal Developer у Program-Ace свічнувся на UE. До цього він працював з Unity, пропрієтарним рушієм Ubisoft і навіть намагався писати власний.
«Перед початком роботи як Unreal Engine Developer я уже мав досвід роботи з іншими рушіями. Тому я не навчався з нуля, а в основному все зʼясовував на ходу. Все це дозволило уникнути великих проблем при зміні професії на UE Developer, адже головні підходи до розробки не відрізнялися. З чим дійсно довелося розбиратися, так це з роботою безпосередньо в редакторі та з конкретною імплементацією систем в рушії — GameplayFramework, Networking, Input тощо», — поділився Юрій.
Цікавим є досвід Констянтина Лісецького, співзасновника та CTO Farom Studio. Він почав вивчати Unreal Engine ще на початку
Ні курсів, ні покрокових посібників тоді не було, а всі дані доводилося шукати на спеціалізованих форумах. З розвитком інтернету та підвищенням популярності геймдеву все змінилося. Більше не потрібно витрачати багато сил на пошук потрібної інформації, тому ніша зросла.
«Мій шлях як Unreal Engine Developer почався з Unreal Development Kit (UDK) — це була безплатна версія Unreal Engine 3. Тоді доступ до інформації був значно обмежений у порівнянні з тим, що маємо зараз. Основними джерелами знань виступали спільноти в соцмережах та офіційна документація. Не було ані YouTube-курсів, ані платних курсів, які так поширені зараз.
Я буквально „копався“ в документації та проводив безліч годин, експериментуючи у редакторі, аби зрозуміти, як працює кожна функція. Якщо порівняти із сьогоденням, то зараз початківці мають величезну кількість ресурсів: десятки детальних курсів, покрокові відеоуроки на YouTube, готові проєкти для аналізу. Це значно скорочує час навчання, але я вірю, що мій складний старт допоміг краще зрозуміти основи», — розповів Констянтин.
Як розробники на Unreal Engine покращували навички протягом карʼєри
Сукупно наші спікери виділили шість шляхів для прокачування своїх умінь роботи з Unreal Engine. Деякі з них доступні навіть початківцям, тоді як інші вимагають певних знань. Ми згрупували всі ці варіанти у списку нижче.
- Дослідження вихідного коду. Глибоке розуміння структури рушія буде великим плюсом для будь-якого фахівця, особливо коли для проєкту необхідно писати власні рішення. А враховуючи оновлення від Epic Games, цей процес ніколи не завершується.
- Виконання задач широкого спектра. Unreal Engine, а особливо його пʼята ітерація, включає велику кількість систем. Коли активно працюєш з ними, то опановуєш нові функції та розширюєш базу знань. Тому фахівці рекомендують братися за різні таски на роботі й не боятися викликів.
- Створення пет-проєкту. Спеціалісти радять у вільний час братися за розробку власної гри. У процесі одразу стане помітно, в яких областях є прогалини в знаннях. Тоді буде зрозуміло, куди потрібно рухатися, щоб посилити себе як фахівця. Тобто зʼявляться очевидні напрямки для навчання.
- Відстеження оновлень. Epic Games регулярно допрацьовує свій рушій, розширюючи спектр можливостей в кожній наступній ітерації. Потрібно досліджувати свіжий функціонал, щоб розуміти, чи здатен він полегшити задачі й зекономити час на поточному та майбутніх проєктах.
- Комунікація. Для всіх геймдев-спеціалістів важливо переймати досвід колег, особливо якщо вони більш досвідчені. У кожного експерта є свої підходи та трюки, а також знання про різні нюанси, які вдалося підмітити практичним шляхом. Обмін цією інформацією професійно збагачує розробників.
- Пошук нових ресурсів. Загальний пункт, однак у сучасній мережі надзвичайно багато інформації. Існують локальні сайти, де зберігається велика кількість корисних порад та посібників, присвячених Unreal Engine. Деякі з них фахівці навели у наступному пункті.
«Спочатку я просто розбирався у кожній дрібниці, створюючи маленькі проєкти. Найкращий спосіб навчання для мене — це практика. Працюючи над власними ідеями, я стикався з проблемами, які потрібно було вирішувати, і це мотивувало шукати нову інформацію. Згодом я почав працювати у команді, де зрозумів важливість спілкування з колегами. У кожного свій підхід, і завжди є щось, чого можна навчитися.
Один із найбільш критичних моментів у моїй кар’єрі — перехід на Unreal Engine 4. Це була зовсім інша платформа, яка вимагала адаптації до Blueprint — потужного інструменту для спрощення роботи з логікою гри. Я також постійно стежу за оновленнями Unreal Engine. Свіжі версії часто змінюють підходи до роботи», — Констянтин Лісецький, співзасновник і CTO Farom Studio.
Рекомендації щодо літератури та корисних ресурсів
Розробники спільно сформували широкий список рекомендацій для фахівців різних рівнів, які працюють з Unreal Engine. Сюди входять книги, блоги, відеоматеріали, курси та багато іншого. Всі спікери одноголосно відзначили, що інформації зараз більш ніж достатньо. Завжди знаходяться якісь презентації чи невеличкі авторські ресурси, звідки можна взяти щось нове для себе.
Література
- The Pragmatic Programmer, Девід Томас та Ендрю Хант. Загальна рекомендація для програмістів, включно з фахівцями, які спеціалізуються на UE.
- Game Engine Architecture, Джейсон Грегорі. Розповідає, як влаштовані ігрові рушії.
- The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer, Джеміс Бак. Варта уваги тих, хто цікавиться рендером та методикою Test-Driven Development.
«Щодо книг, Packt доволі регулярно випускає щось на тему UE і має велику кількість вже виданих посібників. Часом старіша література, присвячена UE4, навіть краща. Ось, наприклад, гарний варіант для програмістів — Unreal Engine 4.x Scripting with C++ Cookbook: Develop quality game components and solve scripting problems with the power of C++ and UE4», — Валерій Дяченко, C++ / Unreal Engine Developer у Fractured Byte.
Ресурси та YouTube-канали
- WizardCell — велика збірка інформації про роботу мультиплеєра в Unreal Engine.
- Benui — все про специфікатори UPROPERTY, UFUNCTION та інші.
- Zhihu, Qiita, Historia — азійські сайти з великою базою даних про рушій.
- YouTube-канал, який веде Software Engineer Алі Ельзохейрі.
- Ikrima.dev — нотатки про роботу з UE.
- Офіційна документація з Unreal Engine від Epic Games.
«Спільноти в Discord та Reddit — це також чудове місце, щоб отримати швидку відповідь або знайти нові ідеї. А початківцям рекомендую починати з безплатних матеріалів на YouTube або навіть з офіційних туторіалів від Epic Games», — Констянтин Лісецький, співзасновник і CTO Farom Studio.
Щодо курсів, то наші фахівці теж їх активно використовують для навчання. З ресурсів вони порадили Udemy і Coursera. При цьому спікери зазначили, що потрібно завчасно сформувати чіткий запит. Тобто зрозуміти, яких саме знань не вистачає, і обирати курси, відштовхуючись від цього. Тому що загальні завжди міститимуть надто багато відомої інформації.
«На початку найбільшим ресурсом був Udemy, де я дивився різноманітні практичні курси з розробки. Але останнім часом знаходжу в інтернеті безплатні презентації, відеокурси або документацію на тему, яка мене цікавить, і таким чином поглиблюю знання, майже одразу ж випробовуючи нову інформацію на практиці для закріплення», — Владислав Кулінич, Development Team Lead у Fractured Byte.
Які допоміжні плагіни та утиліти використовують розробники
- Blueprint Assist. Допомагає позиціювати ноди під час кодування в блупринтах, щоб вони були доступними для читання. Тобто прибирає потребу самостійно розміщувати вузли. Як зазначив Валерій Дяченко, C++ / Unreal Engine Developer у Fractured Byte, цей плагін — абсолютна необхідність для кожного фахівця.
- Quick Actions. З назви загалом зрозуміло, для чого призначений інструмент. Він пришвидшує роботу з рушієм завдяки декільком можливостям. Сюди входить швидкий доступ до нещодавніх та улюблених команд, покращення взаємодії з вбудованим функціоналом UE і створення сценаріїв автоматизації певних процесів.
- JetBrains Rider. Це швидка IDE для розробки проєктів під декілька платформ одночасно на Unreal Engine. Вона допомагає аналізувати блупринти, використовувати механізм рефлексії, стежити за стилем і точністю коду. Інструмент можна доволі легко налаштувати під власні потреби.
- Quixel Bridge. Забезпечує швидкий доступ до бібліотеки ресурсів Megascans та Metahuman. Дозволяє в одне натискання експортувати необхідні асети.
- VaREST. Полегшує використання REST-серверів при роботі з рушієм. У функціонал входить гнучке управління http/https запитами, керування за допомогою шаблонів замість кодування на С++, обгортки FJsonObject, FJsonValue з підтримкою блупринтів.
«Порада: використовуйте тільки ті плагіни, які вам дійсно потрібні. Занадто велика кількість додаткових інструментів може ускладнити пайплайн», — Констянтин Лісецький, співзасновник і CTO Farom Studio.
При цьому деякі фахівці працюють без використання сторонніх рішень. Їм достатньо базових можливостей, які надає Unreal Engine.
«Майже жодних утиліт не використовую, окрім базових, які потрібні під час розробки, — тобто Visual Studio і безпосередньо рушій. Я звик до бази та навчився самостійно давати раду з усіма недоліками UE», — Владислав Кулінич, Development Team Lead у Fractured Byte.
Поради щодо зростання з Junior до Middle та вище для розробників на UE
Владислав Кулінич, Development Team Lead у Fractured Byte у Fractured Byte
Middle-фахівці, на відміну від Junior, можуть швидко та ефективно виконувати завдання в зонах, де мають досвід. А от Senior, завдяки загальному знанню архітектури та нюансів в роботі ігрових рушіїв, здатні гарно виконувати задачі в областях, які їм мало знайомі. Тобто чим сильніше поглибленні знання рушія та систем, які супроводжують процес розробки, тим активніше людина підіймається за фаховою класифікацією.
Юрій Смажний, Senior Unreal Developer у Program-Ace
Тут важко згадати щось особливе, повʼязане саме з роботою як Unreal Engine Developer. На мою думку, важливо розуміти, як влаштований функціонал, з яким ти працюєш, щоб писати надійний код і бути впевненим у ньому.
Валерій Дяченко, C++ / Unreal Engine Developer у Fractured Byte
Тут можна дуже довго дискутувати стосовно поглядів на рівні. Коротко викладу своє розуміння. Потрібно брати задачі поза зоною свого комфорту, підвищувати рівень автономності та ставати фічеовнером своїх завдань. Необхідно також читати чужий код — хоча б проєкти Epic Games, як от Lyra. Але це швидше суб’єктивний погляд. Хтось, більш орієнтований на менеджмент у майбутньому, напевно, буде активніше качати менторство.
Олександр Афанасьєв, Unreal Engine Developer у 4A Games
Потрібне загальне розуміння фреймворку Unreal Engine, і як працюють компоненти цієї системи.
Найчастіші проблеми в роботі Unreal Engine Developers
Баги. Кількість помилок завжди пропорція масштабам та глибині проєкту. Як тільки в білд додається нова механіка або система, зʼявляється купа неочевидних інтеракцій, які обовʼязково призведуть до виникнення технічних проблем. Нерідко трапляється, що для виникнення купи багів достатньо декілька змін у патернах поведінки штучного інтелекту. За словами фахівців, до цього просто потрібно бути готовим, вміти швидко реагувати на помилки, тісно співпрацювати з QA і шукати шляхи, щоб все виправити.
Інші баги. Тут йдеться про помилки, які виникають в рушієві під час роботи. Їхня кількість завжди зростає після оновлень від Epic Games. Й інколи ці технічні недоліки змушують переписувати частину коду. В результаті розробка проєкту суттєво сповільнюється.
Відсутність або застарілість документації. З цією проблемою найчастіше стикаються розробники, які пишуть власні рішення на базі Unreal Engine під потреби проєкту. Якщо офіційні рекомендації не працюють, доводиться витрачати багато часу на пошук правильного шляху в мережі. Або ж рухатися вперед навмання, що загалом контрпродуктивно.
Зміни в коді. Ще одна проблема, яка стосується лишніх витрат часу. Якщо розробники вносять зміни у вихідний код, то доводиться надто довго чекати, доки вони відобразяться у редакторі Unreal Engine і безпосередньо в ігроладі білда. Як зазначив Олександр Афанасьєв, Unreal Engine Developer у 4A Games, це гальмує роботу.
Роздутість рушія. З одного боку, кількість можливостей в UE5 вражає. Функціонал дуже багатий і дозволяє реалізувати ледь не будь-яку ідею. А з іншого, в цьому масштабі легко загубитися. Тому фахівцеві потрібно розуміти, які саме системи рушія йому потрібні під час розробки.
Оптимізація. Одно з основних проблем сьогодення, особливо в проєктах на Unreal Engine 5 — Star Wars Jedi: Survivor і Remnant II передають привіт. Наші спікери відзначили, що зменшення навантаження на CPU та GPU вимагає чималої кількості зусиль. А користувачі дуже не люблять, якщо оптимізацію ігнорують.
Ітерації для перевірки змін. Вони відбуваються регулярно, і чим більше «мʼяса» наростає на проєкті, тим частішим стає процес. Epic Games це розуміє і постійно допрацьовує функціонал для швидкого ітерування. Щоб спростити роботу, фахівці радять використовувати можливості розподілених систем на кшталт нового Unreal Build Accelerator або octobuild для локальної розробки.
Мультипроцесорна обробка. Цей пункт повʼязаний із попереднім і стосується конвертації контенту з внутрішнього формату UE у специфічний для платформи. В процесі використовуються додаткові ресурси процесора та памʼяті, щоб значно скоротити час на отримання готового результату з сервера або на локальній робочій станції. Функція зʼявилася лише у версії 5.4.
Нюанси в пайплайнах Unreal Engine Developers
У цьому аспекті більшість спікерів одразу вказали на використання жорстких посилань (hard refferences). Це коли об’єкт A посилається на об’єкт B і викликає завантаження другого при завантаженні першого. Якщо часто використовувати таку методику в роботі з асетами, можуть виникнути технічні проблеми.
«Потрібно бути обережним з використанням хард-рефів (TObjectPtr) на ресурси по всьому проєкту, оскільки це може призвести до „Asset Dependency Chains“, коли усі об’єкти/ресурси гри завжди завантажені й займають оперативну памʼять», — Юрій Смажний, Senior Unreal Developer у Program-Ace.
Далі йде продумана логіка на проєкті. При розробці кожної системи необхідно питати себе: чи зможу я розібратися в її структурі через пів року? І як за потреби відбуватиметься масштабування? Потрібно впроваджувати нові елементи так, щоб відповіді були очевидними.
Паралельно необхідно думати, як кожна додана система повпливає на вже присутні в проєкті. Чи виникнуть додаткові складнощі в інших членів команди через ці зміни. І якщо так, то чи можливо зробити нововведення простішими для розуміння і подальшого використання в роботі.
До цього ж пункту відноситься організація. Зрозуміла структура з файлів та тек дозволить уникнути хаосу на проєкті та значно зекономить час фахівцям.
Окремий нюанс — це оптимізація. Як відзначив Констянтин Лісецький, співзасновник і CTO Farom Studio, не можна думати про неї за залишковим принципом. Чим раніше розробники почнуть турбуватися про продуктивність, тим менше технічних негараздів буде ближче до релізу. Це дозволить уникнути понаднормових і зайвого головного болю. Щодо цього також висловився Олександр Афанасьєв, Unreal Engine Developer у 4A Games. За його словами, потрібно одразу планувати, як оптимізувати та підвищити продуктивність кожної окремої механіки.
Наостанок спікери вказали на тестування, яке повинно бути вбудовано в пайплайн на різних етапах. Під час розробки на UE потрібні постійні перевірки. Якщо почати тестувати фічі надто пізно, може виникнути багато вагомих проблем — від критичних багів до необхідності замінити цілі системи.
Поради новачкам, які хочуть стати розробниками на Unreal Engine
Владислав Кулінич, Development Team Lead у Fractured Byte у Fractured Byte
Unreal Engine — це дуже великий рушій з неймовірною кількістю функціоналу. Завжди буде щось, чого ви в ньому не знатимете. Під час навчання закріплюйте те, що ви вже опанували та вмієте. Якщо не вдається зробити або зрозуміти певну задачу, не сприймайте це як проблему в собі. Вважайте, що стикнулися з випробуванням, яке потрібно пройти. Крок за кроком, і все вийде.
Констянтин Лісецький, співзасновник і CTO Farom Studio
1) Починайте з Blueprint, а потім переходьте до C++.
2) Досліджуйте готові проєкти, щоб зрозуміти як працюють професіонали.
3) Не бійтеся ставити питання в спільнотах. Люди часто допомагають новачкам.
4) Будьте терплячими. Unreal Engine має високий поріг входу, але ваші зусилля точно окупляться.
Валерій Дяченко, C++ / Unreal Engine Developer у Fractured Byte
Найчастіша порада — не йти в геймдев 🙂. Якщо після третьої такої поради ви ще не передумали, то все буде добре.
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів