×Закрыть

Переход на Unity: как программисту попасть в геймдев

Привет! Я — Алексей Науменко, .NET Developer в Plarium Kharkiv. Я хочу рассказать о том, как начинал свою карьеру, и посоветовать, с чего разработчику начать изучение Unity.

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

Как я начал программировать

Я учился в ХАИ по специальности «Телекоммуникации». У нас был преподаватель, который конструировал беспилотники. Благодаря ему уже на 4-м курсе я начал писать простой код на С для микроконтроллеров, которые управляют передачей данных с земли на БПЛА. Тогда я решил, что нужно выучить какой-то актуальный язык программирования, чтобы писать на нём постоянно, а не только для решения узких задач.

Выбирал я между С# и Java: читал книги по этим языкам, но потом просто открыл Visual Studio и Java IDE и сделал выбор в пользу первого по «обертке». Не самый правильный способ анализа преимуществ и недостатков, но о выборе я не жалею.

Почему пошел в геймдев и выбрал Unity

В 5–7 классах мы с другом пытались сделать игру. И хотя получилась ерунда, романтика процесса осталась со мной. К тому же я люблю играть, особенно в древние RPG.

После университета я работал в нескольких продуктовых компаниях: год занимался веб-программированием, потом 4 года разрабатывал ПО для call-центров. Но меня всё время преследовала идея попробовать себя в разработке игр. Так что в свободное от работы время я стал думать, какой движок использовать для будущей игры.

Многие разработчики используют Unity и Unreal Engine, но я хотел изучить все варианты. Поэтому я стал разбираться, на чем написаны популярные проекты. Оказалось, что это либо самописные движки, как, например, у Naughty Dog, либо движки, о которых очень мало информации в интернете — чтобы работать с ними, нужно, скорее всего, некоторое время работать в индустрии и знать хотя бы общие принципы построения игровых движков.

Я вернулся к выбору между Unity и Unreal Engine. И так как на тот момент я уже 4 года программировал на .NET, выбор был прост: в Unity есть C#, а в Unreal Engine — нет. Еще один плюс Unity: я погуглил некоторые интересные мне вопросы и почти на все из них нашел попытки ответить. Пусть не всегда профессиональные, но информация была, и было с кем ее обсудить.

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

С чего начать обучение

Я изучал уже решенные задачи, похожие на те, что интересовали меня. Однажды я искал конкретное решение, но не нашел его в Asset Store. Поэтому начал мониторить форумы и наткнулся на парня, который делал именно то, что мне было нужно, но в Store его решение не пропустили по каким-то требованиям. Я написал ему сообщение и предложил купить его наработку. Он очень обрадовался возможности подзаработать — это был румынский десятиклассник. Чуть ли не лучшее мое вложение в изучение движка: 10$ плюс столько же за Swift-платеж.

Новичку полезно посмотреть, как работают над задачами другие люди, даже если это что-то примитивное. Ведь решений может быть множество. Когда начинаешь, как будто шаришь пальцами в темноте. Ты не знаешь, насколько удачно выбранное решение: возможно, с его реализацией возникнут проблемы в будущем или есть более простой вариант.

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

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

Нет смысла изучать Unity просто так — стоит начинать с решения конкретных проектных задач. Лучше сразу определиться: «Я хочу сделать Pac-Man». Начинаешь думать, что для этого понадобится: например, нужно реализовать управление персонажем. Желтое существо ест белые точки. Существо должно понимать, что наткнулось на съедобный объект — значит, нужно начать с определения соприкосновения съедобной точки с Пакменом. Тогда появляется конкретная проблема и необходимость искать пути ее решения — а это, по-моему, и есть лучший способ изучения технологии.

Переход с .NET на Unity на практике

Когда мы собеседуем кандидатов, прямо говорим, что не проверяем знания Unity, а фокусируемся на .NET. На практике мы убедились: человека, который знает .NET, гораздо легче обучить работе с движком, чем того, кто начал изучать язык параллельно с Unity.

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

Иногда мы собеседуем Senior или Middle+ .NET программистов, которые не знакомы с Unity вообще. При этом человек не переходит на позицию Junior, потому что в Plarium, да и в работе с движком, нет понятия Unity Junior. Если с .NET всё хорошо, освоить движок будет очень просто.

Что почитать

Кроме Unity Answers есть еще UnifyWiki. Можно декомпилировать код и посмотреть результат (он не обфусцирован).

На старте очень пригодились форумы (answers.unity3d.com и forum.unity3d.com). Также я читал книгу Game Engine Architecture Джейсона Грегори. Автор в ней не говорит конкретно о Unity, но подробно рассматривает составные части и особенности игровых движков в целом. Он в деталях описывает, из чего состоит движок, какая математика нужна, как устроен рендеринг. Эта книга расширяет представление о Unity: я начал понимать, что в этом движке есть или должно быть, что с него спрашивать. Единственная трудность — для прочтения этой книги нужно быть очень мотивированным: она не нудная, но достаточно объемная.

