Вас ждет много вкусностей:
- Универсальные бандлы (zip архивы), которые содержат конфигурацию dosbox. Теперь для развертывании игры на сайте достаточно одной строчки кода
- Открытый репозиторий бандлов
- Виртуальные кнопки и джойстики для игры на мобильных устройствах
- Бэкенд эмулятора полностью перемещен в Worker
- Независимый, заменяемый рендер. Например, можно рендерить игру через Three.js
- Поддержка нескольких бэкендов. Сейчас это только dosbox, но в планах поддержка dosbox-x и много чего ещё
- web-rtc бэкенд Janus для игры в облаке
Зачем вообще нужен облачный сервис для DOS игр?
Технологии шагнули далеко вперед, современных мощностей уже зачастую хватает чтобы играть практически во все DOS игры прямиком в браузере. Однако, ситуация на мобильных устройствах выглядит много хуже. Мощностей многих устройств все ещё не достаточно чтобы играть в популярные игры: DOOM, MK, Carmageddon. Некоторые игры (например: C&C, Diablo) не работают даже на PC. Это связано с тем что пока невозможно имплементировать рекомпилирующий эмулятор на WebAssembly.
Именно в таких ситуация и должен помогать облачный сервис. Например, стандартный тест DHRY2 тест запущенный на мобильном устройстве обычно дает результат около 20 очков. Запущенный в облачном сервисе — 240 очков (этого достаточно чтобы играть в любую DOS игру).
Тестирование
Сейчас сервис проходит активное тестирование, его можно попробовать в действии. Мне очень нужны тестовые данные из стран СНГ.
Помочь с тестированием очень просто. Все что нужно — зарегистрироваться, поиграть по ссылке в DOOM и описать свои ощущения. Для запуска игры в облачном сервисе нужно использовать кнопку “>> Turbo”.
Могу много интересного рассказать про разработку js-dos v7, не знаю что было бы интересно сообществу. Очень жду обратной связи в комментариях или Discord проекта.
Спасибо.
saintbyte
Сделай убирание курса мыши — современные браузерные API это позволяют
Caiiiycuk Автор
js-dos v7 пока не поддерживает интеграцию мышки. Это следующий пункт в моей дорожной карте. Обязательно сделаю.
andreosh
В моем варианте мышь поддерживается в VC.COM — это файловый менеджер. Из него запускаю игры. А после запуска Keyrus переключается на русские буквы. А про сохранение, думаю сделать так: нажал на кнопку сохранил образ на диске. Если образ на диске сохраняется, как zip-архив на стороне клиента, то можно извлекать нужные файлы из zip-файла и отправлять в запросе на сервер, там их принимает код-PHP и пишет в указанный каталог на диск, который для каждого клиента свой. А перед загрузкой типового Zip файла с DOS-прогами клиенту эти файлы данного клиента записываются в ZIP-файл. То есть на сервере есть эталонный zip-файл, а потом, если у клиента есть свои файлы, то создается копия zip-файла, записываем в него файлы клиента и потом указываем для загрузки данному клиенту.
andreosh
Так же попробывал FoxPro под DOS и 3D-игру Wolf. Все в браузере запускается и играет. Осталось пример с сохранением файлов сделать, но знаний по JS пока не хватает. Может кто поможет?
Caiiiycuk Автор
Нужно просто на кнопку «Сохранить» сделать вызов
ci.persist()
. Когда он завершится у тебя будет Uint8Array, ты его отправляй на сервер это обычный ZIP, на сервере же ты его распакуешь и определишь измененные файлы.У меня похожая схема реализована на DOS.Zone. Если ты зарегистрированный пользователь, тогда по кнопке «Сохранить» твои изменения падают на сервер (можешь проверить устраивает ли тебя такое решение).
Полная схема работы такая:
1. Есть эталонный чистый ZIP (файл jsdos)
2. Пользователь первый раз запускает FoxPro — создается копия файла в личной папке пользователя и отправляется ссылка на него
3. Пользователь жмет кнопку «Сохранить» — вызывается
ci.persist()
и новый файл отправляется на сервер. На сервере он просто перезаписывает прошлую версию4. Пользователь заходит ещё раз и получает последнею сохраненную версию
Да это не много не очевидно, надо пользователю объяснить что каждый раз нужно нажимать на кнопку «Сохранить», зато просто и работает как часы.