Обновить
8K+
51
Евгений Смирнов@jenissimo

Пользователь

50,1
Рейтинг
19
Подписчики
Отправить сообщение

Ого, спасибо! ❤️ Теперь у меня вообще нет морального права забросить проект :) В новой версии я активно готовлю интересные штуки:

  • нормальные onscreen контролы для мобилок

  • расширение рабочих тайтлов до 35+ включая такие как:

    • Morrowind

    • GTA 3

    • System Shock 2

    • American McGee’s Alice

    • Gothic

    • Blade of Darkness

Еще одна вещь, про которую я забыл упомянуть в статье - GOG. В каком-то смысле GOG`овский инсталлер - это готовый ром, так что для поддерживаемых тайтлов на своем маке можно просто закинуть инсталлер, эмулятор сделает свою магию с перепаковкой и игра запустится

Спасибо! У меня есть ощущение, что железо, архитектуры и ОС будут ещё много раз меняться, а браузер остаётся довольно стабильной точкой входа. И чем мощнее становятся WebAssembly, WebGPU и остальные web API, тем интереснее использовать его как универсальный слой совместимости.

Не до конца понял вопрос, префикса в нашем случае нет вообще. Мы не запускаем 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 весит полтора гигабайта, и вот тут выручает стриминг ресурсов по требованию.

Там по-сути эмуляторная модель, вся игра запакована типа в "ROM" который на самом деле ZIP архив без сжатия. Когда игра хочет загрузить файл он вызывает WinAPI функцию, которая пробрасывается в браузер, браузер читает нужный файл из архива и возвращает игре то, что должен вернуть. Это может делаться даже используя ranged запросы к удаленному серверу не скачивая его целиком на комп.

Почти, но не совсем! :D

Wine в этой матрёшке нет - и в этом весь фокус. Wine превращает Win32-вызовы в вызовы Linux, то есть внутри пришлось бы эмулировать ещё и Linux. Вместо этого я отношусь к браузеру как к ОС и транслирую напрямую: DirectX → WebGPU, звук → WebAudio, файлы → OPFS, а всякие ShowWindowEx просто реализованы в TS и возвращают гостю настоящие значения. Вот если бы я приделал браузерный слой к Boxedwine, это была бы прям мега-матрёшка

Для меня цель проекта - дать возможность делать небольшие хоббийные штуки на реальном старом железе (которое само по себе дает прилично ограничений).

Понятно, что при хоть сколько-нибудь сложной логике в Lua рано или поздно упрёшься в производительность и начнёшь оптимизировать. Но хочется, чтобы до этого был адекватный запас - чтобы можно было просто сесть и что-то сделать, не думая о каждом цикле с первого дня.

Сейчас как раз думаю, как продвинуть DOS-версию на более старые CPU. Главный фокус - вынести «горячие» участки из Lua в C и оптимизировать рендер и звук, чтобы сам движок стал легче и стабильней, а userspace на Lua — терпимей к неоптимальному коду.

Спасибо! Хотел ещё сделать плагин для RetroArch, чтобы игры для NIBBLE8 запускалась почти на любой портативке. Адаптер написал, но застрял на кросс-компиляции под ARM для Anbernic RG35XX+, так и забросил.

Спасибо за поправку - видимо, чуть перегрелся 😅 Обновил текст.

Надо попробовать, пока такого уровня у меня в других генераторах не получалось (тут результат после даунскейла + я лишний хвост у дирижабля почистил + есть немного артефактов после аплоада)

Промпт: pixel perfect 16:9 pixel art фон для point and click quest (целимся в размер типа 320x200) Сцена: Санкт-Петербург, площадь у Исаакиевского собора, 1890 год, викторианский киберпанк, дирижабли в небе, осень
Промпт: pixel perfect 16:9 pixel art фон для point and click quest (целимся в размер типа 320x200) Сцена: Санкт-Петербург, площадь у Исаакиевского собора, 1890 год, викторианский киберпанк, дирижабли в небе, осень

Отлично! Добавил ссылочку на ваш репозиторий в README

Я подозреваю, что RetroDiffusion (сервис с закрытой дообученой версией Flux под капотом) примерно так и работает. Еще из интересного в ту же степь сервис PixelLab (он позволяет генерировать анимации и вращать еще), но там больше похоже на пост-обработку.

У меня была основная задача - получить возможность "чинить" арт от модели image-1 OpenAI которая встроена в ChatGPT. На мой вкус она работает казуальнее всего (подкинул пару рефов и вперед), но возможно я еще не познал всю современную ComfyUI магию :D

Размер сетки можно задать, если в свитке Advanced Settings снять галочку "Auto-detect pixel size" (UX однозначно можно улучшить).

Бонусом для сложных случаев когда картинка совсем далека от пиксельной (и нужно вручную задавать размер сетки) я добавил алгоритм Content-Adaptive Image Downscaling (https://johanneskopf.de/publications/downscaling/) в Advanced Settings в выпадающем списке Method в Downscaling Method. Он медленный в текущей реализации, но старается обычную картинку превратить в пиксель-арт.

Ну, для свежей PS Vita, к примеру, до сих пор всего 1.5 нормальных игры выпустили, а вот получить возможность запускать весь зоопарк PSP игр на той же Nvidia Shield (или любом другом android девайсе) бонусом к нативным играм и другим эмуляторам — очень приятно
А мы делали для ВУЗа веб-интерфейс для вывода информации с метеостанции (данные забираются с COM порта раз в 5 секунд и отправляются на сервак)
Красивый вариант:
meteo.herzen.spb.ru/ (фоновая картинка меняется для каждого месяца, дизайн тянется под любое разрешение)
Полный список показателей
meteo.herzen.spb.ru/iframe/weather.html (отдельные показатели рассчитываются на клиенте)

Модель метеостанции, если кому интересно:
www.lomo-meteo.ru/Devices/MK-15_LM.html
Мне нужна поддержку Adobe Flex и ActionScript, которой у них пока нету, а написать плагин я пока не собрался. Может быть здесь будет что-то из коробки, либо какой-нибудь дополнительный слой для импорта из других редакторов.
Давно мечтаю о полнофункциональной браузерной IDE с компиляцией на удаленном сервере. Будет круто, если они заложат хороший фундамент для этого.
Как написал @KermlinRussia:

> Судя по успеху lurkmore, внесение в реестр запрещенных сайтов станет самой востребованной и дорогой услугой на рынке интернет-продвижения.

www.liveinternet.ru/stat/lurkmore.ru/
А я обычно через «Тестовое приложение» (https://vk.com/app35569) в execute использую этот код:

var audio = API.audio.get();
return audio@.url;

А дальше поиском/заменой превращаю JSON в обычный список ссылок, который загоняю в какой-нибудь Download Master (либо через wget). Ну а проименовать песни на основе ID3 тегов в любимой форме (некоторые любят в квадратных скобках имя альбома указывать) можно например программой Mp3tag (http://www.mp3tag.de/en/)
А можно как-то получать информацию о том, в какой партии состоит депутат?
Эту вашу камасутру без поллитры не прочтешь. Вот перевод академии наук:
lib.rus.ec/b/146073/read#t2
1

Информация

В рейтинге
165-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность