Мы расскажем об особенностях работы в геймдеве, о навыках, которые следует освоить, о тестовом задании и о собеседовании.
Еще недавно геймдев казался территорией мечты и привилегией круга избранных, но с каждым днем появляется все больше компаний, которые трудятся над созданием проектов различных жанров и направлений. Благодаря этому увеличиваются шансы отыскать свое место под солнцем в царстве демиургов, по чьей воле из строк кода рождаются удивительные миры.
Мы обращаемся к программистам, только ступившим на путь исканий и самоопределения: задумывались ли вы о карьере в игровой индустрии? В любой профессии есть свои преимущества и недостатки, поэтому не будем убеждать вас в том, что это воплощение заветных грез или нескончаемая череда захватывающих приключений. Мы расскажем об особенностях работы в геймдеве, о навыках, которые следует освоить, о тестовом задании и о собеседовании. Возможно, эта информация поможет вам принять одно из самых важных решений в жизни — решение творить игры!
Какими умениями должен обладать кандидат?
Если вы претендуете на должность программиста в компании, занимающейся разработкой игр, вам нужно обладать множеством специальных навыков. Кроме того, желательно иметь знания в области прикладной математики, информатики и физики: вполне вероятно, что вам не раз придется опираться на теоретическую базу в решении практических задач.
Из основных навыков, которыми должен обладать кандидат, можно выделить моделирование физических процессов и графики, использование различных систем координат и пространственных поворотов, понимание векторной алгебры. Также необходимо иметь четкое представление о предназначенных для игры платформах и их ограничениях.
Специфика требований к программисту обусловливается еще и тем, будет ли он разрабатывать небольшие браузерные игры, мобильные приложения или крупные проекты AAA-класса. В зависимости от размера и типа создаваемого продукта нужен определенный стек технологий.
Занимаясь сложными, масштабными играми с высокой производительностью, специалисты работают с кастомными движками и фреймворками, для чего необходимо знание языка C++. При создании мобильных приложений программисты могут пользоваться нативным инструментарием для конкретной платформы и соответствующими игровыми библиотеками. Однако все больше крупных компаний делают выбор в пользу кроссплатформенных движков, таких как Unity.
На наш взгляд, Unity является оптимальным игровым движком для новичков. Сопроводительная документация на официальном сайте содержит удобно систематизированную, подробно и понятно изложенную информацию. Достаточно просто, например, научиться добавлять игровой объект, определять для него комплекс поведений (иди — беги — стреляй), выставлять свет и так далее. Еще одно значимое преимущество движка — минимальные затраты на портирование.
Что касается языков программирования в Unity, стандартное условие для кандидата — владение C# (реже — UnityScript и Boo). Однако этим необходимые навыки относительно языкового арсенала соискателя не исчерпываются: желательно располагать знанием Objective-C и Java, чтобы создавать нативные плагины для iOS и Android.
Не стоит забывать и о требованиях времени к разработке браузерных игр. Если раньше для их создания использовали преимущественно Flash и ActionScript, то сейчас все чаще обращаются к HTML5 и JavaScript. Некоторые специалисты экспериментируют с относительно новой технологией WebGL.
Если вас не смутил объем знаний и умений, которыми должен располагать программист, работающий в игровой индустрии, и вы по-прежнему жаждете испытать свои силы в этой сфере, пора ознакомиться с советами по выполнению тестового задания.
Тестовое задание: секреты успеха
Что представляет собой тестовое задание? В большинстве случаев кандидату предлагают написать мини-игру, отвечающую определенным требованиям. Чтобы такая задача не поставила вас в тупик, желательно иметь хотя бы небольшой опыт в этой области.
Мы ни в коем случае не призываем приносить годы в жертву этой цели. Напротив, гораздо эффективнее работать над небольшими проектами, затрачивая при этом как можно меньше времени. Задача начального этапа — не готовый к релизу конкурентоспособный продукт, а овладение необходимыми для его создания навыками и технологиями.
Вернемся, однако, к тестовому заданию. Обратите особое внимание на код, который является выражением ваших мыслей и сутью построенной вами архитектуры. Он должен быть максимально структурированным, корректным и исправно функционирующим. Вдохновитесь на чистый скриптинг остроумной цитатой: “Пишите код, исходя из того, что все программисты, которые будут сопровождать вашу программу, — склонные к насилию психопаты, знающие, где вы живете”.
Многочисленные баги не лучшим образом характеризуют специалиста, поэтому нужно тестировать игру, устранять критические ошибки и честно признаваться в своих просчетах и не до конца реализованном функционале. Мы не рекомендуем составлять десятистраничную документацию, но небольшой сопроводительный текст, в котором наряду с описанием действий вы отметите свои слабые места, положительно скажется на оценке вашего проекта.
Еще один важный аспект работы над тестовым заданием — это время. Чтобы успешно справиться с задачей и успеть к дедлайну, нужно расставить приоритеты: понять, чему стоит уделить больше внимания. Для визуализации главного героя, например, вполне подойдут стандартные решения, тогда как устранение неисправностей, работа над архитектурой приложения и пользовательским интерфейсом требуют максимум усилий.
Вы не успеваете выполнить задание? Не страшно: каждый человек творит в своем темпе, у каждого могут возникнуть неотложные дела. Необходимо заранее обратиться к работодателю с просьбой перенести срок сдачи и предложить отправить промежуточный результат — то, что вы сделали на данный момент.
Если вы грамотно излагаете свои мысли с помощью кода, это очевидно даже в незаконченном проекте. Практически готовая к продаже игра с ассетами и графическими элементами достойна похвалы, но стремление справиться со всем в одиночку может расцениваться работодателем как недостаток. От сотрудника ждут не самостоятельной реализации своих амбиций в условиях неограниченного времени, а взаимодействия с другими специалистами для достижения наилучшего результата в установленные сроки.
На этом этапе стоит прислушаться к себе и понять, готовы ли вы к работе в коллективе. Если нет — вы можете заняться созданием проектов в инди-направлении. Однако прежде чем определиться и принять окончательное решение, проанализируйте положительные и отрицательные стороны этой сферы геймдева. У вас будет возможность контролировать все процессы, самостоятельно реализовывать свои задумки, но велика вероятность, что вы столкнетесь с ресурсными ограничениями и другими сложностями, из-за которых разработка игры может затянуться или не завершиться вовсе.
Собеседование: ключевые моменты
После выполнения тестового задания вы получите приглашение на собеседование, где представители разных специализаций постараются сформировать максимально полное и объективное мнение о вас. Будьте готовы обсудить выполненную работу и ответить на теоретические вопросы.
Разумеется, все ваши навыки будут рассматриваться в совокупности. Вы можете с треском провалить графику, но знать толк в логике, уметь работать с различными фреймворками и ориентироваться в отдельных библиотеках. В этом случае ваша компетентность не останется незамеченной, а слабые места не будут восприняты как существенный недостаток, ведь, когда у специалиста имеется солидный багаж знаний, восполнить пробелы — посильная задача.
Что касается личностных качеств, выявить их помогут ответы и реакции на вопросы, а также обоснование мотивации сделать карьеру в игровой индустрии. Все это, наряду с профессиональными характеристиками, позволит составить впечатление о кандидате. Приведем некоторые качества программиста, которые многие работодатели расценивают как несомненные преимущества.
Постоянное саморазвитие. Программист должен выходить за рамки своих обязанностей и интересоваться всем процессом разработки игр, понимать его механизмы. Также нужно следить за свежими публикациями на сайтах и в различных изданиях, чтобы идти в ногу со временем и ориентироваться в постоянно меняющемся мире информационных технологий. Порой отрывочных и поверхностных знаний достаточно для того, чтобы попасть в геймдев, однако удержаться в нем с таким уровнем профессиональной подготовки невозможно.
Эффективный подход к решению задач. Если вы долго, но безуспешно пытаетесь справиться с какой-либо проблемой, нет ничего предосудительного в том, чтобы узнать, как в подобных ситуациях поступают другие специалисты. Разница лишь в вашем применении полученной информации: бездумное копирование или разъяснение для себя сути. Выбор очевиден.
Готовность к рутинной работе. Вам предстоит не только изучать искусственный интеллект, программировать движения персонажа или моделировать воду, но и заниматься кнопками, кодить поведения, изменение цвета и так далее. От подобных поручений не уклониться, поэтому нужно уметь находить простор для фантазии и смелых решений даже в однообразных повседневных занятиях. Кроме того, вы всегда можете оптимизировать монотонные операции и не возвращаться к ним в будущем, чтобы сэкономить время для других задач.
Коммуникабельность. Качество продукта во многом зависит от слаженной работы всех отделов, вовлеченных в процесс создания игры. Программисты должны постоянно поддерживать диалог с геймдизайнерами, художниками, аниматорами и копирайтерами. Также важно установить контакт со своим менеджером, чтобы обеспечить себе комфортные условия творчества. Например, если вы устали от однотипных поручений, можете попросить у руководителя более интересные задачи. Однако не забывайте, что сложные исследования доверяют только грамотным специалистам.
Способность к самокритике и умеренное честолюбие. Вы хотите изменить мир, написав свой гениальный движок? Думаете, что ваш код самый лучший? Не терпится переделать действующие проекты компании? Работая в коллективе, нужно умерять свои амбиции, прислушиваться к мнению других и подчиняться решениям руководства. Так или иначе, всегда есть возможность получить повышение, стать главой команды и более свободно реализовывать свои задумки, не вступая в противоречие с концепцией продюсеров.
Один из классиков русской литературы заметил: “Если уж писать, то только тогда, когда не можешь не писать”. В контексте нашего разговора эта фраза приобретает новый смысл. Программирование в геймдеве — настоящая страсть, а не просто выполнение должностных обязанностей в установленные договором часы. Это неотъемлемая часть жизни и подлинное счастье вновь и вновь видеть, как код обретает зримое воплощение в красочном игровом мире, приносящем радость множеству пользователей. Если вы действительно чувствуете, что разработка игр — ваше призвание, пора осуществить свою мечту!
Комментарии (0)