Почему игры занимают все больше места?

Список игр, которые вскоре легко будут занимать более 100 Гб, безостановочно растет.

access_time13 ноября 2019remove_red_eye4067question_answer29

Помните, всего лишь месяц назад я писал, что технология HDD умерла для меня? Некоторые из последних игр очень стараются заставить меня пересмотреть эту точку зрения. Как только я подумал, что 1 Тб памяти будет более чем достаточно, а про 2 Тб даже говорить не приходилось, сразу же появилось (или стало известно о скором выходе) несколько игр, размер которых превысит 100 Гб. Конечно же, мне не нужно устанавливать на ПК все имеющиеся у меня игры, но мне нравится держать некоторую коллекцию для разнообразных тестов и всякого такого. Но я впал в изумление, когда увидел Red Dead Redemption 2, готовую поглотить 150 Гб, и Call of Duty: Modern Warfare, на которую в конечном итоге, судя по тому, что известно, может понадобиться 175 Гб.

Что за полнейший бред творится с размером игр?! Индустрия внезапно перепрыгнула с 50 Гб, считающихся огромными, до почти трехкратного превышения! Я помню, когда целые игровые миры могли содержаться всего лишь на одной дискете - ну, может, на коллекции дискет. Не важно. Дело в том, что, если бы мы все еще работали в дистрибуции с физическими носителями, мы смотрели бы на игры, которые требовали бы по 20 DVD, 250 CD или, если хотите, 121 500 3,5-дюймовых дискет). Разумеется, речь идет про версию с «высокой плотностью» размером в 1,44 Мб, а не о более ранней в 720 Кб.

Просто куча CD-дисков

Почему игры занимают все больше места?

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

Позвольте мне начать с простого примера - размеры файлов для относительно скромной текстуры разрешением 2048x2048 пикселей (2K-текстуры, если так привычнее). Если вы хотите сохранить такую текстуру без какого-либо сжатия, это будет означать 32-битное значение для каждого пикселя: RGBA (красный, зеленый, синий и альфа-канал - это такое техническое название для степени прозрачности). Всего получается около 4,2 миллиона пикселей и, как мы упомянули выше, 4 байта на пиксель, что в итоге выдает нам хороший файл размером около 16 Мб. А теперь подумайте обо всех моделях и текстурах в некоторых наиболее крупных играх с открытым миром. Если бы на каждой поверхности использовалась несжатая 2K-текстура, даже при размере игры в 150 Гб осталось бы место лишь для 9600 уникальных текстур.

Ладно, это на самом деле не выглядит слишком печально, но помните, что речь шла о 2K-текстурах. А что, если игра хочет использовать 4K-текстуры разрешением 4096x4096? Это увеличит размер файла в четыре раза и, как следствие, сократит число уникальных текстур до одной четвертой: 2400 текстур для 150 Гб или всего 800 текстур в игре на 50 Гб. Этого даже близко не достаточно для современной игры со множеством различных локаций, так что дело обстоит иначе.

Сжатие изображений без потери качества представляет собой нечто вроде уплотнителя мусора (на самом деле, не очень)

Почему игры занимают все больше места?

Но позвольте мне вернуться к тому моменту, где я говорил о сжатии. Почему текстуры должны храниться без сжатия? Конечно, это может привести к несколько более высокому качеству изображения, но размеры файлов в итоге окажутся огромными (относительно). Любой, кто знаком с цифровыми изображениями, вероятно, думает, что файлы форматов JPEG или PNG подошли бы лучше, и если мы говорим про размеры файлов - они будут правы. Это как положить мусор в уплотнитель: JPEG высокого качества (но с потерей данных, то есть в нем все равно будут артефакты сжатия) может сократить размер файла примерно до 2 Мб или сильнее (соответственно, с более низким качеством изображения) - до 1 Мб или даже до 0,5 Мб. Если попробовать PNG, то его сжатие без потерь обычно может уменьшить размер файла вдвое.

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

