Pull to refresh
168
Karma
0
Rating
Александр @Caiiiycuk

User

Архитектура любительского стримингового сервиса DOS игр

Теперь появилась возможность скачивать бандлы с прогрессом.

Архитектура любительского стримингового сервиса DOS игр

1. Фактически доступ есть, можно скачать последнею весрию ФС по прямой ссылке. Пожалуй, это отличная идея и я сделаю соответствующею кнопку.
2. По сети игра планируется, но вначале нужно доделать поддержку мышки)

Архитектура любительского стримингового сервиса DOS игр

Для каждого игрока используется своя песочницаю Все изменения сохраняются в файловой системе при закрытии сессии.

Архитектура любительского стримингового сервиса DOS игр

Мне кажется у меня случай попроще. Сетевой игры здесь нет, эмулятор один и он не может пойти вразнос.
Нажатия могут пропадать в случае плохого соединения, но в этом случае скорее всего играть будет не возможно по очевидным причинам.

Архитектура любительского стримингового сервиса DOS игр

Резюмирую: если работает локальный режим — супер, его и следует использовать. Но, если по каким-то причинам нет, то можно попробовать стриминг.

Архитектура любительского стримингового сервиса DOS игр

Для VNC нет стандартизованного протокола стриминга через браузер. WebRTC это не только сам стриминг, но ещё куча всего (обход NAT, дата каналы, SSL). Турбо режим должен работать везде: Windows, *nix, Mac, Android, iPhone, т.е. без команды это сделать фактически невозможно.
WebRTC стандартизован, но тем не менее даже он глючит на некоторых устройствах, что же говорить о самописной системе.

Архитектура любительского стримингового сервиса DOS игр

js-dos это и есть мой проект. На dos.zone работает его последняя вресия v7, различия в производительности на слабом ПК объясняются тем, что v7 стартует эмуляцию в worker, v6.22 (js-dos.com) стартует эмуляцию в основном потоке браузера (что быстрее). v7 тоже поддерживает этот режим, но на мощных ПК я рекомендую использовать worker режим.

Архитектура любительского стримингового сервиса DOS игр

Спасибо за большой отзыв.
1. Вы правильно поняли, для стриминг игры нужно использовать Turbo.
2. Ваши размышления насчет применимость стриминг платформы тоже верны. Но здесь есть один очень тонкий момент. dosbox имеет различные типы эмуляции, простой и динамический. Так вот с помощью WebAssembly можно запустить только простой режим. Динамический режим выполняет динамическую компиляцию игры в машинные команды современных процессоров и работает на порядки быстрее простого режима. Как я уже сказал, современные спецификации WebAssembly не позволяют реализовать его. Поэтому все что Вы сказали верно для игр которым хватает мощностей простого режима. Да таких игр очень много, но есть и другие игры, которые даже на самом мощном PC будет тормозить. Для таких игр и нужен Turbo режим, а DOOM я просто использую для тестирования. Например, поробуйте запустить в js-dos C&C или Deluxe Ski Jump 2 иди Dagerfall и Вы поймете о чём я.

Архитектура любительского стримингового сервиса DOS игр

Не понял, про что вы. Синхронизация памяти между чем и чем?

Архитектура любительского стримингового сервиса DOS игр

На самом деле используется не dosbox, а мой форк js-dos. В версии 7 я переделал dosbox, теперь он выводит кадры не на экран, а ввиде массива RGBA. Тоже самое со звуком, — массив сэмплов.

DOS Cloud Gaming

Нужно просто на кнопку «Сохранить» сделать вызов ci.persist(). Когда он завершится у тебя будет Uint8Array, ты его отправляй на сервер это обычный ZIP, на сервере же ты его распакуешь и определишь измененные файлы.

У меня похожая схема реализована на DOS.Zone. Если ты зарегистрированный пользователь, тогда по кнопке «Сохранить» твои изменения падают на сервер (можешь проверить устраивает ли тебя такое решение).

