免费畅玩VIM Adventures
1. 简介
VIM Adventures是一款用于学习VIM编辑器使用的在线网页端小游戏,通过这个游戏,我们能够快速掌握VIM的一些常用的基本命令,可谓是新手福音。
这款游戏有官方版本,官网:https://vim-adventures.com
但是在官方版本中,只有前三关是免费的,想要游玩之后的关卡需要购买证书,需要25美元,且只有6个月使用期。
由于价格对于很多学生党来说可能略高,而且在国内购买也不太方便,我选择寻找其他能够免费完整体验这个游戏的方法。
2. 免费畅玩
2.1. 开源项目
Github上曾有对该游戏进行逆向的项目,也有很多相关的folk项目,但这些项目都被游戏原作者要求下架了,这些项目现在要么显示takedown,要么就是404。
因此现在Github上已经找不到相关的项目了。
使用互联网档案馆查找这些项目曾经的存档,目前能找到且源码还能下载的只有https://github.com/wattry/vim-adventures
这个项目的归档:
https://web.archive.org/web/20201013182809/https://github.com/wattry/vim-adventures
该项目将VIM Adventures的核心代码逆向了出来,现在只需要将项目下载下来部署于本地,就可以游玩这个游戏的完整版本。
2.2. 使用方法简述
要想使用该项目,你需要将它部署在本地或者云端的服务器上。
原项目有打包好的可执行程序,设置一下环境变量,直接运行就能完成部署;也有完整源代码,需要配置好Nodejs环境,使用npm构建安装后才能使用。
另外,笔者又修改完善了该项目的代码和相关文件,就得到了两大修改后的新版本,一个是动态网页版,就是在原项目的基础上配置好了Nodejs的第三方库,只需要安装好Nodejs即可运行;另外一个版本是静态网页版,无须配置Nodejs环境,托管在静态服务器上即可运行。
Vim Adventures是可以保存和加载游戏进度的,原项目版本和笔者的动态网页版可以将游戏进度数据保存在服务器上;而静态网页版会将游戏进度数据保存在浏览器,只需要将一些资源文件放在静态服务器上就能运行,部署最方便。
由于移动端没有自带键盘,原版的VIM Adventures只能在PC端上的浏览器游玩,除非为移动端接上外接键盘,否则无法直接在移动端浏览器上使用,笔者为解决这一问题又针对移动端浏览器修改制作了兼容移动端的静态网页版,这一版本主要是为移动端添加了js虚拟键盘,详见下文的静态网页版部署。
如果你已经迫不及待想玩到这个游戏,笔者也将修改后的兼容移动端的静态网页版托管在了InfinityFree上,供大家免费游玩:
由于这个托管服务是免费的,游戏进度可能因托管服务失效而丢失,因此建议部署在自己的服务器上。
接下来介绍这三个版本的部署方式。其中第一种原项目直接部署和第三种静态网页部署的方法最简单,成本最低。
2.3. 原项目部署
原项目归档地址:https://web.archive.org/web/20201013182647/https://github.com/wattry/vim-adventures
原项目有2种部署方式,一种是直接下载打包好的程序,配置一下环境变量然后运行即可完成直接部署,最简单快捷;还有一种是下载源码并配置好nodejs环境,构建安装进行部署。
该项目的文件可以通过如下方法获取:
打开项目的Releases页面进行下载:https://web.archive.org/web/20201013182809/https://github.com/wattry/vim-adventures/releases/tag/v1.1.0
如果上述链接无法打开,可以使用直链下载:https://file.uhsea.com/2406/ac137c49d039e2c25d5ce932f112ceffKZ.zip
直链备用链接:https://files.catbox.moe/chq283.zip
具体需要用到哪些文件见下文。
2.3.1. 方法一:直接部署
1. 下载打包好的程序
根据自己的系统选择对应的程序,这里以Windows系统举例,需要下载vim-adventures-win.exe
,那么需要从Releases页面下载该程序,或者从直链下载得到的压缩包中找到该程序。
2. 设置环境变量
主要设置APP_DIR
和PORT
两个环境变量,前者用于指定游戏存档数据的保存位置,后者用于指定服务器监听的端口,有两种设置方法:
(1)方法一:
在程序运行前用命令行命令设置环境变量,比如在Windows下:
set APP_DIR=%USERPROFILE%\vim-adventures
set PORT=80
那么会将游戏存档保存在用户主目录的vim-adventures目录下,设监听端口为80。
(2)方法二:
在程序的同级目录下新建一个名为.env
的文件,在该文件中写入如下内容:
APP_DIR=$HOME/vim-adventures
PORT=80
作用同上。
3. 运行程序
2.3.2. 方法二:源码构建部署
从源码构建打包得到游戏服务端程序。
1. 下载并安装nodejs
https://nodejs.org/en/download
这里使用14.21.3
版本,其他版本在接下来进行构建时可能会报错。
2. 下载项目源代码
从Releases页面选择Source Code(tar.gz)
下载,或在直链下载压缩包中找到vim-adventures-1.1.0.tar.gz
下载完后解压缩
3. 进入工作目录
项目的根目录是vim-adventures-1.1.0
,我们需要进入到项目根目录中的vim-adventures
目录
cd vim-adventures-1.1.0
4. 设置环境变量
编辑项目根目录下的.env
文件:
HOST=http://localhost
# NodeJS default location
APP_DIR=$HOME/vim-adventures
APP_NAME=vim-adventures
PORT=80
APP_DIR
设置存放最终打包得到的程序的目录,需要设为绝对路径,APP_NAME
设置输出的程序名称,可以根据需要自行设置。PORT
设置端口。
5. 构建安装
npm run setup
完成后会在APP_DIR
目录下生成名为APP_NAME
的程序,比如在Windows下使用上述设置会在用户主目录的vim-adventures
文件夹下生成vim-adventures.exe
程序。
另外,在APP_DIR
目录下也会生成一个.env
文件,修改该中文件PORT
的值或使用命令行命令设置环境变量PORT
可以设置端口。
6. 运行
直接运行vim-adventures.exe程序即可运行,浏览器打开127.0.0.1就可以免费游玩了。
2.3.3. 其他方法
归档项目的主页有讲到使用docker部署的方法。
2.4. 动态网页部署
部署方法和上文中的原项目从源码构建部署方法相同,需要下载Nodejs,但不需要进行第4步构建安装的过程,避免了构建安装过程中可能出现的报错。
1. 安装Nodejs
2. 下载动态网页版文件vim-adventures-dynamic.zip
下载完后解压缩
3. 进入工作目录
cd vim-adventures-dynamic
4. 运行
node bin/www.js
5. 端口和文件保存路径设置同原项目部署方法
2.5. 静态网页部署
这里你需要一个静态服务器,例如nginx和apache,或者托管在免费的静态网站上,比如InfinityFree。这里以python示例:
1. 下载安装python
在windows下要将python添加到环境变量
2. 下载静态网页版文件
在这里,笔者根据不同的需求又制作了3个不同的静态网页版本,大家可以根据自己的需求下载相应的版本:
(1)仅支持PC的静态网页版
仅支持PC端,无须联网从CDN加载资源文件
(2)兼容移动端的静态网页版
兼容移动端和PC端浏览器,不兼容平板,需要联网从CDN加载资源文件
(3)兼容移动端的完全静态网页版
兼容移动端和PC端浏览器,不兼容平板,所有资源文件均托管于静态服务器上,可以部署于独立的局域网,无须访问互联网也可正常游玩
下载完后解压缩
3. 进入工作目录
4. 运行服务器
python -m http.server 80
这里设为80端口,浏览器打开127.0.0.1即可游玩
注意,静态网页版会将游戏进度数据保存在浏览器,如果浏览器数据清空,那么游戏进度也会清空。
3. 简单上手
游戏进度管理
1. 保存进度
:w filename
可以将当前游戏进度以文件形式保存,并将其命名为filename
2. 显示已有存档
:!ls
可以列出已保存的游戏进度
3. 载入存档
:e filename
可以载入名为filename的存档
4. 删除存档
:!rm filename
可以删除名为filename的存档
5. 载入指定关卡
:level n
直接载入第n关,这样的话即使没有保存进度也不用从第一关开始打了
其他相关的命令信息都可以在游戏界面的左下方找到。
4. 相关链接
-
在线打开即玩静态网页版:http://vim-adventures.free.nf
-
原项目归档:https://web.archive.org/web/20201013182809/https://github.com/wattry/vim-adventures
-
原项目文件直链下载2:https://files.catbox.moe/chq283.zip
-
兼容移动端的完全静态网页版:https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1712227832777/vim-adventures-full-static-mobile.zip
-
Github DMCA 2020-11-12-VIMAdventures.md:https://github.com/github/dmca/blob/fe3a3533c22817d674fec81fd4f814f7d3f187c2/2020/11/2020-11-12-VIMAdventures.md