前言

适用于对老平台游戏有着放不下的执念的人。想要一个类似于影音流媒体的平台,随时随地有网打开就玩,毕竟游戏ROM和模拟器也不可能随时存在本地所有设备。

引入

目前比较全能的RetroArch已经有网页版可以使用,但它的网页版只提供模拟器,需要你自己上传ROM才能玩,所以也不是很方便。而本文介绍的EmulatorJS则可以在服务端放好ROM,以后点开就玩。

EmulatorJS目前已经支持的平台:

EmulatorJS优势:

  • 无论是PC还是移动设备,都支持手柄。已用Nintendo Pro测试。
  • 提供庞大的metadata库,会通过匹配MD5来自动进行刮削。为了匹配更精准请将ROM文件命名为英文。

准备

个人的老游戏收藏库

部署

本文依旧使用docker-compose进行部署。在VPS新建一个文件夹,CD进去vim docker-compose.yml,填写内容如下:

version: "2.1"
services:
  emulatorjs:
    image: lscr.io/linuxserver/emulatorjs:latest
    container_name: emulatorjs
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC #可以修改成国内时区 TZ=Asia/Shanghai
    volumes:
      - /path/to/config:/config
      # 挂载用户配置到宿主机
      - /path/to/data:/data
      # 挂载游戏数据到宿主机
    ports:
      - 3000:3000 #后台管理端口
      - 80:80  #前台游玩端口
      - 4001:4001 #IPFS端口,不知道的可以忽略不开
    restart: unless-stopped

对于挂载游戏数据这一栏,不小心删了相关文件就要重新刮削,这比较麻烦,所以我们可以只挂载单独的ROM目录。EmulatorJS的不同模拟平台目录是分开的,所以不同平台游戏要分开挂载,示例:

    volumes:
      - /path/to/FCgame:/data/nes/roms
      - /path/to/SFCgame:/data/snes/roms
      - /path/to/gbagame:/data/gba/roms

不同平台对应的文件目录如下:

  • 3do
  • arcade
  • atari2600
  • atari7800
  • colecovision
  • doom
  • nes
  • snes
  • gb
  • gba
  • gbc
  • vb
  • nds
  • n64
  • jaguar
  • lynx
  • msx
  • ngp
  • odyssey2
  • pce
  • psx
  • sega32x
  • segaCD
  • segaGG
  • segaMD
  • segaMS
  • segaSaturn
  • segaSG
  • vectrex
  • ws

接下来 docker-compose up -d 即可。

启用

浏览器打开 http://ip:后台port, 会先提醒你下一个metadata包,下完以后就可以进行刮削。

下完以后页面会显示不同平台检测到的游戏数量,点进去以后先扫描再刮削,刮削完以后添加进配置里,准备完毕。

最后浏览器打开 http://ip:前端port, 就可以选择平台,选择游戏开始玩了。

相关问题

Q:手机上看起来界面不完整?
A:横屏即可。不管在什么设备玩都需要横向。

Q:如何存档?
A:后台创建Profile,在游玩的时候进度会跟随Profile,游玩结束以后保存Profile的配置到本地,下次游玩的时候再上传配置文件到服务端即可接着游玩