Как я завалил тестовое задание

Внимание! Данный пост будет содержать весьма очевидную информацию для сколько-нибудь опытных разработчиков!

Ну а когда вас предупредили, начнём. Я ищу работу в гейм индустрии юнити программистом. Опыт работы программистом у меня есть, но не игровой. Сам серьёзно увлёкся игроделом в качестве хобби сравнительно недавно - года полтора назад. Первым делом попытался написать свой движок, ведь только я смогу написать то, что мне нужно? В общем недели за 2 понял, что всё не так просто и решил посмотреть другие движки. "Юнити - конструктор дурацкий, ну его нафиг!" - подумал я. За пол года рассмотрел с десяток движков. ни одной нормальной игры не сделал. Потом друг меня уломал попробовать юнити, понеслась. Через недели 3 была готова первая игра про спаривание носков.

Вывод 1: Важно не посмотреть все имеющиеся движки и не написать свой, а написать первую игру, а потом вторую. Чужих инструментов вам, конечно, может и не хватит. Лет через N качественной разработки.

Как я завалил тестовое задание Gamedev, Провал, Длиннопост

В общем начал я неспешно учить юнити после работы, делал игрушки на конкурсы и проблем не знал. И вот в один прекрасный день решил, что хочу жёстко перейти в сферу геймдева. Почитал вакансии и начал рассылать резюме. Очень много резюме закрываются сразу как видят, что для работы мне необходимо будет переехать (у нас в городе геймдева особо нет). Но некоторые всё-таки кандидатуру рассматривают и просят "код, которым ты гордишься" - не знаю, что это значит, я такого ещё не написал, или дают тестовое задание.


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

Как я завалил тестовое задание Gamedev, Провал, Длиннопост

Забавным оказался следующий момент: тестовое задание дали "на день", ну типа оно простое, на несколько часов. При этом получилось так, что уже был вечер, я утром не выспался, потом рабочий день, пришёл уставший, а завтра снова на работу до вечера. В общем единственным логичным вариантом мне показалось поспать пару часов и сделать игру ночью. Оценил разработку в 3 часа. Ушло 5. Проснувшись ночью был весьма туп. На работе весь день так же был весьма бесполезен.


Полученный урок/вывод 2: не бойтесь с интервьюером поговорить и объяснить ситуацию, думаю денёк бы мне добавили без проблем. Не уверен, что прошёл бы в итоге, но тем не менее работал мозг явно не в полную силу.

Как я завалил тестовое задание Gamedev, Провал, Длиннопост

Ну а сейчас по списку из отзыва от работодателя.
Бекграунд
Спланировать архитектуру такой игры в общем-то проблемой для меня не было, подобные же мелочи я и делал на конкурсы, но вот там не было цели делать всё красиво и правильно, к тому же до конца конкурсные игры всё-таки не доделывались. Пораскинув мозгами я накидал на бумажке примерную архитектуру, набросал сцены и УИ. За час вполне успешно смог в пейнте нарисовать бекгаунд (выше на скрине), да, художник из меня никакущий. И сделал его методом, который знал. Дело в том, что я постоянно делал 2д игры, т.к. попроще. И в одном из юнити уроков (спейс шутер вроде бы), просмотренных год назад, был метод - слепляем 2 спрайта подряд, делаем им постоянную скорость, как только первый спрайт полностью сползает с экрана устанавливаем снова стартовое положение. Да вот только вакансия была 3д, так что надо было сделать путём смещения текстуры. Но это, как сказали, не особо важный минус.

Как я завалил тестовое задание Gamedev, Провал, Длиннопост

Интерфейс

Тут стоит начать с того, что базовые уроки по юнити я смотрел год назад, смотрел захлёбом, так что логично предположить, что часть знаний усвоились, но многое просто не запомнилось. Дополнительно, никогда сильно не работал над интерфейсом - на конкурсах главное, что б геймплей был интересный. В итоге сделал как обычно интерфейс такой, что б работал у меня в редакторе. При этом даже забыв потестить на разных разрешениях - обычно просто на винде ставил жёстко соотношение 16/9 и интерфейс не ездил. Тут же у работодателя на андроид смартфоне всё уплыло. К тому же был какой-то баг с одной из надписью. Протестить я, к сожалению, андроид версию не смог, т.к. телефон подключаться к моему домашнему компу отказывается, а закинуть в облако и скачать оттуда я не догадался. Да, догадался я об этом, выспавшись, через день.


