Docker容器中部署Web端游戏模拟器(只要有浏览器的设备都可以玩模拟器并且支持手柄) 心得研究

三级用户 edffed 7月前 2565

首先,我来说一下这个项目的优点。只要你的设备有浏览器,就可以使用,并且可以连接手柄。我已经试过有线、2.4G和蓝牙连接,都可以使用,并且按键已经自动映射好了。这意味着,如果你是iOS用户,你不需要费力去下载模拟器,只要里面有你想玩的游戏机种。

起因是,最近在闲鱼捡到了一台Chromebook,配置如下:i3 6100u处理器、4GB内存和16GB EMMC存储空间。价格非常便宜,仅260元包邮,而且还是ThinkPad 13。键盘手感不错,唯一缺少的就是小红点。由于我经常使用网络应用和很多软件都有Web端版本,我发现国内许多应用非要做成App,放弃Web端,这一点让我很难理解。这台设备可以安装安卓App,但无法安装64位的App,可以安装一些简单的模拟器,并且可以使用SD卡存放ROM。我个人安装了SS、PS1、MD、FC、GBA、DC和PSP模拟器,总体而言,以260元的价格买这台设备比买一个山寨机划算,因为我还可以观看流媒体、使用WebDAV,并且具备蓝牙和WiFi功能。使用蓝牙音箱听歌和蓝牙手柄玩游戏非常方便,当然,山寨机也有山寨机的好处,毕竟更集成化、更便携。

总的来说,我很喜欢使用Web端应用,因此我好奇是否可以使用Docker容器化模拟器。经过一番搜索,我发现确实有这样的项目。

我的Docker环境是软路由,配置如下:N3160处理器、8GB内存和120GB固态加500GB机械硬盘。之前购买N3160是为了安装CentOS来开网游私服,和朋友一起玩《魔兽世界》。后来停止玩游戏后,花十多块钱买了一张PCIe的千兆网卡,用于搭建软路由。当时在闲鱼购买N3160的价格是50元包邮,还附赠了一根4GB内存,价格非常合适。一般来说,对于软路由来说,120GB固态已经足够了,但是我还想尝试网心云,所以又加了一块500GB的硬盘。后来发现我的这个垃圾移动收益并不是很稳定,所以我就没怎么用,想着至少可以备份一些音乐之类的东西。

说了这么多,言归正传,关于在Docker中部署Web端模拟器。从雅达利2600一直到PS1和SS,都可以玩,具体的模拟器核心如下。

Screenshot 2024-04-14 18.13.37.png



接下来,我提供原项目地址:https://github.com/linuxserver/docker-emulatorjs。

这里就不详细介绍如何安装Docker了,我默认你已经安装好了,并且现在ChatGPT使用起来也很方便。


效果如下图:


Screenshot 2024-04-14 19.03.51.png


以下是Docker命令:

```

docker run -d \

  --name=emulatorjs \

  -e PUID=1000 \

  -e PGID=1000 \

  -e TZ=Etc/UTC \

  -e SUBFOLDER=/ `#optional` \

  -p 3000:3000 \

  -p 80:80 \

  -p 4001:4001 `#optional` \

  -v /path/to/config:/config \

  -v /path/to/data:/data \

  --restart unless-stopped \

  lscr.io/linuxserver/emulatorjs:latest

这是80端口的前端如图:

Screenshot 2024-04-14 18.19.59.png


3000是配置界面如下图:

Screenshot 2024-04-14 18.23.25.png


在这里我要说明一下,80端口是前端界面,而3000端口则是后台配置界面。通常情况下,80端口可能会被占用,而且大多数人只会给Docker分配少量空间。如果遇到这种情况,可以修改命令,比如我将80端口映射到8188端口上,并将数据和配置存放在Docker中:


docker run -d \

  --name=emulatorjs \

  -e PUID=1000 \

  -e PGID=1000 \

  -e TZ=Etc/UTC \

  -e SUBFOLDER=/ `#optional` \

  -p 3000:3000 \

  -p 8188:80 \ #这里80端口映射到了8188 其他几个端口也可以这样映射

  -p 4001:4001 `#optional` \

  -v /opt/docker:/config \ #这里是配置文件

  -v /opt/docker:/data \  #这里是数据包括了rom

  --restart unless-stopped \

  lscr.io/linuxserver/emulatorjs:latest

