Переход на 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. Успехов!

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
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+ Мелких проектов выходит каждый год несколько десятков, во всё просто не успеваешь поиграть.

Ты настолько переполнен ядом что решил плеснуть и сюда ?

Плариум — это такая же галера как и Епам.
Только вместо банковского софта клепают 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)

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