«Идти до пределов возможного, и ещё несколько шагов вперед»: взгляд инженера на современную индустрию видеоигр
с помощью нейросети
Профессия разработчика игр в России была и остается не только одной из самых высокооплачиваемых, но и самых загадочных для стороннего наблюдателя. При этом потребность в профессионалах в этой сфере год от года только увеличивается. Согласно данным Аналитического центра при правительстве РФ, за последние пять лет российский игровой рынок вырос почти в два раза. В один только предпандемийный 2019 год список разработчиков игровых продуктов пополнили полторы сотни крупных и малых компаний. Чем же занимается геймдев, как создается реалистичный игровой мир и из чего состоит инфраструктура вокруг игры, рассказывает руководитель подразделения «Платформа» в компании Wargaming Максим Барышников.
- что важнее для создателя игр — реальность или представление геймера о ней
- почему геймдев живет в культуре постоянного кранча
- можно ли разработать хорошую игру в одиночку
- зачем нужно помнить про подповерхностное рассеивание света
Зарождение и развитие индустрии компьютерных игр
В 1983 году случилась рецессия, обусловленная насыщением рынка аркадных устройств и появлением ПК, под которые игры научились делать довольно быстро. Но в течение следующих нескольких лет было не очень понятно, каким образом их массово продавать и защищать от копирования.
В целом индустрия продолжила развиваться. Например, появились первые специализированные печатные издания, посвященные видеоиграм. Затем начался период системного становления. В 1990-е возник удобный формат дистрибуции — на CD-ROM. В играх стали использовать первые технологии 3D-визуализации, гейм-дизайн начал обретать признаки системной области знаний, возникла совместная игра в клубах, начал зарождаться киберспорт. Значимым событием стало появление в 1994 году в Ванкувере первого учебного заведения для подготовки разработчиков игр.
В 2000-е годы в игровой индустрии произошло сразу несколько примечательных событий. Распространение интернета способствовало появлению онлайн-игр, Apple выпустила iOS, Google — Android, а Facebook начал привлекать сторонних разработчиков для создания игр на своей социальной платформе. Киберспорт расцвел. Fun fact: в Южной Корее StarCraft стал национальным видом спорта, который в буквальном смысле собирал стадионы.
Сейчас наибольший рост показывает сегмент мобильных игр, а VR-развлечения пока не получили массового распространения, несмотря на то, что стремятся к этому последние пять-семь лет. Онлайн самыми востребованными становятся игры с «длинной» моделью оперирования. Плюс разработчики стремятся делать их кроссплатформенными, всё больше конкурируя за время игрока. Киберспорт породил также интересный спин-офф в виде видеоблогинга, который, к слову, неплохо монетизируется.
Интервью
Мы отвечаем за инфраструктурные сервисы всех игр компании, то есть совокупность компонентов, которые не являются исключительно игрой. Например, аккаунты пользователей, хранение и обработка данных игроков, внутриигровая экономика, контекстная персонализация, социальные службы, монетизация и многое другое. До «Платформы» я работал в группе разработки 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 — неотъемлемая часть индустрии и не является сегодня чем-то сверхъестественным. Так что желающие могут смело пробовать.