программы
546
0
29 августа 2021
программы
«Идти до пределов возможного, и ещё несколько шагов вперед»: взгляд инженера на современную индустрию видеоигр
программы
программы
546
0
29 августа 2021

«Идти до пределов возможного, и ещё несколько шагов вперед»: взгляд инженера на современную индустрию видеоигр

546
0
29 августа 2021

Профессия разработчика игр в России была и остается не только одной из самых высокооплачиваемых, но и самых загадочных для стороннего наблюдателя. При этом потребность в профессионалах в этой сфере год от года только увеличивается. Согласно данным Аналитического центра при правительстве РФ, за последние пять лет российский игровой рынок вырос почти в два раза. В один только предпандемийный 2019 год список разработчиков игровых продуктов пополнили полторы сотни крупных и малых компаний. Чем же занимается геймдев, как создается реалистичный игровой мир и из чего состоит инфраструктура вокруг игры, рассказывает руководитель подразделения «Платформа» в компании Wargaming Максим Барышников.

Из интервью вы узнаете
  • что важнее для создателя игр — реальность или представление геймера о ней
  • почему геймдев живет в культуре постоянного кранча
  • можно ли разработать хорошую игру в одиночку
  • зачем нужно помнить про подповерхностное рассеивание света

Зарождение и развитие индустрии компьютерных игр

Началом развития индустрии принято считать 1971 год и выход Computer Space, которая была далеко не первой созданной компьютерной игрой, но стала первой программой такого рода, предназначенной для коммерческого использования. Индустрия не может считаться таковой без коммерческой составляющей, так что начало эпохи аркадных автоматов, на которых и вышла Computer Space, можно смело принимать за точку отсчета.

В 1983 году случилась рецессия, обусловленная насыщением рынка аркадных устройств и появлением ПК, под которые игры научились делать довольно быстро. Но в течение следующих нескольких лет было не очень понятно, каким образом их массово продавать и защищать от копирования.

В целом индустрия продолжила развиваться. Например, появились первые специализированные печатные издания, посвященные видеоиграм. Затем начался период системного становления. В 1990-е возник удобный формат дистрибуции — на CD-ROM. В играх стали использовать первые технологии 3D-визуализации, гейм-дизайн начал обретать признаки системной области знаний, возникла совместная игра в клубах, начал зарождаться киберспорт. Значимым событием стало появление в 1994 году в Ванкувере первого учебного заведения для подготовки разработчиков игр.

В 2000-е годы в игровой индустрии произошло сразу несколько примечательных событий. Распространение интернета способствовало появлению онлайн-игр, Apple выпустила iOS, Google — Android, а Facebook начал привлекать сторонних разработчиков для создания игр на своей социальной платформе. Киберспорт расцвел. Fun fact: в Южной Корее StarCraft стал национальным видом спорта, который в буквальном смысле собирал стадионы.

Сейчас наибольший рост показывает сегмент мобильных игр, а VR-развлечения пока не получили массового распространения, несмотря на то, что стремятся к этому последние пять-семь лет. Онлайн самыми востребованными становятся игры с «длинной» моделью оперирования. Плюс разработчики стремятся делать их кроссплатформенными, всё больше конкурируя за время игрока. Киберспорт породил также интересный спин-офф в виде видеоблогинга, который, к слову, неплохо монетизируется.

Интервью

— Максим, приоткройте завесу тайны, как устроена ваша работа в Wargaming? Что находится в вашей зоне ответственности?

Мы отвечаем за инфраструктурные сервисы всех игр компании, то есть совокупность компонентов, которые не являются исключительно игрой. Например, аккаунты пользователей, хранение и обработка данных игроков, внутриигровая экономика, контекстная персонализация, социальные службы, монетизация и многое другое. До «Платформы» я работал в группе разработки World of Tanks, где отвечал за серверную часть. Также я знаком и с остальными аспектами производства игр, так как геймдев подразумевает набор очень плотно пересекающихся дисциплин, в которых довольно сложно работать обособленно.

— То есть современный геймдев — это всегда командная игра?

Не всегда так, но сегодня создание видеоигр является одним из наиболее крупных сегментов индустрии развлечений. По масштабам это уже сопоставимо с кино, а по скорости роста опережает любую киноотрасль. 2020 год так и вообще стал исключительным в силу того, что пандемия COVID-19 сильно усложнила доступ ко многим привычным способам времяпровождения, и люди сконцентрировались на тех развлечениях, которые доступны дома, в том числе на видеоиграх.

— Вы подсчитывали, какой рост вам принесла пандемия?

По приблизительным оценкам, в 2020 году геймдев-рынок вырос на 12−20% по сравнению с 2019 и достиг объема в $ 180 млрд. Для сравнения, в 2019 вся мировая киноиндустрия оценивалась в $ 100 млрд. Быстрее всего в последние годы растет рынок мобильных игр, на четверть только в прошлом году. Чтобы понять, насколько это впечатляющие цифры, темпы роста можно сравнить с ростом мировой экономики (2−3% — в период 2018—2019, падение на 3−4% — в 2020, данные World Bank Group).

— Давайте поговорим про игровые движки. С чего начинается их разработка? Какие инженерные задачи ставятся перед разработчиком?

Начну с того, что это самая «наукоемкая» область в игровых технологиях. Я не нашел хорошего академического определения термина, но в целом движок — это базовый программный комплекс, фреймворк, который служит фундаментом для разработки игры и может быть повторно использован при работе над несколькими играми.

«Наукоемкой» работу над игровым движком делают требования к нему: высокая производительность, эффективность, надежность, универсальность, портируемость и так далее. Поскольку индустрия требует всё большей реалистичности во всех аспектах игр, то и движки вынуждены соответствовать, выжимая всё возможное из «железа». Иногда приходится идти до пределов возможного, а затем делать еще несколько шагов вперед. К примеру, Quake III Arena, в которую играли, кажется, вообще все, была бы невозможна в том виде, в котором мы ее знаем, без довольно изобретательного способа вычисления обратного квадратного корня и магической константы 0x5f3759df.

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

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

Типичный неспециализированный игровой движок включает в себя следующие подсистемы:

  • управление ресурсами (загрузка, выгрузка, кеширование и т. п.),
  • графическая подсистема (отрисовка сцены),
  • подсистема симуляции физических явлений (взаимодействие твердых тел, симуляция тканей, жидкостей и т. п.),
  • Artificial Intelligence, или подсистема искусственного интеллекта,
  • сетевая подсистема,
  • набор вспомогательных подсистем, которые призваны экономить время разработки самой игры.
— На каком этапе создания игры инженер становится главным двигателем этого процесса?

Самая обобщенная категория инженеров в геймдеве — программисты геймплея. Они претворяют в жизнь игровые механики и в целом собирают игру. Например, если вы делаете шутер от первого лица (FPS, first person shooter), то игровыми механиками будут: передвижение персонажей, стрельба, модель нанесения урона, специальные навыки персонажей и так далее.

Поскольку индустрия быстро растет и требует всё большего количества игр и контента, то требуется всё больше разработчиков, а значит, нужно снижать порог входа и требования к квалификации. Достигается это преимущественно за счет развития движков, упрощения инструментария разработки и автоматизации процессов. Сейчас игровые движки, к примеру, позволяют использовать интерпретируемые языки программирования для написания игровой логики: те же Python, Lua и им подобные. Однако преобладающим языком всё еще остается C++, а требования к квалификации программистов до сих пор достаточно высоки.

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

Кстати, именно у геймплейщиков получаются самые смешные баги.

— Это правда, что большинство разработчиков на самом деле лентяи, которые на работе играют в компьютерные игры?

Это миф. На практике все скорее наоборот — геймдев очень часто живет в культуре постоянного кранча: выход крупных игр объявляется заранее, и сдвиг сроков очень сильно влияет на финансовую сторону вопроса, поэтому крайне нежелателен. Кроме того, поскольку рецепта гарантированно успешной игры в природе не существует, ближе к выходу часто накапливается большое количество незапланированных геймплейных правок, которые нужно внести без изменения сроков. Так что картина, когда разработчики в буквальном смысле неделями ночуют на работе, совершенно не редкость.

— Чтобы стать талантливым разработчиком игр, необходимо быть опытным геймером?

Совсем не обязательно. Значительная часть работы требует академических знаний, а не опыта игры. Сколько бы вы не играли в игры, вы не будете больше знать о том, как распространяется свет в пространстве, почему подповерхностное рассеивание света (subsurface scattering) важно для создания реалистично выглядящей кожи, почему освещение с трассировкой лучей в реальном времени иметь очень хочется, но тяжело получается, и как сделать так, чтобы игроки, находящиеся в разных странах, могли без задержек играть в одном «физическом» пространстве, стреляя друг в друга и сталкиваясь корпусами. Идея, думаю, понятна.

— Чтобы игра воспринималась реалистичной, в ней нужно всё делать максимально приближенным к реальности?

В этом утверждении только часть правды. Оно верно скорее для отдельных элементов игры. Например, сейчас большинство графических движков стремится использовать PBR (physically based rendering) — отрисовку сцены с использованием физических свойств материала. Это позволяет создавать картинку, в которой игровые объекты реагируют на окружение ожидаемым для игрока способом. Например, если опустить камень в воду, а затем достать, он должен намокнуть, иначе «сломается» реалистичность.

— В чём разница между реализмом и воспринимаемым реализмом?

Дело в том, что большинство из нас никогда не видели в реальной жизни, как взрывается здание или автомобиль, а в видеоиграх это случается сплошь и рядом. И то, что мы ожидаем увидеть, сформировано преимущественно тем, что мы видели в кино и других видеоиграх, где эти явления нам показывают гораздо красочнее, чем в реальности. Поэтому, если вы сделаете взрыв, который будет точной симуляцией того, что происходит на самом деле, скорее всего, игроки вам скажут, что он выглядит нереалистично и вы схалтурили. То же самое касается многого другого: мало кто из нас управлял танком или кораблем, но, если сделать управление таким транспортным средством в игре близким к реальности, оно не совпадет с ожиданиями игроков. И к тому же будет очень скучным: реальные машины созданы с оглядкой на безопасность использования, а не для того, чтобы на них прыгали со скалы и таранили ими противников.

— В завершение беседы волнующий всех начинающих программистов-интровертов вопрос — можно ли сделать игру в одиночку?

Короткий ответ — да, можно. Конечно, вы будете ограничены в ресурсах и времени, но современные инструменты разработки игр позволяют достичь впечатляющих результатов и в одиночку. Например, Minecraft — почти всем известная игра — создана командой из пары человек. В целом индивидуальная, независимая разработка — indie development — неотъемлемая часть индустрии и не является сегодня чем-то сверхъестественным. Так что желающие могут смело пробовать.

Наверх
Будь первым, кто оставит комментарий