Что такое графика в играх
Как устроена графика в современных компьютерных играх?
Серия постов, рассчитанных на среднего человека с техническим мышлением, который хочет узнать больше о том, как работает современная 3D графика в играх. Они не научат вас делать что-либо и не предполагают предварительных знаний, но объяснят концепции.
Введение
Привет, меня зовут baldurk. Я хочу описать то, что происходит в современных играх, не упуская ничего. Но не буду говорить про математику или программирование. Если вы знаете разницу между процессором и графической картой, то вы знаете, что графическая память не такая же, как на жестком диске. Этого достаточно, и я объясню что-нибудь еще.
В постах я буду опираться на игру Watch Dogs. Она хорошо известна благодаря своей графике (хорошей или плохой, зависит от вашего вкуса), и в ней есть много вещей, которые мы можем рассмотреть в качестве конкретных примеров. В каких-то особых случаях я могу говорить о других играх.
Начну с основ, которые одинаковы от игры к игре, но также рассмотрю некоторые характерные для Watch Dogs методы и визуальные эффекты.
Я использую инструмент RenderDoc, который написал в свободное время. Он используется для отладки графических задач: помогает разобрать графический кадр и посмотреть, как он собран.
Эта анимация показывает, как графическая карта отрисовывает кадр во течение какого-то промежутка времени.
Большинство людей знает, что компьютерная графика (как и любое другое видео) состоит из серии неподвижных кадров, каждый из которых показывается доли секунды. В фильмах традиционно бывает 24 кадра в секунду (FPS), в телевизионных передачах примерно столько же, около 24-30. В играх FPS может быть разным, поскольку каждый раз может происходить много работы. Опускаться ниже 30 нежелательно, хотя это часто случается. 60 FPS приближается к пределу для консольных игр, а к какому из пределов в промежутке от 30 до 60 стремится игра — зависит от ее целей. На компьютере с высококачественным монитором вы можете получить 90, 120 или даже больше FPS. Почему используются именно эти конкретные числа, я объясню позже, это связано с vsync.
Но нам с вами надо перевернуть это с ног на голову. Вместо того, чтобы смотреть, насколько высок FPS, мы посмотрим, насколько малый промежуток времени выделяется на один кадр. При 30 FPS у нас есть только 33 миллисекунды, чтобы нарисовать все что нужно внутри кадра. При 60 FPS — половина этого, около 17 миллисекунд. Учитывая, сколько всего надо успеть сделать, это небольшое время даже для компьютера. Чтобы представить нагляднее, приведу примерный расчет, что пуля за миллисекунду пролетает около 1 метра.
Мы в основном будем говорить о персональных компьютерах, потому что это открытая платформа, и определенные специфичные вещи про консоли нельзя открыть не опасаясь нарушить NDA. Но в основном я не собираюсь говорить о чем-то таком, что сильно отличается в консолях. А если скажу, я обращу на это внимание. Большинство различий между аппаратным обеспечением ПК/консолей и мобильных платформ выходит за рамки этой серии.
А эта красивая картинка стоит здесь для того, чтобы оживить текст.
Вот какая задача нам интересна. Мы не будем переживать, как AI сделает все вычисления, и не будем делать вычислять физику для перемещения частиц и предметов. Граница того, что вы назвали бы «графическим программированием», немного нечеткая. Но я хочу обратить внимание, что графическое программирование начинается тогда, когда у вас есть все нужное для отрисовки кадра. Вы знаете, что происходит, у вас в памяти (не на диске) есть текстуры и модели, анимации анимированы, физика просчитана и теперь нам пора нарисовать готовый кадр.
Отмечу, что многие основные принципы 3D игры с обычной визуализацией, наподобие Watch Dogs, применимы к 2D играм. Но их немного сложнее проиллюстрировать. Также отказ от ответственности, он особенно относится к другим графическим программистам: я хочу во всем разобраться, поэтому могу привести сомнительные или просто неверные объяснения, если они помогут цели.
Части кадра
Основную часть времени мы будем рассматривать только один кадр и говорить о строительных блоках, которые использует игра для создания конечного кадра.
Кадр можно собрать из меньших строительных блоков несколькими путями. Готовый рисунок, который вы видите, рисуется не мгновенно. Это имело место много лет назад, но современные графические движки практически всегда выполняют какие-либо предварительные вычисления. Движок будет рисовать много промежуточных изображений разных типов, чтобы помочь рассчитать окончательное изображение до того как сложить его в кадр, который вы видите на экране.
Эти изображения отличаются от движка к движку и зависят от замысла программиста графики. Например, если надо чтобы солнечный свет давал правильные тени, для этого будет одно изображение. А если надо сделать правильные отражения на поверхности машины, которую ведет игрок — то другое.
Некоторые из промежуточных изображений, которые нужны для создания нашего кадра из Watch Dogs.
Скорее всего, я не буду рассказывать обо всех изображения для кадра в Watch Dogs, но обязательно коснусь самых главных, которые чему-то нас научат. Это та область, в которой технологии все время развиваются. Когда маркетологи говорят о новой характеристике, обычно они имеют в виду ее, хотя инновации внедряют и на других уровнях.
Каждое из этих промежуточных изображений само построено из более мелких частей. Каждый объект в сцене или, возможно, группа связанных объектов отдельно строится как текстурированная модель. Во время создания игры художники делают эти модели в 3D редакторе и создают все необходимые ресурсы. Затем эти модели поместят в игровой мир с помощью редактора уровней, чтобы постепенно построить виртуальный город.
Таковы общие знания, а если вы видели, как за 20 лет повзрослела 3D графика в играх в реальном времени, вы знаете, что современные модели стали намного сложнее. В былые дни текстуры стоили дорого, и везде, где это только можно, их заменяли простым закрашиванием объектов. Оставляли только там, где действительно важны детали, например, для глаз и лиц персонажей.
3D модель целиком состоит из взаимосвязанных треугольников, которые составляют форму объекта. Каждый треугольник имеет три точки, называемые вершинами, а так как треугольники взаимосвязаны, вершины будут общими для нескольких треугольников. Мы вернемся к этому позже, поскольку вершины и треугольники весьма важны. Также стоит помнить, что некоторые объекты, такие как персонажи или деревья, будут анимированы перед рисованием. Модель создается в статической форме по умолчанию, а анимации применяются к каждому кадру — опять же, мы вернемся к этому.
Это 3D модель головы Эйдена Пирса до анимации. Треугольники видны потому, что нарисованы плоскими, а не визуально смягченными, как обычно в игре.
Чтобы сделать 3D модель более детализованной, применяются текстуры. Они представляют собой обычные файлы с плоскими изображениями, обычно квадратными или с простым соотношением сторон вроде 2:1. Как текстуры накладываются на 3D модель, я опишу далее, но вы можете представить это себе как очень аккуратное оборачивание подарка. Вместо простого повторяющегося рисунка на оберточной бумаге изображение для текстуры в точности повторяет то, что должно быть обернуто. Если вы наблюдали в плоском виде бумажные модели для объемного склеивания, то здесь тот же самый принцип.
Аналогия гораздо точнее, чем вы могли бы подумать, потому что при создании текстур 3D модель обычно “разворачивается” в плоскую копию, как и для бумажных моделей, а затем на ней рисуется текстура. Развертка обычно делается автоматически, но для особо сложных объектов может быть сделано и вручную.
Вот текстура, которая относится к приведенной выше модели головы Эйдена Пирса. Для зубов и языка использованы отдельные части. Обратите внимание, что область выше лба не имеет текстуры, потому что она всегда покрыта узнаваемой кепкой.
При развертке части, которым нужно больше детализации, часто делаются крупнее — и наоборот.
Часто говорят о различных “скинах” модели, особенно кастомного персонажа. В наши дни изменение скина включает небольшие изменения самой модели (другой ремень или кепку), но первоначально использовалась в точности та же модель, на которую накладывалась иная текстура (или скин), и получался персонаж, который выглядит по-новому. Даже сейчас большинство изменений для неигровых персонажей или объектов выполняется при помощи текстур, так как экономит время и труд от создания множества уникальных моделей. Разная одежда, которую может носить Эйден, в основном получается за счет наложения на одну и ту же модель разных текстур.
Небольшое вращение 3D модели только с одной наложенной текстурой.
На рассматриваемом нами кадре есть около 1700 объектов, нарисованных во время основной визуализации. Некоторые из них будут идентичными. Такие вещи, как цветы в горшках или мусорные ящики никогда не делаются поштучно. Делается набор моделей или одна, и размещаются в разных местах. Однако, общее число уникальных моделей для заполнения кадра грубо оценивается как 4700. Это даст вам представление о том, сколько дополнительной работы надо выполнить помимо простого рисованиях всего этого.
Давайте посмотрим другой пример объекта — кепку Эйдена.
Текстура и модель кепки с наложенной текстурой. Можно заметить, что текстура сделана из нескольких частей, который соединяются на модели.
Козырек и донышко кепки в текстуре не прикасаются друг с другом. Так сделано потому, что оборачивание может быть достаточно сложным, при необходимости оно выполняется на нескольких разных частях модели. Иногда, чтобы без видимых проблем или швов наложить текстуру на модель причудливой формы, требуется много изящества.
Все, что мы говорили про голову Эйдена, относится и к его кепке. Помимо специальной текстуры и чисел, которые входят в вычисление развертки, все работает в точности так же.
Давайте теперь немного позабавимся. Большинство текстур имеют стандартный квадратный размер, процедура оборачивания одинакова — так что случатся, если мы “перепутаем” текстуры для разных объектов?
Неузнаваемая кепка Эйдена.
Там, где на кепке был логотип, текстура головы содержит ухо и зубы. В районе козырька получились волосы. Мэппинг остался прежним, а текстура поменялась. Мы получили баг, но подумайте, что бы вы могли делать, если умеете анимировать или перемещать текстуры. В играх эта вещи используются для получения нескольких разных эффектов, которые вы теперь сумеете обнаружить. Например, в Saint’s Row 4 прием реализован неоднократно.
Также полезно подумать обо всем, что это скрывает за собой. Модели и текстуры в играх должны в правильно совпадать.
Конечно, это не абсолютное правило. В некоторых случаях текстура будет обычный тайловый узор, который можно использовать для многих объектов. Или, возможно, для серии связанных объектов (например, газетные стенды). Все будут иметь одну и ту же текстуру для обложек газет, при этом каждая будет использовать только небольшую часть текстуры.
Тем не менее это означает, что если вы хотите рисовать много изображений для создания итогового кадра, вам нужно собрать все строительные блоки, и для этого понадобится много моделей и текстур.
Компьютерная графика для начинающих: как создать компьютерную графику?
Очень часто, когда употребляют словосочетание «компьютерная графика», подразумевают графику, используемую в компьютерных играх, потому что именно там она имеет важное значение.
Компьютерная графика в играх для начинающих покажется достаточно сложным элементом, но, зная определенные основы, а также типы и виды графики в играх, можно перестать ее боятся.
При этом компьютерная графика — это не только игры, но и:
Сегодня мы поговорим о компьютерной графике, затрагивая тему создания графики для игр.
Типы и виды графики в играх
Компьютерная графика в современных играх бывает 2-х видов: 2D и 3D или двухмерная и трехмерная графика. Каждый из этих видов разделяется на собственные виды и типы, в зависимости от способ а ее реализации.
Виды графики в играх: двухмерная графика и ее типы
История графики в играх начинается еще с 40-х годов, когда были придуманы первые игровые автоматы, а в качестве экрана выступало полотно из обычных электрических лампочек. Это и графикой назвать сложно, но начиналось все именно так. Потом шло долгое развитие графики в играх и постепенное ее усовершенствование. 2D-графика в играх впервые появилась уже в 80-х годах, но широкое распространение получила во второй половине 90-х.
Различают следующие виды двухмерной графики в играх и не только:
Векторная графика. Это набор и з простых геометрических элементов, например: точка, прямая, окружность, прямоугольник и т. д. В основном такой вид 2Д-графики применяется в качестве иконок и логотипов для веб-сайтов. В играх применяется реже. Отличительная особенность такой графики — эт о способность к масштабированию и деформации без потери качества.
Растровая графика. За основу такой графики берется матрица пикселей, где у каждого пикселя есть какое-то значение или комбинация значений цвета, света, прозрачности и т. д. Главный недостаток такой графики — это более высокий «вес», а также потери качества при масштабировании. Однако именно такой тип графики чаще всего применяется в играх.
Как ни крути, но двухмерная графика постепенно изживает себя. Это не значит, что она полностью исчезнет, но придет время, когда она будет использоваться в минимальных количествах, а ее место уверенно займет 3D.
Виды графики в играх: трехмерная графика
Но приоткрыть завесу и рассказать все максимально просто можно.
Компьютерная 3D-графика для начинающих
Моделирование. Это одна из самых популярных технологий создания 3Д-объектов, где каждый объект описывается большим количество вершин и гранями, которые их соединяют. Если простыми словами, то любой ваш объект будет геометрической фигурой, состоящей из «сетки». Эту «сетку» вы будете деформировать до тех пор, пока она не примет форму нужного вам объекта.
Анимация объекта. Создать реалистичный объект с правильным освещением — это тоже не все. Для чего он нужен, если он не будет двигаться? Поэтому любому объекту нужна будет анимация. Для этого объекту создают «скелет» и контролируют процесс изменения его внешнего вида в зависимости от его передвижения.
Композ. Создать объект и придать ему анимацию — это уже достижение, но когда объектов несколько, как их объединить? Композ — это и есть процесс, при котором происхо дит объединение нескольких анимированных объектов в один кадр.
Компьютерная графика для начинающих: инструменты
Не нужно верить т ем, кто говорит, что для работы в 3Д нужно знать основы и иметь под рукой хороший инструмент для работы. Нужно для начала теоретически подготовит ь ся к работе с компьютерной графикой. Для этого можно пройти специализированные курсы, почитать книги или найти себе хорошего наставника, а дальше можно переходить уже к поиску инструментов.
Однако начинающему специалисту вряд ли захочется тратить большие деньги на специализированный софт, поэтому многие останавливаются на бесплатном Blender. Он хоть и бесплатный, но по своим возможностям не уступает многим платным «собратьям».
Заключение
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Из чего состоит графика?
Перед стартом нового поколения консолей хочется вспомнить о главных технологиях и методах, которые используются в видеоиграх, благодаря чему вы будете лучше понимать графическую составляющую современных проектов.
Статья будет разделена на несколько отдельных частей:
Стоит начать с текстур. Возможно многие не знают, но в играх уже давно модель персонажа или любого другого объекта состоит не из одной текстуры. В Call Of Duty: Black Ops 3 для лиц героев используется 6 текстурных карт, которые сейчас детально разберём.
Color map задаёт изображение, которое будет наложено на модель. Это может быть картинка кирпичной стены, досок или любого другого изображения.
Normal Mapping – это технология, используемая для имитации неровностей поверхности на объекте. Она применяется, чтобы сделать вашу финальную модель более похожей на ее высокополигональную версию. С ее помощью можно добавить различные детали, которые нельзя передать через геометрию из-за ограничений полигонажа на вашем проекте, и заставить вашу модель выглядеть более скругленной для лучшей передачи освещенности и большей реалистичности.
Карты нормалей – это RGB изображения, где каждый из каналов (красный, зелёный, синий) интерпретируется в X, Y и Z координаты нормалей поверхности соответственно. Красный канал пространства касательных карты нормалей отвечает за ось X (нормали направленны влево или вправо), зелёный канал за ось Y (нормали направлены вверх или вниз) и синий канал за ось Z (нормали направлены прямо от поверхности.
Gloss — эта карта контролирует резкость отражений. При самом высоком показателе материал становится зеркальным, а при нулевом значении — матовым.
Transmission map описывает часть света, которая не рассеивается и достигает камеры. Поскольку карта является непрерывной функцией глубины, она, таким образом, отражает информацию о глубине сцены.
Fuzz map используется для создания различной растительности. Например, борода, брови, мох на дереве.
Occlusion map используется для предоставления информации о том, какие области модели должны получать высокое или слабое непрямое освещение. Непрямое освещение возникает из-за окружающего освещения и отражений.
Тени считаются реалистичными, когда их основание выглядит четко, а дальше тень рассеивается. За такой эффект отвечают soft shadows.
Ambient occlusion используется для затенения объеĸтов, создания теней на стыĸах стен.
Возможно вы часто видели в игре, как пробиваются лучи света сквозь листву. Это выглядит и вправду красиво. В данный момент используется два вида прямого освещения: SSGR освещение и Volumetric light.
Screen space god rays это более «дешёвый» способ отображения солнечных лучей. Самый главный минус этого метода в том, что лучи находятся в пространстве экрана, если смотреть на источник освещения. Отводя камеру от источника света, лучей будет не видно и эффект объема пропадёт.
Volumetric light создаёт эффект объема сцены, лучи при повороте камеры не исчезают. Из-за этого такой метод предоставляет более красивую картинку, но при этом жертвуя производительностью.
Global illumination — это название ряда алгоритмов, используемых в трёхмерной графике для более реалистичной имитации света.
Глобальное освещение рассчитывает не только прямое освещение, но и отражения света, цветовые отскоки.
Cube map — методика для моделирования отражений на поверхности объекта. Кубические карты не показывают динамику, а это значит, что декали и персонажи не будут отображены при таком методе отражения.
Screen space reflections — отражения, построенные по принципу трассировки лучей в пространстве экрана. Главные минусы таких отражений, это артефакты по краям экрана и исчезновение отражения при повороте камеры вниз или вверх.
Planar reflection отображает сцену полностью в динамике, но такой метод очень дорогой, т.к. создаётся вторая сцена, поэтому используют его редко для отражений в зеркалах в закрытых помещениях.
В этом пункте хочется написать про технологии, которые не встретишь в каждой игре, но при этом являются очень интересными.
Например, объёмные облака, которые взаимодействуют с источником света и самозатеняются.
Подповерхностное рассеивание описывает механизм распространения света, при котором свет, проникая внутрь полупрозрачного тела через его поверхность, рассеивается внутри самого тела, многократно отражаясь от частиц тела в случайном направлении и на нерегулярные углы.
Хотелось бы ещё написать про трассировку лучей, но это больше подходит для отдельной темы, где можно будет расписать, что получат игроки и разработчики при использовании, вместо стандартных методов. Поэтому, оценивайте, пишите комментарии, поправляйте меня там, где я не прав, всегда рад объективной критике. О чем вам хотелось бы узнать в следующий раз?
Эта статья была нужна уже хотя бы для того, чтобы ты ссылок накидал.
История игровой графики: от нескольких лампочек до миллиардов полигонов
Современная игровая графика достигла невероятного фотореализма. Если сравнить скриншот из современной игры и реальную фотографию, может возникнуть сомнение, какое изображение настоящее, а какое — компьютерное. И это заслуга не только мощного железа, которое может выдать такую картинку, но и опытных специалистов, которые отлично знают оптические особенности реального мира и понимают ограничения технологий.
Игровая графика прошла длинный путь от абстрактных геометрических фигур до современных высокополигональных моделей. Очевидно, что ключевое место в улучшении графики сыграло постепенное развитие железа, но от этого зависело далеко не всё. Параллельно художники искали и пробовали разные стили: вдохновлялись мультипликацией, комиксами, упрощали 3D-модели, добавляли видеовставки, а иногда уходили и в ностальгический даунгрейд. И аудитория поддерживала разработчиков в их поисках.
В тексте мы разберём основные вехи развития графики в видеоиграх, опишем технологии, которые влияли на этот процесс, а также расскажем о трендах, появившихся в инди-индустрии.
С чего всё начиналось: из лабораторий в аркадные залы и гостиные
Первые прототипы игр появились ещё в ранние годы существования компьютеров. У них не было экранов, поэтому информация выводилась с помощью лампочек. Примерно так работала одна из первых компьютерных игр в истории — Nimatron, созданная в начале 1940-х годов на основе правил настольной игры «ним».
Схема и изображение Nimatron
В 40-е и 50-е годы компьютеры не выходили за пределы научно-исследовательских лабораторий и выставок, поэтому у игр не было ни единого шанса стать массовым развлечением. Но постепенно технологии совершенствовались, и средства вывода информации всё больше стали напоминать привычные экраны.
Важным шагом на этом пути стала игра «Крестики-нолики», которая выводила информацию с помощью электронно-лучевой трубки — она формировала игровое поле размером 35*15 точек. Игра появилась в 1952 году, но никто за пределами Кембриджа её не увидел.
Через шесть лет, в 1958 году, появилась игра «Теннис для двоих», экраном которой выступал осциллограф. Функция экрана в игре была предельно утилитарной: ни одного лишнего элемента — только поле и сам «мячик». Даже ракетки не отображались.
Tennis for Two — The Original Video Game
Следующим заметным шагом стала игра Spacewar! (1962) для компьютеров PDP-1. На первый взгляд кажется, что графика мало изменилась по сравнению с предшественницей, но это не совсем так. ЭЛТ-дисплей мог отображать до 20 тысяч точек в секунду, что позволяло не только показать главные игровые элементы, но и добавить побочные. Например, фон из звёзд, который не влияет на геймплей, но создаёт антураж космического сражения. Именно Spacewar! стала одной из первых игр, в которых графика — это выразительное средство, поддерживающее фантазию игроков, а не просто функциональный инструмент вывода информации.
Restored PDP-1 Demonstration
Начиная с 1970-х годов, игры постепенно становились более доступными. Появились первые коммерческие игровые приставки и аркадные автоматы. Большим прорывом стала приставка Magnavox Odyssey, которая подключалась к телевизору. Но графика на ней оставалась предельно простой — это всё ещё было монохромное изображение, состоящее из нескольких геометрических фигур.
1972 Magnavox Odyssey promotional film
Несмотря на то, что до 3D-графики играм ещё было далеко, разработчики стремились сделать хотя бы имитацию объёмного мира. Одной из первых таких игр стала Maze War (1973) — первый шутер от первого лица, в котором была воссоздана линейная перспектива, а игрок мог свободно перемещаться по окружению.
Maze War. Игроки перемещались по абстрактному лабиринту и сражались друг с другом. Несмотря на простоту графики, она отлично справлялась с главной задачей — созданием трёхмерного виртуального пространства
Были версии Maze War как для векторных экранов, так и для растровых. Разница между этими типами двумерной графики заключается в следующем.
Двумерная растровая графика работает на основе сетки «растров» — пикселей, каждый из которых обладает своим цветом, насыщенностью и яркостью. Из этих пикселей, как из мозаики, можно собрать полноценное изображение. Но недостаток подхода заключается в «лесенках», которые образуются на границах каждого растрового объекта. Именно этот тип графики лежит в основе 8- и 16-битных игр, например, Pac-Man (1980), Super Mario Bros. (1985) и других.
Двумерная векторная графика устроена иначе: можно сказать, что в её основе лежат геометрические примитивы — точки, прямые, окружности, прямоугольники. Каждый вектор обозначается координатами двух точек — X и Y. Векторные объекты выглядят аккуратнее и «качественнее», чем растровые.
Пионеры 3D-графики использовали векторные линии, чтобы показывать упрощённые объёмные объекты. Хороший пример — игра Spasim (1974), в которой объекты состоят из «3D-каркасов».
Spasim. Из-за каркасного строения игроки могли видеть даже обратную сторону объектов. Всё изменилось, когда появилась возможность закрашивать полигоны
Эпоха цветных спрайтов
Другим важным рубежом стало появление цветной графики. Ранние компьютеры имели совсем небольшие объёмы оперативной памяти, поэтому графическая информация не должна была занимать слишком много места. Для монохромных игр было достаточно одного бита, для 16 цветов — четырёх битов, а восемь бит позволяли увеличить количество цветов сразу до 256.
В конце 70-х и начале 80-х персональные компьютеры всё ещё были роскошью. Зато подскочила популярность аркадных автоматов. Там же появились и первые цветные игры, потому что у автоматов хватало памяти для отображения цвета.
Появление цветной графики стало очередным витком развития игр. Дело было не только в эстетике: это влияло на весь игровой процесс. Например, в Pac-Man каждый призрак обладал уникальным поведением, а цвет помогал отличать одного от другого.
Для создания движущихся объектов в играх применялись спрайты — двумерные изображения. В Pac-Man сам герой и его противники — это спрайты. Сейчас такие изображения можно рисовать в разных графических редакторах. Но 40 лет назад разработчикам приходилось идти на всевозможные ухищрения, чтобы перенести рисунок в цифровой формат.
Пример отрисовки спрайтов на бумаге для Pac-Man
Например, изображения для Super Mario Bros. приходилось сперва рисовать на целлулоиде, раскрашивать, а лишь затем оцифровывать. Если для этой игры размеры листов были средними, то для Punch Out. (1983) приходилось использовать листы размером со стол.
Пример отрисовки спрайтов Марио на целлулоиде
Сканеры использовались далеко не везде: отсканированные изображения занимали слишком много места на жёстких дисках, которые в то время были слишком дорогими. Также сканеры не могли корректно передать цвета, поэтому художникам приходилось оцифровывать только контуры и общие черты изображения, а затем полноценно отрисовывать его на компьютере.
Другая проблема возникала с самим использованием компьютеров — это были сложные устройства, поэтому даже художники должны были обладать навыками программистов. Например, при создании Solomon’s Key (1986) приходилось использовать шестнадцатеричную кодировку для оцифровки каждой клетки спрайта.
С развитием технологий и ростом популярности видеоигр стали появляться более мощные игровые приставки. Сперва на рынок вышли 8-битные консоли, поддерживающие до 64 цветов, а следом и 16-битные консоли с палитрой из 512 цветов. Несмотря на такое развитие, технические ограничения давали о себе знать. К примеру, на игровой консоли SNES из 512 доступных цветов одновременно на экране можно было использовать только 64.
Вместе с этим в играх начали появляться разные визуальные эффекты. Super Speed Racer (1979) привнесла скроллинг, благодаря которому окружение перемещалось сверху вниз и создавало ощущение движения. Эффект параллакс-скроллинга в двумерной Moon Patrol (1982) делал так, чтобы при движении объекта дальний план передвигался медленнее переднего, из-за чего возникала иллюзия глубины пространства и корректной перспективы. А Zaxxon (1982) показала, какими могут быть изометрические игры с иллюзией свободного передвижения по трёхмерному пространству.
Одновременно с традиционными способами создания графики существовали и альтернативные подходы. Один из них — ASCII-графика, в которой использовались текстовые символы для отрисовки элементов. Простота метода позволяла создавать удивительные экспериментальные игры. Например, в Rogue (1980), родоначальнице жанра roguelike, использовалась ASCII-графику, чтобы случайным образом генерировать локации. Благодаря этому каждое прохождение игры было уникальным.
Другой путь — интерактивное кино, в котором использовались заранее записанные фрагменты кино или анимации. В Astron Belt (1983) игрок управлял космическим кораблём, который бороздил космос и вступал в перестрелки с противниками. При этом корабль изображался с помощью спрайта, а фон был записанным заранее видео.
Dragon’s Lair (1983) была полноценным интерактивным мультфильмом — если игрок нажимал на правильную кнопку, включался новый фрагмент анимации и пользователь продвигался вперёд. Если же игрок допускал ошибку, то включался фрагмент, в котором главный герой погибал.
Но основная масса игр использовала именно спрайты, которые со временем становились всё более детализированными и сложными. Взгляните на пример из Street Fighter II (1991): персонаж — это не просто набор пикселей, в котором угадываются черты героя, а полноценное проработанное изображение с множеством деталей и собственными тенями. Постепенно таких игр становилось всё больше и больше.
Но это не значит, что все игры были однообразными и похожими друг на друга. Были разные способы выделиться на фоне остальных проектов. Один из них — анимация.
Анимирование объектов происходило по тому же принципу, что и в мультипликации — художник рисовал несколько кадров с разным положением отдельных частей, а затем кадры последовательно выводились, что создавало иллюзию движения. Обычно игровые художники самостоятельно отрисовывали кадры, но некоторые разработчики применяли технику ротоскопинга — они записывали видео движения объекта, а затем покадрово отрисовывали его. Благодаря этому в Prince of Persia (1989) настолько плавная и визуально приятная анимация.
А в Mortal Kombat (1992) в качестве спрайтов персонажей использовались оцифрованные кадры, и поэтому графика выглядела намного реалистичнее, чем в остальных файтингах того времени.
Популяризация 3D
В первой половине 90-х стало появляться всё больше 3D-игр. Первые трёхмерные проекты возникли ещё в середине 70-х, но тогда они не стали популярными. Со временем ситуация изменилась.
В основе 3D-моделей лежит полигональная сетка — набор треугольников, которые определяют форму объектов. Если закрасить треугольники, то получится непрерывная поверхность. Затем на получившуюся форму можно «натянуть» текстуру — изображение, пиксели которого привязываются к вершинам полигонов.
Если взглянуть на устройство 3D-моделей более абстрактно, можно сказать, что они представляют собой пустое пространство, ограниченное полигональной сеткой. Это очень легко заметить из-за багов — если камера случайно провалится сквозь объект, то там будет лишь пустота.
В I, Robot (1983) 3D-объекты наконец утратили каркасный вид — полигоны были заполнены цветом, и игроки уже видели не абстрактные линии, а полноценные объекты. Кроме того, в игре присутствовало освещение, поэтому на объектах была собственная тень. Но 3D-игры всё ещё были редкостью, так как требовалось по-настоящему мощное железо, чтобы поддерживать их.
Значимым шагом для популяризации 3D-графики стал релиз Wolfenstein 3D (1992) и Doom (1993). Несмотря на то, что они позиционировались, как трёхмерные игры, это было не совсем так. Пользователь мог перемещаться по объёмному окружению, но все объекты были сделаны с помощью двумерных спрайтов.
Особенность движка этих игр заключалась в том, что он использовал метод рейкастинга, что позволяло рассчитывать только те поверхности, которые видны пользователю. Это позитивно сказывалось на производительности, поэтому Wolfenstein 3D и Doom могли запускаться на самых разных компьютерах.
В играх начала 90-х нередко совмещались 2D- и 3D-элементы. Например, в Alone in the Dark (1992) окружение состояло из плоских изображений, а подвижные элементы — из полигонов. Это позволяло экономить вычислительные ресурсы компьютеров.
Для создания реалистичной картинки важна корректная модель освещения. Но у ранних компьютеров не хватало на это вычислительных ресурсов, поэтому разработчики искали другие способы решения проблемы. Например, они «запекали» освещение в текстурах — тень создавалась не в реальном времени, а уже была «нарисована» на модели.
Со временем технология динамического освещения эволюционировала. Уже в Quake (1996) летящие снаряды освещали окружение в реальном времени.
Metal Gear Solid (1998). Все тени здесь статичные и зафиксированы прямо в текстурах. Единственное исключение — под персонажами находятся тени, которые выглядят как тёмные пятна и всюду следуют за ними
Во второй половине 1990-х, как и в любое другое время, развитие графики не шло по какому-то одному пути. Многое зависело от технологий, которые были в распоряжении у компаний. Если на персональных компьютерах графика развивалась плавно и постепенно, то на консолях этот процесс происходил рывками — поколения приставок обновлялись раз в несколько лет. Именно поэтому некоторые визуальные особенности присущи только определённым консолям. Например, в играх на PlayStation у всех 3D-объектов было специфическое «подёргивание» при любых движениях или смене ракурса.
Появление новых технологий в области 3D
Постепенно в индустрии появлялись новые технологии, которые улучшали отдельные аспекты графики. Многие из них актуальны и сейчас, поэтому часто появляются в современных играх.
В начале 2000-х широкое применение получил метод затенения по Фонгу, при котором грани полигонов сглаживаются, а на некоторых поверхностях появляются блики.
На этом скриншоте из Planet Harriers (2000) на костюме героя видны блестящие элементы
Появилась технология антиалиасинга, которая сглаживает «лесенки» на краях объектов.
Пример из Half-Life 2 (2004). Слева изображение без сглаживания, а справа — с ним
Стало применяться рельефное текстурирование. Оно визуально усложняет строение объектов и имитирует неровности, но при этом не добавляет полигонов.
Doom 3 (2004). Стены выглядят объёмными из-за рельефного текстурирования. Этот эффект не везде выглядит хорошо
К 2007 году появилась модель затенения ambient occlusion, улучшающая освещение. С её помощью можно рассчитать интенсивность света, доходящего до поверхности.
Разработчики начали применять технологию HDR, которая расширяет диапазон яркости — на экране одновременно отображаются как очень тёмные, так и очень светлые участки сцены.
Half-Life 2: Lost Coast (2005).
В 2000-х стали популярны эффекты, придающие изображению реалистичности с помощью постобработки.
Эффект motion blur «смазывает» изображение при движении. Need for Speed: Most Wanted (2005)
Эффект bloom добавляет свечение самым ярким участкам кадра. Также вокруг них появляется ореол, что делает изображение кинематографичнее. Пример из Gears of War (2006)
Эффект depth of field (глубина резкости) размывает объекты, находящиеся не в фокусе. Это позволяет сконцентрировать внимание на самой важной части сцены. Пример из Silent Hill 3 (2003)
В 2010-х года прогресс в развитии графики замедлился: если раньше прорывы случались раз в пару лет, то сейчас это происходит значительно реже. Качество картинки в крупных высокобюджетных играх стало по-настоящему впечатляющим и приблизилось к фотореализму, хоть скриншоты до сих пор и сложно перепутать с реальными фотографиями.
Последнее поколение консолей вывело стандарты графики на новый уровень, пусть и не настолько сильно, как в предыдущие годы. Так как качество графики в ААА-играх поднялось примерно до одного уровня, студии переключили внимание на проработку отдельных аспектов, улучшающих общее впечатление от графики.
Например, всё чаще стала использоваться система частиц, которая важна для создания впечатляющих визуальных эффектов.
InFamous: Second Son (2014)
Для создания моделей и текстур начали применять метод фотограмметрии — разработчики фотографируют реальный объект с нескольких ракурсов, соединяют в программе, а затем из получившегося облака точек создают модели.
В Star Wars: Battlefront (2015) с помощью фотограмметрии создавались естественные объекты окружения
В Red Dead Redemption 2 (2018) разработчики уделили особое внимание влиянию погоды и облаков на освещение в игровом мире
Detroit: Become Human отличается проработанной системой отражения света у кожи. Взгляните на ухо андроида: оно просвечивает, из-за чего выглядит красноватым. Разработчики специально добавили этот эффект для реалистичности
Последний наиболее значимый прорыв в области графики — появление видеокарт, которые поддерживают трассировку лучей. Эта технология позволяет имитировать реальное поведение лучей света, отражающихся от объектов.
Слева скриншот с трассировкой лучей, а справа — без. Разница в отражениях очевидна. Пример из Control (2019)
Альтернативные пути
Игровая индустрия разнообразна и многогранна, поэтому далеко не все разработчики стремятся к реализму. Иногда это касается эстетических взглядов, а иногда — финансовых ограничений. В середине 2000-х появились удобные цифровые магазины, через которые независимые студии могли продавать свои игры.
Это стало огромным толчком для развития инди-сцены. У маленьких студий, состоящих из одного или нескольких человек, не было ресурсов для разработки игр с реалистичной графикой. Поэтому они начали экспериментировать с визуальным стилем. Этим же занимались и более крупные студии.
Во второй половине 2000-х стали популярны игры, выполненные в стилистике пиксель-арта. Её преимущество заключается в том, что для получения качественной и эстетически приятной графики не нужны продвинутые художественные навыки. Другая причина популярности — ностальгия по играм 80-х годов.
В условиях ограниченных ресурсов некоторые разработчики пошли по пути упрощения. Игры в стиле low-poly используют простые низкополигональные объекты.
Также стали применяться некоторые непопулярные и практически забытые техники. Например, в основе всех объектов в Minecraft (2009) лежат не полигоны или спрайты, а воксели — объёмные пиксели, из которых можно собирать целые игровые миры. Если в обычных 3D-объектах полигоны окружают пустое пространство, то воксельные объекты буквально состоят из вокселей, как из кирпичей. Эта особенность легла в основу геймплея Minecraft, потому что она позволила всячески менять окружение — разрушать объекты и строить что-то новое.
На основе вокселей можно создать мир с продвинутыми разрушаемостью и физикой. Пример из Teardown (в процессе разработки)
В 2000-х для стилизации под комиксы и мультфильмы разработчики начали использовать технику cel-shading. Игры с таким стилем отличаются чистыми цветами без градиентов, отсутствием плавного затенения, а также обводкой на контурах объектов. Но соответствие всем этим критериям — не обязательное правило.
Техника cel-shading в Okami (2006)
Поиск необычных визуальных стилей продолжается и сейчас. Приведём несколько примеров игр с интересной графикой.
Superhot (2016): стильная и минималистичная low-poly графика с интуитивно понятной цветовой индикацией игровых объектов
Cuphead (2017): графика игры создавалась под влиянием работ аниматоров 1930-х годов
Limbo (2010): чёрно-белая эстетика, напоминающая театр теней
Ape Out (2019): минимализм и отсутствие деталей, а также имитация напечатанного изображения и плакатной графики
Monument Valley (2014): простая изометрия, которая позволила реализовать главную особенность игры — невозможную геометрию и оптические иллюзии
Отсутствие большого бюджета — это ещё не приговор. С помощью современных инструментов даже один человек может создать игру с реалистичной графикой. Хороший пример — независимый разработчик Цзэн Сяньчэн и его игра Bright Memory: Infinite (в процессе разработки).
Например, вместо того, чтобы вручную анимировать мимику персонажей, он отсканировал собственное лицо и использовал её в игре. А для создания деревьев с листвой Цзэн применял специализированную программу SpeedTree, в то время как студии обычно отрисовывают детали с нуля. Знание разных инструментов и вдумчивый подход помогли разработчику-одиночке создать впечатляющую графику, которая может тягаться с некоторыми высокобюджетными играми.
Bright Memory: Infinite
В будущем качество графики будете постепенно расти, хоть и не настолько быстро, как на рубеже XX и XXI веков. Будет увеличиваться поддерживаемое разрешение, а также количество и качество визуальных эффектов. Скорее всего, трассировка лучей распространится повсеместно — новое поколение консолей уже должно поддерживать эту функцию.
Традиционно с развитием технологий растёт и количество полигонов в объектах — чем мощнее железо, тем больше информации оно может обрабатывать. Нет сомнений в том, что этот процесс продолжится и дальше, но, вероятно, и его ждут изменения.
Например, в этом году компания Epic Games анонсировала новую версию своего движка — Unreal Engine 5. Как говорят в Epic, он позволит работать именно с тем количеством полигонов, которое нужно. Разработчикам не придётся оптимизировать высокополигональные модели, снижать их качество и разбираться с уровнем детализации. Компания уже продемонстрировала сцену, в которой используется более 16 миллиардов полигонов.
Гонка за фотореализмом, скорее всего, будет длиться вечно. Но важно понимать, что далеко не всем играм необходима реалистичная графика. Есть множество проектов с уникальной эстетикой, которая появилась в результате творческих поисков и необычного видения авторов. Важность реалистичной графики неоспорима, но есть некоторые вещи, которые не зависят от количества полигонов и качества освещения.
Материал подготовил Владимир Семыкин.
Освоить профессию с нуля можно на курсе «Геймдизайнер» в Нетологии.
Вы пройдёте весь цикл разработки игр: создание концепции, проектирование игровых уровней и механик, психология игр, нарративный дизайн, специфика оформления игрового интерфейса, прототипирование, создание стратегии продвижения и вывод игрового продукта на рынок, аналитика игр.