EmulatorJS 3 步跑通:浏览器模拟器前端,本地就能开玩
【免费下载链接】EmulatorJSA web-based frontend for RetroArch项目地址: https://gitcode.com/GitHub_Trending/em/EmulatorJS
想在网页里挂一个能跑老游戏的入口,又不想自己搭模拟器后端?EmulatorJS 是一个浏览器模拟器前端,把 RetroArch 的模拟核心搬进网页,打开就能拖 ROM 开玩,不用装任何客户端。
它怎么在浏览器里跑起 RetroArch
它本质是 RetroArch 的网页前端:页面先加载 data/ 下的核心文件(用 wasm 编译出来的模拟器内核),再把你给的 ROM 喂进去,画面和声音就在浏览器里渲染出来。核心逻辑在 data/src/emulator.js。跟装一套本地模拟器不同,它没有客户端要装,浏览器本身就是运行环境,这也是它最省事的地方。
本地跑通只需两步
最省事的一条路是先本地跑起来确认能玩,再谈怎么部署。仓库只读,先克隆到本地操作:
git clone https://gitcode.com/GitHub_Trending/em/EmulatorJS cd EmulatorJS npm i && npm run start起好后在浏览器打开 http://localhost:8080/,页面中间有个拖拽区,把一个 ROM 文件拖进去就能开玩;跑通这一步,后面的路才顺。起的服务就是仓库自带的 http-server,跑在 8080 端口,停掉用 Ctrl+C 就行。没有 Node 环境的话,仓库里也放了 serve.py 可以临时起个服务顶一下。
按你的用法挑一条路
三条常见用法,各说两句,先对号入座。
塞进博客或网站里
把模拟器嵌进你自己的页面,只需设几个全局变量再加载 data/loader.js。
window.EJS_player = '#game'; window.EJS_gameUrl = 'roms/xxx.nes'; window.EJS_core = 'nes'; window.EJS_pathtodata = 'data/'; window.EJS_startOnLoaded = true;容器就是页面里一个 id 为 game 的 div,脚本路径写成 data/loader.js。路径统一指向同一份 data/ 目录,核心和前端才不会找错地方。EJS_core 支持 nes、snes、segaMD 这类核心名,具体看核心包(data/cores/)。
给自己搭一台本地游戏库
自己玩就沿用上面本地那步,想多装点主机核心再补一条命令:
npm install @emulatorjs/cores装完核心文件落到 data/cores/,拖 ROM 时页面会按扩展名自动认。界面默认英文的话,设一下 window.EJS_settingsLanguage 就能切语言。
给团队开一个共享入口
多人共用就把页面挂到一台常开的服务器上,浏览器直接访问。游戏文件(ROM)放在服务器某目录下,用 EJS_gameUrl 指向它即可。发布前压缩一下脚本能明显加快首屏,做法见 minify/README.md。这条多数小团队用不上,先别急着上服务器。
卡住时先看这几条
下面几条覆盖了最常见卡点,按症状对一步操作。
- 页面空白、游戏不出来:多半是 EJS_pathtodata 没配对,确认它以斜杠结尾并指向真正的 data/ 目录。
- 某个核心跑不了:该核心没下载,跑 npm install @emulatorjs/core-<核心名> 补上。
- 报 threads 相关提示:部分核心要 EJS_threads,本地 demo 页已有开关,线上得配 SharedArrayBuffer 响应头。
- 界面是英文:设 window.EJS_settingsLanguage,中文文件在 data/localization/zh.json。
先把本地那步跑起来,打开 8080 端口拖个 ROM 确认画面能动,再决定是塞进博客还是上服务器。
【免费下载链接】EmulatorJSA web-based frontend for RetroArch项目地址: https://gitcode.com/GitHub_Trending/em/EmulatorJS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考