Три года программирования в ААА геймдеве
Привет, ребята! Уже больше трех лет прошло с момента как я решил уйти из мобильного геймдева в ААА разработку игр и пришло время рассказать о том, какие различия в сравнении с мобильной разработкой, в каких проектах я поучаствовал тем более, раз есть несколько поводов, но о них в конце.
В этой статье я много раз написал «из-за NDA». Реальность такова, что многие детали разработчики игр рассказывать не могут, и я в том числе. Но, смею надеяться: что-то интересное и полезное я все-таки рассказал.
Итак, примерно три года назад, я перешел из мобильной разработки на Unity, в ААА геймдев (смотри статью первую часть: Сменил Unity на C++) и теперь хочу немного порассуждать чем же отличается работа там и здесь, круче ли «трипл-эй» чем мобилки?
Чем ААА отличается от мобильного геймдева?
Стоит отметить, что и в мобильном геймдеве я поучаствовал в крутых и интересных проектах: Star Wars: Galaxy of Heroes и Scrabble в Electronic Arts, некоторый так и не вышедший проект в Nival. Но все-таки разница в процессах разработки огромная и, лично для меня, удовольствия в разработке ААА игры гораздо больше.
Я набросал список основных различий, с моей точки зрения. Программистский взгляд:
Ежедневная рутина
Работа не состоит в добавлении всякой социальной обвязки, in-apps платежей и всего этого вот, не связанного с геймдевом. Для мобильной же игры обычно подключаются десятки SDK для аналитики, платежей, рекламы и так далее: из этого вытекает следующий пункт.
Уровень вовлеченности
Другой уровень ответственности, когда делаешь игры, в которые играешь сам. Если с мобильными проектами сложно оценить круто играется или нет та или иная фича (сам я не играю в мобильные игры), то с ААА без подсказки геймдизайнера и плейтестера ты можешь сделать лучше.
Время итерации
Более долгие итерации, так как любое изменение геймплея часто затрагивает множество систем (сетевой код, например) и часто влияет на другие компоненты. К примеру в R6: Siege любой добавленный гаджет должен стабильно работать с существующими.
Объем кода
Огромная база кода, которую многие плагины вроде решарпера не в силах прожевать. Весь код движка: физика, рассчет коллизий, рендеринг и все это в вашем репозитории, и вы вместе с большой командой работаете над этим. Так выжимается максимум перфоманса. Ни Unity, ни Unreal, движки которые затачиваются под широкий спектр задач и близко такую производительность не смогут дать.
Оборудование
Из этого вытекает и различие в оборудовании: если мобильную игру ты можешь разрабатывать на макбуке, то ААА проекты разрабатывают на мощных ПК. У меня, например, 32GB оперативной памяти, 8-ядерный Ryzen, 2 SSD по терабайту и RTX карточка. Сейчас, когда я дома, у меня один монитор, а в офисе бывало по три на кронштейнах. Два из них подключены к ПК, один к девкиту XBOX или PlayStation.
Время компиляции
Время компиляции, особенно когда затрагиваешь что-то в движке и особенно в рендере — гигантское, сделал изменения в библиотечном классе, пока собирается проект и можно сходить за кофе, хорошо помогает распределенная компиляция, но не всегда.
Подход к программированию
В ААА геймдеве и код игры, и код движка нередко накапливают технический долг, но переписать все с нуля чаще всего не получится. Здесь продукт на первом месте.
Качество тестирования
Качество тестирования разительно отличается, все направлено на то, чтобы игрок получал максимально крутой опыт от игры. Никогда мой код не ломали так тщательно. Хочу заметить, что одни из самых крутых QA-специалистов, с которыми приходилось работать — девушки. Они беспощадны.
Известность проектов
Наконец, когда вы отвечаете на вопрос «ну и какие игры ты разрабатывал?» собеседник с гораздо большей вероятностью будет иметь представление о том, что ты делаешь.
Забавный случай произошел, когда я папе показывал над чем я работаю, он прокомментировал: «Это вот сейчас кино закончится и игра начнется?», а я ему: «Пап, это УЖЕ игра».
Размер команды
Но самое важное отличие — размер команды. Большие игры делают большие команды, а это значит, что ты познакомишься с огромным количеством классных и креативных людей! К слову, многие из тех, с кем я познакомился согласились дать интервью и во многом благодаря этим интервью статья «Как стать разработчиком игр?» держится в Топ-1 в Google, обгоняя всякие инфоцыганские курсы.
Немного про Sperasoft
Я пришел в компанию Sperasoft в апреле 2017 года. Три года назад. На проект Rainbow Six: Siege в качестве gameplay-программиста.
О работе над ней рассказать много я и не могу из-за NDA. Клиент (Ubisoft Montreal) разрешил, использовать лишь официальную формулировку, которую, к слову, уже как-то упоминал Саша Балакшин в интервью «Как стать программистом игр», я могу лишь повторить её для тех, кто не читал интервью с Сашей (кстати прочитайте, очень интересное!).
Оказывал значительный вклад в сезонные обновления Rainbow Six: Siege
Как же работалось?
Разумеется: никаких деталей по проектам из-за NDA, я не расскажу. Но могу описать первые ощущения. Недели две я пребывал в шоке от размера кодовой базы ААА игры, испытывал и страх и восторг одновременно!
Что еще? С командой очень повезло — информация просто вливалась в меня потоком и ramp up проходил очень информативно и интенсивно, был ежедневный knowledge-sharing. Например, на R6 был Tips and Tricks от Саши Осипова (каждый день технический директор рассказывал о всяких нюансах в проекте, C++) и Weekly CPP Tips от Николаса Флёри из Ubisoft Montreal, так что в терминах игроков меня “пропаравозили” по самым жирным данжам и уже через полгода я значительно вырос в уровнях.
Поэтому я даже немного растерялся, когда мне предложили поучаствовать в Assassin’s Creed: Odyssey. Да-да просто менеджер Саша Ходырев назначил митинг и спросил: Хочешь? И я, помню, что “э… ну… э… так они же там AI пишут, там же элита элит среди программистов, а я вывезу? Ну только на радуге освоился”.
Так мой рост продолжился. В ассассинах я отходил от шока сильно меньше, хоть в проекте и добавился еще один дополнительный язык программирования для описания FSM.
Команда ну очень крутая: все большие профессионалы, которые любят и играют в игры! Последнее, например, очень помогает принимать классные и безопасные решения заранее, как будто какой-то дар предвидеть “что сработает, а что нет”.
Дальше мне предложили заняться рендерингом, чем я только надеялся когда-нибудь в будущем заниматься и я прокачивался. На работе помогал техническому директору с исследованиями, а дома делал демку на DirectX 11: стандартная Sponza Palace и TAA.
Было несколько проектов, в которых я поучаствовал в качестве уже графического программиста, и, наконец, сегодня я рад похвастаться тем, что принимал участие в разработке ремастера Saints Row The Third в качестве рендер-программиста.
Перечитываю, и что-то слишком уж здорово и восторженно пишу про Sperasoft. Не все так здорово и радужно, негативные моменты и минусы разумеется были.
И еще кое-какие новости: дело в том, что я из Sperasoft ушел. Пишу специально, потому, что меня многие читатели ассоциировали с компанией: спрашивали как работается, есть ли вакансии на Unity (кстати, впервые за многие годы – они есть), когда инженерный буткэмп и так далее.
С этого момента — все, ребят, я ничего не знаю. Спрашивайте в официальных группах в соц.сетях – там всегда ответят.
Что дальше?
Ушел в классную студию и очень крутой проект. Кроме коллег я заранее не хочу никому сообщать “куда, зачем”. Пройду испытательный срок и, наверняка, похвастаюсь. У меня такая примета.
P.S.
В это трудное время и гектары в имениях, и легкость в движениях отходят на второй план, поэтому: я желаю всем крепчайшего здоровья, берегите себя и близких, мойте руки, не трогайте лицо. Если какие-то вопросы есть, с радостью пообщаюсь в комментариях :)
Все