Графика с первой PlayStation: как она была устроена и как добиться такого же эффекта

Разбираемся, какая специфика была у «железа» консоли и почему у старых игр именно такая графика.

На фоне общего повального увлечения ретро всё сильнее набирает популярность стилизация графики под пятое консольное поколение. А именно — под первую PlayStation, с её грубыми моделями и «дрожащей» картинкой. Современные инди-авторы и даже целые студии подражают такой графике, а также создают демейки современных игр.

Ностальгия по низким полигонам не заканчивается на графике одной лишь PS1. Похожая картинка была в играх для Nintendo 64, Sega Dreamcast, Nintendo DS и некоторых PSP-тайтлах.

В этом тексте мы расскажем о том, как разрабатывались игры для PS1, с какими ограничениями сталкивались создатели, а также как современные разработчики воссоздают ретро-графику в своих проектах.

Все особенности графики PS1 упираются в аппаратные ограничения. При довольно скромном железе — у PS1 был всего один мегабайт памяти — консоль могла обрабатывать 360 тысяч полигонов в секунду или 12 тысяч на один кадр, если учесть, что игра работает при 30 fps. Однако из-за общей нагрузки на железо более 10 тысяч полигонов в кадре разработчики старались не использовать. Видеочип выдавал картинку в разрешении от 256×224 до 640×224 (224p).

Silent Hill

Игры для PS1 распространялись на CD-дисках, размером всего 700 мегабайт. Если игра занимала больше места, разработчикам приходилось искусственно уменьшать размер образа. Поэтому многие проекты записывались на диски в 15-битном цвете (32768 цветов) вместо заявленных 32 бит (16 миллионов цветов).

Когда количество цветов уменьшалось, в играх возникали так называемые полосы Маха. Это оптическая иллюзия, из-за которой еле различимые оттенки одинаковых цветов при соприкосновении друг с другом становились ярче.

Эффект полос Маха в одной картинке

Чтобы избавиться от этих полос, разработчики использовали дизеринг. Он подмешивал шум в картинку, который создавал иллюзию высокой детализации при очень низкой глубине цвета. Таким образом полосы Маха сглаживались и не так сильно бросались в глаза.

Наглядный пример работы дизеринга

Сейчас дизеринг широко используется в современных мобильных играх для уменьшения объёма передаваемых данных, а Лукас Поуп сделал его важной частью визуальной составляющей детектива Return of the Obra Dinn (2018).

Return of the Obra Dinn

В играх на PS1 часто возникал эффект дёргающихся вершин на моделях и окружении — они перепрыгивали из одного положения в другое, особенно когда игрок двигал камеру. Это происходило в первую очередь из-за того, что консоль не могла самостоятельно передвигать вершины полигонов при смене ракурса, и они автоматически привязывались к точкам в пространстве.

Также из-за видеопамяти разработчикам приходилось сильно экономить на массовке и детализации окружения, часто используя плоские низкодетализированные спрайты.

Star Wars Episode I: The Phantom Menace

Ещё разработчикам нужно было уменьшать дальность обзора и детализацию. На отрисовку большого количества моделей с высокой детализацией мощности не хватало. Так создатели Spider-Man просто разместили здания в воздухе и скрыли пустоту за туманом:

А в Pepsiman уровень подгружался прямо на ходу, за петляющим горизонтом:

Ну и известный на весь мир туман из первой Silent Hill появился как решение проблемы с прорисовкой:

Современные игры требуют вплоть до 16 гигабайт ОЗУ. У PS1 было всего 2 мегабайта оперативной памяти, и разработчикам приходилось придумывать хитрый код, который быстро удалял пройденные игроком участки уровней и на ходу подгружал новые куски.

По словам Дэйва Бэггета из Naughty Dog, в первой Crash Bandicoot каждый из уровней весит по 10 мегабайт, и весь этот объём нужно было по частям подгружать и выгружать незаметно для глаза игрока. В итоге разработчикам пришлось написать специальный файл подкачки, который делил контент на страницы по 64 килобайта.

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

Crash Bandicoot

В силу технических ограничений персонажи в играх с PS1 — низкополигональные. Обычно игры того времени держались жёсткого правила — 500-600 треугольников на важных персонажей для среднестатистической игры от третьего лица.

Например, персонажи JRPG Vagrant Story состоят примерно из 500 треугольников, а главные персонажи первой Metal Gear Solid — из 650. Сейчас в играх используют гораздо больше полигонов. Например, в Uncharted 4 модель Нейтана Дрейка состоит из более 80 тысяч треугольников, а модель Биг Босса из Metal Gear Solid 5 — из 18 тысяч.

