22 килобайта против 150 гигабайт: каким образом разработчики прошлого умещали игровые вселенные на одну дискету

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com
| Мнение | Игры

Поставил на скачивание патч для очередной игры размером более 100 гигабайт. Больше 100 гигабайт исправлений для игры, которая уже занимает на диске место, сопоставимое с цифровым архивом небольшой страны. И тут мне вспомнилось то время, когда 3.5-дюймовую дискету, которую использую как подставку для чашки кофе, объемом всего в 1.44 мегабайта, у меня помещалась целая галактика с сотнями планет. Не демо-версия. Вся игра. Как такое вообще было возможно? Были ли разработчики прошлого гениями, или современные игры стали неоправданно «жирными»?

Игровая станция 80-х, где на обычных аудиокассетах (и на дискетах, кому повезло с дисководом) умещались целые вселенные. Эпоха, когда главным ресурсом была не мощность железа, а изобретательность разработчика.
Автор: MagentaGreen Источник: commons.wikimedia.org

Маленький размер — маленькие игры

Первое, что приходит на ум: старые игры были маленькими, потому что были примитивными и пустыми. Удобное, но не совсем верное объяснение. Давайте просто сравним цифры.

  • The Elder Scrolls II: Daggerfall (1996): размер игрового мира примерно 161 600 квадратных километров (сопоставимо с Англией и Уэльсом).
  • The Elder Scrolls V: Skyrim (2011): размер игрового мира примерно 37 квадратных километров.

Мир Daggerfall был в 4300 раз больше мира Skyrim, хотя, справедливости ради, в значительной степени пустом и однообразном, что, однако, не отменяет самого технологического масштаба. Но вся игра занимала на жестком диске в сотни раз меньше места. Подобный парадокс невозможно объяснить одной лишь «плохой графикой». Секрет кроется не в том, что хранилось на диске, а в том, чего там не было.

мира The Elder Scrolls II: Daggerfall. 161 600 квадратных километров — территория, сопоставимая с Англией и Уэльсом, созданная не армией дизайнеров, а математическим алгоритмом.
Автор: Bethesda Softworks Источник: ru.wikipedia.org

Процедурная генерация — вселенная из формулы

Главный трюк программирования того времени — процедурная генерация. Разработчики прошлого не хранили на дискете гигабайты карт, городов и подземелий. Они хранили математический алгоритм для их создания.

Как это работало? В основе лежал генератор псевдослучайных чисел и одно-единственное стартовое число — «зерно» (seed). Когда игра должна была создать, например, звездную систему, она брала это «зерно» и пропускала его через каскад математических операций. Остаток от деления одного числа определял количество планет, следующая операция — их тип, третья — расположение. Для создания более сложных объектов, вроде ландшафтов, часто использовались алгоритмы фрактального шума, например, шум Перлина. Этот алгоритм позволял генерировать естественно выглядящие неровности, береговые линии и горные хребты из простого набора математических уравнений.

Результат был предсказуем: с одним и тем же «зерном» вселенная всегда генерировалась одинаковой. Но на диске хранилась не сама вселенная, а лишь ее «ДНК». Эталоном такого подхода стала легендарная Elite (1984). Вся игра, включавшая восемь галактик по 256 планет в каждой, занимала 22 килобайта.

Хотите увидеть этот принцип в действии прямо сейчас? Зайдите в Minecraft, нажмите «Создать новый мир», затем «Дополнительные настройки мира». Видите поле «Ключ для генерации мира» (Seed for the World Generator)? Это и есть то самое «зерно». Одна-единственная фраза или набор цифр, из которого прямо сейчас на ваших глазах родится целая, уникальная вселенная. Если вы поделитесь этим ключом с другом, он сможет сгенерировать на своем компьютере абсолютно идентичный мир. Вот так это и работало.