Полная схема работы такая:
1. Есть эталонный чистый ZIP (файл jsdos)
2. Пользователь первый раз запускает FoxPro — создается копия файла в личной папке пользователя и отправляется ссылка на него
3. Пользователь жмет кнопку «Сохранить» — вызывается ci.persist() и новый файл отправляется на сервер. На сервере он просто перезаписывает прошлую версию
4. Пользователь заходит ещё раз и получает последнею сохраненную версию

Да это не много не очевидно, надо пользователю объяснить что каждый раз нужно нажимать на кнопку «Сохранить», зато просто и работает как часы.

DOS Cloud Gaming

Если ты хочешь сохранить возможность для клиента работать через браузер, то вариант только один. На клиенте нужно написать ФС которая работает через веб-сокеты и полностью синхронизирует свое состояние при каждой операции с сервером. Т.е. фактическ ФС будет на сервере, а клиент будет посылать операции чтения и записи. Это можно сделать, но не думаю что это будет просто, если ты не знаком с emscripten. На всякий случай вот доки. Я бы подумал надо каким-то более простым решением, вроде синхронизации по кнопке или типа-того.

DOS Cloud Gaming

Сохранение отдельных файлов будет сделано в будущем. Увидеть сетевые диски или диски компьютера не получится в принципе, по тому что браузер не позволяет этого делать. Для того что бы это сделать, нужно либо использовать не браузер а electoron какой-нибудь, либо писать сервер которые пробрасывает доступ к ФС компа в браузер.

DOS Cloud Gaming

На самом деле поддержка сохранения и загрузки реализована (документация). В процессе работы эмулятора все изменения сохраняются в виртуальной файловой системе. Используя функцию сохранения вы получаете обновленный бандл со всеми вашими изменениями, вы можете сохранить его на сервере и загрузить вместо оригинального при следующем запуске. Именно так работает сохранение/загрузка на DOS.Zone. В теории можно загружать отдельные файлы из виртуальной ФС, но API пока таких функций не предоставляет.

DOS Cloud Gaming

talks.dos.zone/t/foxpro-2-6-dos-portable
Прекрасно работает даже в браузере.

DOS Cloud Gaming

Написал в личку.

DOS Cloud Gaming

Бесплатная. Я пока тестирую сервис, документацию на код и развертывание я опубликую после тесирования.

DOS Cloud Gaming

Если он работает в обычном dosbox, то значит будет работать и в браузере.

DOS Cloud Gaming

js-dos v7 пока не поддерживает интеграцию мышки. Это следующий пункт в моей дорожной карте. Обязательно сделаю.

Релиз CLion 2017.2: интеграция с Clang-Tidy, C++17 в мастере создания нового проекта, повышение производительности IDE

Все понятно, ждемс :) Моя структура проекта такая:

* ~/ui-framework/**/**.cpp
* ~/physics-framework/**/*.cpp
* ~/game-1/CMakeLists.txt
* ~/game-2/CMakeLists.txt
* ~/game-3/CMakeLists.txt

Всем кодом владею я. Т.е. «сторонние библиотеки» это тоже часть продукта. Скажем проект игры включает десятки исходных файлов, в то время как фреймворки — тысячи. И у меня пригорает от того что я постоянно вижу это сообщение. Я например, не понимаю почему файлы за директорией CMakeLists.txt считаются вне проекта, они явно указаны в CMakeLists.txt и должны принадлежать проекту как и файлы внутри директории с CMakeLists.txt. Мне кажется это какое-то политическое решение.

Список ошибок — структурированный отчёт о результатах компиляции, как в VS или Esclipse или QtCreator, кажется он везде есть. А вот в CLion нет, или я слепой :) Сейчас я наблюдаю только лог компиляции, который я должен разбирать сам. А каждая ошибка в логе компилятора излишне многословная. Кроме того, ошибки компилятора не помечаются на скроллбаре файла %)

Information

Rating
5,812-th
Location
Новокузнецк, Кемеровская обл., Россия
Date of birth
Registered
Activity