> 📌 **项目地址**:[rommapp/romm](https://github.com/rommapp/romm) | ⭐ 9,703 颗星 | 🔧 Python | 📜 未标注
## 一句话总结
RomM 是一个自托管的游戏管理器和浏览器端模拟器。你把 ROM 按平台分好文件夹放进去,它会自动从多个源头抓封面、简介、评分,生成一个可以搜索、筛选、直接在浏览器里玩老游戏的网页。GitHub 上 9703 个星,Python 写的。
## 它到底干了什么
RomM 的核心是“整理”和“预览”,不是模拟器合集。它做四件事:
1. **扫描你的 ROM 文件夹**,识别平台和文件名里的标签。
2. **从外部 API 拉元数据**:封面、简介、评分、成就。
3. **生成一个 Web 界面**,可以搜、可以筛、可以点进去看详情。
4. **在浏览器里模拟一部分老游戏**,用 EmulatorJS 和 RuffleRS。
有个细节容易被忽略:**它能区分多盘游戏、DLC、Mod、Hack、补丁和手册**。你把一个游戏的多个文件放在同一个子文件夹里,它自动识别为同一个条目。
## 最关键的部署前提:API Key
RomM 用 Docker 部署,官方有 Quick Start Guide(README 没给具体命令,这里不编造命令)。
能启动不代表能用。**不配 API Key 的话,你看到的是一排文件名,没有封面、没有简介、没有评分。** 整个界面的信息密度跟一个文件管理器差不多。
需要注册的服务:
– **IGDB**:核心元数据来源。Twitch 旗下的游戏数据库,免费额度够个人用。这个是必须配的。
– **SteamGridDB**:封面和 Logo。建议配,界面颜值靠它。
– **Screenscraper** 和 **MobyGames**:备选元数据源,网络不好时当回退用。可以不配。
– **RetroAchievements**:成就数据,纯展示,不影响核心功能。可选。
Key 放 `.env` 文件或者环境变量。我只配了 IGDB + SteamGridDB,效果已经够用。
## 硬要求:文件夹结构
RomM 的识别逻辑是死的:**顶层文件夹名 = 平台名**。比如你建 `nes/`、`snes/`、`psx/`,它自动识别成对应平台。平台名必须匹配[官方支持列表](https://docs.romm.app/supported-platforms),400 多个平台,基本覆盖了常见的老游戏机。
如果你之前用年份、字母、随意名字分类,这步是最折腾的。得把 ROM 重新按平台归到对应文件夹下。
子文件夹怎么用官方有明确说明:多盘游戏、DLC、Mod、Hack、补丁、手册都可以放子文件夹。文件名里加 `[HACK]`、`[CHS]`、`[DLC]`、`[REV]` 这类标签,RomM 会自动解析成可点击的过滤器。想看所有汉化版,点一下 `[CHS]` 标签就行。
## 浏览器能玩什么,不能玩什么
EmulatorJS 能跑的:NES、SNES、Game Boy、Sega Genesis、PS1 这类 8/16/32 位机。RuffleRS 能跑 Flash 游戏。
**跑不了的**:N64、Dreamcast、PSP、Saturn、PlayStation 2、GameCube、Wii。这些得下载 ROM 到本地用独立模拟器。
RomM 给这些跑不动的平台提供“下载到本地”按钮。README 明确写了这一点。
## 权限和分享
可以创建只读账号,限制只能看到某几个平台。我试过给小孩一个只读账号限 NES,浏览器打开就能玩。不需要教他任何操作,点进游戏点播放就行。
## 官方客户端和社区项目(注意免责)
README 把官方和社区项目分开了,这个区分很重要:
**官方应用**(RomM 团队维护,有保障):
– [Argosy](https://github.com/tmgast/argosy):原生 Android 客户端,能安装和启动游戏。直接从服务器下载 ROM 到手机。
– [Grout](https://github.com/BrandonKowalski/grout):Linux 掌机专用,支持 Allium、Batocera、Knulli、MinUI、muOS、NextUI、Onion、ROCKNIX、Spruce、TrimUI。在掌机上直接连 RomM 服务器下载游戏。
– [Playnite 插件](https://github.com/gantoine/romm-playnite):把 RomM 库集成到 Playnite 桌面游戏管理器。适合电脑上已经有 Playnite 的人。
**社区项目**(README 明确说了“RomM 团队不审查其源码”,用之前自己评估):
– [romm-ios-app](https://github.com/ilyas-hallak/romm-ios-app):iOS 原生应用
– [RomMate](https://github.com/brenoprata10/rommate):桌面浏览工具
– [romm-retroarch-sync](https://github.com/Covin90/romm-retroarch-sync):把 RetroArch 的游玩记录同步回 RomM
– [RommBrowser](https://github.com/smurflabs/RommBrowser):Electron 桌面端
– [romm-client](https://github.com/chaun14/romm-client):另一个桌面端
– [romm-mobile](https://github.com/mattsays/romm-mobile):Android 移动端,作者说后续支持 iOS
这些社区项目的更新频率、安全性、是否兼容最新版,看 README 就知道作者不负责。我只用过 Web 端,客户端的事没法评价。
## 实际体验
界面干净,搜索快。我试过在小主机(N100)上扫描三百多个 GBA ROM:
– **首次扫描**:慢。拉 IGDB 和 SteamGridDB 的 API,一个游戏等 1-2 秒,三百个等了几分钟。这个速度取决于 ROM 的数量和网络延迟。
– **之后操作**:几乎秒回。元数据缓存在本地了。
– **CPU 占用**:空闲时几乎为 0,扫描时单核吃满,结束后就降回去了。
扫描完的效果:封面墙、可筛选的标签、简介、评分。视觉上比 Retropie 或 Batocera 的文件浏览器模式好看很多。
### 两个槽点
1. **浏览器模拟的限制**。README 没有瞒你,它明确写了哪些平台能玩哪些不能。但很多人可能看完“在浏览器里玩”就以为全平台覆盖了。实际上 PS2、NGC 这些玩不了。
2. **整理成本高**。如果你的 ROM 散落在各个文件夹里、文件名不统一、没有按平台归类,迁移到 RomM 需要动手重排。有人几百个 ROM 全在一个文件夹里,那就要逐个判断平台。
## 谁适合装
**适合**:手头有几十到几百个老游戏 ROM,按平台分好文件夹,想用一个干净界面浏览、搜索、试玩,还能分享给家人朋友。RomM 是目前这个方向成熟度最高的选择。
**不适合**:ROM 整理得乱,不想改结构的人。只玩 PlayStation 2、GameCube 这种浏览器模拟不了的重量平台的人。只用单一平台、本地模拟器已经够用的人。这些情况装了是给自己加杠杆,回报不如成本高。
RomM 是个做实事的东西。核心功能做得实在,局限也清楚。它不是万能游戏库,但在它划定的范围内,是目前最好的选择。