Тот самый мир, рожденный из «зерна». Minecraft — главный современный носитель идеологии процедурной генерации, заложенной еще в 80-х.
Автор: Xbox México Источник: commons.wikimedia.org

Визуальная и аудиальная аскеза

Второй принцип — экстремальная экономия на всем, от графики до звука.

Графические трюки. Если какой-либо графический элемент можно было использовать повторно, его использовали. Хрестоматийный пример — Super Mario Bros. (1985), где спрайт облака и спрайт куста являются одним и тем же объектом с разной палитрой цветов. Точно так же работали и враги: многие были просто перекрашенными версиями друг друга. Эти хитрости работы с палитрой позволяли из горстки базовых элементов создавать иллюзию разнообразия.

Аудиальные трюки. Музыка и звук также создавались по принципу генерации, а не хранения. Вместо того чтобы хранить готовые, заранее записанные аудиодорожки, как это делается сейчас, использовалась трекерная музыка (форматы MOD, S3M, XM). Файл такой музыки был, по сути, цифровой партитурой: он содержал набор очень коротких, однократно записанных звуков-сэмплов (удар барабана, нота пианино) и подробные инструкции, когда, с какой высотой и громкостью их воспроизводить. Игровой компьютер в реальном времени синтезировал из этих «атомов» сложную мелодию. Один-единственный сэмпл пианино размером в пару килобайт мог использоваться для проигрывания всей фортепианной партии. Звуковые эффекты часто генерировались еще проще — путем манипуляции базовыми волновыми формами (синус, квадрат, пила), что вообще не требовало хранения сэмплов.

Конечно, Elite и Mario — лишь верхушка айсберга. Вот еще несколько легенд, творивших чудеса оптимизации в пределах пары мегабайт:

  • Frontier: Elite II (1993): вся галактика на двух дискетах.
  • Sid Meier's Civilization (1991): вся история человечества, от каменного века до полетов к звездам.
  • Dune II (1992): игра, породившая целый жанр RTS.
  • И многие другие: Starflight, Wasteland, Ultima IV…
Две дискеты. Так выглядел носитель для Frontier: Elite II — игры, где миллиарды звездных систем генерировались чистой математикой.
Автор: Morn Источник: ru.wikipedia.org

Почему мы «потеряли» эти методики?

Так почему же сегодня, имея в тысячи раз больше мощностей, создатели игр не используют эти подходы? Да потому, что современные игры строятся на готовых движках вроде Unreal Engine или Unity. Программисту больше не нужно быть гением ассемблера, чтобы заставить игру работать. Но за удобство мы платим «жирными» библиотеками и стандартными решениями.

В 80-е память стоила целое состояние, а время программиста было относительно дешевым. Сегодня все наоборот. Место на SSD почти ничего не стоит, а человеко-часы разработчиков являются главной статьей расходов. Дешевле и быстрее купить трехмерный объект (например, камень на 500 мегабайт) в онлайн-библиотеке, чем заставить программиста неделю писать для него процедурный генератор. К тому же игроки хотят уникальные, срежиссированные вручную миры с проработанными деталями. Процедурная генерация часто создает красивые, но однообразные и «бездушные» ландшафты.

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

Рабочее пространство современного игрового движка. Вместо генерации мира из формулы — прямое «режиссерское» управление каждой деталью сцены. Это и есть тот самый «полный творческий контроль», ради которого разработчики пожертвовали процедурной бесконечностью.
Автор: Off.pkg.dev Источник: commons.wikimedia.org

Наследие: как «философия дискеты» живет сегодня

Так что, старые трюки окончательно умерли? Вовсе нет. Они не умерли — они эволюционировали и нашли новые ниши. Прямой наследник этой философии — No Man's Sky. Вся ее вселенная с 18 квинтиллионами планет построена на тех же принципах процедурной генерации, что и Elite, только на современном технологическом уровне.

