Запуск Factorio с более чем 1000 дискет — это мазохистски ручной процесс, который, безусловно, устанавливает новый рекорд по времени загрузки игры.

С тем, как искусственный интеллект становится все более способным выполнять задачи за нас, потенциально ослабляя наши собственные способности, есть ли какое-то странное удовлетворение в намеренном выборе более сложного пути – усложнении и затягивании задач сверх необходимого?

YouTuber DocJade решил, что играть в игру Factorio обычным способом – установив её на жесткий диск – слишком просто. Вместо этого он решил использовать более тысячи дискет на 3,5 дюйма для запуска симулятора строительства и управления, в результате чего получилась массивная, полностью покрытая ковром 50-этажная установка, по словам DocJade.

Это сразу же создаёт множество проблем. Например, эти дискеты вмещали всего около 1.5 МБ данных, и они больше не производятся.

И это ещё до того, как учитывать техническую сторону вопроса. Factorio не занимает много места по современным меркам – около 1–1,5 ГБ после установки. Однако, это был бы огромный объём данных, если бы вы использовали дискеты!

Стоимость дискет была значительной проблемой. Первоначальные оценки устанавливали цену примерно в 2500 долларов за достаточное количество дисков, включая запасные. К счастью, DocJade нашёл источник на floppydisk.com для 1250 дисков, хотя точная цена не была раскрыта. Оказалось, что это старые пробные диски AOL, которые, если бы ещё были активны, обеспечили бы в сумме 250 лет бесплатного dial-up доступа. К сожалению, AOL прекратил предоставление этой услуги после 34 лет.

DocJade предложил простой метод: создание множества небольших файлов, таких как те, которые поместились бы на дискету, и открытие их по отдельности в виртуальной машине. Однако он отмечает, что это не включало бы использование реальных физических дискет, и он считает это нарушением правил.

Большая RAID-конфигурация — ещё одна возможность, но она была бы дорогой — требуя выделенный диск для каждого диска и обходясь более чем в 10 000 долларов. Кроме того, как он отметил, Windows может быть ненадежной при подключении большого количества USB-устройств.

Как фанат, мне было действительно интересно, как эта игра работала с оригинальными дисками, особенно учитывая, что можно было загрузить только один за раз. Оказывается, разработчик сделал что-то невероятно умное – он создал свою собственную файловую систему! Она называется Fluster, и он действительно запрограммировал её на RUST. Довольно удивительно, не так ли?

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

Файловая система Fluster организует каждый диск в блоки по 512 байт, при этом каждый диск содержит 2880 таких блоков. Хотя из-за структуры своей файловой системы она может поддерживать около 65 000 дисков, этого все еще достаточно для хранения примерно 90 ГБ – вполне достаточно для игры Factorio.

Каждый блок данных включает в себя заключительный четырехбайтовый раздел, предназначенный для контрольной суммы CRC, который помогает надежно обнаруживать любые ошибки диска. Кроме того, два 16-битных числа функционируют как указатели для определения местоположения каждого блока – одно указывает на конкретный диск, а другое указывает на номер блока на этом диске. Это простая система!

Окей, после этого становится супер-технически – что-то про ‘inodes’ и то, как система отслеживает файлы. Честно говоря, это было выше моего понимания! Затем речь пошла о том, как файлы разбиваются на маленькие кусочки и хранятся повсюду, используя ‘directory blocks’ и ‘file extent blocks’. По сути, файлы игры разбиваются, чтобы поместиться везде, где есть место, но детали? Да, этот раздел я пропустил.

DocJade изначально разрабатывал Fluster на Windows, но столкнулся с трудностями при попытке создать его как FUSE-файловую систему. Это привело его к переходу на Linux – конкретно, подсистему Windows для Linux. Однако это породило новые проблемы, такие как обеспечение правильной работы USB-устройств.

Ранние версии Fluster выглядели хорошо для обработки небольших файлов. Однако, возникли проблемы при работе с большими объемами данных. Тестирование показало, что создание 1 000 небольших файлов случайного размера могло вызвать почти полмиллиона дисковых операций, причем каждая операция была конкретно направлена на определенный диск. Это оказалось неэффективным.

После экспериментов с различными методами кэширования, DocJade значительно сократил количество дисковых операций, необходимых для загрузки игры, до всего лишь 1500. Затем он создал 2000 уникальных наклеек для дискет и кропотливо стёр каждую из 1250 дискет вручную – процесс, который проваливался примерно в 10% случаев. Даже после всего этого, загрузка игры с дискет всё ещё занимает более недели непрерывной работы.

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

Вдобавок ко всему, DocJade всего 21 год. Забавно, учитывая, насколько легкомысленно все это, но это может заставить вас задуматься о собственных жизненных выборах.

Просто для ясности, файловая система Fluster теперь полностью с открытым исходным кодом, и вы можете найти её на странице GitHub DocJade. Это означает, что вы можете использовать её напрямую, не создавая собственную файловую систему с нуля – что, честно говоря, может сделать всё немного слишком просто!

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

2026-01-14 19:37