Quantcast
Channel: Найцікавіше на DOU
Viewing all articles
Browse latest Browse all 8115

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

$
0
0

Привет. Меня зовут Максим Носатов, я 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;
  • Engine Developers;
  • Animation Developers;
  • DevOps Developers;
  • Tools Developers;
  • UI Developers;
  • Graphics Programmers;
  • Audio Developers;
  • Client Developers;
  • Back-end Developers.

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

Рассмотрим каждую роль подробнее:

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 разработчик:

  • особенности кодинга на С++ в движке UE4;
  • базовые элементы геймплея — Actors;
  • система управления памятью и система обработки игровых объектов;
  • работа с физическими симуляциями и силами, воздействующими на объекты;
  • создание пользовательского интерфейса, виджеты на C++;
  • создание искусственного интеллекта;
  • интегрирование SDК, разработка собственных плагинов;
  • Unreal Build System, коллекция инструментов для автоматизации разработки;
  • непосредственно разработка игры: создание инвентаря, Save System, системы событий и т. д.

Если вас интересует 3D-наполнение для уровней, работа с освещением, материалами, анимацией и динамикой, необходимо освоить:

  • основы работы в движке: интерфейс, трехмерное пространство, элементы управления;
  • дизайн уровня, в том числе шейдинг, текстуры, свет;
  • настройку итоговой визуализации сцены и игровую графику;
  • динамическую стимуляцию: атмосферные эффекты в игре, настройка поведения одежды персонажей;
  • создание игровой логики с помощью визуального программирования на Blueprints;
  • основные виды компоновки игры — шутеры от первого и третьего лица, сайд-скроллер, 2D игру, автосимулятор.

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

Если у вас есть вопросы, пишите в комментариях, постараюсь ответить.


Viewing all articles
Browse latest Browse all 8115

Trending Articles