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

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

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

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

Стоп, я не понял. Они хотят, чтобы программисты еще и 3д знали? Может, им еще там прям кофе готовить вместо кофеварки?

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

Ну как бы юнити3Д, по крайней мере надо уметь обращаться с 3д моделями. Делать их, конечно, вряд ли заставят - на то есть моделлеры, но размещать их возможно придётся программисту.

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

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

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

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

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

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

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

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

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

внезапно вот: https://unity3d.com/ru/learn/tutorials
лучше сначала темы просмотреть (но там бывает скучно), потом пару проектов.

кстати я и так вижу все комменты к своим постам.

показать ответы
1
Автор поста оценил этот комментарий
Решил скачать и посмотреть как получилось, пост интересный, пиши больше
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

спасибо, пока не о чем :)

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

перевёл. оказалось в пару кликов делается)

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

спасибо) простой геймплей обычно тем и берёт)

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

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


Дальше по пунктам:

1.

Но некоторые всё-таки кандидатуру рассматривают и просят "код, которым ты гордишься" - не знаю, что это значит, я такого ещё не написал, или дают тестовое задание.

Ну так надо узнать наверно, пока не узнаете вас не возьмут. Кстати чего в тему не приложили кусок кода? :)


2.

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

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



3.

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

Не обязательно, можно сделать через аниматор(пример на гифке)



4.

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

Это из тех. задания или с ваших слов? То пишите гравитация, то пишите что в задании было сделать без физики. Гравитация = физика, если шарик должен смещаться по клику без физики, то он должен менять вектор смещения/движения, а не "направление гравитации можно менять кликом". Какая то пурга в целом написана. Если он движется без физики, какая у него может быть гравитация оО.

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

1) я пишу много кода, но сколько бы не писал, через день/месяц/год всегда вижу, что можно было сделать лучше. как можно гордиться кодом, когда знаешь, что он не идеален?)
2) как это было:
шарик ограничен движением только по оси Y. платформы только по X. Думал, что если поставить платформе большую массу, то двигаться они не будут. массу поставить забыл, вот эффект льдин и получился. Мне понравилось.
На практике если даже поставить большую массу, то если шарик уже упал чуть ниже платформы, т.к. он не может двигаться по X, то он немного сдвинет даже самую тяжёлую платформу. Сейчас платформы кинетические(?), двигаются через трансформ.поз, шарик если окажется при падении чуть ниже платформы сам отпрыгивает вверх.
4) ну я там под конец написал, что "это я так понял", сейчас под рукой задания нет, точно сказать как там написано не смогу.

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

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

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

молодец)

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

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

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

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

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

По моему, он ответил не вам, а мне.

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

это да =)
немного сбивает с толку, что все комменты под постом мне шлются)

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

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

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

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

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

Прибавляешь к опыту работы 2 года, добавляешь технологии, о которых слышал 1 раз в жизни. Контор реально дохера хоть кто-нить да откликнется, ищи удаленки.

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

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

Автор поста оценил этот комментарий
Гуд. Правда "чтобы" в данном контексте пишется слитно.
Zanudamode off
Игра прикольная, музычка порадовала.
раскрыть ветку (1)
Автор поста оценил этот комментарий

всегда пишу раздельно, а потом исправляю. и ведь никак не запомню =\
спасибо)

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

вообще когда на BI программиста устраивался, в инете нашёл кучу инфы о собеседованиях и вопросах на них. а по юнити вакансиям ничего особо нет, так что не знал чего ждать.

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

Если не найдете перфикциониста, который будет дрочить каждый кусок сюжета и игровой логики, обращайтесь :)

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

в двух ближайших проектах сюжета не предусмотрено, а логика проста до безобразия, но на будущее я вас запомню :)

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

Флаг Is Kinematic ставишь, и ничего не двигается.

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

ну вот платформы и кинематические, а шар если таковым сделать, гравитация не будет работать, а без гравитации геймплей сразу меняется) к тому же мне нравится, что у игрока есть "последний шанс" - т.е. если он угол платформы задел, то мячик на платформу может и залезет)