```

在拉取完成命令后,你会看到Docker容器出现在列表中。

Docker容器如下图:

Screenshot 2024-04-14 18.29.58.png


进入3000端口界面,开始下载前端配置和BIOS。如果已经下载完成,界面上会有一个“Download”按钮,等待出现“Downloaded All Files”或类似信息。

现在,你可以开始上传ROM了。点击“File Management”,选择你要上传ROM的游戏机种,比如GBA,点击左侧的GBA再点击ROM文件夹,将ROM文件直接拖入其中。回到主页,你会看到刚刚上传的游戏机种。点击“Scan”,然后开始扫描。扫描完成后,点击左侧的游戏机种,选择“Step 2”将所有ROM添加到配置中。返回前端界面,你就能看到你所添加的游戏机种。如果没有显示,可以尝试重新启动容器。

Screenshot 2024-04-14 18.38.55.png

Screenshot 2024-04-14 18.39.46.png

Screenshot 2024-04-14 18.41.13.png



关于封面图片的下载,可以在左侧选择游戏机种,点击“Step 1”手动查找并添加封面图片,但需要手动查找,且不能自动命名,有些麻烦。个人建议等过几天我去GitHub上向外国开发者提建议,看看以后是否会更新。


现在,你可以使用浏览器来玩游戏了。我试过的都是Xbox手柄协议,其他手柄暂时不清楚支持情况。以上可能有些啰嗦,如果有不明白的地方,请留言,我会尽力回答,如果无法回答,建议查看原项目地址

另外建议看看模拟器核心支持的格式,比如PS1模拟器只支持PBP和CUE格式。

再补充一下,我在老外项目中看到浏览器推荐的是chrome 其他几个会出现cdrom无法运行的问题说的是saga的cd









上一篇:自己做一块NGC的直读XENO芯片
下一篇:GBA铸剑物语3起源之石——汉化版战斗卡顿修正方法
最新回复 (14)
  • 三级用户 icemould 7月前
    0 2
    nb!
  • 五级用户 xyq220122 7月前
    0 3
    牛蛙,收藏等以后研究
  • 三级用户 chaospp 7月前
    0 4
    类似东西昨天研究了一天ROMM,失败了,找到的教程都似乎以前的,新的只支持mariaDB不知道怎么弄了
  • 四级用户 yanyaneboy 7月前
    0 5
    群晖怎弄
  • 四级用户 receo 7月前
    0 6
    666! 直接PULL DOCKER就可以用了是吧?
  • 三级用户 edffed 7月前
    0 7
    yanyaneboy 群晖怎弄
    直接开ssh拿命令拉就行了
  • 三级用户 edffed 7月前
    0 8
    receo 666! 直接PULL DOCKER就可以用了是吧?
    用终端连ssh,用命令拉就行了,省去配置容器的麻烦了
    当然你要直接拉去镜像也是可以的
    linuxserver/emulatorjs
    但是我是建议你直接用命令,就像我说的,省的自己配置容器了
  • 五级用户 110119diDI 7月前
    0 9
    牛B!!
  • 四级用户 一蓑烟雨任平生 7月前
    0 10
    卧槽 这个好啊,之前倒是想过,没找到
  • 四级用户 wNg333 7月前
    0 11
    插眼!
  • 四级用户 fruitBitch 7月前
    0 12
    在线模拟器蛮多的,随手一搜https://myemulator.online/,刷这个是给自己的软路由找点用处嘛😂
  • 三级用户 edffed 7月前
    1 13
    fruitBitch 在线模拟器蛮多的,随手一搜https://myemulator.online/,刷这个是给自己的软路由找点用处嘛😂

    怕你不知道,和你说一声,本地化最好的点就是数据和低延迟,另外你给的这个网站rom都是英文的,机种还少,还不如chinese-dos-games项目作者的https://zaixianwan.app/ 现在已经可以到ps2模拟器了

  • 五级用户 vincentxiii 7月前
    0 14
    這篇讚!
  • 五级用户 fragranse 7月前
    0 15
    太厉害了啊!
    • 老男人游戏网配套论坛
      16
        立即登录 立即注册
发新帖
本论坛禁止发布SWITCH和PS4相关资源,若有其他侵权内容,请致邮3360342659#qq.com(#替换成@)删除。