Модели персонажей Vagrant Story без текстур

Также во времена PS1 многие разработчики создавали 3D-модели героев из разных частей. Яркий пример — Metal Gear Solid. Руки персонажей сделаны как отдельные объекты и прикреплены к туловищу:

Эта хитрость позволяла создать более детальную и сложную анимацию, расширяя диапазон движений. Правда, иногда это смотрелось странно.

Часто художники размещали все текстуры на одном атласе, а прямые линии на нём отображаются как прямые линии на моделях. Это делали для того, чтобы облегчить развёртку текстур в трёхмерном пространстве.

Вот текстуры Vagrant Story:

А в Metal Gear Solid атлас разделён на несколько частей:

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

Обратите внимание, что большая часть освещения и лучей в Silent Hill нарисованы поверх текстур

А вот более наглядный пример из Metal Gear Solid:

Другой способ симуляции освещения — использование так называемого Vertex Color или цвета вершин. Вертекс — всего лишь точка в трёхмерном пространстве, часть полигона. Из множества таких точек и состоят 3D-модели. А цвет вершин — параметр с тремя значениями, благодаря которым можно задавать цвет этих самых точек и таким образом менять цвет объектов, создавая иллюзию реалистичного освещения. Проще говоря, трёхмерное окружение можно подсвечивать благодаря цвету вершин.

Crash Bandicoot

В качестве примера можно взять часть окружения из Vagrant Story. В текстурах декораций нет запечённого освещения. Иллюзия света сделана как раз благодаря цвету вершин.

В Spyro the Dragon вертексы используются не только для имитации освещения декораций, но и для освещения скайбокса:

А разработчики Animal Crossing для Nintendo 64 и вовсе отрисовали весь ландшафт как одну большую текстуру с нарисованными поверх неровностями и ямами. Эффекта объёма достигли иллюзией, при этом сама текстура — полностью плоская. Художники не использовали карты нормалей.

Animal Crossing

Текстура создана в очень низком разрешении 64×64, при этом в ней использовано всего 9 цветов. Она многократно повторяется, однако благодаря разным мелким деталям это не бросается в глаза. Таким образом разработчики сильно сэкономили ресурсы системы.

Фрагмент текстуры земли из Animal Crossing

С развитием игровой индустрии графика в играх стала гораздо лучше, а модели героев приблизились к фотореализму. Но любой прогресс порождает тоску по ушедшим временам. Так появилась ностальгия по эстетике PS1 — разработчики стали стилизовать новые игры под низкополигональное ретро и даже создавать демейки современных ААА-проектов.

Скриншот демейка Resident Evil 4, стилизованного под Game Boy

В переводе с английского слово «demake» является полной противоположностью слова «remake». Если ремейк подразумевает переделку, обновление и переосмысление чего-то старого, то демейк — намеренное «ухудшение» нового.

Демейк — переработка современной игры, попытка фанатов представить, как бы она смотрелась в девяностых или двухтысячных, на железе винтажной консоли, вроде PS1, Dreamcast или Game Boy. Обычно это нишевые домашние проекты, которые создаются в первую очередь для души.

Многие современные разработчики выросли на играх с PS1 и стилизация для них — своего рода любовное письмо и способ выразить восхищение играми детства. Среди самостоятельных проектов, использующих стилизованную ретро-графику — Paratopic, Postal: Brain Damage, Vaccine, Back to 1995, Night of the Consumers, HROT и многие другие.

Инди-авторы стараются не замыкаться на жанровых рамках и активно экспериментируют с механиками и подачей. Особых успехов в этом плане достигли разработчики Puppet Combo и 98DEMAKE. Первый создаёт стилизованные под старину игры, вдохновленные слэшерами восьмидесятых, а второй — галлюциногенные симуляторы ходьбы в необычной стилистике.

Картинку PS1 от остальных систем отличают, в первую очередь, те самые «дрожащие» объекты и декорации, что делает визуальную часть игры более атмосферной и психоделичной.

Современные разработчики, занимающиеся играми с ретро-стилизацией, для воссоздания различных эффектов из эпохи PS1 используют различные инструменты и ухищрения. Это нужно не только для стилизации визуальной части, но и для создания необходимого настроения.

Такааки Итидзё, создатель ретро-хоррора Back in 1995 и экшена Demolition Robots K.K, серьёзно подходит к делу, изучает технические спецификации и воссоздаёт все возможные графические недочёты игр девяностых. Только так, по его мнению, можно перенести необходимую атмосферу в свой проект.