Преимущества работы с Unity

Большие компании любят Unity за кроссплатформенность. Если ты что-то написал, оно билдится и под iOS, и под Android — пусть и с надстройками, но зато сразу работает без особых плясок. Конечно, если это не касается платежки :)

В нашем случае преимущество также в том, что Plarium — официальный партнер Unity с поддержкой уровня Enterprise Support. Нам не только быстро отвечают на запросы, но и предоставляют больше открытого кода, и мы можем сами что-то вскрыть и допилить.

Надеюсь, информация будет полезна тем, кто планирует работать с Unity. Успехов!

LinkedIn

61 комментарий

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Следил за развитием Unity и тестил его постоянно начиная с 2009 года. Но полностью сел на него уже только на версии 4.5. Ждал поддержку WebGL))) И согласен, что этот геймдвижок хороший выбор для лёгкого входа в геймдев или дешевого входа на рынок. Моя первая проба пера была в связке OpenGL и C++. Но если бы тогда был Unity я скорее всего выбрал бы как раз его. Но утверждение о великой важности .net для скриптинга звучит как по мне то стрёмно. То утверждение что движок по усвоению халява меня тоже настораживает. Сейчас я смотрю на массу туториалов и ответов на вопросы нубам как на то, что как раз вот так делать не надо. Вряд ли это говорит о том что движок лёгкий.в усвоении.

Ну офигеть теперь. Я что-то пропустил? Когда это unity стал первоклассным движком с хитовыми проектами на выходе? Массовость, переполненность нубьем соответствующих каналов stackoverflow, румынские школьники за $10 и т.д. теперь считаются преимуществом платформы?

Kerbal space programm, Cities: Skyline, Monument Valley, Pillars of Ethernity, Endless Legend, Never Alone.

Что мало? Это только то во что играл и считаю отличными проектами на 5+ Мелких проектов выходит каждый год несколько десятков, во всё просто не успеваешь поиграть.

Endless space, Hearthstone, Albion Online, Ori, Rimworld
Не говорю что он лучший, но для своих задач годится

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

К слову сказать Unity3D — это не только геймдев, хотя в основном. Но вот работать в геймдеве я б никому не посоветовал. Разве что если в качестве CEO или гейм дизайнера но никак не в качестве программиста.

Работал в геймдеве 3+ лет (не считая пет проектов) и не соглашусь. Намного лучше чем галеры (я не считаю геймдевом геймдевные галеры типа Plarium или Gameloft)

Намного лучше чем галеры (я не считаю геймдевом геймдевные галеры типа Plarium или Gameloft)

А чем лучше? Может мы по разному оцениваем одни и те же вещи?

Я оцениваю по такому критерию:
1. Зарплата, она в геймдеве ниже
2. Количество овертаймов(сильно выше в геймдеве)

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

1. Вообще-то в геймдеве зарплата выше.
2. Нормально делай — нормально будет.

Окромя зарплаты и овертаймов есть еще такая вещь, как удовлетворение от работы. И заниматься искусством всяко приятнее, чем пилить очередной никому не нужный скайп или автомобильный тв-тюнер.

1. Вообще-то в геймдеве зарплата выше.

Опять же, мы говорим о одном и том же геймдеве? Я имею ввиду Киев, Java/Scala — програмирование(серверсайд/бигдата). В энтерпрайзе за такое платят 3-5, такому же в геймдеве максимум 3.

Нормально делай — нормально будет.

Это не распарсил.

ниматься искусством всяко приятнее

Кому как. Мне вот гораздо важнее деньги

И заниматься искусством всяко приятнее

геймдев в 99% случаев не искусство, а для программиста может оказаться что и на все 100 не искусство, потому что контент и предметная область совсем сбоку, код и туда и туда одинаковый, просто в одном случае деньги, во втором золото

2. Нормально делай — нормально будет.

Ага, с разбега). В том-то и дело, что игры — это не бизнес-проблема, которая решена или не решена, а намного более субъективная категория. У исполнителя и заказчика может не просто не совпадать мнение насчёт результата — он может вообще в вопросе не разбираться, если это инвестор. Расскажете ему в таком случае, что всё нормально, и со спокойной душой домой без овертаймов — может, даст за это лишних несколько килобаксов бгг. В том-то и дело, что кому-то повезло работать с внутренними заказами в адекватном коллективе, но это большое исключение, и называть при этом всё остальное «не геймдев», настаивая на «з/п выше» — смешно просто).

А ну-ка, отвечай, что у гнома в кармане лежит? :)

Колпак же ж...

Это же всё меняет кардинально, теперь и геймдев — не геймдев)).

Вкратце можно резюмировать парой слов «Учите C# и воздастся»

