搭建游戏模拟器服务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
文字参考:
评论区