воскресенье, 19 февраля 2017 г.

Ретроспектива - часть 4 - Первый GameDev

Один из вопросов который мне задали на собеседовании, это на каком месте на ladder’е я был в Starcraft. А также немного поспрашивали по тестовому, реализацию которого на тот момент я считал идеальной. Намекнули мне, что по зарплате я хочу больше чем остальные. Вообще после, я много раз слышал,  что на собеседованиях говорят, что я действительно хочу большую зарплату. Но всё таки основываясь на рынке вряд ли она такая уж и большая.
Как-то раз, собеседование прошло просто ужасно с моей стороны, я завалил все вопросы, которые только можно было. И в тот момент, я понял, что мои зарплатные хотелки будут выглядеть сейчас для моего собеседника просто верхом наглости. И я нарочно снизил планку, до минимума. Более чем в два раза меньше, чем от среднерыночной зарплаты. И что я услышал? Что я хочу очень даже не маленькую зарплату!
Возможно с какой-то точки зрения это правильный ход, всегда говорить работнику, что у него большая зарплата. Если работник будет думать, что здесь он получает больше - это ещё один плюс в сторону компании. Может этому их учат на курсах работодателей?
***
Но мы отвлеклись. Офис располагался в здании колледжа. Мы снимали часть крыла на первом этаже. Я был безумно рад, что наконец-то буду разработчиком игр. У меня в некоторых кабинетах в школе была кладовка - она располагалась за отдельной дверью в начале или конце класса. Вот в такой кладовке и разместилось 6 человек, 5 программистов (вместе со мной) и один из наших начальников. Сидели плотненько, спинами тёрлись друг о друга, особо на стульях не покатаешься.

Сохранилась только одна мутная фоточка, сделанная на старенький телефон. Но, что удивительно туда попала вся наша команда. Не помню, зачем я делал это фото. Может быть затем, чтобы через несколько лет добавить её вот в этот рассказ?
Андрей - наш лид. Остальные в нашей команде Дима, Таня, Сергей и я.

Андрея мы все уважали и доверяли ему. Хоть он и не всегда был приятен в общении, но спасал нас от нападок геймдизайнеров, художников и начальства. Да и вообще был хорошим программистом и человеком. И даже играл на барабанах.
Дима, был самым молодым из нас. Это один из самых креативных людей которых я видел. Созданные им домашние поделки (я про код разумеется) всегда были цепляющи и казались чем-то необычным, да и вообще были сделаны со вкусом. А названия переменных всегда будоражили воображение. Однажды он принёс мне килограммов 10 бананов, не помню какой был повод - может быть мой день рожденья.
Таня - обладала супер способностью писать код и смотреть фильмы одновременно. Так что иногда приходилось её пинать, чтобы быстро нажимала Alt-TAB, если вдруг приходило начальство. Слышал, что девушки и правда могут делать несколько дел одновременно. Ещё подкармливала нас сладостями и вообще прекрасно разбавляла нашу мужскую компанию.
Сергей - просто был хорошим программистом и мог трезво смотреть на вещи. Как-то сделал себе какой-то безумный хайр в панк стиле на голове - но ему шло.
Первым заданием было сделать чтобы на карте вместо одной одинаковой елки появлялись разные виды ёлок и лес выглядел разнообразнее. В прочем в этом не было ничего особенного и я довольно быстро справился.
Это было также первым место где я понял все прелести командной работы в гит, и узнал что такое тесты (однако не смог оценить всей их мощи, т.к. мы их не писали :)
Вообще это единственное место где была работа в команде. Где действительно была команда. Однажды нам дали задание не по нашему проекту, нужно было написать демку приложения за пару дней. И мы быстро распределили роли и задачи, и через пару дней всё уже было готово. К сожалению весь мой последующий опыт показал, какая это редкость когда люди работают сплочённо и с полуслова понимают друг друга.

***
За время работы там удалось сделать пару задач, которыми я действительно горжусь.
Одна из них это модифицированный поиск пути. Как обычно строится игровая сетка? Это сетка и каждой клеточке соответствует какое либо состояние. Под состоянием подразумевается занята она чем-то или нет. Персонаж также занимает клетку. Поиск пути, соответственно, ориентируется на состояние клетки.
Но дело в том, что геймдизайнерам неожиданно потребовалось чтобы персонажи могли ходить между объектами, но не могли проходить сквозь объекты (если объект занимает больше чем одну клетку).
На поиск решения ушёл день. А имплементация заняла полчаса. Собственно в этом то и радость, что модифицировать пришлось очень небольшое количество кода. Я лишь стал помечать клетки не просто тем заняты они или нет, а так-же id объекта которым они заняты. А при проверке смотреть не только клетку на которую идти, но и на соседнюю. В случае, если они имеют одинаковые id - проход запрещён. Разные - разрешён.
Ещё одной задачей был ипподром. Фактически это была игра в игре. Можно было построить объект ипподром, а потом заходить внутрь и делать ставки на лошадей. Боже, да это же почти казино! Это было законно? В общем сейчас уже не важно. Я попросил поработать в выходной день для этой задачи. Меня никто не отвлекал, так что я вошёл в раж и полностью написал всё за день.
Хотя когда наш совсем главный директор об этом узнал, то не был этому рад. Не знаю почему, но его возмутила работа кого-то в выходной день. Что ж, все к этому по разному относятся.

***

В прочем с директором я никогда не общался, за исключением одного случая, когда он на меня орал.
График у нас был строгий и опоздания не приветствовались. В какой-то момент, даже ввели форму в google docs, которую нужно было заполнить, если  ты опоздал более чем на час. Мою бунтарскую сущность на тот момент это сильно всколыхнуло и на следующий день я пригласил свою девушку на завтрак в 9:00 в кафе. Придя на работу ровно на час позже, описал в этой форме во всех красках, то как я сначала нежился в кровати, потом шёл по улице пригреваясь лучами солнца, а затем как прекрасно проводил время в кафе, вместо работы в маленькой, тесной кладовке с единственным окном заклеенным бумагой. Первое, что я услышал вечером от директора было не “Привет”, а “Я охуел!”. В общем, сошлись, на том, что это было просто шуткой (это в общем-то ей и было), но он видимо подумал, что-то другое.
Кстати через пару недель нас переселили в помещение побольше. До сих пор гадаю, связано ли это как-то.

***

Есть ещё одна вещь которой я не горжусь. Но после неё я дикий сторонник избегания человеческого фактора везде где это только можно.
У нас было админка (система где можно управлять пользователями, посмотреть всю их историю и в том числе безвозвратно удалить). Для удаления пользователя нужно ввести капчу, а именно посчитать сумму из двух цифр до 100 - обычно это останавливает от всяких случайностей. Как-то раз к нам пришёл баг который воспроизводился только у одного пользователя, и чтобы воспроизвести баг я скопировал базу себе на локальную машину и в локальной админке с ним работал. За один день баг пофиксить не удалось, так что отложилось на завтра.
Приползая с утра на работу со слипшимися глазами я решил, что нужно бы попробовать всё заново, почистить локального пользователя и скопировать его с продакшена. Легким движением руки я открываю админку, быстро считаю сумму и нажимаю delete. И дальше так не спеша доходит, что это админка была на продакшене.
Поговорили с директором, решили в итоге не тратить время и не восстанавливать пользователя. Вот так вот, решишь обратиться в службу поддержки с багом, а тебе всё обнулят.

***

В конце концов видимо игра перестала приносить доход и её прикрыли.

Комментариев нет:

Отправить комментарий