Поприветствуем алгоритм DirectX Texture Compression, также известный как DXTC (или его ранняя версия - S3TC, названная в честь ныне уже несуществующей компании S3 Graphics, которая создала его еще в конце 90-х). Официально S3TC стал поддерживаться в DirectX с версии 6.0, выпущенной в 1998 году. Позже его переименовали в DXTC, развив его до пяти различных режимов работы. Я не буду углубляться в детали низкого уровня, но если вкратце, DXTC - это алгоритм фиксированного сжатия изображений. Это означает, что в отличие от JPEG и PNG, здесь легко с точностью определить, насколько большими будут конечные файлы, а также проще создать аппаратное обеспечение для ускорения обработки изображений. По сути, все современные видеокарты, начиная с 2000 года, имеют аппаратную поддержку S3TC/DXTC.

Для игр, использующих DXTC, наиболее распространенными режимами работы являются степени сжатия 6:1 или 4:1. Это означает, что игра может хранить в четыре-шесть раз больше изображений в том же объеме. Unreal Engine и Unity Engine тоже поддерживают DXTC, наряду с другими форматами файлов, и, хотя я уверен, что есть исключения, мне кажется, что большинство игр в настоящее время используют для своих текстур именно DXTC. И, естественно, не все текстуры, используемые в игре, должны иметь одинаковое разрешение, поэтому маленькие объекты, которые могут занимать всего несколько сотен пикселей экранного пространства, не будут храниться в виде массивной 2К- или 4К-текстуры.

Демонстрация того, почему в играх используют MIP-текстурирование

Почему игры занимают все больше места?

Есть еще одна вещь: MIP-текстурирование. «MIP» происходит от латинской фразы «multum in parvo», означающей «много вещей в маленьком пространстве» (да, я тоже не знал об этом, пока не написал эту статью - спасибо, Википедия!). MIP-текстурирование существует с начала 80-х годов и широко используется в графических приложениях. Краткий итог: не каждую текстуру нужно постоянно хранить в полном разрешении. Предварительно рассчитав текстуры с более низким разрешением, можно оптимизировать требования к памяти и пропускной способности.

В конечном итоге каждая DXTC-текстура сохраняет мипмапы одной и той же текстуры интервалами в половину разрешения, практически до нуля – до размера в 1x1 пиксель. Если вы работаете с 2K-текстурой, вам нужно предварительно рассчитать 11 дополнительных файлов: 1024x1024, 512x512, 256x256, 128x128, 64x64, 32x32, 16x16, 8x8, 4x4, 2x2 и 1x1. Unreal Engine даже предоставляет эти полезные сведения в своей документации с указанием окончательных размеров файлов.

Теперь мы можем, по крайней мере, получить разумное представление о том, сколько места потребуется игре, основываясь на количестве используемых текстур и их размере. Расчет начинается с количества уникальных текстур, и для простоты я собираюсь игнорировать тот факт, что не все текстуры имеют одинаковый размер. Я думаю, можно сказать, что для любой достаточно сложной игры со множеством локаций счет будет идти на тысячи текстур. Давайте просто попробуем 10000 в качестве удобного круглого числа.

Если исходить из размеров файлов, указанных Unreal Engine, то для 1К-текстур (стандартные текстуры «высокого качества») игре потребуется 13,3 Гб. Увеличьте разрешение хотя бы до 2K, и это приведет к скачку до 53,3 Гб. А если вам нужны новейшие и самые лучшие 4К-текстуры, вам придется подготовить 223,7 Гб. Упс! И это мы говорим только про текстуры. В играх также присутствует много аудиофайлов, особенно если учесть их полную озвучку (например, опять же, Call of Duty и Red Dead Redemption 2). Добавьте к рассмотрению файлы геометрии и разные видео, и в итоге любая современная игра, которая использует текстуры в разрешении 4K, окажется довольно массивной.

Сколько разных текстур в этом кадре?

Почему игры занимают все больше места?

Очевидно, что нет однозначного подхода относительно того, как игры хранят свои текстуры, не говоря уже об аудио и видео файлах. Тем не менее, в целом, большая часть проблемы разрастания размера последних игр, похоже, произрастает именно из текстурирования. Преимущество состоит в том, что мы больше не получаем в играх повторяющиеся текстуры, и все выглядит намного более реалистичным. Оглядитесь назад в прошлое на такие игры, как оригинальный Half-Life или Deus Ex, - не заметить улучшение качества изображения невозможно. Я с нетерпением жду возможности посмотреть на закат в Red Dead Redemption 2, любуясь графикой - и будьте вы прокляты, 150 Гб!

