Савва Козловский заканчивает факультет разработки игр в GeekUniversity и уже применяет знание Unity в околокосмической сфере! Он согласился рассказать о своей учебе в GU, о работе и планах на будущее.
— В декабре вы с однокурсниками станете первыми выпускниками факультета. А с чего все начиналось: почему игрострой, почему GeekUniversity? Был ли до этого опыт программирования?
— Я окончил журфак и работал по специальности 7 лет, но по ряду причин оставил профессию. При этом компьютерные игры были увлечением с детства. Доступ к ним появился у меня рано, потому что в начале 1990-х мой отец успешно работал в IT. Одно из первых воспоминаний: сижу на коленках у папы, а он играет на древнем компьютере от немецкой Robotron. Монитор еще был двухцветный: черно-зеленый.
Но о карьере разработчика игр я долго не задумывался. Со школы считал, что совсем не способен к программированию, поэтому выбрал гуманитарную область. И только когда случился профессиональный кризис в журналистике, я решил попробовать себя в игрострое. Сложились условия, при которых было не страшно выйти на это направление.
Собрал небольшую команду энтузиастов: один программист, три художника. Я был автором идеи, координатором и гейм-дизайнером. Мы начали разрабатывать простенькую стратегию для мобильника. Опыта не хватало: раньше я руководил только командой по страйкболу. Многие полученные при этом навыки работали, а вот знаний и, главное, опыта в игрострое было совсем мало. За полгода мы довели игру до «беты» — она сейчас висит в GooglePlay — и на этом разбежались.
Я понял, что не хочу все время зависеть от других, и решил учиться делать игры сам. Дальше: «Окей, Гугл! Unity. Как разработать игру?»
Начались эксперименты. Знаний в программировании не было никаких: иногда на решение простейших проблем уходило по три дня. Но в итоге все же добивался своего. Правда, сейчас даже боюсь смотреть в тот код. Знаю, что он — чудовище.
Нужно было зарабатывать, и я пошел в продажи. Появились средства — стал искать, где учат профессиональной работе с Unity, и нашел GeekBrains. Менеджер посоветовал идти сразу в GeekUniversity — привести в порядок знания, которые уже были, и получить недостающие.
Сейчас считаю, что это было правильным решением. Как бы я без преподавателей справился с изучением C#, особенно базовых понятий, которые самостоятельно полностью понять не получалось, — не представляю.
— Чем занимаетесь сейчас?
— Тружусь в компании «Космософт». Одно из направлений ее деятельности — разработка приложений для наземных служб космодрома. Я как Unity-разработчик участвую в создании обучающего софта, который помогает персоналу служб осваивать нужные им технологии и оборудование. Пока это выглядит как интерактивная 3D-среда, виртуальная экскурсия или «игра» без геймплея.
— С какого момента начали искать работу по новой специальности и насколько быстро нашли?
— До окончания GeekUniversity искать работу я не собирался. Но через 5 месяцев после начала учебы появилось предложение, от которого невозможно было отказаться: вакансия Unity-разработчика в «Космософте». В итоге все решило то, что будущему руководству в целом понравился мой код. Этого оказалось достаточно, чтобы меня взяли на позицию джуниора.
Приступил к работе в июле. Пока еще много ошибаюсь, что-то приходится переделывать, но, к счастью, большую часть ошибок могу исправить сам. В целом, считаю, для полугода опыта это нормально.
— Насколько пригодился освоенный в GU стек технологий: многому ли приходится доучиваться на работе?
— Специально ничему доучиваться пока не приходилось. Но, конечно, есть разница между учебными и «полевыми» условиями. На паре ты делаешь задание и знаешь, какой инструмент применить. На работе — выбираешь методы сам и никто не подсказывает. По крайней мере, пока ты не ошибешься и коллеги не посоветуют делать иначе.
Умение выбирать методы приходит только с опытом. Здесь, думаю, никакие курсы не помогут. Нужно браться за множество задач, пытаться их по-разному решить, а дальше по результатам слушать замечания товарищей. Вопрос не в том, как применить некий паттерн — ты уже знаешь это. Вопрос — когда его применять и нужен ли он тебе.
На работе лид рекомендовал мне изучить фреймворк Zenject, который обеспечивает инъект-независимость в Unity. Но пока это не критично. В GU мы такого не изучали и, наверное, включать настолько специализированные инструменты в учебный план было бы лишним.
— Какие проекты вы сделали за время учебы, и насколько это было сложно?
— Пока из 4 запланированных проектов мы делали мобильный 2D-платформер и 3D-шутер. Для 3D-игры я написал программную основу, но графику вовремя реализовать не удалось, так что приходится ее доделывать в последний момент.
Расскажу больше о 2D-платформере — с ним я продвинулся дальше. Сначала я думал делать игру по мотивам романа Гарри Гаррисона "Ethical Engineer" из серии «Неукротимая планета». Хотел использовать прошлый опыт: собрать небольшую команду и в рамках учебного проекта создать полноценный платформер. Идея была благородная. Но сейчас понимаю, что пытался откусить слишком много…
На тот момент мое знакомство с 2D-возможностями Unity было поверхностным. Я мог заставить какой-то компонент работать, но не видел общей картины. Многое приходилось осмысливать по ходу.
При этом я зависел от художника: она рисовала очень круто, но нерегулярно. В итоге технически я реализовал задуманное, однако многие вещи, которые отодвигались из-за масштабных планов, пришлось допиливать в цейтноте. Проект я сдавал частично с уникальным графическим контентом (фон, тайлы платформ и еще несколько мелочей), частично — скачанным из интернета.
Теперь я думаю, что учебный проект должен быть учебным — хорошим на своем уровне. Если ставить слишком высокую планку, вы лишаете себя удовольствия от работы. Сложности — это правильно и хорошо. Но когда у вас физически не хватает времени их решить, это убивает мотивацию. А главное, вы ставите под удар сам проект и смысл его выполнения.
Возможно, это лично моя специфика: последнее время помимо учебы приходится много работать (причем голова для этой работы должна быть свежей), и времени совсем мало.
Когда доучусь, планирую вернуться к 2D-платформеру и переработать его в одиночку. Сеттинг будет другим: Гарри Гаррисона там не останется. Вся концепция уже есть, осталось вложить время и усилия. Надеюсь, это принесет еще много радости в будущем.
По учебному плану впереди еще командный проект и стратегия.
— Что в GeekUniversity понравилось, и что хотелось бы улучшить?
— Самыми полезными я бы назвал курсы по C# (у меня их было два — базовый и продвинутый), «Алгоритмы» и «Шаблоны и паттерны проектирования». От этих 4 курсов я в полнейшем восторге!
Занятия по Unity тоже полезны, и ведут их хорошие преподаватели, но фундаментальные знания в области алгоритмов — это штука, интересная даже безотносительно разработки игр. Это меняет способ мышления.
Самое увлекательное, когда ты открываешь для себя вещи, которых раньше не понимал, и вдруг видишь, насколько они классные. Иногда я до трех ночи не спал перед работой, чтобы нормально сделать задание — настолько «перло» от нового понимания.
Не могу сказать, что мне что-то не понравилось. Есть курсы, которые зажигают и вдохновляют. Есть более спокойные, но тоже незаменимые. И третья категория — задел на будущее. Например, курс по сетям — сетевому инжинирингу и администрированию — прошел скорее мимо меня. Хотя я понимаю, зачем он нужен, мне его пока негде применить.
— Много ли приходится изучать самостоятельно — вне занятий?
— На самом деле, не очень. Домашние задания обычно привязаны к теме урока — для их выполнения достаточно внимательно перечитать методичку. Когда хочешь по своей инициативе что-то докрутить, лезешь в Google, читаешь StackOverflow и так далее.
Дополнить картину помогает литература, которую рекомендуют преподаватели. В этом списке есть вещи, которые стоит читать и перечитывать. Например, книга Design Patterns «Банды четырех» — заслуживает стать настольной. Из-за нехватки времени я с ней пока ознакомился поверхностно, к сожалению. Но у меня в библиотеке она поселилась надолго, и вернуться к ней планирую еще не раз.
— У вас в учебной группе складывались команды единомышленников для совместной разработки игр?
— Сейчас у нас начнется курс командной разработки, где в любом случае нас разделят на группы. Преподаватель назначит каждому роль в «добровольно-принудительном» порядке. Любопытно будет поучаствовать в проекте, изначально рассчитанном на коллективную работу.
В учебной группе у всех разный уровень подготовки. Например, я гуманитарий со школы, а большая часть моих сокурсников — «айтишники», которые ищут новое направление, или специалисты смежных IT-областей. Поэтому состав команд придется как-то балансировать.
А если говорить о стихийных объединениях на курсе, пока это все на уровне обсуждений. Думаю, собрать студентов в эффективную команду можно только при наличии лидера, который обладал бы принципиально большими, чем остальные, знаниями и неоспоримым авторитетом. Тем более работать пришлось бы в условиях плотного учебного графика и сжатых сроков. Может, кому-то из одногруппников и удастся объединиться к концу обучения, но это время еще не пришло.
— Unity позволяет создавать и мобильные, и онлайн-игры, и VR. Какие направления вам интереснее?
— Для меня игра — это не столько медийный продукт, сколько способ рассказать историю. Я не имею в виду только сюжет — все компоненты должны работать на воплощение замысла, будь то передача мысли или эмоции. И в этом плане выбор платформы целиком зависит от того, что я хочу донести до аудитории. Сейчас ориентируюсь на то, что нужно для работы, а когда начну делать собственные игровые проекты — посмотрим, что лучше подойдет.
— Каких ошибок можно было избежать, если б вы заранее знали то, что известно вам сегодня? Что бы на своем опыте посоветовали студентам, которые придут на факультет в следующем году?
— Когда работаете над первыми своими проектами, не пытайтесь откусить много. Лучше сделайте маленькую игру, но полностью. Я наступал на эти грабли не один раз. Когда у вас есть готовый продукт, вы можете его усложнить. Но и этим не всегда стоит увлекаться: танк, собранный вокруг велосипеда, будет иметь крайне сомнительную эффективность.
Дорабатывать можно до бесконечности. Еще до учебы в GU я пытался навесить фичи на готовый проект, и тот под собственной тяжестью провалился. Сложнее всего — ограничить себя. Сказать: «Ребята, мы делаем только вот это, но от начала до конца», — полностью выполнить намеченное и довести игру до релиза. Привычка доводить проекты до конца очень важна.
И будьте готовы, что потребуется много времени. Жалеть время в данном случае (как и себя самого), конечно, можно, но вы сильно потеряете и в эффективности, и в удовольствии от процесса. Тут так: чем больше вложишь, тем больше получишь на выходе — как в любом подобном деле.
— Спасибо! Савва, успешного вам окончания учебы, интересных задач на работе! И надеюсь еще увидеть релизы ваших игр :)
Пройти обучение
Комментарии