Origin游戏下载加速——以Battlefield 3为例

想买Battlefield 3很久,但一直舍不得花钱。只是买了促销价的Battlefield bad company 2。
这次EA居然把Battlefield 3给免费了——感谢EA,但首先感谢Value做的表率!

但几年过去,Origin在中国大陆的下载速度一直没改进,CDN也似乎只是个摆设。网上流传的hosts大法并不起作用。

碰巧,最近在读《HTTP权威指南》,想起开Wireshark抓个HTTP包分析——正好抓包时,Origin正下着Battlefield 3。于是可以看到下面一幕:
Battlefield 3

可以看到,Origin使用HTTP下载游戏数据,host为akamai.cdn.ea.com(而非网上hosts大法提的ams.akamai.cdn.ea.com),方法为GET,GET目标是一个ZIP压缩文件,每次都指定一个文件范围。于是我们就可以得到一个直接下载链接(含后面的认证参数):
http://akamai.cdn.ea.com/eamaster/s/p/eagames/bf3/bf3_patch8_ww_20130227.zip?sauth=1401509472_d7c14785429d6cca92d09ec8352b99c5
用迅雷下下来,得到完整的zip文件,解压覆盖到Origin GamesBattlefield 3。再启动Origin,就可以看到我的游戏中Battlefield 3的状态由“正在下载”改为“正在安装”。

安装成功后,别忘了检查更新——其实就是验证文件。

Posted in Uncategorized | Tagged | Leave a comment

双显卡机器安装Debian Wheezy运行Steam游戏

我机器是Dell inspiron 14r 7420,显卡为Intel + Nvidia。

想要在Debian上运行Steam游戏,会面对两大难题:
硬件支持,特别是双显卡切换的支持。
游戏支持。

真不幸,同时把Linux两大硬伤都给碰上了。
双显卡切换的问题:可以用Bumblebee解决,虽然不是很稳定,但有个解决方案总比没个好。另外,Nvidia官方对Linux双显卡切换的支持已经在路上了,估计不会很远,也不会很近。
客户端和游戏支持的问题:虽然Steam官方支持大家安装Ubuntu系统运行Steam,虽然Steam还推出了基于Debian sid的SteamOS,虽然Steam还允许开发者自行给Steam for Linux客户端打包,但就是没有官方的Steam for Debian wheezy客户端——无论Steam官方,还是Debian官方。还好,Steam支持开发者自行打包Steam for Linux客户端,让我们有非官方的Steam-Installer-for-Wheezy。现在,这个项目已经变得实际可用!

第一步:安装Debian,之后就该立即安装Bumblebee。照着Debian官方wiki指示安装即可。
安装Bumblebee后,测试下Bumblebee是否可用。执行:optirun glxgears -info,如果执行出错,按照官方说明排错;如果没错,同时执行lspci | grep VGA,查看独显是否由ff状态改为非ff状态。
独显激活时:
wencan@debian2014:~$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 640M] (rev a1)

独显未激活时:
wencan@debian2014:~$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 640M] (rev ff)

optirun glxgears -info输出的FPS值可能并不如你想象的那般大,参见这里——重点是把独显启用。
如果不是双显卡,跳过这一步。

第二步:安装Steam-Installer-for-Wheezy。先执行steam-debian-depends.sh再安装steam-debian-*all.deb包。在控制台试运行steam-debian,如果程序报错或意外退出,可以在控制台得到错误信息。
如果报:/home/nomad/.local/share/Steam/steam.sh: line 755: 4437 Segmentation fault $STEAM_DEBUGGER “$STEAMROOT/$PLATFORM/$STEAMEXE” “$@”之类的错误,尝试改为运行LC_ALL=C steam-debian,如果该问题解决,应该考虑修改/usr/bin/steam-debian,在命令前加上LC_ALL=C。

第三步:安装并运行Steam上的游戏——暂时不通过Bumblebee运行。
如果报:”Required OpenGL extension “GL_EXT_texture_compression_s3tc” is not supported. Please install S3TC texture support.”之类的错误,安装libtxc-dxtn-s2tc0:i386。
如果游戏提示“Please install ‘en_US.UTF-8’ locale”,且游戏中中一些中文字不能显示——比如TF2服务器列表中的中文字,执行 dpkg-reconfigure locales,选择en_US.UTF-8注册。

第四步:修改游戏的启动参数。将启动参数设为:primusrun %command%,通过primusrun来运行游戏。

第五步:优化。
Bumblebee 使用你的 Optimus NVIDIA 显卡来渲染一个配置了 VirtualGL 的不可见的 X 服务器,并且将结果传输到你当前的 X 服务器上。传输之前将压缩侦,这可以节省带宽并且能够用于加速 bumblebee 的优化。
压缩方法会影响 GPU性能和GPU使用,压缩方法(比如 jpeg)会最大限度的使用 CPU,并且尽可能少的使用 GPU;非压缩的方法最大限度的使用 GPU,而尽可能少的使用 CPU。

通过指定bumblebee配置中的压缩方法,来影响渲染的性能。
压缩方法如有: jpeg, rgb, yuv;非压缩方法有: proxy, xv。默认是proxy。
通过”optirun -c 方法名 glxgears -info”来观察各个方法下的渲染性能。结果表明使用jpeg,比使用默认的proxy,PFS值高出一倍还要多。
修改/etc/bumblebee/bumblebee.conf中optirun段VGLTransport为jpeg,重启bumblebeed服务。
现在,Debian上游戏性能,应该与Windows上的相差不大,也许还要高出些。

如果以上步骤和方法不能解决你的问题,建议你使用Ubuntu+Gnome。如果你向Steam官方客服反馈你的问题,估计你会得到一样的答案,因为Steam客服就是这么回复我的。
另外,你还可以等待相关程序更新,和相关技术进步。时间已经证明,后一种方法总是能解决我们的问题……

参考:
https://wiki.debian.org/Bumblebee
https://wiki.archlinux.org/index.php/Bumblebee_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29
https://github.com/Bumblebee-Project/Bumblebee/wiki/FAQ
https://github.com/amonakov/primus#faq
https://support.steampowered.com/kb_article.php?ref=6316-GJKC-7437
https://github.com/GhostSquad57/Steam-Installer-for-Wheezy/issues/27

Posted in Uncategorized | Tagged , , , | Leave a comment