Темп

В связи с сонностью мозг работал действительно медленнее. Это я могу доказать просто. Работодатель мне написал: "Почему так медленно? Надо делать игру, в которую приятно играть самому". А мне вполне нравилось, когда я тестил. Чуть увеличивая темп я сразу же проигрывал. Выспавшись я увеличил темп игры в >7< раз!

Как я завалил тестовое задание Gamedev, Провал, Длиннопост

Пул

В игре платформы постоянно уезжают за экран и больше не появляются. Соответственно есть 2 варианта: или уничтожать их, а потом создавать новые, или сделать пул этих платформ и просто деактивировать ненужные и активировать, располагая где надо, когда требуется новая платформа. Первый вариант плох тем, что удаление и создание объектов очень дорогостоящие операции, а второй вариант тем, что его надо делать. Мой сонный мозг подумал: игра простейшая, если раз в секунду платформа удалится (помните, темп реально медленный), то в общем-то никакой реальной нагрузки эта одна операция не создаст. Но я забыл про один немаловажный момент: тестовое задание - это способ работодателю посмотреть на маленьком проекте как человек будет себя вести в большом. Т.е. практически в нём необходимо показать, что ты умеешь, даже если в данной конкретной ситуации особых плюсов видно не будет. Переусложнять, конечно, тоже не надо.



А сейчас, на мой взгляд, главный косяк полуночника:


Творчество

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


Во-первых я не жёстко закрепил платформы - получился такой эффект льдин, когда шарик падал на платформу, он немного её двигал. Мне показалось забавным. В ТЗ такого не было.

Во-вторых я сделал гравитацию - шарик двигается не с заданной скоростью, а разгоняется постепенно. В ТЗ было конкретно написано: "физику не надо". Т.е. фактически надо было просто сделать движение через transform.position в апдейтах.

Вывод: даже если тестовое задание маленькое и простое, то относиться к нему надо как конкретно поставленной задаче на работе.

Как я завалил тестовое задание Gamedev, Провал, Длиннопост

Ну и последнее: фокус

Картинка очень красивая, правда? Да вот только если вы подаёте резюме на моделлера, такая работа врядли вам слишком поможет.
Главной обязанностью вакансии была разработка логики игры. А я из 5 часов потратил 3.5 на интерфейсы, графику, свет и музыку. Если бы забил на вид и все силы вбросил бы в логику, то может быть и додумался бы работать по ТЗ.


Заключение:
После данного провала я подумал, что стоит немного прокачать знания и резюме. В итоге за 2 недели я пересмотрел заново базовые уроки по юнити (действительно кое-что забыл, как будто и не видел), а так же доделал эту игру и закинул её в гуглплей. Сегодня снова буду рассылать резюме, и в этот раз буду делать совсем другие ошибки =)

ps: ссылку на игру давать нельзя, но на скрине интерфейса есть название.

Лига Разработчиков Видеоигр

6.7K пост22.1K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

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


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

16
Автор поста оценил этот комментарий
Обычно при поиске работы так и делается. На первых собесах ты узнаешь что нынче в тренде и что от тебя хотят. Читаешь, вспоминаешь. На след собесе profit.
раскрыть ветку
Автор поста оценил этот комментарий

Простите пожалуйста, а в какую компанию вы подавали резюме, если не секрет?)

раскрыть ветку
Автор поста оценил этот комментарий
О, парни. Есть желающие присоединиться к разработке рпг про викингов? Продукт некоммерческий, одному делать сложно хоть и все сам умею) времени не хватает.
Сюжет очень интересный, хотя, до сюжета еще дойти надо, пока окружение делаю.
раскрыть ветку
Автор поста оценил этот комментарий

@Poryadok, кинь пожалуйста ссылку на уроки по unity?

раскрыть ветку
Автор поста оценил этот комментарий
"Изменение за тяжести, чтобы предотвратить мяч от падения." Хоть бы описание в плеймаркете перевел ;)
раскрыть ветку