前言
我在上一篇文章中介绍了如何基于emulatorjs的docker来部署web端怀旧游戏模拟器的详细步骤(参见文章:使用docker基于emulatorjs部署web端怀旧游戏模拟器),但是最后却留有一个非常影响游戏体验的问题,那就是默认按键配置不合理:上下左右方向键由位于全键盘右边的↑ ↓ ← →四个按键来控制,而常规的AB按键(跳、子弹)由全键盘最左边的X和Z键来按,对于绝大部分人来说,控制方向是左手,跳和子弹是用右手来控制,这样岂不是需要交叉手玩?这能忍?
于是研究折腾了一番,先是想通过修改emu-main.js文件里的按键映射来直接修改默认配置,但是失败了,貌似还需要修改loader.js文件里面emu-main.js和emulator.js的加载顺序,要emulator.js先于emu-main.js加载,研究了半天没搞懂,不是编程出身的劣势被展现得淋漓尽致。。。于是只有改变思路,从profile配置文件的角度出发,最终解决了这个问题。
思路
默认情况下,当你使用浏览器访问前端游戏web页面的时候,如果通过F1键进入RetroArch模拟器的配置界面并通过”Settings”-“Input”选项设置一次并保存以后,其他游戏也可以使用这个按键设置,不过前提是通过同一个浏览器访问,因为配置文件(retroarch.cfg)是和浏览器绑定的(其实还有访问的网址,严格意义上来说应该是和浏览器以及访问的网址绑定)。那么,只要能让配置文件不只存放在一个浏览器”本地”,还能”同步”到相同机器的不同浏览器,甚至不同机器的不同浏览器,就能实现按键配置跟随了。那么怎么解决这个关键问题呢?那就是profile(配置文件)。
所以其实就跟登录具体账号然后Pull配置一样,default只是在不登录的情况下Pull配置,所以其实并没有真正实现底层修改默认配置,而是仍旧通过配置文件同步的方式间接来实现。