Google Chrome после установки занимает около 280 МБ — это примерно 7 000 копий Super Mario Bros., которая в 1985 году умещалась в 40 КБ. Цифра выглядит абсурдно, но она честная: 32 КБ программного кода, 8 КБ графики, 32 уровня, десятки врагов, физика и весь саундтрек. Обычный PNG-скриншот той же игры сегодня весит больше, чем она сама.
Чтобы понять, как это стало возможным, нужно вспомнить, как разработчики NES-эпохи работали с данными. Весь визуал Super Mario Bros. строился из тайлов — блоков 8×8 пикселей. Облако, куст и холм — это один и тот же тайл, перекрашенный через палитру. Куст Марио — буквально дефолтное облако, опущенное на землю и покрашенное в зелёный. Уровни не хранились как растровые карты: вместо матрицы тайлов движок получал инструкции — «здесь начинается земля», «поставь трубу высотой 3», «включи паттерн неба». По сути, процедурная инструкция вместо данных. Музыка работала по той же логике: звуковой чип APU получал ноты и команды для синтезатора, весь саундтрек занимал пару килобайт. Один несжатый сэмпл удара барабана в современной игре весит больше.
| Игра / продукт | Год | Размер |
|---|---|---|
| Super Mario Bros. | 1985 | 40 КБ |
| .kkrieger | 2004 | 96 КБ |
| Max Payne 2 | 2003 | ~1,5 ГБ |
| Google Chrome (после установки) | 2020-е | ~280 МБ |
| Call of Duty: Black Ops 6 (базовая) | 2024 | 102 ГБ |
| Call of Duty со всеми компонентами и кешем | 2024 | 300+ ГБ |
| ARK: Survival Evolved (все DLC) | 2020-е | 435 ГБ |
В 2004 году немецкая демогруппа .theprodukkt довела этот принцип до предела: их шутер от первого лица .kkrieger занимал 96 КБ — меньше, чем аватарка в Telegram. Внутри не было ни одного готового ассета. Текстуры, модели, звуки и музыка генерировались процедурно при запуске по математическим формулам: «возьми шум Перлина, наложи размытие, добавь дисторсию». Если бы .kkrieger хранил ассеты традиционным способом, он весил бы 200–300 МБ. Скриншот исполняемого файла тяжелее самого файла.
ARK: Survival Evolved со всеми DLC занимает 435 ГБ, причём каждое DLC дублирует одни и те же ассеты, включая семь копий модели птицы Додо.

Джон Кармак в id Software шёл другим путём, но с той же целью. Doom (1993) использовал BSP-деревья, чтобы быстро отбрасывать невидимые полигоны. Quake (1996) ввёл PVS — заранее рассчитанный набор того, что игрок может видеть из каждой точки карты: если стены закрывают комнату, она вообще не рисуется. Техника Level of Detail (LOD) решала проблему иначе: далёкие объекты рендерились упрощёнными моделями или вовсе заменялись плоским изображением — импостером. Дерево вдали — не 50 000 полигонов с текстурами листьев, а прямоугольник с фотографией дерева. Этот подход используется в каждой современной AAA-игре до сих пор.
Потом жёсткие диски подешевели, интернет ускорился, а дедлайны ужесточились. Оптимизацию перестали считать обязательной. Мусорный бак в переулке, куда игрок никогда не заглянет, получил текстуру 4096×4096 пикселей с восемью PBR-каналами весом 64 МБ. Вместо одной аудиодорожки с декодингом на лету — предекодированные версии для каждой платформы, каждого формата, каждой частоты дискретизации. Unreal Engine 4/5 при первом запуске компилирует шейдеры локально, создавая гигабайты кеша. ARK: Survival Evolved со всеми DLC занимает 435 ГБ — около 11 миллионов копий Марио. Разработчики не сделали общий репозиторий ассетов, поэтому каждое DLC тащит дубликаты: на диске буквально семь одинаковых моделей птицы Додо. Call of Duty со всеми компонентами и кешем переваливает за 300 ГБ. Max Payne 2 в 2003 году весила 1,5 ГБ. Средний размер AAA-игры вырос в 100–150 раз за 20 лет.
Автор материала проверил разницу между эпохами на практике, собрав ассет-пайплайн для классической змейки в трёх вариантах. Версия FAT — как писали бы в 2020-х, не думая о размере: 16 отдельных файлов 64×64 пикселя в формате 32-bit RGBA. Версия OLDSCHOOL воспроизводила логику 90-х с максимальной экономией каждого байта. Версия AI использовала современные нейросетевые подходы к сжатию. Разница между первой и наиболее компактной версией составила 1 120 раз — и это не та версия, в которой ИИ.
Отрасль движется по кругу. Процедурная генерация, которую .theprodukkt использовала в 2004 году из необходимости, сегодня возвращается как осознанный выбор — теперь с нейросетями. Neural Texture Compression позволяет хранить текстуры в виде весов небольшой сети и разворачивать их на GPU в реальном времени. Принцип тот же, что у тайлов NES: хранить инструкцию, а не результат. Только инструкция теперь — это обученная модель.



