【挖坟】卡片电脑挑战PC游戏

发表时间2016-12-17 21:05

原发表在我已经炸了的个人博客qqfloatingice.com

近些年来卡片电脑这一概念十分流行,虽然在笔者看来也不过是ARM开发板运行个Linux套了个电脑的名头而已。实际上许多产品性能孱弱,甚至连基本办公需求都无法满足(笔者实测用树莓派1 Model B运行LibreOffice写稿,平均半小时都要奔溃一次,以至于不得不随时Ctrl+S)。然而既然卡片电脑使用的是手机、平板的处理器,同样随着近几年手机、平板处理器的快速发展,卡片电脑的性能也获得了大幅提高。我们这次的测试,就是测一测这些卡片电脑运行传统PC游戏的表现

其实可以看见不少人用这类卡片电脑自制游戏机,不过大多是用模拟器来运行一些类似FC、GBA的游戏。虽然确实是满满的游戏性,但是我们今天要挑战的是PC游戏。

容楼主再废话一句,树莓派Zero发布(u1s1现在树莓派已经到4了。。。),只要5美元,貌似单纯的性能价格比终于能挑战我大AM2/945了?不过,如之前所说,打个字都成问题

首先上挑战的第一个游戏,DOS版仙剑奇侠传。由于只要80386处理器就能运行,似乎毫无压力。随便是用x86模拟器还是用移植版sdlpal都可以流畅运行。测试平台:树莓派1B,700MHz ARM11+512MB RAM

像DOOM、大富翁这些经典的dos游戏都是如上面所说的仙剑一样的情况,都是可以畅玩没有任何问题,这里也就不一一演示。

接下来是要挑战的第二个游戏,Tux Racer。这是845G的集成显卡也可以流畅运行。而且由于是Ubuntu/Debian的源中包含的游戏,安装过程也是十分简单,只需要在Synaptic包管理软件里面安装就可以。那么这款游戏能否在树莓派上运行呢?

继续玩游戏的话题。如果连TuxRacer这种最基本的3D游戏都玩不了,那还有什么别的希望?仔细研究,问题还是出在对OpenGL的支持上。有没有什么支持OGL的卡片电脑呢?大家还记得老黄的Tegra么

就是这颗U,完整支持OGL4.4和DX11。然而用在小米平板上,充其量也就是给猫咪取暖罢了,因为安卓上就没有程序能去调用那些API

然而,如果是在卡片电脑上,可以安装完整的Ubuntu/Debian系统,是否证明就可以运行Tux Racer了呢?为此,笔者特意准备了一块Jetson T

不过当然啦,花1680就为了测这个是不太值,于是笔者花了280买了块故障板来练练手,修好能玩,修不好就当充值老黄信仰。

大体维修思路还是根据症状,看原理图进行修复,具体过程略,毕竟不是这次的重点。

好在问题并不严重,随便飞了几条线就好了。继续来测试,Tux Racer一次成功

第三个要挑战的和第二个差不多,也是Ubuntu/Debian原生支持的3D游戏。这款游戏名为0AD,玩法和画面很接近帝国时代3。实测GM945最低画质下帧率不足5fps。那么TK1的表现又如何呢?安装后一测,表现喜人,游戏开始时帧率稳定在37fps以上,画质为最高

第四个要调整的就是MC,但是这次,TK1也跪了,运行一段时间后会自动退出。稍微研究了下发现,MC中使用了一些编译好的运行库,也就是Windows下的DLL。编译好也就意味着这是X86或者X86_64的代码,不能在ARM下运行。不过好在这些库都开源,我们可以自己编译ARM的版本

接下来安装oracle的JRE:
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
提一句,现在已经有java9可供下载,但是还是早期测试,不建议使用。java7和8应该都可以(笔者用了8),installer会安装这个版本下最新的update版本,而且可以自动识别arm/x86/x86_64

接下来来处理这些讨厌的so文件(相当于windows的dll),他们只支持x86或者x86_64

结果是出错了。看编译错误,在InfoUtilFactory.java的308行出现了调用参数不匹配的问题。解决方法就是修改代码,对症下药,让他匹配,再编译就是BUILD SUCCESS了

lwjgl虽然确实会编译一个openal的库,但是实际上这个库只是他自带的一个x86共享库打了个包而已。所以,继续自己编译...先装cmake:
apt-get install cmake
对了建议开两个控制台窗口,一个给root权限一个不给,编译用没有权限那个,不然编译出来的库还得自己全部chown一下。
下载以及编译:
wget http://kcat.strangesoft.net/openal-releases/openal-soft-1.15.1.tar.bz2
tar -xvjf openal-soft-1.15.1.tar.bz2
cd openal-soft-1.15.1/build/
cmake ..
make
编译好后应该会生成一个libopenal.so.1.15.1

接下来把编译好的东西扔到mc里面替换掉原来的,在lwjgl/libs/linux下面有liblwjgl.so和libjinput-linux.so,复制到你mc下面有这个文件的目录(.minecraft/versions/1.8/1.8-natives),以及openal-soft-1.15.1/build下面的libopenal.so.1.15.1,重命名为libopenal.so,复制到之前的地方覆盖掉

![]https://i.loli.net/2020/04/09/CukIQVWioDehy4F.jpg

这样只要java -jar HMCL-2.3.5.6.jar,然后按照PC的方法启动游戏就可以了!Forge也完全没有问题哦!

结果是,在低画质下,如果站着不动,fps可以到100以上,但是一移动就会立刻掉到10以下,完全不能玩,也是说明tk1这个平台特点还是低U高显

但是要说明的是,前面讲的情况是安装了Forge,如果没有mod,游戏绝对可以流畅运行,fps基本可以稳定在100以上,最低也不会低于60,完全不会影响正常游戏

对了,实测GLSL Shader Mod不兼容,会出现GL error 0x0502,没有研究具体原因。

psp模拟器测试来了。psp模拟器也是launchpad里面自动编译的软件,并且支持armhf(hf=hard float,硬件浮点,不像intel从486开始就全面整合了浮点单元(80387),许多较为早期的arm芯片都没有整合硬件浮点)。那么来安装测试下:
add-apt-repository ppa:ppsspp/stable
apt-get update
apt-get install ppsspp
装完就可以打开了。操作和Android、iOS上一样。