Показать HN: RomM – ROM-менеджер и проигрыватель с открытым исходным кодом, размещаемый самостоятельно=news.ycombinator.com=

Показать HN: RomM — ROM-менеджер и проигрыватель с открытым исходным кодом, размещаемый на собственном сервере ( github.com/rommapp ). RomM — это размещаемое на собственном сервере приложение, позволяющее управлять файлами ретро-игр (ROM) и воспроизводить их в браузере.

Подумайте об этом как о Plex или Jellyfin для вашей библиотеки ROM: он автоматически извлекает метаданные, иллюстрации и информацию об игре из онлайн-источников метаданных, чтобы превратить ваши папки в просматриваемую коллекцию.

Вы можете играть в игры прямо в браузере для таких консолей, как N64, Game Boy Advance, Nintendo DS и PlayStation 1, используя встроенный веб-эмулятор ( https://emulatorjs.org/ ). Участники сообщества выпустили интеграции для Playnite (Windows), muOS (карманные компьютеры Anbernic) и Decky Loader (Steam Deck), и многие другие находятся в разработке.

Команда работает над RomM уже чуть больше двух лет, и мы невероятно гордимся тем, что мы создали на данный момент. За проектом не стоит компания, просто группа друзей, которые вместе создают то, чего мы давно хотели. И, конечно, код имеет открытый исходный код и лицензию AGPLv3.

Посмотрите (довольно медленную) демоверсию, работающую на сверхдешевом VPS: https://demo.romm.app/

bogwog 5 часов назад | [–]
Однажды у меня возникла идея, но не было ни времени, ни мотивации воплотить ее в жизнь: база данных игрового дизайна со ссылками на фрагменты игрового процесса.

Так, например, статья о «2D-платформере», в которой обсуждается реализация в Super Mario, включает кнопку «демо», которая запускает веб-эмулятор с сохраненным состоянием, демонстрирующим определенный прыжковый раздел игры.

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

Редактировать: это, кстати, потрясающе, я определенно скоро создам личный экземпляр

Арелиус 4 минуты назад | | [–]
> Возможно, это опасно с юридической точки зрения, хотя мой неюридический мозг видит в этом добросовестное использование, особенно если эмулятор не позволяет играть в полную версию игры. Не знаю, но это было бы уникальной вещью в Интернете.

IANAL, но я думаю, что многие люди не понимают, что “добросовестное использование” – это защита. Что по сути означает, что вы должны быть готовы отстаивать свои права в суде. Многие потенциальные случаи добросовестного использования аннулируются еще до того, как доходят до этого.

Это также тест на равновесие, то есть он во многом зависит от фактов и контекста и является субъективным, в результате чего во многих случаях вы действительно не узнаете наверняка, пока не доберетесь до суда.

гасси 5 часов назад | | | [–]
Крутая идея, это был бы забавный POC или проект на выходные. Команда EmulatorJS ( https://emulatorjs.org/ ) сделала до смешного простой инъекцию плеера в статический веб-сайт (или несколько плееров с помощью iframes) с предустановленной игрой и пользовательскими настройками.
M95D 57 минут назад | | [–]
Извлечение чего-либо из интернета означает, что какое-то облако знает, в какие игры я играю. Это риск конфиденциальности. Игры, в которые я играю, очень показательны для типа личности и, вероятно, для множества другой индивидуальной информации, а это значит, что соблазн собрать эти данные и продать их рекламодателям очень велик.
гасси 1 минуту назад | | [–]
Какое удачное время! В наш следующий релиз войдет новый, локальный “API”, который использует GamesDB от Launchbox ( https://gamesdb.launchbox-app.com/ ) в качестве источника метаданных. Вся база данных загружается в Redis, а игры сопоставляются по точным именам файлов, поэтому никакие данные никогда не отправляются ни одному облачному провайдеру.

https://github.com/rommapp/romm/pull/1515

doubled112 51 минута назад | | | [–]
Это необязательно. Если вы не настроите интеграцию, он не будет ничего получать из интернета.

Хотя без обложки он выглядит гораздо менее впечатляюще.

трубы 32 минуты назад | | [–]
Выглядит прекрасно. Спасибо за создание этого.

Если у вас есть время:

Запускает ли он (или может ли) эмуляторы нативно? Я пытаюсь разобраться с эмулятором js, как это libretro? Скомпилирован ли libretro в wasm?

Работает ли он на базе Retro Arch или вам удалось реализовать API Libretro?

Я люблю и ненавижу Retroarch. Его меню смешны, но это все равно проще, чем управлять несколькими эмуляторами.

гасси 5 минут назад | | [–]
Проект, который поддерживает эмулятор в браузере, — EmulatorJS, который использует ядра RetroArch libretro, скомпилированные в WASM. Подробнее о процессе здесь: https://emulatorjs.org/docs4devs/buildingraw

Я думаю, что это RetroArch, так как когда вы загружаете поврежденный файл или запускаете без выбора игры, отображается меню RA. Если вы хотите копнуть глубже, вы можете проверить их github или спросить в их Discord, с командой было замечательно работать.

dawnerd 1 час назад | | [–]
Я использую его в основном как способ упорядочить свои копии игр GOG. Я мог бы использовать приложение GOG, но смысл полностью офлайн-копий в том, чтобы они не находились под контролем людей, у которых вы их купили.

Ромм тоже отлично подходит для этой цели.

отрава 5 часов назад | | [–]
RomM — отличный проект! Я так рад, что интеграции будут.

Как человек, который установил много маленьких ретробоксов, идея сделать это один раз и подать свою коллекцию из домашней лаборатории на все мои другие устройства невероятно привлекательна. Веб-эмуляция прошла очень долгий путь. Тем не менее, я предпочитаю играть на своих индивидуальных устройствах, многие из которых не имеют хорошей поддержки браузера.

Настройка каждой из этих систем может занять часы, но возможность указать что-то вроде экземпляра Batocera или настройки ES-DE на сервере и заставить его самостоятельно заполниться ромами, файлами BIOS, снимками экрана и т. д. была бы мечтой. Похоже, что это может быть будущим экосистемы эмуляции, и это звучит потрясающе!

гасси 5 часов назад | | [–]
Мне нравится ваше видение и энтузиазм! Кажется, у вас уже есть надежная настройка и отличный вариант использования для будущей версии RomM.
зунк 3 часа назад | | [–]
Это может быть глупый вопрос. Но можно ли создать общую папку импорта, куда вы просто сбрасываете ROM, а приложение его идентифицирует и перемещает в нужную системную папку?

Я установил это на своем экземпляре unRAID и пока не разобрался с этим.

гасси 2 часа назад | | [–]
Это пока невозможно, вы можете загрузить ROM из веб-интерфейса (кнопка на панели навигации), но вам нужно выбрать платформу, к которой он принадлежит. Когда мы реализуем сопоставление на основе хэша с Hasheous ( https://hasheous.org/ ), вы сможете загрузить кучу ROM или поместить их в папку импорта, а те, которые будут обнаружены правильно, будут перемещены в папки «правильной» платформы.
asmor 2 часа назад | | | [–]
Я использую igir для этого. Хотя настройка требует немного усилий.

(Совет профессионала: используйте шаблонный токен {datName} вместо –dir-dat-name, если вы используете clean с отдельными файлами DAT, иначе правило «удалять только из затронутых папок» не применяется, проверено на собственном горьком опыте).

roger_ 4 часа назад | | [–]
Отслеживаю это уже некоторое время, и для того, чтобы называться «менеджером ПЗУ», ему действительно нужна поддержка переименования и проверки ПЗУ (например, с помощью файлов .dat).
гасси 4 часа назад | | [–]
Согласен на 1000%, и мы планируем сделать именно это с Hasheous ( https://hasheous.org/ ), “бесплатным сервисом, который сопоставляет MD5 или SHA1 хэши ROM и цифровых игр с поставщиками метаданных”. Существует облачная версия, размещенная создателем проекта, или вы можете запустить свой собственный экземпляр и получить файлы .DAT.
roger_ 3 часа назад | | | [–]
Отлично, жду с нетерпением!

Раньше я пользовался RomCenter и другими инструментами, и мне бы хотелось увидеть подобную комплексную функциональность в чем-то более современном.

papercrane 3 часа назад | | | [–]
Ваш комментарий вызвал у меня интерес, так как для меня это была бы необходимая функция, чтобы использовать что-то подобное.

Похоже, они поддерживают интеграцию с инструментом Igir для проверки и именования ПЗУ с использованием файлов DAT.

https://docs.romm.app/latest/Tools/Igir-Collection-Manager/

гасси 2 часа назад | | | [–]
Igir великолепен! Мы спонсируем их последние несколько месяцев, так как многие из наших пользователей считают его полезным. На обоих концах есть документация, чтобы заставить его выводить структуру папок, совместимую с приложением

https://docs.romm.app/latest/Tools/Igir-Collection-Manager/ | https://igir.io/usage/desktop/romm/#

sumtechguy 3 часа назад | | | | [–]
Надо покопаться и посмотреть, обрабатывает ли он элементы retool. К сожалению, retool был в основном заброшен. IGIR выглядел интересно, пока я не понял, что он не может делать parent/clone для redump, как retool.
papercrane 1 час назад | | | [–]
Похоже, он поддерживает 1G1R с опцией –single и может вывести информацию о родителе/клоне, если она не указана, как в случае с redump DAT. Вы также можете использовать retool для создания DAT с этой информацией на основе ваших предпочтений, но, как вы сказали, это, вероятно, нежизнеспособно в долгосрочной перспективе, поскольку retool больше не поддерживается.

https://igir.io/dats/processing/#parentclone-inference

sumtechguy 1 час назад | | | [–]
Да. Основная проблема в том, что у redump нет родительского клона. У некоторых MAME он есть, у retool в настоящее время в основном статическая версия. Вывод имени в порядке для некоторых из них, потому что они просто в основном одно и то же имя, но разные регионы. Другие на родном языке или просто совершенно другие имена, но одна и та же игра. Затем есть TOSEC. Это монстр, с которым я пытался разобраться, что делать, и у него такие же проблемы, как у redump. No-intro и MAME довольно хороши с его метаданными отношений. У двух других не очень. На некоторых веб-сайтах он есть для определенных систем, но это не очень крутой ход, чтобы их вычищать. Одной из классных частей, которая мне понравилась в retool, была его часть компиляции, где могло быть три игры, и это было в других «игровых» штуках, таких как «5 в 1». Вот где p/c разваливается.
VonGuard 4 часа назад | | [–]
Использую это уже некоторое время. Он быстро развивается, и команда, стоящая за ним, очень отзывчива и увлечена. Очень рад видеть, как он развивается со временем! Единственное, что ему действительно нужно для продвижения вперед, — это больше ядер Retroarch, портированных на JavaScript, но это проблема upstream.
гасси 4 часа назад | | [–]
Мы только что добавили поддержку Doom и Amstract CPC в сегодняшнем патче! Он уже некоторое время доступен в upstream, поэтому нам просто пришлось его включить. Скоро выйдет новое обновление для EmulatorJS (сейчас оно находится в стадии бета-тестирования), и я думал о выпуске пользовательского образа с ночной/бета-сборкой для тестирования…
zurdi 4 часа назад | | | [–]
Спасибо за добрые слова! И да, эмуляция — это больше работа команды emulatorjs, они тоже отлично справляются
haolez 3 часа назад | | [–]
Было бы очень круто, если бы это стало приложением для смарт-ТВ. Это не так уж и далеко, правда?
гасси 2 часа назад | | [–]
Если/когда кто-то создаст приложение для Android, мы могли бы легко перенести его на Android TV с некоторыми настройками для поддержки контроллера и пульта ДУ. Однако играть в игры становится немного сложнее, так как встроенный плеер может не справляться с аппаратным обеспечением низкого уровня, используемым во многих потребительских смарт-телевизорах.
атрус 6 часов назад | | [–]
Спасибо, что вы AGPLv3, и отдельное большое спасибо за то, что четко изложили необходимую структуру каталогов. Иногда это не всегда понятно. Документация в целом отличная!
garrettjoecox 6 часов назад | | [–]
Не могли бы вы объяснить преимущества использования этого по сравнению с retroarch, lakka.tv, emulator station, EmuDeck (оболочка Steam Deck для некоторых из них) и т. д.

Лично для меня игра через браузер кажется недостатком.

zurdi 6 часов назад | | [–]
Это решение с самостоятельным размещением, в отличие от всего упомянутого вами софта. Вы установите его на свой сервер через docker и будете управлять своей библиотекой ROM с помощью чистого интерфейса. Возможность играть в самом webUI — это дополнительное преимущество, поскольку мы только что интегрировали emualtorjs (с emulatorjs.org)
garrettjoecox 2 часа назад | | | [–]
Я думаю, что я просто слишком далек от целевой аудитории, чтобы понять это. Я не вижу никаких других вариантов, кроме «самостоятельно размещенных», они не поддерживаются какой-либо облачной инфраструктурой, принадлежащей компании, это все локально запущенные приложения на вашем устройстве
гасси 2 часа назад | | | [–]
Другими словами, эти приложения устанавливаются только на одном устройстве за раз, тогда как при установке RomM на сервере вы можете получить доступ к своей библиотеке с любого устройства с браузером. Есть будущее, в котором ES-DE и EmuDeck смогут извлекать игры с центрального сервера RomM и отправлять сохранения на него.
гасси 6 часов назад | | | [–]
В идеале вы бы использовали оба варианта, а сообщество создало бы интеграции, которые позволили бы, скажем, EmuDeck загружать игры с сервера на ваш Steam Deck и синхронизировать сохранения обратно на сервер.

Обычно я играю на Windows с помощью Playnite ( https://playnite.link/ ), а плагин ( https://github.com/rommapp/playnite-plugin ) позволяет Playnite извлекать и отображать список игр для каждой системы, после чего я могу установить те, в которые хочу играть, на свой ПК.

mingw__ 6 часов назад | | [–]
Особенно приятно видеть интеграцию с RetroAchievements!
реакторdev 5 часов назад | | [–]
Напоминает мне версию hyperspin, вдохновленную «steam». Круто! Отличная работа. Все еще ищу хорошую замену hyperspin, работающую на Linux, которую я мог бы использовать на своих машинах.
гасси 5 часов назад | | [–]
Я работаю над интеграцией RomM в Lutris ( https://lutris.net/ ) уже некоторое время, но она еще не готова, так как у меня не было времени ее закончить. Не как плагин, а прямо в основном репозитории Lutris: https://github.com/gantoine/lutris/tree/romm-game-service

Это позволит вам хранить ваши игры на сервере, синхронизировать список в Lutris и устанавливать их, когда вы захотите в них играть. Я хотел бы получить рабочий POC для демонстрации команде Lutris поскорее. О, и если кто-то увидит это и захочет помочь нам, вклад всегда приветствуется!

entropicdrifter 3 часа назад | | | [–]
Лично мне бы очень хотелось увидеть это в Pegasus Frontend или Heroic Games Launcher.
гасси 2 часа назад | | | [–]
Pegasus может использовать Lutris в качестве игрового источника, поэтому, если мы создадим «плагин» Lutris, мы получим поддержку Pegasus бесплатно! https://pegasus-frontend.org/docs/user-guide/meta-sources/
UI_at_80x24 6 часов назад | | [–]
Я не совсем понимаю, в чем здесь смысл.

Это MAME, но для игры в браузере?

гасси 5 часов назад | | [–]
По сути, это система для организации и отображения вашей коллекции ретро-игр (ROM). Вместо того, чтобы перемещаться по папкам или вручную перемещать игры с жесткого диска на любую систему, на которой вы хотите играть, вы можете загрузить их в RomM, перейти в приложение и скачать их из браузера.

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

В какой-то момент мы хотели бы реализовать синхронизацию файлов сохранений между устройствами, чтобы вы могли прекратить игру на одном устройстве и продолжить с того места, где остановились, на другом!

mortos 5 часов назад | | | [–]
Я увидел этот проект несколько месяцев назад, и он выглядит потрясающе, просто еще не реализовал его.

Как он справляется с современными играми? У меня много игр без DRM и небольших инди-проектов, которые я собрал/архивировал, и мне нужен способ аккуратно отображать их и загружать.

zurdi 5 часов назад | | | [–]
Вы можете отобразить почти все, что угодно, довольно хорошо. Для игр без DRM просто загрузите их как zip или поместите их в свою библиотеку как папку со всем внутри, и RomM отобразит их как все остальное. Вы можете сделать это в папке “win”, чтобы RomM знал, что это игры для ПК
mortos 4 часа назад | | | [–]
Круто! Я также вижу, что RuffleRS также поддерживается для архивации флэш-памяти. Я сейчас этим займусь
отрава 5 часов назад | | | | [–]
Есть ли что-нибудь об интеграции с Batocera, ES-DE или Retroarch? Эти мегасистемы будут перегружены этим. Сообщество домашних лабораторий, вероятно, очень быстро это поймет.
гасси 4 часа назад | | | [–]
Не план, но мы написали это некоторое время назад как исследование того, на какие системы/платформы мы можем нацелиться. Мы очень надеемся, что сообщество продолжит наращивать темпы с большим количеством плагинов и интеграций, чтобы мы могли сосредоточиться на основном сервисе.
zurdi 5 часов назад | | | | [–]
Сейчас у нас есть плагин playnite, приложение muOS/portmaster и текущий плагин decky для steam deck. У нас есть планы по интеграции с RetroDeck. С Retroarch не повезло, так как он не поддерживает плагины, но вы всегда можете использовать что-то вроде syncthing для тех, где у нас пока нет интеграции.
johanyc 5 часов назад | | [–]
Это так круто, и вы можете играть в это прямо в браузере.
pdntspa 1 час назад | [–]
Давайте все вместе перестанем использовать слово «красивый» в описаниях приложений. Оно так часто используется и теперь фактически бессмысленно. Кроме того, красота должна быть в глазах смотрящего, а не создателя, пытающегося вложить слова в уста других людей.

Если вы стремитесь к «красоте» (что бы это ни значило на самом деле), то создайте ее на высоком уровне и позвольте другим людям самостоятельно подобрать слова.

гасси 1 час назад | [–]
Мы создаем это приложение для себя, наших друзей и нашего сообщества, и если мы все вместе считаем его красивым, то оно объективно красиво. 🙂
pdntspa 41 минут назад | | [–]
Я вижу, что недосказанность не вызывает у тебя любви.


Source: news.ycombinator.com

Leave a Reply

Your email address will not be published. Required fields are marked *