Безумный геймер запустил Factorio с тысячи дискет и потратил на загрузку неделю

В эпоху, когда ИИ угрожает делать всё за человека, находятся энтузиасты, намеренно усложняющие простейшие задачи до абсурда. Ютубер DocJade решил, что устанавливать и запускать Factorio с обычного жёсткого диска слишком просто. Вместо этого он использовал 3.5-дюймовые дискеты – более тысячи штук.

Задумка быстро столкнулась с бесчисленными проблемами. Двухсторонняя дискета вмещает около 1.5 МБ данных, при этом их больше не производят. Factorio занимает от 1 до 1.5 ГБ после установки – мизер по современным меркам, но колоссальный объём для дискет. Стоимость старых дискет составляет около $23 за десять штук, что означало бы $2,500 с учётом запасных. В итоге DocJade заказал 1,250 дискет на floppydisk.com за нераскрытую сумму. Дискеты оказались старыми AOL trial-версиями для dial-up интернета, что давало 250 лет бесплатного доступа к AOL – жаль только, что сервис недавно закрыли после 34 лет работы.

https://www.youtube.com/watch?v=cTPBGZcTRqo

DocJade отметил, что простым решением было бы создание виртуальных файлов размером с дискету в виртуальной машине, но это исключало бы использование физических дискет – читерство. Другой вариант – огромный RAID-массив с отдельным приводом для каждой дискеты, но это обошлось бы в $10,000, плюс Windows плохо справляется с большим количеством USB-устройств.

Так как в привод можно вставить только одну дискету, пришлось изобретать техническое решение. DocJade написал собственную файловую систему Fluster на языке Rust. Для большинства игр такой подход стал бы кошмаром из-за потоковой загрузки текстур, требующей постоянного извлечения дискет. Многие современные игры просто вылетели бы. Однако Factorio загружает почти весь контент перед главным меню, что теоретически делает проект возможным.

Fluster делит каждую дискету на блоки по 512 байт – 2,880 блоков на дискету. Архитектура системы ограничивает её 65,000 дискетами, что даёт около 90 ГБ пространства – более чем достаточно. Последние четыре байта каждого блока отведены под контрольную сумму CRC для обнаружения повреждений, а пара 16-битных чисел работает как указатели дисков, отслеживая блоки.

Изначально DocJade использовал Windows, но для создания файловой системы FUSE пришлось переключиться на Linux через подсистему Windows для Linux, что вызвало собственные проблемы с USB-проходом. Ранние версии Fluster неплохо справлялись с небольшими файлами, но при масштабировании возникли трудности. Тесты показали, что запись 1,000 файлов случайного размера потребует почти полмиллиона физических смен дискет с индивидуальным запросом номера каждой.

После множества экспериментов с кешированием DocJade удалось сократить количество смен до 1,500 для загрузки игры. Затем он создал 2,000 кастомных наклеек для дискет и вручную очистил все 1,250 штук с 10% отказов. Сама загрузка игры с дискет заняла больше недели работы "от рассвета до заката".

Игра всё ещё не полностью функциональна из-за проблем вроде отсутствия поддержки заблокированных файлов в Fluster. Однако сохранённые игры можно запустить, и видео демонстрирует достаточно стабильную работу – DocJade даже "прошёл" Factorio за чуть меньше девяти часов игрового времени.

Тэги:

Об авторе

Эксперт по Fallout
Главный редактор
Более 16 лет в индустрии освещения видеоигр, кино, сериалов, науки и техники. Особенно разбираюсь в серии Fallout, ценитель The Elder Scrolls. Поклонник Arcanum и Fallout Tactics. Больше всего играю в Civilization, Old World и градостроители. Изучаю ИИ и загадки космоса.