Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов.

О портале Каталог профессий

Программист на Unity

Относительно недавно появилась среда, которая позволила вести разработку и осуществлять сборки игр под все популярные платформы и даже для веб – Unity.

Одними из самых популярных приложений являются игры. Это актуально как для рабочих столов Windows/Mac/Linux, так и для мобильных платформ Android/Mac/Windows Phone. Относительно недавно появилась среда, которая позволила вести разработку и осуществлять сборки игр под все популярные платформы и даже для веб – Unity. Мы обратились к представителям компаний, чтобы выяснить, каких кандидатов они видят на позиции программиста Unity

1. Какими знаниями и навыками должен обладать программист на Unity?

2. Каков инструментарий программиста на Unity?

3. Каковы требования компании к уровню образования потенциальных сотрудников?

4. Какие требования предъявляются к опыту работы?

5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

Александр Романов, ведущий разработчик Unity3D в компании Skytec Games

1. Программист на Unity должен отчетливо понимать принципы ООП, иметь развитое логическое мышление, внимательность и хорошую память.

2. В первую очередь это сам Unity и IDE для работы с кодом. Обычно для этого используется IDE, идущий в комплекте с Unity. Почти наверняка пригодится инструментарий для работы с Git-репозиториями или другими системами контроля версий. А дальше все зависит от специфики задач и особенностей компании. Если это мобильные разработки, то пригодится XСode для сборки приложения под iOS и их отладки. Для Android не требуется специальных программ для сборки (только Android SDK), однако для отладки пригодится Android Studio.

3. Обычно никаких специфических требований к уровню образования не предъявляется. Главное, чтобы человек имел все необходимые навыки и так или иначе имел опыт в программировании. Рекомендуется высшее техническое образование, а еще лучше, если оно будет в области ИТ.

4. В разных компаниях по-разному. Если есть навыки разработки проектов на Unity, то некоторые компании готовы взять человека и без опыта на стартовую должность. Но на более высокую должность и соответственно зарплату компании обычно устанавливают требование 3-5 лет опыта работы.

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

Святослав Шумихин, Unity-разработчик, OOO InfoShell

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

Теперь про знания:

  • Конечно же, представление о том, что такое трехмерный мир, из чего он состоит, из чего состоят объекты 3D-мира – меши, полигоны, вертексы, текстурные координаты, нормали и пр.
  • Как все это рендерится – рендер буфер, очередность отрисовки, шейдеры, batching and drawcalls.
  • Игровой цикл (game loop) и сопутствующие события.
  • C#, принципы работы .NET, ООП, шаблоны проектирования применительно к Unity.
  • Структуры данных, сериализация.
  • Оптимизация кода, ассетов, сцен и проекта в целом.

Если программист пишет приложения для мобильных девайсов, то необходимо знать мобильные SDK и особенности их систем рендера, умение писать оптимизированный код, шейдеры, а также уметь дебажить.

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

Часто нужно знать и уметь применять законы физики в разных авто- и авиа-симуляторах. Даже при анимировании элементов GUI применяется физика.

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

2. Основной инструментарий программиста Unity, конечно же, сам редактор Unity и любая IDE, поддерживаемая редактором, – Microsoft Visual Studio, MonoDevelop, может быть даже SharpDevelop.

При разработке под Android в этот перечень добавляются Android SDK, Java JDK и разные утилиты из Android SDK: monitor – для отслеживания логов, keytool – для создания ключей и пр.

При разработке под iOS добавляем XСode, Terminal.

По мере развития движка в редакторе появляется все больше новых и удобных инструментов, отсутствие которых ранее заставляло пользоваться отдельными утилитами. Например, утилиты создания и редактирования шрифтов – когда Unity не поддерживал динамические шрифты, приходилось собирать атласы вручную. Или утилиты (скрипты для Photoshop) для сборки текстур в атласы.

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

Кроме работы собственно в Unity, для правильной организации проекта используются системы контроля версий (Git, SVN, Mercurial). Для управления задачами используются Agile-инструменты, а для удобства создания билдов внедряется Jenkins, тот самый Continuous Integration.

Так как программист много работает с ассетами, то иногда может потребоваться запустить Photoshop или какой-нибудь 3D-редактор, или звуковой редактор.

3. Пока компания не ищет Unity-программистов, но могу определенно сказать, что как минимум необходимо общее высшее образование, а именно высшая математика и физика. Без этих знаний программисту в разработке игр делать нечего.

Ну а стандартные требования: C#, ООП, .NET, знание основ трехмерного мира, понимание принципов работы игровых движков, знание английского на уровне чтения документации и умения задать вопрос Google.

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

4. Как я уже сказал, компания пока не ищет программистов Unity. Требования обычно зависят от поставленных задач. На какие-то задачи хватит и студента, а где-то придется искать спецов с парой ААА-проектов в портфолио.

5. Нет, на сегодня каких-то специфических требований мы не выработали.

Алексей Дюдя, Team Lead и Unity-разработчик компании iLogos