Ну и естественно в разы большая конкуренция и сам темп,чем в обычной разработке.
Хотя говорю банальность)

Банальную, но к сожалению совершенно правдивую. Юнити — это отличный и очень удобный инструмент по разработке игр, снимающий с последнего необходимость самому писать множество рутинных функций. Как следствие, низкий порог вхождения, большая конкуренция, и зарплаты «ниже среднего».

Чтобы переходить на Unity, нужно любить игры больше, чем программирование. Конечно, и в «обычной» конторе можно тушить пожары и коверкать архитектуру только в путь, но в геймдеве это повально из-за специфики отрасли, поэтому нафиг.

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

Если там платят неплохо, то почему бы и нет?

Если там платят неплохо

Дуже часто чую, що там платять небагато.

Так я й написав «якщо». Більшість фірм, так, платить небагато. Але є й фірми де платять так, що може сподобатися Володимирові.

подпишусь на эту рекурсию))

А вам зачем? :) такие есть, поверьте.

Наверное затем, что я специалист по игровым алгоритмам. Без дураков. Только продать это сложно: вместо зарплаты начинают рассказывать о интересной работе.

Первые 35 лет в жизни мальчика самые тяжелые)))

до этого еще дожить надо))

а чем большое отличие от любой другой разработки?

Ну это ж только локально по деньгам плохо, во внешнем мире разница вряд ли есть

Давайте спросим Музыку или Морхейма ))
А вообще это весело.

Пахать за копейки как папа Карло весело? Кому как!

Ну, тут «кто на что учился», я подразумеваю, что прайс в геймдеве зависит скорее от компании и уровня профессионализма чем от ниши, как и везде впрочем.

Средние з.п. в геймдеве меньше оутсорса в два — три раза

лучше от легаси кода блевать за бОльшую зп, чем игры писать?)

Мне да, отношусь к работе как к обмену труда на деньги

Только ещё вопрос, что хуже — легаси код или кодить игры.

AAA игры не писал, не представляю

С меня 1.5 года + перерыв на службу + ещё 1 год хватило выше крыши. Вообще, ещё до службы надоело и подумывал валить, просто после около 1-1.5 года без кодинга и это было вполне за счастье (плюс, выбирать не приходилось — срочно нужна была работа и деньги).

Обратная ситуация у знакомых. Работали все на .NET, в основном гриды реализовывали для бэкенда.. и так 3+ года, все с удовольствием свалили в геймдев контору на плюсы. Говорили что тошнило уже от этих таблиц.

Ну, по своему опыту я бы советовал идти просто в другую контору/на другие проекты, гридами мир не ограничивается. Но геймдев... нет)). При сравнении подходов «решать бизнес-задачи» и «делать игру», первый даёт очевидное преимущество в плане архитектуры и чёткого ТЗ. Опустим вопрос, что в разных конторах по-разному может быть — конечно, но игры сами подталкивают к костылям и тушению пожаров. Может, гриды и были занудными, но проект хотя бы выглядел по-человечески.

я больше склонен к тому, что «попробовать нужно всё». Пока глаза горят — можно и в геймдев. А потом и в «бизнес-логике» можно «старость» доживать :)

И то и то делал. Пробовал я эти ваши галеры, не понравилось.

Ну, я практически всё время — в продуктовой разработке. Может, некоторые галеры и зло (хотя мой знакомый на второй галере уже давно и даже не думает валить, т.к. проекты очень хорошие), но геймдев — зло 100%. Для программиста — так точно. Если хочется и нравится именно делать игры — вопрос отдельный).

Ремарка: Папа Карло особо то и не пахал. Чисто шарманку крутил и шатался с ней по дворам. Фактически — просил милостыню.

единственный вариант — потому что нравится спектр задач который там возникает, хотя ввиду того работатют в гейм индустрии, по крайне мере на територии Украины, интерес отобьют быстро.

А чому ні ? Чим воно відрізняється від іншого програмування. Я наприклад .Net, Android розробник, і мені ігри цікаві і дивлюсь в сторону Unity, правда поки як хобі і для здійснення дитячої мрії =)). А на рахунок ЗП те що 600 баксів для мідла то напевно якась така не до кантора, бо як мінімум по Львову та Київу ЗП такі як і у всіх розробників. Правда починати з юніті вчити програмування також би не радив.

В игры идут задроты с горящими глазами. Работодатели этим пользуются

А чому ні ? Чим воно відрізняється від іншого програмування. Я наприклад .Net, Android розробник, і мені ігри цікаві і дивлюсь в сторону Unity, правда поки як хобі і для здійснення дитячої мрії =)).

Значит, пока не особо смотрели, раз спрашиваете, чем отличается. Посмотрите внимательнее — оно очень заметно отличается).

Как раз недавно был вопрос, как выйти из Unity)

Подписаться на комментарии