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

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

Ну а когда вас предупредили, начнём. Я ищу работу в гейм индустрии юнити программистом. Опыт работы программистом у меня есть, но не игровой. Сам серьёзно увлёкся игроделом в качестве хобби сравнительно недавно - года полтора назад. Первым делом попытался написать свой движок, ведь только я смогу написать то, что мне нужно? В общем недели за 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.8K постов22.2K подписчиков

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

ЗАПРЕЩЕНО:

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

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

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


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

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

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

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

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

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

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

раскрыть ветку (6)
3
Автор поста оценил этот комментарий

не уверен, что стоит писать название - вдруг они не хотят, что б все знали, какое задание они дают?)
но точно могу сказать, что не мейл.ру)

раскрыть ветку (5)
Автор поста оценил этот комментарий

Просто получил задание 1 в 1 как ваше) Интересно было, не в одну ли мы компанию подавали резюме)

раскрыть ветку (4)
Автор поста оценил этот комментарий

ну что, взяли?)

раскрыть ветку (2)
Автор поста оценил этот комментарий

да, на испытательном сроке сейчас)

раскрыть ветку (1)
Автор поста оценил этот комментарий

молодец)

1
Автор поста оценил этот комментарий

ну что могу сказать, не делай моих ошибок)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку