Привет, всем!
Хочу представить вашему вниманию свой проект, над которым я работал последнее время. Это GitDOS — веб-приложение, запускающее DOSBox (через js-dos) прямо в браузере с необычной «фишкой»: ваш диск C: — это репозиторий на GitHub.
Сайт проекта: https://sementsul.github.io/GitDOS/
Репозиторий: https://github.com/sementsul/GitDOS
Зачем это вообще нужно?
Git-репозиторий позволяет:
Хранить свой игровой/программный диск в облаке и иметь к нему доступ из любого браузера.
Вести полную историю изменений — как «машину времени» для любого файла. Можно откатиться к любому сохранению или восстановить случайно удалённый файл.
Использовать ветки для экспериментов. Например, создать ветку mods, ставить моды, играть, а если что-то пошло не так — просто вернуться к основной ветке, и ничего не потеряно.
Технические особенности
Работа с большими файлами: Через веб-интерфейс GitHub нельзя залить файл больше 25 МБ. GitDOS использует Git Data API и позволяет загружать файлы до 100 МБ (реальные игры с большими ресурсами).
Автосохранение: Раз в несколько секунд проверяет изменения на диске и отправляет их в репозиторий (если есть токен с правами repo).
Утилита GITDOS в командной строке: Недавно реализовал полноценный «мост» между DOS и веб-интерфейсом. Теперь прямо из командной строки можно:
GITDOS SAVE — сохраниться.
GITDOS COMMIT "сообщение" — сделать коммит со своим сообщением.
GITDOS PULL — подтянуть изменения из репозитория (например, с другого компьютера).
GITDOS BRANCH — управлять ветками.
GITDOS SET REPO owner/name — переключиться на другой репозиторий.
GITDOS AUTOSAVE ON|OFF — включить/отключить автосохранение.
И многое другое: просмотр истории, восстановление файлов, управление профилями.
Поле ввода команд: Между экраном DOS и логом есть поле. Можно вставить в него длинный путь или команду, и GitDOS «напечатает» её в DOS виртуальными клавишами. Это удобно, так как напрямую в терминал DOSBox вставить текст нельзя.
Выборочное монтирование: Для больших дисков можно исключить загрузку определённых папок — это ускоряет запуск.
.gitdos.json: Если в корне диска лежит этот файл, можно задать name (имя диска), run (что запускать после загрузки) и cycles (скорость процессора). Диск загружается сразу в программу без лишних действий.
PWA: Можно установить как приложение на телефон или компьютер (кэшируется для офлайн-доступа к интерфейсу, но для синхронизации с GitHub нужна сеть).
Мультидиск: Поддерживаются дополнительные репозитории как папки C:\DISKS\D и т.д. Каждый синхронизируется со своим репо.
Нюансы, о которых стоит знать
GitHub API имеет лимит ~5000 запросов в час с токеном. Проект старается экономить: публичные файлы читаются через raw.githubusercontent.com (лимит не тратится), а листинги кэшируются. Индикатор остатка запросов висит в шапке.
Для записи в репозиторий (и для приватных репо) нужен GitHub-токен с правом repo. Токен хранится только в вашем браузере.
Приватные репозитории читаются через API (тратит лимит), публичные — через raw (лимит не тратит).
Проект использует локальный js-dos v8 (MIT) и не тянет сторонние CDN, кроме как к API GitHub и счётчикам аналитики (Яндекс.Метрика и Google Analytics, их можно отключить в браузере).
Весь интерфейс есть на русском и английском, переключается в шапке.
Кому может быть полезно
Игрокам — удобно играть в классику (Doom, Duke3D, Quake, RPG, квесты Sierra) без возни с настройкой DOSBox, с облачными сохранениями.
Архивистам и коллекционерам — можно хранить целые библиотеки игр и ПО с полной историей.
Разработчикам — экспериментировать с легаси-кодом, показывать прототипы, изучать историю программирования.
Образовательным проектам — студенты могут запускать DOS прямо в браузере на любом устройстве, без установки софта.
