Обновить

Плоть слаба: как я писал свой Wine для браузера

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели5.8K
Всего голосов 10: ↑10 и ↓0+18
Комментарии2

Комментарии 2

Подскажите, сколько префикс со всеми бинарями весил и грузился в браузере?

Не до конца понял вопрос, префикса в нашем случае нет вообще. Мы не запускаем Wine: kernel32/user32/gdi32/ddraw/d3d9 написаны на TypeScript, а в x86-эмуляторе крутится только код самой игры.

Если сравнивать с браузерным BoxedWine (он ближе всех по духу - эмулирует Linux-ядро, но поверх гоняет настоящий Wine), то у него рантайм ~1.6 MB, а дальше нужен собственно префикс: для Win32-демок это 9.3 MB минимального дерева Wine сразу плюс дотягивание из 47.7 MB полного архива по Range уже в рантайме.

В случае BottleShip мы говорим про ~1.6 MB по сети (~4 MB в распакованном виде): JS-слой + WASM v86. Скачивается один раз и кешируется, так что это почти мгновенно. Другое дело - сама игра, к примеру C&C Tiberian Sun весит полтора гигабайта, и вот тут выручает стриминг ресурсов по требованию.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации