Как я перестал бояться своей коллекции ретро-игр и полюбил RomM

04 июл 2026
12,569
698
68
1 неделя

У многих из нас где-то на жестком диске или в облаке лежит папка «Games» (или «Old_Stuff»), забитая образами для Dendy, Sega, PlayStation 1 и еще десятка платформ. Обычно это хаос из файлов с названиями вроде Super_Mario_Bros_(E)_[!].nes. Найти там что-то конкретное сложно, а запустить игру — это целый квест: вспомни, какой эмулятор нужен, настрой геймпад, найди биос.

Я наткнулся на проект RomM (ROM Manager), который превращает эту свалку в персональный «Netflix для игр». Это self-hosted решение, которое берет на себя всю грязную работу по организации библиотеки и, что самое крутое, позволяет играть прямо в браузере.

romm logo

Что это такое

RomM — это менеджер игровых ресурсов с веб-интерфейсом. Вы скармливаете ему папку с ромами, а он сканирует её и подтягивает метаданные: обложки, описания, рейтинги и даже достижения. Проект написан на Python и легко разворачивается через Docker.

Главное отличие от простых каталогизаторов в том, что RomM — это полноценный сервер. Вы можете зайти на него с телефона, планшета или рабочего ноутбука и запустить любимую Castlevania без установки эмуляторов на конечное устройство.

Чем RomM хорош на практике

Автоматическое обогащение данных

Если у вас сотни игр, подписывать каждую вручную — безумие. RomM подключается к базам IGDB, Mobygames и Screenscraper. Он распознает игру по хешу или названию файла и скачивает качественные постеры. Выглядит это в итоге не хуже, чем библиотека в Steam.

Реклама

Игра в браузере

В проект встроены EmulatorJS и Ruffle (для Flash-игр). Это значит, что эмуляция происходит на стороне клиента через JavaScript/WebAssembly. Вам не нужно настраивать RetroArch на каждом устройстве. Просто открыли страницу, нажали Play и играете. Сохранения, кстати, тоже работают и хранятся на вашем сервере.

Поддержка сложной структуры

Ретро-игры — это не всегда один файл. Есть игры на нескольких дисках, есть патчи, хаки, DLC и мануалы в PDF. RomM умеет группировать такие вещи. Если у вас лежит японская версия игры и фанатский перевод к ней, менеджер позволит выбрать нужный вариант в одном меню.

Общий доступ

Библиотекой можно делиться. Например, можно создать аккаунты для друзей или детей, ограничив им доступ к определенным платформам (скажем, только NES и SNES).

desktop preview

Техническая сторона вопроса

Под капотом у RomM связка из Python и современного фронтенда. Для хранения данных используется база (SQLite по умолчанию или MariaDB/PostgreSQL для серьезных коллекций).

Интересно реализована работа с тегами. Система умеет парсить стандартные теги из названий файлов (регион, версия, наличие перевода) и превращать их в фильтры. Если вы привыкли к именованию в духе No-Intro или TOSEC, RomM поймет вас с полуслова.

Для тех, кто предпочитает нативные приложения, у проекта есть официальный плагин для Playnite и мобильные клиенты. Сообщество даже написало загрузчики для кастомных прошивок портативных консолей вроде muOS.

Как запустить

Проще всего использовать Docker Compose. Вот пример минимального конфига:

services:
  romm:
    image: rommapp/romm:latest
    container_name: romm
    environment:
      - DB_BACKEND=sqlite
      - AUTH_SECRET=ваш_секретный_ключ
      - IGDB_CLIENT_ID=ваш_id
      - IGDB_CLIENT_SECRET=ваш_secret
    volumes:
      - ./library:/romm/library
      - ./resources:/romm/resources
      - ./config:/romm/config
    ports:
      - 8080:8080

После запуска нужно будет настроить интеграцию с IGDB (это бесплатно, но нужно зарегистрировать приложение на портале разработчиков Twitch), чтобы RomM мог скачивать метаданные.

Кому это нужно

Если вы храните игры просто «чтобы были», RomM может показаться избыточным. Но он незаменим в двух случаях:

  1. У вас есть домашний сервер (NAS) и вы хотите иметь доступ к играм с любого устройства в локальной сети.
  2. Вы устали от настройки эмуляторов и хотите простого интерфейса «нажал и играй».

Проект активно развивается, у него почти 10 тысяч звезд на GitHub и живое комьюнити в Discord. Из минусов — процесс первоначального сканирования огромных библиотек может занять время, а настройка ключей API для метаданных требует пары лишних кликов. Но результат в виде аккуратной, кликабельной галереи того стоит.

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

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.