侧边栏壁纸
博主头像
phoenix-blog 博主等级

悄咪咪的,怕发现

  • 累计撰写 13 篇文章
  • 累计创建 23 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

搭建游戏模拟器服务EmulatorJs

phoenix
2024-02-19 / 0 评论 / 0 点赞 / 308 阅读 / 0 字 / 正在检测是否收录...

搭建游戏模拟器服务EmulatorJs

目录

EmulatorJs可以让我们在浏览器运行全能模拟器RetroArch玩各种各样的怀旧游戏,个人感觉EmulatorJs的加载速度和使用体验都比RetroArch-Web强多了。

搭建教程

前提:宿主机已经安装完成docker和docker-compose

首先建文件夹,用来存放配置文件和游戏文件

mkdir -p ./emulatorjs/emulatorjs/{config,data}

之后运行启动命令,DockerHub地址:https://hub.docker.com/r/linuxserver/emulatorjs,在此感谢为EmulatorJs项目和RetroArch项目做出贡献的人们

创建配置文件:docker-compose-emulatorjs.yaml

version: '3.0'
services:
    emulatorjs:
        image: 'linuxserver/emulatorjs:1.7.2' # 容器镜像
        volumes:
            - './emulatorjs/data:/data'  # 数据文件目录
            - './emulatorjs/config:/config' # 配置文件目录
        ports:
            - '8087:3000'  # 后台端口
            - '7777:80' # 前台访问游戏界面的端口
        environment:
            - TZ=Asia/Shanghai # 时区
            - PGID=1000  # 指定用户ID=1000、指定组ID=1000,可以解决-v挂载目录造成的文件权限问题
            - PUID=1000
        container_name: emulatorjs  # 容器名称emulatorjs
        restart: unless-stopped # 容器启动策略
docker-compose -f docker-compose-emulatorjs.yaml up -d

下面命令可以看容器日志

docker logs -f --tail 1000 emulatorjs

如果是云主机,容器启动运行正常后记得开放宿主机的7777端口(容器内80端口)和8087端口(容器内3000端口)(在防火墙/云安全组配置)

使用教程

浏览器访问宿主机ip:8087(容器内3000端口)

下面是默认界面

点击Download下载文件

点击File Management管理游戏文件

进到后台管理界面,之后下载模拟器运行所需的一些文件,如果下载中断了,刷新页面再点下载,会继续下载

下载完成点击File Management,进入文件管理页面,点击gba游戏格式,点击roms进入游戏文件夹

右键空白处,点击upload,选择游戏文件上传(这里用恶魔城晓月圆舞曲来作为案例,因为我玩过哈,后续准备打包部分常见游戏提供下载)

点击Upload弹出上传界面,点击选择文件上传游戏文件

之后点Rom Management,点gba的scan,之后点左侧gba

点击Scan扫描游戏文件

点击左侧gba进入导入游戏界面

点击Add All Roms to Config导入游戏文件

之后gba游戏会被添加成功,其余游戏都要这么添加一遍,最后访问宿主机ip+7777就可以愉快玩耍了

键盘↑↓切换模拟器,→前进,←返回

电脑上默认基本按键对应

方向键:键盘方向键

A:

S:

Z:

X:

L键:键盘Q

R键:键盘W

模拟器选择控制界面

进入游戏后按F1可以打开RetroArch的设置界面,点击Controls菜单可以改按键,支持手柄

RetroArch设置界面

手机浏览器也可以玩(up用的via浏览器,浏览器设置全屏),上滑隐藏Tab栏,左上角按钮可以打开RetroArch设置界面

关于存档

模拟器的存档似乎保存到了浏览器的缓存里,如果把浏览器缓存清了,存档就没了

我们需要先在上传游戏的文件管理界面创建一个用户

创建用户

之后在游戏主界面点击左上角的文件管理图标

点击左上角图标进入文件管理界面
先在左上角输入用户名密码进行登录,登录后可以在文件管理界面做很多事

一般我也就是游戏存档后,点击push ,到其他设备上,登录用户后点击pull拉取游戏存档即可

访问加密(可选)

如果想输入正确的用户名密码才能进入游戏界面,可以用Nginx将宿主机端口转发一下,Nginx配置访问密码

容器启动时配置 -p 5233:80 -p 5234:3000,5233、5234端口不需要对外开放,之后Nginx进行如下配置

server {
  #服务器IP地址
  server_name  服务器IP地址;
  #是否校验用户名密码
  auth_basic on;
  #这里配置htpasswd命令生成的密码文件(比如文件名frisk,放到了/etc/nginx/password/目录下)
  auth_basic_user_file /etc/nginx/password/frisk;
  #请求体最大1G,设置太小的话,管理界面上传游戏文件时Nginx会提示上传失败
  client_max_body_size 1024m;
  #将请求转发到5233端口
  location / {
    proxy_pass [http://localhost:5233](http://localhost:5233);
  }
  #监听7777端口
  listen 7777;
}

之后访问宿主机ip:7777,输入用户名密码之后就能进入游戏页面

生成密码文件

密码文件生成方法

yum install httpd-tools
htpasswd -cb ./frisk chara sans

执行后会在当前目录生成名为frisk的密码文件,登录的用户名chara,密码sans

可以理解成手动版的云存档功能,比如说在手机浏览器上玩RPG类的游戏玩到一半,想在电脑浏览器上接着玩,就可以在手机上将存档push到服务器上,之后在电脑上将存档pull下来接着玩。

后记

可能有人想问,up为什么要费这么大劲弄这个,用模拟器玩不香吗?小学的时候,在玩游戏的时候上打开4399玩过一阵子宝可梦金银,那时候曾幻想拥有一个只属于自己的游戏网站。可能up想放下小时候的执念,也可能up仅仅想重温小时候在web页玩宝可梦的美好回忆吧。​

关于文章,还有其他问题或者需要补充的请加个人QQ

文字参考:

怀旧游戏web端EmulatorJs的Docker搭建教程 - 哔哩哔哩 (bilibili.com)

0

评论区