js-dos api

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

The best API for running dos programs in browser

License

caiiiycuk/js-dos

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

js-dos is a javascript library that allows you to run DOS programs in browser. It was designed from the ground up to be easily installed and used to get your DOS program up and running in browser quickly.

Quick start with create-dosbox

Create js-dos web page with no build configuration.

npx create-dosbox my-app cd my-app npm install npm start --- Open localhost:8080 in browser

You will be prompted to select game that you want bootstrap.

If you’ve previously installed create-dosbox globally via npm install -g create-dosbox , we recommend you uninstall the package using npm uninstall -g create-dosbox or yarn global remove create-dosbox to ensure that npx always uses the latest version.

It will create a directory called my-app inside the current folder.
Inside that directory, it will generate the initial project structure:

my-app ├── package.json └── _site ├── js-dos ├── bundle.jsdos └── index.html 

No configuration or complicated folder structures, only the files you need to build your app.

  • js-dos — contains last release version of js-dos that you can download from Releases page
  • bundle.jsdos — is a bundle with game to start read more
  • index.html — is a web page template

So, you can host _site on static web server no other dependincies is needed.

Once the installation is done, you can open your project folder:

Inside the newly created project, you can run some built-in commands:

Open http://localhost:8080 to view it in the browser.

Ask a technical question in Q&A.

To build whole project do:

yarn NODE_ENV=production yarn run gulp 

Also, you can build js and css separately:

yarn run gulp js yarn run gulp css 

To run built-in example do:

hs . firefox examples/digger/index.html 

Источник

Запускаем DOS игру в браузере

В 2022 году мало кого можно удивить DOS игрой в браузере. Благодаря dosbox они доступны на многих платформах. А поддержка браузера появилась с развитием компилятора emscripten. js-dos один из самых заметных проектов портирования dosbox в браузер. Я начал работу над ним в 2014 году. Проект прошел долгую эволюцию, было выпущено 3 разных версии с разной архитектурой и API (v2/v3 — 2015/2017, 6.22 — 2018/2020, v7 — 2021+).

Благодаря мощнейшему развитию технологий производительность эмулятора неуклонно росла, самые первые версии были на чистом JavaScript, затем был asm.js и наконец WebAssembly. Последняя версия js-dos уже имеет достаточную производительность для комфортной игры в такие игры как Duke, Doom, C&C, Red Alert, WarCraft и многие другие.

Преимущества

На мой взгляд js-dos лучшее API для запуска DOS игр в браузере. В отличии от других реализаций:

  • сохраняет прогресс между сессиями (запусками браузера);
  • работает в worker, а значит не блокирует UI браузера;
  • работает в node.js;
  • есть headless режим, т.е. без вывода на экран (идеальное решение для VR);
  • поддерживает сетевой протокол IPX;
  • нацелен на мобильные устройства;
  • имеет огромную библиотек готовых игр.

Многие по достоинству оценили это решение, список интеграций перевалил уже за 50 сайтов.

Однако, в российском сегменте, js-dos по прежнему не переменятся на известных порталах.

Надеюсь, хороший обзор поможет решить эту проблему. Эта статья призвана объяснить как запустить DOS игру используя js-dos. А способов на самом деле много.

Подготовка игрового архива

js-dos оперирует понятием ‘пакет‘ (bundle). Пакет это zip архив, который содержит все необходимое для запуска игры. Сообщество js-dos развивает репозиторий DOS игр и предоставляет в открытый доступ более 1900+ пакетов DOS игр. Многие из них имеют поддержку мобильных устройств.

Проще всего подготовить пакет с игрой для js-dos — использовать «Творческую студию». Это редактор который не только сформирует пакет, но и в наглядном режиме позволяет проектировать мобильные элементы управления.

Запуск в браузере

Рассмотрим способы запуска DOS игры начиная с самого простого:

iframe интеграция

js-dos это не только API, но и экосистема, она включает плеер для ингерации через iframe. Что бы добавить игру на сайт через iframe, достаточно использовать этот код:

Вместо вставьте ссылку до вашего пакета. Ссылка должна быть url encoded.

Где взять пакет? На самом деле нет ничего проще, откройте сайт сообщества DOS Zone и воспользуйте кнопкой () для генерации кода для вставки на сайт.

ВАЖНО! Что бы работал ввод с клавиатуры iframe должен получить фокус (например, через клик) или програмно:

Интеграция через API (JavaScript)

Для запуска пакета js-dos достаточно одной строчки кода:

Dos(document.getElementById("jsdos")).run("some.jsdos");

Функция Dos создает абстракцию js-dos плеера. Первый аргумент — div элемент, который выступает контейнером для интерфейса плеера. Для запуска конкретного пакета используется метод run, в который следует передать ссылку на пакет.

Конструктор DOS определен в скрипте js-dos.js, стили плеера в js-dos.css, а эмулятор в WebAssembly файлах. js-dos.js и js-dos.css должны быть добавлены в код веб страницы до использования js-dos. Что бы избежать ошибок лучше всего использовать утилиту create-dosbox для формирования шаблонного проекта.

Для использования этой утилиты, нужно установить node.js/npm. А затем выполнить:

npx create-dosbox my-app cd my-app npm install npm start

