Pull to refresh
184
0
Александр @Caiiiycuk

User

Send message

О чем и указано в статье)))

Огромное спасибо сообществу Вангеров и Дмитрию (@kvark) - автору проекта vange-rs и wgpu, за саму возможность покататься на мехосах в 3D и помощь в исправлении ошибок WebGL.

Через js-dos можно это сделать, доступно API для ввода с клавиатуры и чтения с консоли DOS программы. Можно, обычный dosbox использовать, тоже.

Уже сейчас можно играть в героев 1/2. Причем герой 2 даже на мобильных устройствах. Герои 3 вероятно тоже будут работать, но нужно проверять. Скорее всего будут тормазить.

Сейчас разработка 3D мода идет полным ходом. Сейчас уже доступны тени для мехосов, и сами мехосы начинают переносить в 3D. В скором времени веб версия тоже обновится...

Ну если вы работаете в компании которая занимается выпуском игр для браузера этот бонус совсем не маленький. Ещё мог бы порекомендовать sokol gfx очень приятная штука правда на C.

WebGPU наше будущее, WebGL настоящее. wgpu прекрасен всем, особенно тем что поддерживает оба варианта. Кто знает через сколько лет WebGPU доползет до сафари, напомню что WebGL 2 стандарт появился в 2011 году, в сафари его включили по умолчанию пару месяцев назад. Так что так.

Будет иметь специфическое использование, потому что уровень поддержки на данный момент такой, что хочется закрыть глаза и убежать. Emscripten не про то что бы взять и написать проект для wasm, он про то что бы взять готовый проект и скомпилирвовать его с минимальными правками, в иделе без правок вообще. unknown такую проблему не решает, поэтому не вижу противоречия в том что бы они оба существовали и развивались, а вы?

В статье wgpu это больше практический пример, идея больше в том что emscripten тоже можно использовать для каких-то проектов.

Теперь появилась возможность скачивать бандлы с прогрессом.
1. Фактически доступ есть, можно скачать последнею весрию ФС по прямой ссылке. Пожалуй, это отличная идея и я сделаю соответствующею кнопку.
2. По сети игра планируется, но вначале нужно доделать поддержку мышки)
Для каждого игрока используется своя песочницаю Все изменения сохраняются в файловой системе при закрытии сессии.
Мне кажется у меня случай попроще. Сетевой игры здесь нет, эмулятор один и он не может пойти вразнос.
Нажатия могут пропадать в случае плохого соединения, но в этом случае скорее всего играть будет не возможно по очевидным причинам.
Резюмирую: если работает локальный режим — супер, его и следует использовать. Но, если по каким-то причинам нет, то можно попробовать стриминг.
Для VNC нет стандартизованного протокола стриминга через браузер. WebRTC это не только сам стриминг, но ещё куча всего (обход NAT, дата каналы, SSL). Турбо режим должен работать везде: Windows, *nix, Mac, Android, iPhone, т.е. без команды это сделать фактически невозможно.
WebRTC стандартизован, но тем не менее даже он глючит на некоторых устройствах, что же говорить о самописной системе.

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

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

Не понял, про что вы. Синхронизация памяти между чем и чем?
На самом деле используется не dosbox, а мой форк js-dos. В версии 7 я переделал dosbox, теперь он выводит кадры не на экран, а ввиде массива RGBA. Тоже самое со звуком, — массив сэмплов.
Нужно просто на кнопку «Сохранить» сделать вызов ci.persist(). Когда он завершится у тебя будет Uint8Array, ты его отправляй на сервер это обычный ZIP, на сервере же ты его распакуешь и определишь измененные файлы.

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

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

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

Information

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