把多年收藏放进一个网页,和家人接着玩。
RetroOne 是面向家庭局域网的怀旧游戏库。它读取你自己的 ROM 目录,将平台分类、搜索、收藏、玩家档案和游戏启动放在同一个入口里:小型游戏可以在浏览器模拟,大型游戏由家中的服务器运行,再把画面与声音传到浏览器。
界面采用主机式导航,打开即支持键盘和手柄。底层复用 EmulatorJS、RetroArch、Selkies 等开源项目;运行环境封装为 Docker 镜像,由多个家庭成员实例复用。
English overview
RetroOne is a self-hosted retro gaming hub for families on a home network. Browse your own ROM collection through a console-style web interface with search, favorites, and keyboard or gamepad controls. Supported lightweight games run locally in the browser; other games run on the server and stream to your browser when the required emulator is configured. Each family member has a separate profile, saves, and display preferences, with online activity visible from the home screen.
Built on EmulatorJS, RetroArch, and Selkies, RetroOne uses Docker for deployment. Bring your own games and any required BIOS, firmware, or keys—none are included. The public image provides the application and streaming foundation; additional emulator runtimes must be prepared locally as described in the build and release guide.
Library management keeps metadata, ROM-linked launch configurations, and personal saves separate. Resumable content audits identify exact cartridge duplicates while preserving variants and original save identities; audit results distinguish file checks from actual emulator observations.
Restarts reuse an existing library index; only an empty index is scanned automatically. After adding or moving games, run a scan from Manage library. Background scans keep enriched details and manual edits visible while updating file and launch information. Administrators can set RETROONE_SCAN_ON_STARTUP=1 to force a startup scan, 0 to disable it, or leave the default auto behavior.
The interface supports English, 简体中文, and Browser default. Open your own avatar → Player settings, or use the language selector on the player selection screen. Each player’s preference is saved on the server; switching languages keeps the current game running. Game titles, descriptions, and save identities retain their original values.
Use All platforms to search for a console, pin favorites, and change their order. Pins and sorting preferences belong to the current player. New browsing preferences start with Public popularity; the available reference currently includes sourced historical Nintendo sales, not live player activity. Games without a public metric follow by name. You can also sort by name, release date, first library addition, your launch count, or last played, and reverse the direction.
Open a game card for a dedicated detail page with available facts, screenshots, source links, and launch controls. Use Page Up / Page Down, [ / ], or the controller’s shoulder buttons to browse the previous or next game in the current filtered list; Esc returns to the library. Metadata coverage varies: unknown dates, missing artwork, and unverified compatibility stay explicit. Personal counts track new launches from this upgrade onward; resuming an existing cloud session does not increment them. See metadata enrichment for source matching and limitations.
On phones, touch controls adapt to the game platform, with landscape side controls and a portrait layout below the picture. The play menu offers fullscreen, aspect-preserving or horizontal-stretch presentation, and button size/opacity settings. Install the PWA from a supported HTTPS browser for a standalone window. Games still require a connection; the offline page does not cache ROMs or saves. See mobile play for setup and limitations.
Experimental browser play: eligible larger ROMs have one browser-play option. Downloads use the NAS HTTP source and, when available, WebTorrent browser peers. P2P sharing can be disabled in advanced settings on each device; missing P2P support or transport failures fall back to direct HTTP. The existing automatic 20 MiB rule is unchanged. The full ROM is downloaded before emulation starts. There is no default fixed download or experimental ROM size cap; administrators can optionally limit browser launches. A selected device directory provides persistent, piece-verified downloads and seeding while the website is open; installed cores, supported single-file formats, firmware and client memory still determine eligibility. PSP in-game saves now sync between browser and cloud play for the same player and game; other platforms remain separate. Use cloud mode for spectators. See browser WASM experiments for requirements and limitations.
下面三张截图来自实际家庭游戏库,展示已有的最近游玩、单个平台和个人收藏。游戏标题、封面、排序与数量取自真实目录;成员昵称仅在截图页面中作匿名化处理,没有修改服务器资料。
最近游玩:接着上次的冒险。
按平台浏览:集中查看一台主机的收藏。
我的收藏:把常玩的游戏放在一起。
这些截图展示游戏库浏览,不代表其中每款游戏均通过运行或性能验证。后文的成员、邀请和画面设置截图使用虚构演示资料,并标为“示例”。封面仅随界面截图展示;仓库及公开镜像不提供 ROM、BIOS、固件或密钥,也不会替用户下载游戏。
- 更容易找到想玩的游戏:置顶常用平台,搜索全部平台;按公开热度、名称、发行日期、加入时间或自己的游玩记录排序。每位玩家各自保存偏好。
- 打开完整游戏详情:查看已有的介绍、官方截图、发行信息和资料来源,快速切换前后游戏;没有可靠资料时明确保留空缺。
- 一个入口,两种运行方式:轻量游戏在浏览器运行;大型镜像留在服务器,通过串流游玩。
- 按设备尝试浏览器运行:符合条件的大 ROM 可在详情页选择“浏览器运行(实验)”,自动通过 NAS HTTP 来源及可用的 P2P 来源下载;高级设置可关闭 P2P 分享,默认启动规则不变。详见 浏览器 WASM 实验功能。
- 下载管理与设备共享:顶栏或游戏菜单可查看下载、暂停或恢复任务;切换页面或玩另一款小游戏不影响下载。同一设备的家庭玩家共用已校验的 ROM,各自保留独立存档。打开网站时可继续分享分片。
- PSP 云存档接力:同一玩家在云游戏中保存后,可在浏览器接着玩;游戏内保存自动同步回服务器,冲突时保留双方进度。详见 云存档说明。
- 全家各有进度:自选昵称和头像,独立收藏、最近记录、设置与存档;首页“+”可添加成员。
- 看看谁在玩:顶栏显示在线家人的头像与活动;开启观战服务后,可点开家人活动,再点独立的“观看”按钮,只读观看当前云游戏。本人的状态入口可以继续、结束游戏或打开用户设置。
- 让 AI 玩或看:可选 MCP 服务提供授权档案、强制云端启动、截图与限时手柄输入。小型 NES 游戏也可只对这一次改为云端,不影响家庭的默认玩法。
- 每台设备各自的画质:同一玩家可以在平板上用 1080p、手机上用 720p,互不覆盖。
- 键盘和手柄导航:支持 WASD、方向键、Xbox 和 PlayStation 手柄,无需先打开手柄模式。
- 手机也能玩:全屏播放、按平台切换的触控按键、横竖屏布局及 PWA 安装;按键大小、透明度和画面比例可在游玩菜单调整。
- 保留原收藏:游戏库只读挂载,运行时需要的解压副本和存档写到独立数据目录。
- 管理与核验收藏:后台扫描、生成每游戏启动配置、分批检查内容指纹和重复副本;保留衍生版本及原存档入口。详见 游戏库管理。
| 运行方式 | 选择条件 | 客户端做什么 |
|---|---|---|
| 浏览器运行 | 文件及解压后总大小均不超过 20 MiB,有已安装的浏览器核心,满足固件条件,且是可直接加载的单文件内容 | 下载这份小型内容,在当前设备模拟 |
| 云端串流 | 自动选择时超过阈值或不适合浏览器加载,或用户主动选择云游戏;服务器运行环境须已就绪 | 接收画面和声音,将操作传回服务器,不下载大镜像 |
| 浏览器运行(实验) | 用户主动选择,单文件格式、已安装内核、固件和体积都满足实验规则 | 自动使用 NAS HTTP 下载及可用的浏览器 P2P 来源;下载完整后在浏览器模拟 |
| 待配置 | 缺少核心、固件、启动入口,或该系统尚未接入 | 显示原因,保留收藏条目 |
入库不等于逐款可玩。 多文件光盘、街机依赖包和 PC 游戏不能只凭压缩文件大小判断。默认串流目标为 720p、60 FPS,实际表现取决于原作帧率、模拟器、服务器、网络和浏览器解码;项目不会通过加速游戏或音频凑帧率。
实验性浏览器模式默认不设固定文件大小上限,管理员可配置限额。文件能下载不等于设备能运行;加载完整 ROM、模拟器内存和图形资源可能需要 ROM 体积数倍的内存。完整浏览器运行包使用 EmulatorJS 4.3.0-pre 预发布版,包含实验性 Azahar / 3DS 核心;Switch、PS2 等没有接入合适浏览器内核的平台继续使用云游戏。具体支持范围、存档和网络条件见 使用说明。
目前云端运行路径面向 x86-64 Linux、Docker Compose 和 Intel 核显,需要可用的 /dev/dri/renderD128。建议先用少量自己的游戏验证运行、输入和存档,再导入完整收藏。
git clone https://github.com/zhuzhe1983/retroOne.git
cd retroOne先按照 部署与维护指南 创建数据目录并填写 .env,然后选择构建方式:
| 构建方式 | 用途与边界 |
|---|---|
Dockerfile.public · 公开入口镜像 |
提供网页、目录 API、家庭档案、串流基础环境及镜像内已安装的系统软件包。不携带私有 vendor/ 组件,浏览器核心、PSP 等能力可能显示未就绪 |
Dockerfile · 本地完整构建 |
从自己已准备、核验的运行组件构建,接入更多模拟器。仍需自己的游戏和必要固件,也不保证所有系统可玩;此构建用于私有部署 |
无需等待预构建镜像发布,可以先构建公开入口版本:
docker build -f Dockerfile.public -t retroone:local .
docker compose up -d --no-build
docker compose ps启动后访问 https://<服务器地址>:8781/。首次使用需信任本地证书,或接入带可信证书的反向代理;远程使用手柄和多线程浏览器模拟时应保持 HTTPS。普通 HTTP 入口为 8780。
预构建镜像标签、发布流程、完整本地构建及依赖校验见 镜像与发布说明。公开镜像地址为 ghcr.io/zhuzhe1983/retroone,可用标签以仓库的 Releases 为准。
服务按可信家庭网络设计。玩家档案没有密码或 PIN,用于分开进度,不构成公网访问控制。
将 RETROONE_ROM_PATH 指向包含 library/ 的根目录,例如 /srv/rom/one。容器会把它只读挂载到 /roms。
/srv/rom/one/
├── library/
│ ├── nes/
│ │ └── 自有卡带.nes
│ ├── gba/
│ │ └── 我的掌机收藏/
│ │ └── 自有卡带.gba
│ ├── psx/
│ │ └── 我的光盘收藏/
│ │ └── 自有游戏/
│ │ ├── 自有光盘.cue
│ │ └── 自有光盘.bin
│ └── dos/
│ └── 我的电脑收藏/
│ └── 自有游戏.zip
├── .retroone/
│ └── library-layout.json # 已有收藏迁移时保留集合边界与原路径
└── firmware/
└── 放置运行所需、由自己提供的 BIOS 和固件
ROM 可直接放在 library/<平台>/,也可按 library/<平台>/<收藏>/ 分组。 不再要求 new、old、pegasus、import 等来源目录。多碟或电脑游戏仍须保留完整游戏文件夹,不能把配套文件拆散。
DOS / Windows 的 ZIP 可按上例直接导入。未压缩的电脑游戏需要用 metadata.pegasus.txt 明确声明游戏及入口,或提供明确的集合布局;程序不会把同一文件夹中的主程序、安装程序和配置工具分别猜成几款游戏。旧的多层电脑收藏继续兼容。
旧的 library/<平台>/<来源>/<收藏>/ 结构仍兼容。整理已有游戏库时,应使用带路径映射的迁移流程,并保留 one/.retroone/library-layout.json;它记录明确的收藏边界和原路径,使扫描继续使用原游戏 ID。不要直接删除映射文件,也不要把有存档的收藏当作新库重新导入。见 整理已有收藏。
常用平台目录名如下;完整识别规则见 platforms.py。扩展名表示候选文件,并不代表当前镜像一定装有对应模拟器。
| 系统 | 平台目录 | 常见文件 |
|---|---|---|
| FC / SFC | nes / snes |
.nes / .sfc、.smc |
| GB / GBC / GBA | gb / gbc / gba |
.gb / .gbc / .gba |
| Mega Drive | megadrive |
.md、.gen |
| PlayStation / PSP | psx / psp |
.cue、.chd、.m3u / .iso、.cso、.pbp |
| DOS / Windows | dos / windows |
游戏压缩包或完整游戏目录,还需确认启动入口 |
| 街机 | fbneo / mame |
与核心版本匹配的 ROM 集及其依赖 |
| Nintendo Switch | switch |
.nsp、.xci、.nro;全部云端运行,需本地完整镜像与自己的固件、密钥 |
- 小型单卡带 ZIP 可以保留压缩形式,服务会检查解压后的体积。7z 是否可直接运行还取决于内容、核心与解压工具。
.cue配套的.bin、.gdi的轨道文件,以及.m3u引用的多碟文件要一起保留,文件名与相对路径需一致。- 街机 ZIP、父包、BIOS、CHD 不要全部展开或合并,ROM 集必须与对应核心版本相符。
- DOS / Windows 游戏保留完整资源,不要只复制一个
.exe。识别不到入口时会显示待配置,不会任意执行目录内程序。 - 需要固件的平台,将自己的文件放入
one/firmware/;例如 PS2 BIOS 使用one/firmware/pcsx2/。具体名称和布局取决于模拟器,详见 维护指南。项目不提供这些文件或下载入口。 - Switch 使用
one/firmware/switch/prod.keys和firmware.zip(或registered/内的 NCA);详见 Switch 接入指南。NSZ / XCZ 要先转换,更新与 DLC 不能当作游戏本体启动。
进入网页、选择玩家,打开 “管理游戏库” 并扫描目录。扫描在后台进行,完成后列表自动更新;大目录需要更多时间。管理入口也可分批核验内容、查看进度并继续未完成的指纹任务。也可以调用当前玩家的 POST /p/playerN/api/scan。
服务重启时会复用已有索引,只有首次使用的空库才自动扫描;新增或移动游戏后,请手动扫描。后台扫描会保留已刮削的详情、截图和人工编辑,同时更新文件与启动信息。部署环境变量 RETROONE_SCAN_ON_STARTUP 默认是 auto;设为 1 可强制启动时扫描,设为 0 可关闭启动扫描。大型游戏库不建议让所有玩家实例同时强制扫描。
选择游戏后查看详情中的运行方式和原因。先试一款熟悉的游戏,验证输入、保存和恢复,再继续扩充收藏。通过已记录原路径映射的目录迁移,游戏 ID 可继续沿用;任意手动移动或重命名文件仍可能改变 ID,进而影响收藏、最近记录及按游戏 ID 保存的数据关联。已有进度请先备份运行数据和布局映射。
已有 Pegasus 收藏可以保留 metadata.pegasus.txt 和媒体目录。自己的封面可按 media/<ROM文件名去掉扩展名>/boxFront.png 放在收藏目录内(平台直放时使用该平台目录),或在元数据中明确引用;没有图片时仍能正常浏览。独立封面缓存不应随项目代码或公开镜像发布;文档中经确认的界面截图单独记录来源。
每次打开网页,先选自己的玩家档案。首次使用填写昵称并选头像;也可以点“+”添加成员。新增成员准备好独立实例后才允许进入,失败时可重试。默认提供两个档案,成员数量上限可以配置,实际并发能力由主机资源决定。
点击本人头像,在 用户设置 中切换 简体中文 / English / 跟随浏览器;玩家选择界面也保留语言菜单。未选玩家时,选择保存在当前浏览器;选定玩家后,使用这位玩家保存在服务器上的语言偏好。切换语言会立即更新网页,保留正在运行的游戏。浏览器模拟器内部菜单在下次打开时使用所选语言;游戏原文、玩家昵称和存档不受影响。添加翻译见 界面语言说明。
顶栏直接显示谁在线、正在玩什么。在线状态来自浏览器连接,后台保留着云游戏并不等于这位家人还在线。点击自己的头像和状态,可以继续云游戏、结束云游戏、调整用户设置或切换玩家。界面语言和画面设置集中在这里。
每个玩家最多保留一个云端会话。关闭播放窗口或网页会保留云游戏;结束游戏需要再次确认。 如果当前已有游戏运行,切换前会提示游戏名称与未保存风险。选择另一个家庭成员不会替对方结束游戏。
点平台栏的 全部平台,可以搜索主机名称、点图钉置顶常玩的平台,再用 ↑ / ↓ 调整置顶顺序。首页优先显示置顶与最近玩过的平台;平台按钮用不同的主机轮廓和名称帮助辨认。置顶与排序跟随当前玩家,在其他设备登录同一玩家也会沿用。
游戏列表旁的排序菜单支持 大众热度、游戏名称、发行日期、加入时间、我的游玩次数、最近游玩时间,也可切回原来的 默认顺序;旁边的按钮切换升降序。未保存过偏好的玩家先按公开热度浏览,缺少热度资料的游戏按名称放在后面。当前公开参考主要是有来源和统计日期的 Nintendo 历史销量,不等于实时热度,也不把家人的游玩次数当成大众数据。切到“最近游玩”仍优先显示最近启动的游戏。
点击游戏卡片进入独立详情页。已收集到的简介、截图、发行商、日期、类型、人数与来源会在这里展示;文件、版本和运行检查放在可展开的区域。用 Page Up / Page Down、[ / ] 或手柄肩键,在当前筛选与排序结果里查看上一个/下一个游戏;按 Esc 返回列表。切换详情不会启动或结束正在运行的游戏。
旧库没有记录的加入时间不会补造;游玩次数从启用新计数后开始累计,继续已有云游戏会话不会再加一次。官方资料中的地区、语言和人数描述的是原版商品,不能证明某个 ROM 的汉化情况或模拟器联机能力。资料来源、补全方法与边界见 游戏资料补全说明。
| 操作 | 键盘 | Xbox / PlayStation 手柄 |
|---|---|---|
| 移动选择 | WASD / 方向键 | 十字键 / 左摇杆 |
| 确认、查看 | Enter | A / × |
| 返回 | Esc | B / ○ |
| 切换平台 | 选择顶部平台按钮 | LB、RB / L1、R1 |
| 搜索 | / |
可转用键盘输入 |
| 选择玩家 | 顶栏本人状态 → 切换玩家 | Menu / Options |
连接手柄后按任意键唤醒浏览器检测。进入游戏后使用对应模拟器的映射:浏览器游戏默认 WASD 移动、J/K/U/I 动作、Q/E 肩键、Enter 开始、Shift 选择,可在模拟器中调整;云端按具体系统映射。
手机进入游戏后自动显示触控手柄,默认使用独立控制区:横屏时按键靠两侧,竖屏时按键位于画面下方。SELECT 在左侧,START 在右侧,支持按住和组合操作。游玩时收起顶部工具栏和串流工具入口。点角落的 ☰ 打开菜单,可返回游戏库、全屏、调整按键大小与透明度、选择布局,或使用部分平台的 L3/R3;结束游戏仍需确认。需要键盘或存档工具时,选择 模拟器工具,用完点 返回游戏。触控和画面比例设置保存在这台设备的当前玩家名下,不改变服务器串流分辨率。
想让画面使用整个播放区域,可点 ☰ → 悬浮按键 · 完整画面:按键浮在两侧,同时恢复原比例、100% 缩放,完整保留游戏内容。也可在菜单的 按键位置 中选择悬浮或独立控制区。悬浮按键会覆盖部分边缘内容,可调整透明度;屏幕与游戏比例不同时,完整显示仍可能留有黑边。
在 ☰ → 调整画面 中,可实时调整 100–300% 居中缩放,或选择 铺满去黑边(裁切),按原比例放大到填满播放区域。默认完整显示;放大可能裁掉边缘文字或状态栏,可点 还原画面 恢复。浏览器模拟器和云游戏都支持,无需重载游戏;这只是显示大小调整,不提高原始渲染分辨率。
通过可信 HTTPS 地址打开 RetroOne,在 顶栏自己的头像 → 安装应用 中安装,或使用 Android Chrome 的浏览器安装菜单。安装后可从桌面以独立窗口启动;浏览器不允许系统全屏时仍提供沉浸布局。PWA 的 Service Worker 只缓存界面资源,不缓存 ROM、存档或家庭成员数据;游戏文件由独立的下载管理器保存。当前未提供完整离线游戏流程,新版本也不会强制刷新正在玩的页面。
详细操作、触控布局和兼容边界见 手机游玩说明。
PSP 游戏内存档:同一玩家、同一游戏在浏览器启动前读取云端最新进度,正常保存后自动回传;退出会等待同步,冲突时停止自动覆盖。先结束原云会话,再用浏览器接着玩。详见 云存档说明。
其他浏览器游戏与即时存档:普通游戏存档保存在当前浏览器的 IndexedDB 中,并按玩家隔离。模拟器的“保存状态”会下载文件,同时备份到服务器;在 ☰ → 模拟器工具 中可以载入、导出或上传状态。服务器备份需要主动保存状态,不是持续同步普通存档。换设备、换域名或清理浏览器数据前,应先备份进度。
云端游戏:游戏内存档和模拟器状态保存在该玩家的服务器数据目录。结束前先在游戏内保存;关闭网页本身不等于保存。镜像更新不会代替备份,迁移时应保留完整的 data/ 和 profiles/,因为部分 PC 游戏把存档写在工作副本中。路径与备份方法见 维护指南。
从 顶栏本人状态 → 用户设置 → 画面设置 选择 720p 或 1080p。同一玩家在平板上保存 1080p,在手机上保存 720p,各自的选择不会覆盖另一台设备。偏好保存在服务器,对该玩家从这台设备启动的云端游戏通用;下次新启动时应用,保存设置不会中断或改变当前游戏。继续已有会话会保留它原来的分辨率。
首次使用沿用原有玩家默认值;点击“保存到这台设备”后独立保存,也可以“恢复玩家默认值”。设备用当前浏览器随机生成并保存的标识识别,不采集硬件指纹。同一设备的不同浏览器、不同访问域名以及清除网站数据后的浏览器,会被视为不同设备。界面语言仍跟随玩家,可跨设备使用。
Display preferences are saved separately for each player and browser/device: use 1080p on a tablet and 720p on a phone. Changes apply to newly started cloud sessions; resuming an existing session preserves its current resolution.
这是串流桌面与视频输出尺寸,不是 AI 超分,也不是各模拟器内部渲染倍率。界面区分已保存的偏好和当前会话实际尺寸;无法读取实际尺寸时会明确提示。浏览器运行的游戏继续使用模拟器自己的画面设置。
**SameConsole(同机多人)**是一个游戏实例连接多个手柄,通常共享画面。**Network(原生联网)**是两套独立实例通过游戏原有网络协议连接,每位玩家有自己的画面和进度。普通 Netplay、两个成员同时开游戏,都不能自动等同于后一种。
目前原生联网采用实验性、逐条验证的白名单。私有完整环境中验证过 PSP《山脊赛车2》的两实例同场比赛;公开入口镜像不包含这套 PSP 核心。现有白名单还绑定已核验的目录条目 ID,新目录导入同名游戏不会自动开放邀请,需要开发者重新核验并登记。
对白名单条目,可点击在线家人发出邀请。对方接受后,两人分别明确启动自己的游戏,再按提示在游戏内建房、查找并加入;接受邀请不会自动启动游戏,也不代表已经进入比赛。关闭邀请不会结束正在运行的模拟器。
- 3DS:实验支持,已有实际关卡运行记录,也发现原生保存后重启核心崩溃的问题,尚不能承诺进度恢复稳定。
- Switch:已接入 Eden 0.2.1,全部使用云端运行。空界面启动及正常退出已验证;实际游戏的输入、存档恢复、兼容性和帧率仍待具备密钥与匹配固件后验证。公开镜像不含 Eden。默认掌机模式、1 倍内部分辨率;尚未开放 Switch 原生联网。
- Windows 老游戏:仅接入少量已明确入口的布局,不能把任意 Windows 游戏当作已支持。DOS 游戏也需保留资源并适配启动方式。
- NVIDIA:只有后端适配接口,显卡透传、采集与 NVENC 链路尚未实现,当前不能仅改一个环境变量就迁移成功。
- 帧率与并发:60 FPS 是串流目标,不是全平台性能保证。成员数量上限不等于能同时运行同样数量的重型游戏。卡顿、声音异常与温度排查见 性能说明。
原生 Android 客户端已放在 android/:提供 Apps / Games 双视图、可选默认桌面、玩家切换、收藏、最近游玩和全库排序,支持后台下载与校验、暂停和续传,并通过只读 content URI 调用本机 PPSSPP。新增“已下载”筛选和本地游戏/存档备份管理;PSP 可在退出模拟器后手动双向同步,进度不同时选择使用本机或云端版本,替换前保留备份。Android 自动同步与模拟器玩家存档隔离尚未开放。首版验证 PSP 独立 ISO / CSO;PBP、CHD、多文件游戏和其他模拟器的边界见 Android 使用说明。客户端不包含游戏、固件或模拟器,也不改动现有网页与云端服务。
- MCP 与只读观战:安装、连接和使用 · Agent Skill
- AI Agent 设计记录与后续多人计划
- AI 直播选题与弹幕互动建议
- 部署、存档、升级与 ROM 整理
- 镜像构建与发布
- 性能与声音排查
- 架构与 API
- 联机能力及验证边界
- Switch 模拟器、依赖准备与验证边界
- 上游组件、版本与许可证记录
- 真实图库与示例截图的来源说明
Optional MCP and read-only spectating are available: scoped Agent profiles, explicit cloud launches, screenshots, and bounded controller actions. The home screen has a separate Watch action for active cloud sessions. Connect the MCP service before using the Agent Skill. Native Network MCP tools, browser-local sharing, and live-chat integration remain future work.
本地开发可以在 macOS / Linux 启动目录 API 与网页;云端模拟和串流需要 Linux 容器环境。开发启动、检查命令见维护指南。游戏、固件、独立封面缓存、用户数据和本地验收录屏均应留在自己的存储中,不随代码提交或公开发布。文档仅收录截图清单中逐张确认的界面图片。






