Гипер Казуальные игры как промежуточный этап роста программиста
Начну с того, что я подписал документ о неразглашении участия в конкретных проектах, поэтому изображения в статье будут взяты только для демонстрации механик, которые нужно было реализовать.
Как я попал на ГК разработку.
В моем прошлом посте было рассказано, как я пришел в программирование и чем занимался, пока растил свой скилл. В большей степени преподавал и делал различные инди-игры и выпускал их в Google Play.
Сразу стоит отметить, что это было больше для практики, нежели, чем желание заработать на этом денег. Как итог - игры были выпущены, но особо никому не интересны.
Собственно, как я пришел на разработку. 2020-й год как ни крути, но был дико сложный. Мой микробизнес по преподаванию основ программирования скатился, так как я сотрудничал с компаниями, где преподавать нужно было оффлайн, а на онлайн у меня уже не оставалось мотивации.
Когда денег стало не так много, решил сделать небольшой симулятор разработчика игр и выложить его в стор, чтобы это стало моим портфолио. Так как конечной целью было - это устройство программистом в какую-нибудь студию.
Но реальность такова, что в игровые студии не берут без хорошего опыта и кучи реализованных проектов на все платформы сразу, да и чтоб знаний было как у сеньора, а зарплата как у джуна.
Собственно, наткнулся на объявление в телеграмм канале, что ищут джуна на разработку ГК игр. Подумал и решил, что стоит попытаться устроиться туда, так как на момент подачи своей заявки, все крупные студии уже успели меня отвергнуть.
Мне снова дали очередное тестовое задание, которое было выполнено в течении трех часов, после получения, поэтому меня сразу взяли.
Это было шоком, не знал, что так быстро можно было получить работу, а то целый месяц мне отказывали по разным причинам. Собственно, так я и стал программистом ГК игр в студии.
Первый проект
Работа в студии строится по определенным этапам:
- Геймдизайнеры предлагают различные варианты новых игр
- СЕО договаривается с издателями на выпуск тех, что будут утверждены после принятия ГДД
- После того, как игра выбрана, собирается команда, где есть один программист, художник UI, геймдизайнер и 3Д-шник.
Но, мой первый проект пошел не по такому плану. Он был взят на аутсорс, а я был единственным человеком, который занимался его реализацией. Графику мне скидывали частями, а чаще всего приходилось ее самому выкачивать с "фигмы".
Было множество различных СДК, с которыми я не был даже знаком, не говоря уже об их интеграции.
Работы там было минимум на месяц, но рынок такой, что проект надо сделать в течении 2-3 недель. По факту, игру я сделал за 5 недель, так как проект был признан не ГК, а просто казуальным, мне простили косяк со временем.
Основной сложностью в этом проекте было - это огромное количество данных, которые нужно было хранить.
Кроме этого, проект не должен был превышать 55мб, это крайне частое условие при разработке приложения. Не без труда, но мы смогли добиться нужного объема.
По завершению этого проекта, мне казалось, что сложнее уже точно стать не может... Но как же я ошибался :)
Последующие проекты
Ожидая, что меня уволят после первого проекта, я немного поник, так как часто работал над ним без выходных и читал море литературы, чтобы реализовать все, что хотел заказчик.
За несколько дней до сдачи, мне уже назначили новый проект, к которому я приступлю. Меня это очень воодушевило, так как паззлы и музыку из первого проекта я уже не мог выносить.
Новый проект представлял из себя гоночки, где нужно было реализовать крутое поведение байка, но только, чтобы без всяких дополнительных физических сил. Сначала я написал три или четыре контроллера, которые бы соответствовали требованиям, но они долго не подходили, так как нужно было похожее поведение на физическое. Поковырявшись с физикой объекта, смог избавиться от инерции, пересоздал колесный коллайдер, чтобы поведение было похоже на заднеприводное. Стандартный Wheel Collider крайне ужасный от Unity, особенно если мы используем его на 2 колеса.
Сложность работы с ГК - это максимально отзывчивое управление, никакой реалистичности и в помине не нужно. В итоге, на одно действие пальца нужно было реализовать красивый наклон, поворот персонажа и смещение (жесткое) в сторону. Кроме всего этого, нужно было добавить ботов в игру, это оказалось очень просто, так как сложный ИИ писать не нужно. Сроки немного затянул, но в итоге смог показать, что большинство задач мне по плечу.
Следующий проект. Вот за третий проект максимально обидно. Он был сделан вовремя, без лишних трясок со стороны и все механики были реализованы идеально.
Суть заключалась в том, что мы должны были обогнать ботов и прорубить себе путь к финишу при помощи крутых мечей, который зарос разными растительностями. Я сделал интересную и гибкую систему, которую можно было расширять и расширять, добавляя новые механики. Но проект был убит, так как показал плохие значения CPI и LTV, кстати с байками тоже самое было, хоть его было и не жалко.
Еще проекты. Далее стало легче, я уже создал для себя определенный алгоритм, по которому строится проект. Написал свою собственную систему ввода данных (для телефона), которая легко подстраивалась под разные задачи.
На новых проектах также были боты, кнопки, монетки и т.п. Поэтому большую часть кода я забирал из старых проектов.
Опыт копился, знания множились и тут случился момент, которого я не ожидал. Мне стало неинтересно делать такие игры, я уже понял, что достаточно вырос, чтобы не марафонить от проекта к проекту, а перейти к чему-то более серьезному. Но наступил момент нового проекта.
Вот-вот я сдам очередной проект, но он же будет последним для меня в рамках этой студии.
Абсолютно случайно, одна крупная студия (называть ее не буду) искала к себе мидла-сеньора. Мой товарищ работает в этой студии и предложил руководству прособеседовать меня. Я сразу сообщил, что мой уровень ниже, чем они ищут, но их это не смутило, поэтому мне дали задание. Вечером того же дня я его сделал, а на следующий день прошел собеседование. Через несколько дней еще одно и в итоге я теперь буду делать мобильную 2D ММО.
Никак не ожидал, что произойдет такой рост, что смогу взяться за что-то большее, но я безумно благодарен за опыт, который получил в студии ГК игр.
Выводы
Плюсы:
- Скилл растет очень быстро, так как приходится делать много проектов за короткие сроки
- Очень быстро выстраиваешь паттерн, по которому строишь следующие проекты
- Верстка UI для мобилок не вызывает страха и сложностей
- Оптимизация проекта под слабые платформы теперь кажется нормой
- Сжатие памяти приложения начинается с самого начала
- Быстро избавляешься от непонятных связей между объектами и используешь адекватную архитектуру
- Получаешь опыт в реализации огромного количества механик
Минусы:
- Иногда говнокодишь (или часто, если сроки горят)
- Малые сроки реализации - много стресса
- За любой косяк перед релизом выносят мозг
- В выходные докопаются чтобы что-то делать
- После показов заказчику добавляются новые механики, которые могут сломать игру
- Зарплата начинающего разработчика не соответствует затраченным силам
- QA постоянно находит баги (это не минус, просто бесит)
Это только мой опыт, но я считаю, что если ты начинающий разработчик, то не стоит сразу завышать свои ожидания по поводу геймдева, можно начать с простого и переходить к сложному постепенно.