Но текстуры с более высоким разрешением, несомненно, подвержены уменьшению заметного прибавления в качестве, особенно при более низких разрешениях. Переключитесь с ультры на текстуры с высоким качеством (с 4K до 2K или с 2K до 1K), и изменения часто даже трудно будет заметить, особенно на 1080p-мониторе. Это потому, что высококачественные текстуры обычно используются только на небольшой части экрана. В конце концов, по понятиям, стена с 2K-текстурой должна выглядеть лучше, чем та же стена с 1K-текстурой, но отойдите подальше, и игровой движок, вероятно, заменит 2K-текстуру аналогом с более низким на одну ступень разрешением, и вы этого даже не заметите.

Это хорошая новость, потому что я, безусловно, совсем не жду игр, пытающихся использовать текстуры с разрешением 8K, которые еще в четыре раза увеличат их размер. Возможно, когда-нибудь в будущем мы все будем использовать 8K-дисплеи, и это встанет в разряд нормального, но, надеюсь, к тому времени у нас также будут доступные SSD-накопители емкостью в десятки терабайт. Или так, или кто-нибудь умный изобретет более эффективный алгоритм сжатия текстур. Я могу на это только надеяться.

Источник: PC Gamer

Материалы автора

394 статьи
20 лет играю в компьютерные игры. Обожаю настолки. Летаю на дроне.

RimWorld - В Steam вышло дополнение Royalty

25 февраля в 21:13 @ Plem remove_red_eye 2306 question_answer Обсудить на форуме (9)
RimWorld - В Steam вышло дополнение Royalty
Вчера в Steam состоялся релиз дополнения для инди-стратегии на выживание RimWorld - Royalty. По-настоящему королевское обновление! Колонисты теперь смогут иметь монаршие титулы. Такие персонажи получат подмогу в виде особых войск и другие бонусы.

Фил Спенсер пообещал много игр для Xbox на E3 2020

24 февраля в 16:12 @ Plem remove_red_eye 901 question_answer Обсудить на форуме (2)
Фил Спенсер пообещал много игр для Xbox на E3 2020
Sony и Electronic Arts пропустят Е3 2020, но Microsoft не меняет своего желания сделать выставку главным медийным событием года. Учитывая, что в конце этого года на рынке должны появиться консоли нового поколения, компания собирается подойти к подготовке мероприятия со всей ответственностью.

Torchlight III - новости разработки

24 февраля в 13:49 @ Plem remove_red_eye 2636 question_answer Обсудить на форуме (20)
Torchlight III - новости разработки
Torchlight III - это недавно переименованная Torchlight Frontiers. В данный момент игра находится на стадии Alpha-тестирования, и разработчики из Echtra Games периодически делятся с пользователями своими результатами. Так, они рассказали, как они обработали отзывы на Update 10.

Anthem - BioWare и EA забыли про день рождения игры

24 февраля в 13:20 @ Plem remove_red_eye 2988 question_answer Обсудить на форуме (21)
Anthem - BioWare и EA забыли про день рождения игры
22 февраля 2020 года игре Anthem исполнился 1 год, но вы об этом вряд ли слышали, потому что практически нигде в социальных медиа не было соответствующих новостей. Ни разработчик игры BioWare, ни ее издатель Electronic Arts, не обозначили публично свое отношение к данному событию.

В The Division 2 вновь откроет двери Колледж Кенли

24 февраля в 12:39 @ Plem remove_red_eye 2173 question_answer Обсудить на форуме (7)
В The Division 2 вновь откроет двери Колледж Кенли
B концe июля 2019 года в The Division 2 вышло обновление под названием «Oкpестности Вaшингтонa». Среди прочего, в нем в игру была введена Экcпeдиция Колледж Кенли - это повторяемое событие, состоящее из тpеx частей. Отгремев, Колледж Кенли был закрыт. И вот теперь он возвращается.

Смотрите также