В случае успеха по адресу localhost:8080 будет доступна выбранная DOS игра.

npx create-dosbox my-app создаст директорию my-app, структура этой директории:

my-app ├── package.json └── _site ├── js-dos ├── bundle.jsdos └── index.html
  • js-dos — содержит файлы последней версии js-dos (так же доступны на странице releases проекта);
  • bundle.jsdos — пакет c игрой;
  • index.html — шаблон страницы.

Таким образом достаточно заменить bundle.jsdos другим бандлом что бы изменить запускаемую игру.

Headless режим

Headless режим позволяет запускать эмуляцию в «фоне» без вывода на экран. В этом режиме вывод dosbox доступен как RGB буфер. Такую опцию можно использовать для создания VR интеграций, или например, можно встроить DOS игру внутрь другой игры.

Более подробно использование этого режима описано в документации.

Node.js

js-dos не имеет обязательных зависимостей от браузера. Вы можете запускать DOS игры в node.js программах. Например, эту возможность использовали для запуска DOOM на LISK.

Lisk — платформа для создания децентрализованных приложений, основанная на технологии блокчейн и использующая токен LSK.

DOOM на LISK даже получил приз зрительских симпатий на конкурсе проектов, а так же приз 1000$.

Более простой пример использования js-dos в node.js описан в документации.

Сетевые игры

Некоторые игры для DOS предлагают многопользовательские режимы на основе протокола ipx, модема или прямого подключения. Использование браузера не позволяет напрямую подключить два клиента. НО, используя js-dos, вы можете эмулировать прямое подключение. Это абсолютно уникальная возможность js-dos среди браузерных эмуляторов DOS. Используя её можете создать портал для сетевых игр в DOOM, Duke Nukem 3D, WarCraft и других. Эта функция полностью бесплатна.

Чтобы активировать поддержку IPX в js-dos, вам необходимо установить для параметра withNetworkingApi значение true:

С точки зрения интеграции на веб страницу этого достаточно.

Однако, для подключения двух клиентов js-dos с помощью ipx пользователь должен настроить сервер IPX и предоставить токен сервера другим игрокам.

Мы подготовили обучающее видео для игроков, что бы им было проще ориентироваться:

Полезные ссылки

Источник

JS-DOS API: запускаем DOS в браузере

Уже более 5 лет существует проект emscripten. За время существования проекта была проделана огромная работа. Удивить искушенного читателя стало гораздо сложнее. Мы уже видели DOOM, Dune 2, TTD, С&C и много чего ещё в браузере. Однако, запустить DOS программу в браузере по прежнему сложно: нужно не плохо разбираться в C/C++ и emscripten. Эксперименты с Dosbox вылились в проект em-dosbox, большинство DOS программ стали доступны для браузера. Что бы поставить точку, осталось лишь создать открытое API для запуска DOS программ в браузере.

Свято место пусто не бывает. Концепция проста, для запуска DOS программы понадобится:

  • ZIP архив с программой (исполняемый файл + необходимые ресурсы)
  • Минимальное знание JavaScript
  • Сервер отдающий статический html

Alley Cat

Замечательная игра 1983 года о которой я вспоминаю с большой теплотой. Столько замечательных идей реализовано в этой игре, возможно это первая игра с мини играми. Попробуйте вновь окунуться в мир детства. Итак, пробуем запустить.

В первую очередь нужно задать размер экрана dosbox, в стилях страницы задаем размеры классу dosbox-container. Это служебный класс для стилизации экрана dosbox.

Создадим DOM элемент в котором после инициализации будет размещён экран dosbox. Можно использовать любой DOM элемент на который можно сослаться через атрибут id.

В процессе инициализации js-dos создаст дочерние DOM элементы для отображения процесса загрузки игры и элемент canvas для отображения экрана dosbox.

Примечание: не рекомендую стилизовать экран dosbox тенями или полупрозрачными градиентами из за значительного проседание FPS в любом браузере.

Осталось лишь подключить и настроить движок js-dos.

01.  02.  

Первой строкой подключаем движок js-dos, скрипт можно скачать и использовать локально. Далее приведен код создания экземпляра dosbox (строка 03).

  • id — уникальный идентификатор DOM элемента в котором нужно создать экземпляр dosbox
  • onload — функция обратного вызова которая будет вызвана после успешного запуска dosbox
  • onrun — функция обратного вызова которая будет вызвана после успешного запуска программы внутри dosbox
06. dosbox.run("http://js-dos.com/cdn/alley_cat.zip", "./CAT.EXE"); 
  • Первый аргумент — url до zip архива с игрой. Этот архив будет закачан и распакован в виртуальную файловую систему dosbox
  • Второй аргумент — исполняемый файл программы для запуска. Путь указывается относительно корня файловой системы архива
      .dosbox-container < width: 640px; height: 400px; >.dosbox-container > .dosbox-overlay < background: url(http://js-dos.com/cdn/alley_cat.png); >.dosbox-start  

Теперь вы можете запустить Alley Cat или что угодно ещё в браузере.

P.S.: Исходный код можно запустить по протоколу file:// в браузере

Источник

Читайте также:  Sql and html tutorial
Оцените статью