1. В первую очередь программист на Unity должен уметь программировать на C# и работать в редакторе Unity. Движок Unity дает возможность делать кросс-платформенные игры без особых знаний OpenGL или DirectX, однако понимание базовых концепций компьютерной графики и низкоуровневого API является несомненным плюсом и очень помогает в процессе оптимизации приложений.

Также программист должен уметь грамотно проектировать приложения. К этой сфере разработки можно отнести знания шаблонов проектирования, SOLID-принципов, понимание UML-диаграмм.

2. Важнейшими инструментами программиста на Unity являются сам редактор Unity и IDE (Visual Studio, Rider EAP, MonoDevelop). Однако, помимо этого, программист обязан уметь работать с системами контроля версий, такими как Git или SVN.

При работе с графикой иногда доводится работать с Photoshop и 3D-редакторами, такими как Maya или 3D Max.

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

4. Последнее время мы стараемся брать на работу кандидатов с опытом работы от 3 лет в сфере разработки компьютерных игр. К сожалению, для предпринимателей на рынке труда сейчас складывается ситуация, что грамотных специалистов не хватает, поэтому часто приходится брать людей без опыта работы и растить из них специалистов, это не всегда получается, однако те люди, которым это удается, становятся очень востребованными на рынке труда.

5. Специфических требований для кандидатов мы не выставляем, большинству вещей можно научиться в процессе работы, однако знание английского языка хотя бы на уровне pre-intermediate пригодится, большинство документации на проектах ведется на английском языке.

Если же в целом говорить о разработке компьютерных игр, то эта сфера постоянно развивается, появляются новые движки, новые алгоритмы рендеринга, новые платформы для публикации игр и т.д. Программист обязан постоянно учиться и уметь быстро разбираться с новыми для него технологиями.

Сергей Профоров, генеральный директор ООО «Риэл Гео Проджект», офиса группы компаний «НЕОЛАНТ» в Дубне

1. В первую очередь программист на Unity должен владеть языком программирования C# и знать принципы объектно-ориентированного программирования. Во-вторых, владеть графическим интерфейсом среды Unity, способами расширения и автоматизации работы в нем. В-третьих, конечно, нужно знать, как работает движок Unity, жизненный цикл объектов, работу «корутин», назначение базовых классов, таких как MonoBehaviour.

2. Собственно среда разработки Unity. Для написания кода можно использовать MonoDevelop, но для пользователей Windows более привычна будет Microsoft Visual Studio с расширением для отладки приложений Unity.

В остальном разработчик либо сам расширяет инструментарий Unity под требования проекта, либо находит готовые решения в Asset Store.

Нелишним будет наличие графических редакторов, таких как Gimp, Adobe Photoshop или аналогов, и трехмерных редакторов Blender либо Autodesk 3ds Max и SketchUp.

3.Наша компания рассматривает соискателей с высшим либо с неоконченным высшим техническим образованием (студентов старших курсов). Изредка попадаются таланты без высшего образования или с другой специализацией, но с широкими компетенциями в области 3D и программирования.

4. Минимальным требованием к опыту работы является наличие хотя бы одного законченного приложения на Unity. Пусть это будет не сложная система, а однопользовательское приложение, главное – с логикой, объектами и задачами. В этом случае уже можно углубляться в наш профиль.

5. Наша компания успешно занимается 3D-технологиями уже давно, и поэтому необходимо понимание принципов работы трехмерной графики, рендеринга изображений, обработки физики объектов. Помимо этого, на проектах с высокими требованиями к производительности и ограниченными ресурсами необходимо владеть тонкостями реализации фреймворка .NET в Mono.

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

Александр Николаев, руководитель отдела мобильной разработки в компании PlayFlock

1. С одной стороны, у Unity довольно невысокий порог вхождения. К примеру, чтобы начать делать свой первый небольшой проект, достаточно опыта программирования на любом с-подобном языке. Unity поддерживает C#, поэтому переход на него не вызовет много проблем. Для дальнейшего постепенного изучения будет достаточно официальных обучающих материалов.

С другой стороны, говоря о программисте Unity более высокого уровня, определенно понадобятся навыки оптимизации кода и профилирования. Понимание того, как происходит рендеринг. Для этого придется изучить не только тонкости движка, но и принципы его работы. Без совокупности данных знаний крупный и красивый проект не создать.

Хочется отметить, что программист Unity занимается не только программированием. Часто бывает так, что приходится верстать интерфейс, создавать анимации, работать со звуками. Поэтому навыки и опыт в этих областях не будут лишними.

2. Сама Unity обладает достаточно большим инструментарием для разработки. И, конечно же, надо знать весь предоставленный набор. Кроме самой Unity, понадобится:

  • редактор кода/IDE – я использую Visual Studio, но можно использовать Mono;
  • система контроля версий GIT – я отдаю предпочтение графической оболочке SourceTree;
  • для сборки билдов под iOS понадобится MacOS с установленным XCode.

Кроме вышесказанного, советую просматривать Asset Store. Там бывает много полезного и интересного.

