Содержание статьи
Я поговорил с его основателем Александром Гурьяновым (@caiiiycuk) и главным евангелистом проекта Никитой Аксеновым (он же Carter54), но команда проекта намного больше.
Все началось с любви к Transport Tycoon Deluxe, а точнее, к его свободной реализации OpenTTD. Александр в качестве эксперимента захотел запустить игру в браузере.

Код был написан на C++ и идеально подходил для портирования. Но как перенести компьютерную игру в браузер?
В 2010 году на сцену вышел компилятор Emscripten. Он задумывался как замена GCC. В идеальном случае ты просто меняешь команду gcc на emcc — и проект собирается под веб. С тех пор технология прошла три этапа: первые версии генерировали обычный JavaScript — это работало, но крайне медленно. Затем появился asm.js — особая запись JavaScript, которую браузеры могли оптимизировать. Стало терпимо. А сегодня WebAssembly дает практически нативную производительность.
info
WebAssembly (Wasm) — это низкоуровневый бинарный формат кода и среда выполнения, предназначенные для запуска программ в браузере и вне его с почти нативной производительностью. Он разработан как безопасное переносимое дополнение к JavaScript.
Компилятор создал Алон Заки — соавтор самого стандарта WebAssembly, сотрудник Google. В 2011-м Заки продемонстрировал возможности компилятора, портировав Doom в браузер. Emscripten реализует спецификацию POSIX, поддерживает OpenGL, SDL, OpenAL, pthread. Есть подпроект Ports, где популярные библиотеки подключаются одной командой.
Таким образом, нужный инструмент был найден, и в 2012 году OpenTTD был портирован в веб. Следом полетели в браузер OpenDune и OpenXcom. Портирование игр еще не было профессией: параллельно Александр работал в «Яндексе», но постепенно становился профессионалом в портировании игр. И однажды его ответ на Stack Overflow заметили рекрутеры GamePix — компании, которая как раз занималась портированием игр в веб.
Так хобби превратилось в работу. Сейчас Александр руководит у них отделом портирования. За эти годы команда перенесла в браузер больше сотни игр и движков. Первым проектом на новом месте стала небезызвестная Cut the Rope.
Как появился js-dos
На портирование одного проекта может уйти до полугода. По словам Александра, ему «хотелось найти универсальный подход, позволяющий сразу запускать сотни старых игр». Решение было найдено — кросс‑платформенный эмулятор DOSBox! К 2014 году на Internet Archive появилась возможность запускать DOS-игры в браузере. За этим стоял Борис Дженеро (Boris Gjenero), портировавший DOSBox через уже известный нам Emscripten.

Но возникла новая проблема. Под каждую игру нужно было подбирать конфигурацию DOSBox, чтобы она правильно работала. Александр решил это автоматизировать. Взяв за основу em-dosbox, он допилил производительность, что ускорило эмуляцию на порядок, и написал скрипт для упаковки игр в готовые пакеты. Так появилась библиотека js-dos — инструмент, позволяющий запустить любую игру для DOS в браузере парой строк кода.
Устроена она послойно. В основе — эмуляторы, отдельный npm-пакет с двумя бэкендами: DOSBox и DOSBox-X. Оба могут работать в браузере — как в основном потоке, так и в Web Worker, а также в Node.js. DOSBox-X — расширенная версия, способная запускать операционные системы вплоть до Windows 98. Александр стал первым, кто портировал DOSBox-X в браузер.
Поверх эмуляторов — сам js-dos: плеер с UI, мультиплеером и облачными сохранениями. Для подготовки игр есть Game Studio — веб‑инструмент, в котором собирается архив с файлами игры и конфигурацией DOSBox. Архив совместим с обычным DOSBox и работает как в js-dos, так и за его пределами.
Отдельно стоит упомянуть Sockdrive — технологию загрузки образа диска по секторам. Вместо скачивания многогигабайтного образа Windows 95 целиком подгружаются только те фрагменты, которые нужны прямо сейчас.
Рождение DOS.Zone
Портал DOS.Zone появился в 2019 году — «как рекламная витрина, наглядно демонстрирующая возможности js-dos». Но витрина зажила своей жизнью. Люди стали приходить не ради библиотеки, а ради игр. DOS.Zone оброс сообществом и превратился в полноценный портал — с каталогом, облачными сохранениями и платной подпиской. Ключ подписки — пять символов, подозрительно напоминает коды уровней из старых игр.
Долгое время DOS.Zone был проектом одного человека. Александр Гурьянов писал код, готовил игры, чинил баги. А потом появился Никита Аксенов.

Никита пишет про браузерные игры больше восьми лет, выбирая самые необычные темы. Один из первых постов — о том, как поиграть в PlayStation 1 в браузере, — стал невероятно популярным. Дальше он писал про браузерный Half-Life через Xash3D, Doom 3, Serious Sam и порты других культовых игр.
Однажды Никита наткнулся на DOS.Zone. Увидел, что на сайте эмулируется Windows 95 прямо в браузере. «Это просто взорвало мне тогда голову», — вспоминает он. Нашел контакт Александра, написал. Слово за слово — спросил, можно ли запустить Age of Empires в браузере (она же работала на Windows 95). Попробовали. Получилось!
С этого момента началось сотрудничество. Картер стал осваивать Game Studio и добавлять игры в каталог. Процесс зависит от платформы: простую DOS-игру можно подготовить за пять минут, но Windows 3.1/95/98 — это дни возни с образами, драйверами и старыми версиями DirectX. Для «Князя: Легенды Лесной страны» пришлось разобрать ресурсы игры и править их в Hex-редакторе.
Когда Никита пришел в проект, на DOS.Zone было около тысячи игр. Сейчас — больше 3500, и примерно 70% каталога — его работа. Но Картер — не только каталогизатор. Он стал, по собственному выражению, «отделом пропаганды». Сначала «Пикабу», потом Telegram-канал @gamebase54: 15 тысяч подписчиков, ни копейки на рекламу, только живые люди.
Канал стал первоисточником новостей проекта. Помимо этого — связь с игровыми СМИ («Навигатор игрового мира», 3DNews, Gazeta.ru), поездки по конференциям и выставкам, бартерные договоренности с другими каналами. Как он сам говорит: «Саша — главный разработчик и основатель. А меня просто видят».
Поворотным моментом стал запуск Heroes of Might and Magic III в браузере 20 декабря 2024 года. Новость разлетелась: Lenta.ru, Gazeta.ru, федеральные СМИ. Для проекта, который существовал в нише энтузиастов, это был прорыв. С тех пор крупные релизы стабильно попадают в новости — GTA Vice City, например, за несколько часов после поста оказалась буквально во всех игровых каналах.
Как устроено портирование
На DOS.Zone используют два принципиально разных способа запуска игр.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
