
今天有个80后老哥,给我寄来一台老电脑,让我在装NAS时,给弄一些DOS怀旧游戏,这也触动了我的“情怀”。
我接触电子游戏可太早了,大约是在85年左右,学校机房老师为了提高学生们的兴趣,就用当时的宝贝“莱赛310”给我们玩儿电子“游戏”。游戏简单的不得了,基本上都是像素级的黑方块,即使这样我们也是玩儿的不亦乐乎,然后就跟着老师开始学习了Basic编程,从此走入了电脑的天堂。

HKC8800、中华学习机、苹果II、286、386……,真正玩上像样的游戏是用386DX,当时好像有雷曼、台湾麻将、国际象棋……,不过体验都一般,因为没有声卡。


到了Pentium(奔腾)586开始,声卡、 光 驱(当时这几样叫多媒体套件)开始配备,还有了“解压卡”用于看VCD。后来我把解压卡拆了,换了丽台WinFast S280的显卡,用XingMPEG Playerd软解压看VCD了(关于软解压这块,有机会再详聊),这时可玩的游戏就多了。

仙剑奇侠传、金庸群侠传、同级生、大富翁、大航海时代……

说到这,是不是70后、80后也开始“心动”了?下面就跟我做起来吧。
一、NAS环境
他寄过来的这台NAS硬件配置不高,是个联想的老电脑,我装的飞牛NAS。


CPU是赛扬G1840;内存8G;显卡就是核显的Intel HD Graphics;
原来硬盘坏掉了,我给他上了2块4T二手硬盘(只有1个硬盘架,手工再改出来一个硬盘位),还装了1块小固态,安装系统和做缓存加速。
由于他对文件安全要求高,担心硬盘损坏,因此2块硬盘做了RAID1,一对一复刻,但可用容量只有1块硬盘的容量。

应用安装了影视、相册、迅雷、Docker等

Docker中安装了文件检索、日历通讯录同步、月亮影视等,还装了一台Win10,主要为了记录微信聊天记录(其实还有别的好方法),因为他办公电脑有管控,无法上外网。

没想到这个核显Intel HD Graphics集成了GPU,相册的AI识别、影视的动态编码还真就用上了,基本满足了他的日常使用要求。
二、项目安装
这个项目来源于桌面的DOS模拟器,可以模拟DOS环境,在 Windows 下可以重温DOS游戏。现在可以安装到NAS的Docker中,我们打开浏览器可以随时体验青春时光。
1.下载镜像
浏览器登录飞牛NAS页面,进入Docker面板,如果没有开启需要手工启动,具体操作可以参考我以前的文章。
点击 镜像 仓库→输入关键字查找→下载镜像




2.启动容器
本地镜像→dosgame-web→运行


开机自动运行

注意端口不能重复

3.访问应用
容器→dosgame-web→快捷访问→262

此时进入新的浏览器页面(也可以使用http://nasIP:端口/直接访问),可以看到应用界面

4.开始游戏
下以“仙剑奇侠传”为例,单击游戏图标

页面跳转到游戏详细页→单机鼠标启动

DOS模拟器开始启动

可以看到熟悉的DOS界面

游戏开始了

听着熟悉的声音,看着熟悉的画面,激动吧?

可以全屏以后再游戏,体验感更加强烈!


5.更多游戏
关闭全屏后,单击“游戏列表”

能够看到还有很多游戏

默认的情况下只有42款

其实这个项目支持到最多1898款,这里面肯定有你要找的。

三、更多游戏获取
目前这个项目实际上支持多达1898款DOS游戏,获取这些游戏前我们先说说这个项目有些列表的实现原理。
1.原理
项目/app/static/games路径下,是游戏压缩包、游戏配置、截图存放的地方。用户访问项目后,程序在/app/static/games读取games.json文件,在页面上呈现游戏名称、封面。

封面图片在/app/static/games/img的各个游戏名称文件夹下,统一文件名是cover.png。

当用户单击游戏列表,显示出游戏详细页面时,还是读取games.json显示游戏简介、操作按键、攻略等信息。

当用户开始玩儿游戏时,实际上是读取app/static/games/bin下的zip包,都是用游戏名字直接命名的。

注意一个文件,文件名:1898all_games.json 。它存放着全部1898个游戏的说明、图片及启动程序名称,如果游戏压缩都获得了,是可以用来替换games.json文件,所有游戏就都显示在列表中了。

此外,还有个all-geme-list.txt文件,这里存放着所有游戏压缩包的下载地址

2.游戏下载
进入docker容器的ssh终端:
Docker→dosgame-web→更多→终端

单击第二项后面的连接

进入app/static/games/

获取all-game-list.txt文件内容,将链接放在下载软件中进行下载。

3.替换json文件
使用命令:
mv game.json ~ game.json
cp 1898all_game.json game.json
4.重启容器
刷新游戏列表,可以看到游戏总数是1898了

5.测试
我们用佐罗游戏测试

单击进入详细页面再启动游戏


5.其它方式的研究
(1)克隆chinese-dos-games
网上有人介绍,克隆另一个项目的游戏数据
git clone https://github.com/rwv/chinese-dos-games.git
然后将/chinese-dos-games映射给dosgame-web,这样就可以完成了所有游戏的获取。
(2)手工按需添加
上面的这种方法需要下载36GB+全部数据,很多不要游戏的也下来了,况且是连接到github,网速也不行。因此有了下面的尝试:
首先登录https://dos.lol/网站,选择桌面版→下载在线 DOS 游戏桌面版→找Windows便携版下载,程序运行后,选择要下载的游戏,直到游戏模拟器运行。


开始→运行→%AppData%\dos.zczc.cz-electron\GameMisc\GameFiles
转到用户路径下,我的电脑:
C:\Users\teacher\AppData\Roaming\dos.zczc.cz-electron\GameMisc\GameFiles

里面的文件夹就是游戏文件,压缩为对应汉字名称+zip就可以了
注意:需要进入目录后压缩

将这些文件放在Docker的/app/static/games/bin下(用映射的自建的文件夹【如:games-zip】在CP过去)。在/app/static/games/img建立游戏中文名文件夹,在其下防止游戏封面图片(封面图片可以在网站下载),文件名是cover.png。

1898all_games.json可以不编辑,直接改为games.json。
Docker的容器需要重启启动一下,玩游戏的时候可以自己选择下载过的。