Духовные наследники — это вся инди-сцена. Разработчики-одиночки и маленькие команды, как и их предшественники из 80-х, работают в условиях жестких ограничений. Игры вроде Stardew Valley или The Binding of Isaac — триумф геймдизайна и изобретательности над гигабайтами текстур.

Наконец, самый яркий пример — Minecraft. Одна из самых популярных игр в истории, чьи бесконечные миры рождаются из того самого «зерна», о котором мы говорили. «Философия дискеты» не просто жива, она лежит в основе целых игровых жанров и продолжает вдохновлять новое поколение разработчиков.

Как видим, разработчики прошлого были не просто кодерами. Они были изобретателями, виртуозами кода и математиками, вынужденными создавать элегантные решения не благодаря, а вопреки. Возможно, именно в этом и кроется секрет «души» старых игр: их глубина рождалась не из безграничных возможностей, а из виртуозно преодоленных ограничений. Ведь когда в твоем распоряжении весь мир The Elder Scrolls II: Daggerfall, умещающийся на дискеты, или целая галактика в легендарной Elite, занимающая всего 22 килобайта, — это заставляет мыслить иначе.

А у вас была любимая игра, которая казалась бесконечной, хотя умещалась на одной-двух дискетах?

Изображение в превью:
Автор: MagentaGreen
Источник: ru.wikipedia.org
PCДругойДругая
Автор не входит в состав редакции iXBT.com (подробнее »)
Об авторе
Разносторонний человек.

10 комментариев

Kortique
Хорошая статья, спасибо.
M
Процедурная генерация? Ничего, что тогдашние компьютеры были слишком слабы для этого? Основные идеи тогдашней оптимизации сводились к грамотной «упаковке» информации. Строить мир из готовых блоков (например спрайтов), а карту хранить в виде набора идентификаторов. Сейчас миры могут быть более реалистичными и каждое место в них быть более уникальным. Хотя всякие мелкие детали действительно могут быть сгенерированны процедурно. Различного рода камни и трава например. Второй фактор — разрешение спрайтов/текстур. При разрешении 320х200 было достаточно спрайтов 8х8 или около того. Сейчас любая текстура — это 4096x4096. А она обычно нужна не одна, а штуки 3-4.
H
Толку от этих современных реалистичных миров, если игровой процесс неинтересный. В той же Elite не было красивой графики, а люди в нее годами залипали, торгуя, борясь с пиратами и таргонами, исследуя игровые миры. И хватало для этого обычного Спектрума с 48Kb памяти.
Korzh
Ну дык никто не мешает вам и сейчас попробовать в неё позалипать: Elite — The New Kind весит всего 4 МБ (архив и вовсе 900 КБ с копейками), причем это практически точный ремастер оригинала… можно даже такую же графику врубить
Только я сомневаюсь, что кого-то больше чем на 15 минут хватит
Это вот когда у тебя только спектрум и ты точно знаешь, что и через пять лет у тебя будет только спектрум, а программы для него лет пять уже как перестали писать, так и будешь честно залипать без отрыва от производства ;)
a
Симулятор спектрума переезжает во все компы — ностальгия, но и не только. В некоторые вещи с бессмертным геймплеем можно и позалипать. Играю же я в первую цивилизацию до сих пор чз эмулятор. В Элите я обычно лишь полностью дооснащаю корабль.
a
Есть версия на 16К. Я выучил ассемблер на z80, во многом из-за элиты. Когда попытался на бейсике реализовать движущееся по экрану солнце с заливкой) А эти ребята — гении.
Сама-то Элита живее всех живых. В пику статье, кстати, она полностью 'переобулась'. Вместо генерации карты и инфы о планетах на лету из очень маленькой песочницы, которую даже я умудрился реализовать в качестве курсовой работы на УПК, теперь ведь элита тянет все по сетке с сервера. Карта галактики стала недостижимо велика для обычного компа.
a
Почему второй фактор?) Явно первый. Ну невозможно код получить гигабайтных размеров, если специально не поставить себе такую задачу). Все время росла аудио/визуальная составляющая. Насчет слабости тогдашных компов — так-то так, но ты все равно распоряжался почти миллионом операций в секунду. Наштробить карту из прямоугольных частей можно было мгновенно. Та же элита каждый раз при обращений к инфо о планете на лету из набора цифр генерила внятное описание планеты, ее характеристики, так еще и имя генерило из слогов) Я на бейсике это сделал, что уж там говорить про ассемблер…
Maksey
Интересная статья. Спасибо.
В мобильных играх, которыми я увлекаюсь, вопрос свободного места пока что не стоит также остро.
Безусловно, удивляет, когда игра с отрытым миром и высокодетализированной графикой, типа Way of the Hunter Wild America (1ГБ), весит в три раза меньше коридорного анимешного слэшера, вроде Crunchyroll: Eternights (3ГБ).
Но найти 3ГБ памяти на современном телефоне — не такая большая проблема.
Однако недавно на сцену вышла незабвенная IO Interactive и выкатила для iOS Hitman World of Assassination размером 48 ГБ.
С ужасом вспомнились прекрасные времена ПК-гейминга, когда скачивал какой-нибудь хайповый триплэйный коридорный шутан на пару-тройку вечеров объемом 100ГБ и выше. Или как свежую Колду качал чисто для сюжетки на вечер, а там вес был — ёшкин-кошкин!
SedayaNoch
Помню игры продавались на дискетах, а через какое то время началось на 2х дискетах потом на 3х дискетах… а потом пришёл покупать какую то игру, а она на 6 дискетах. И тогда я сказал себе ОГО, это же пол пачки дискет.
S
Ещё одна забытая технология древних — анимация через смену палитры. Вместо перерисовки картинки достаточно поменять палитру, чтобы одни части изображения как бы поменялись местами с другими. Так делали очень красивую движущуюся воду. А в гонках так делали движение травы на обочинах.

Добавить комментарий

Сейчас на главной

Новости

Публикации

ASUSTOR обновила бюджетную линейку домашних NAS: представлены Drivestor Gen2 AS1202T и AS1204T

Компания ASUSTOR, подразделение тайваньской ASUS, представила второе поколение своих доступных сетевых хранилищ — модели AS1202T и AS1204T из серии Drivestor Gen2. Новинки нацелены на...

✦ ИИ  Почему легендарное излучение Хокинга работает не совсем так, как вы думаете?

Долгое время чёрные дыры воспринимались учёными и любителями популярной науки, как этакий абсолютный парадокс. Вся материя, попавшая в эту странную область пространства, по стандартным...

✦ ИИ  Великий аудиофильский обман: почему ваш мозг слышит разницу между кабелями за $50 и $5000, а осциллограф — нет

Устали от споров про «тёплый ламповый звук»? Наука давно дала ответ. Вот почему "золотые" кабели за тысячи долларов не работают, но вы всё равно слышите разницу. Спойлер: дело не в ушах, а в голове.

Полгода успешного использования смартфона Xiaomi 14 Ultra: обзор, тесты и впечатления

Полгода успешного использования или как я заменил свой Galaxy Ultra на более современную модель смартфона, представленную не так давно. Речь идет про Xiaomi 14 Ultra — флагманская модель...

Обзор паяльника FNIRSI HS-02B: Быстрый, мобильный, но не совсем честный

FNIRSI HS-02B — это попытка сделать портативный паяльник с питанием через USB-C и поддержкой Power Delivery до 100Вт Устройство заявлено как решение для тех, кому нужна мобильность без...

Просто и ярко: обзор налобного фонаря Wuben H1 на 1200 люмен

Его задача давать яркий свет, оставляя свободными руки. И да, у него это неплохо получается. Модель не новая, но производится лет 5, на нее есть спрос. Сегодня посмотрим на простой налобный фонарь...