3. Рассматриваются кандидаты только с высшим образованием. В то же время профильность не играет огромной роли. Более важным фактором служит умение думать и применять свои знания в деле. В нашей практике есть успешные примеры работы с кандидатами, не имеющими соответствующего образования.

4. Для каждой должности требуется разный опыт. Для младшего специалиста достаточно домашнего проекта на любой из платформ. Этого опыта обычно хватает для того, чтобы набить пару десятков обязательных шишек. Конечно же, знания кандидата проверяется тестовым заданием. Так мы можем быть уверены в том, что кандидат, приступив к работе, сможет самостоятельно выполнять самые простые действия с Unity и кодом.

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

5. В своих играх мы часто используем сторонние плагины. Такие как SDK социальных сетей, код рекламных интеграторов, решения для сбора статистики. Большинство из них не имеет сборку для Unity, а только под нативные языки платформ. Поэтому специфическим требованием к программистам Unity у нас являются базовые знания Java и Objective-C, а также минимальный опыт работы с Android Studio и XCode.

Павел Руфф, ведущий программист на Unity, стартап в ЕС

1. В геймдеве нет границ. Для начинающего разработчика нужны личные качества: стремление к играм и результативность.

Знания C# помогают, несложно перейти на Unity из корпоративной разработки. В моей практике успешно перешли сильные специалисты.

Стек технологий: движок Unity и C#. Все остальное зависит от проекта и команды.

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

2. Инструментарий разработчика: Git, Visual Studio, Resharper, Mac для iOS-сборки.

3. Требования по уровню образования… ну, думаю, 7 классов надо закончить. Конечно, высшее образование – обязательное требование во многих компаниях.

4. Требования к опыту работы для Senior/Lead: примерно 5 лет С#, 3 года Unity.

5. В наших командах внимание уделяется отсутствию регрессии, для этого рассматриваются аналитические способности и навыки контроля качества.

Дмитрий Коблык, CTO at Panzerdog

1. Нужно знать C#, иметь неплохую математическую и алгоритмическую базу.

2. Для комфортной работы достаточно Visual Studio и системы контроля версий (SVN, Git, etc.). Для сборки под iOS также потребуется Mac.

3. Требований к образованию нет, но если у кандидата есть диплом о высшем образовании, связанный с программированием, то это несомненный плюс.

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

5. Главное требование в нашей компании – кандидат должен любить игры и играть в игры.

Михаил Корчун, ведущий разработчик, Halfpixel Games

1. Unity довольно низкий порог входа. Есть большой соблазн использовать готовые решения из магазина плагинов (Unity Asset Store). Это дает возможность быстро начать, но у всех них есть ограничения, а зачастую просто низкое качество. В итоге проект может сильно пострадать. Подход DIY (Do it Yourself) довольно часто оправдывает себя, т.к. дает полную свободу.

2. Unity Editor, IDE для C# (мне лично нравится новый Rider от JetBrains), различные профайлеры: Unity Profiler, XCode, RenderDoc – зависит от целевых платформ.

3. Раньше я считал, что необходимо высшее образование в алгоритмах/математике/физике. Но я знаю нескольких отличных программистов без высшего образования. Они быстро добирают знания в нужных областях, как только появляется задача. Интересных и бросающих вызов задач море. Для меня лично это было основной причиной перехода в геймдев.

4. Желателен опыт именно игровой разработки. Я пришел в геймдев после 6 лет работы над корпоративным софтом. В разработке игр подход другой: гораздо чаще меняются требования, ограниченные ресурсы, некоторые подходы к разработке просто неэффективны (это ставило в ступор первый год).

5. В front-end-разработке есть направления: спецэффекты (FX, шейдеры), искусственный интеллект (AI), инструментарий (Pipeline/Editor Tools), интеграция внешних сервисов (Facebook, Android, iOS, Steam, рекламные площадки и т.д.), Multiplayer (Unet HLAPI/LLAPI, Photon), анимация, физика. В больших командах они представлены отдельными должностями. В небольших командах нужны универсальные разработчики с базовыми знаниями во всех областях.

Алексей Лукоянычев, Unity3D lead developer в dizzystyle apps

1. С#, алгоритмы, графика, знанием самой Unity.

2. Unity3d, IDE (Visual Studio, Rider, Mono, Et cetera), Git или любая другая SVC, голова.

3. Упорство, находчивость, трудолюбие.

4. Вся работа должна быть по делу. Чистый С# также приветствуется.

5. Самодисциплина должна быть на уровне – удаленка ведь.ф

Илья Боковенко, фрилансер

1. C#, ООП, векторная алгебра, graphics pipeline, shading models, шейдеры, современные техники рендера и оптимизации, отладка производительности. Движок, конечно, нужно знать в соответствии с потребностями проекта.

2. Сама среда Unity, Visual Studio.

3. Никаких. Лишь бы был в теме.

4. Dev – от года, senior – от 2, законченный проект.

5. Нет.

Подготовил Игорь Штомпель

 
Проект Издательского дома "Положевец и Партнеры"

По вопросам партнерства обращайтесь по электронной почте chooseit@samag.ru

Телефон: +7 499 277-12-45