Comments 4
вот это матрёшка.
win PE in WINE in VM in Browser in Windows
Почти, но не совсем! :D
Wine в этой матрёшке нет - и в этом весь фокус. Wine превращает Win32-вызовы в вызовы Linux, то есть внутри пришлось бы эмулировать ещё и Linux. Вместо этого я отношусь к браузеру как к ОС и транслирую напрямую: DirectX → WebGPU, звук → WebAudio, файлы → OPFS, а всякие ShowWindowEx просто реализованы в TS и возвращают гостю настоящие значения. Вот если бы я приделал браузерный слой к Boxedwine, это была бы прям мега-матрёшка
А если игра какие-то ресурсы тянет с файловой системы, как это работает?
Там по-сути эмуляторная модель, вся игра запакована типа в "ROM" который на самом деле ZIP архив без сжатия. Когда игра хочет загрузить файл он вызывает WinAPI функцию, которая пробрасывается в браузер, браузер читает нужный файл из архива и возвращает игре то, что должен вернуть. Это может делаться даже используя ranged запросы к удаленному серверу не скачивая его целиком на комп.
Представлен открытый проект BottleShip для запуска тяжёлых Windows-игр в браузере с высокоуровневой эмуляцией