Геймдев: які є спеціалізації програмістів і з чого починати

Привіт. Мене звуть Максим Носатий, я Game Developer, працюю з UE4 і Unity3D. Мій стаж в геймдеве — близько 5 років. Я починав свою кар'єру як Unity3D & C++ розробник у аутсорсингової компанії iLogos, пропрацював там півтора року.

У 2014 році я зацікавився Unreal Engine 4 . Як і Unity, це компонентно-орієнтований рушій. Кожен місяць платив $30 зі своєю джуниорской зарплати за ліцензію. Треба сказати, це здорово било по бюджету. І через деякий час я вирішив знайти роботу за цим профілем. Так як в Україні на той момент практично не було проектів на UE4, шукав вакансії за кордоном. Отримавши оффер від польської компанії VividGames, я поїхав в місто Бидгощ на позицію UE4 & C++ розробника. Там теж пропрацював близько півтора років: спочатку в UI-команді, пізніше — в Engine.

Потім я повернувся в Україну і близько року співпрацював з компаніями ProgramAce і CommuniClique. Кілька місяців тому заснував власну компанію. Ми займаємося розробкою ігор і VR-додатків. Крім цього, я викладаю на курсі розробки ігор games.education.

У цій статті я хочу розповісти, які спеціалізації програмістів бувають у геймдеве і що потрібно вчити, щоб розвиватися в цій індустрії — з фокусом на Unreal Engine.

Спеціалізації програмістів в геймдеве

Спочатку пару слів про технології: геймдеве найчастіше пишуть на C++. Всілякі тулзы і складання в Unreal Engine написані на C#. Також використовується візуальна мова програмування Blueprints — на ньому зроблено більшість поверхневих систем UE, наприклад, анімаційні графи. Якщо ви зацікавлені в розробці мобільного, вам також знадобиться знання нативних мов — наприклад, Objective-З і Java.

Зазвичай в геймдев-компаніях є такі ролі розробників:

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

Розглянемо кожну роль детальніше:

Gameplay Developers — відповідають безпосередньо за механіку. При цьому Gameplay-розробники щільно співпрацюють з гейм-дизайнерами, які і постачають їм механіку. Що стосується технологій, в Unreal Engine можна швидко прототипировать за рахунок Blueprints і писати базові класи для геймплея за рахунок С++.

Engine Developers — розробляють безпосередньо движок: утиліти, що тулзы для інших розробників, що займаються SDK-інтеграцією.

Animation Developers — займаються розробкою анімаційних систем, що працюють з Skeletal animation, роблять тулзы для розробників і аніматорів. Найчастіше такі фахівці потрібні в компаніях, які працюють з кастомних движками — наприклад, Ubisoft, Gameloft, Deep Silver. Так, Ubisoft розробляють власну систему симуляцію одягу, і у них є вакансії для Animation Developers, які займаються безпосередньо фізикою.

DevOps Developers — займаються микросервисами, працюють з клієнтами, такими як Battle.net від Blizzard, Uplay від Ubisoft, які дозволяють користувачам ігор спільно грати через інтернет, а також купувати і оновлювати ігри онлайн. DevOps Developer — це одна із самих нових спеціалізацій в геймдеве.

Tools Developers — пишуть безпосередньо тулзы для гейм-дизайнерів: на Qt або прямо всередині движка.

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

Graphics Programmers — відповідають за якість картинки, працюють з низькорівневим шаром: OpenGL, DirectX. Пишуть шейдери, оптимізують графіком кінцевого продукту.

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

Client Developers — займаються обробкою подій, працюють з верхніми інтерфейсами.

Back-end Developers — працюють із сервером, парсерами, одержанням даних, при цьому ніяк не торкаючись безпосередньо гри.

Геймдев в Україні та за кордоном

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

На співбесідах у закордонних компаніях, як правило, запитують, чого ви хочете, яка спеціалізація вам найбільш цікава. Перевіряють знання базових речей: наприклад, якщо ви йдете на Graphics-програміста, у вас запитають про досвід роботи з anti-aliasing, моделлю Фонга.

Щось надскладне не питають. Приміром, найважче, що я зустрічав по своєму досвіду і історіями знайомих, — питання багатопоточності. Просили навести приклад якогось worker thread.

Щоб потрапити в закордонну компанію, крім хорошого англійського вимагається досвід роботи 2-3 роки, так що, швидше за все, вам доведеться зіткнутися і з українськими компаніями. З компаній з власним продакшном на українському ринку є Ubisoft, Plarium, Wargaming Vostok Games, Gameloft і інші.

Що стосується Unreal Engine, з весни 2015 року UE4 став безкоштовним, і з тих пір українські гейм-компанії більш активно почали працювати з цим движком.

Корисні посилання

UE4 Resources — це блозі розробника, де він викладає всі проекти, семпли своїх ігор. По суті, це його портфоліо. Якщо ви тільки вивчаєте Unreal Engine, посморите, як реалізовані його проекти, спробуйте зробити за аналогією. Можливо, приклади реалізації знадобляться вам при виконанні тестового завдання :)

Tom Looman — сайт розробника, який, можна сказати, витягнув на собі галузь, написавши багато статей для Вікіпедії, гіди по C++ і Unreal Engine. В блозі — матеріали з Unreal Engine зокрема і геймдеву загалом.

Rleonardi.com — інтерактивне резюме гейм-розробника. Відмінний приклад самопрезентації.

Як розвиватися в геймдеве

Щоб розібратися з геймдевом, вам знадобляться базові знання об'єктно-орієнтованого програмування, а також мови С++. Вивчивши ази, можна переходити до ігрової специфіку.

Ось приблизні теми, які повинен засвоїти починаючий Unreal Engine розробник:

Якщо вас цікавить 3D-наповнення для рівнів, робота з освітленням, матеріалами, анімацією і динамікою, необхідно освоїти:

Обов'язково спробуйте на практиці різні ролі гейм-розробників з тих, що я перерахував вище. Визначтеся, що вам найбільше до душі, і далі відточуйте навички з обраної спеціалізації.

Якщо у вас є питання, пишіть у коментарях, постараюся відповісти.

Опубліковано: 08/05/18 @ 10:39
Розділ Блоги

Рекомендуємо:

Як скоро ваше місце займе AI
Go дайджест #3: Go 1.10.2 and 1.9.6, новий брендинг для Go, NGINX Unit 1.0 сервер додатків з підтримкою Go
Легкий старт в ІТ: що таке RPA і як освоїти технологію з нуля
DOU Books: 5 книжок про спілкування в команді від Андрея Трофімова, керівника львівського офісу EPAM
Квітень 2018. Финстрип. 100К в міс почекають. Червоні трикутники.