Demolition Robots K.K

Такааки использует уже готовые шейдеры для движков, которые продаются в контент-шопах Unity и Epic. Например, шейдер Retro 3D для Unity. Он самостоятельно стилизует картинку под PS1 и не требует глубоких настроек. Также Retro 3D легко может адаптировать изображение под специфику движков Id Tech 1 и Id Tech 2.

Пример работы шейдера:

А для Unreal Engine 4 разработчик советует использовать плагин Oldskooler. Он работает примерно также как и Retro 3D — позволяет за пару кликов создать необходимую ретро-стилизацию и выбрать нужные эффекты.

Такааки воспроизводит именно старые игры вместе с их геймплейными особенностями, недоработками и «танковым» управлением. Его цель — не просто стилизовать современную игру под PS1, а воссоздать хорошо знакомый геймплей, который помнят все, кто вырос в девяностых.

С подходом Такааки согласен и Тони Кортелати, автор психоделического хоррора OK/NORMAL. При создании своих проектов он опирается лишь на геймплейные механики и дизайн старых игр. Именно в этих двух аспектах содержится львиная доля атмосферы.

Back in 1995

В Back in 1995 Такааки пошёл на хитрость и сделал фальшивые экраны загрузки между комнатами. Во времена PS1 такие переходы были практически в каждом хорроре, так как у консоли был двухскоростной привод, и для чтения данных с диска ей нужно было несколько секунд. Чтобы замаскировать загрузку, воспроизводился ролик — как, например, в первой Resident Evil, где открывалась дверь.

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

Resident Evil (1996)

Ещё один приём заключается в том, чтобы создавать ролики игр в формате Motion JPEG — ведь именно в нём записывались пререндеренные кат-сцены для игр девяностых. Разрешение таких роликов — 320×240 (30 кадров в секунду) или 640×240 (15 кадров в секунду).

Если вам нужно сжать видео и превратить его в Motion JPEG, Такааки советует использовать этот шейдер.

Завершает ретро-эстетику Back in 1995 — фильтр с эффектом старого ЭЛТ-монитора.

Back in 1995

Именно воссоздание мелочей, по мнению Такааки, сделает картинку достоверной и разбудит внутреннего ребёнка внутри игрока.

Современные разработчики демейков и ретро-стилизованных игр предпочитают создавать модели с небольшим числом полигонов, полностью повторяя опыт создателей игр девяностых.

Обычно соблюдают лимит в 600 треугольников и убирают все лишние детали, которые ничего не добавляют к дизайну и силуэту персонажа. Подобным принципом пользуются уже несколько десятилетий, даже в играх для более мощных приставок. Например, в Metal Gear Solid: Peace Walker для PSP персонажи состояли из 1500 треугольников. Каждый из них важен в общем дизайне модели.

Модель героя из Metal Gear Solid: Peace Walker

Когда лоуполи модель полностью готова, к ней рисуют текстуры. Сейчас все привыкли к HD-текстурам и 4K, однако при стилизации используют низкие разрешения, а также фильтрацию. Она сглаживает крупные пиксели.

Текстуры для основных персонажей рисуют в разрешении 256×256 (100-120 цветов на весь атлас), а второстепенных — в 128×128.

Модели героини Dino Crisis

Тони Кортелати в статье для Gamesradar рассказал о своём пайплайне создания стилизованных ретро-моделей.

Он использует стандартный текстурный лист. Такой-же, например, брали за основу разработчики оригинальной Resident Evil.

В разных частях атласа располагаются разные части тела персонажа. Тони ищет текстуры в сети — скриншоты и фото, которые потом обрабатывает в Photoshop. Например, для создания выжившего из Fallout 4 он использовал скриншоты напрямую из игры Bethesda, нарисовав поверх лишь волосы. Разрешение такой текстуры — 256×256.

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

Тони создаёт ролики-демейки, воображая, как бы выглядели современные игры, если бы они вышли в конце девяностых. Так, основами для его видео послужили уже упомянутая Fallout 4, Uncharted и Outlast. После создания персонажей автор помещает их в специальные декорации, созданные для роликов:

И отрисовывает низкодетализированные спрайтовые эффекты:

В итоге получается вот такое видео:

Если вы хотите ознакомиться с процессом создания моделей более подробно, то в данном информативном видео можно кратко посмотреть процесс создания стилизованной модели целиком:

А вот большой и подробный стрим с поэтапным созданием стилизованного Сэма Бриджеса из Death Stranding:

Комментарии: 0