前言

     最近我在玩一些老游戏的时候,发现游戏内有Force Feedback选项,比如下面图片所展示的两个游戏,分别是《星球大战:X翼联盟》和《星球大战:侠盗中队》。

《X翼联盟》的游戏控制器设置页面

《侠盗中队》的游戏控制器设置页面

       实际上这两个游戏是上个世纪九十年代的飞行射击游戏,均支持飞行摇杆,手柄等带有摇杆的外设。在那个时代,实际上就已经出现了带有力反馈功能的飞行摇杆,这也就是为什么这些游戏中会带有这个功能。

微软SideWinder Force Feedback Pro

       上图就是微软在1997年推出的一款力反馈摇杆,当时这款摇杆甚至还不是USB接口,用的是GamePort。在2005年Xinput正式推出之前,PC上支持控制器的游戏,大多都使用Dinput协议,因此当时游戏的各种反馈效果,比如振动,力反馈等,也是通过该协议输出给手柄或者是控制器的。

       今天我们用的大部分手柄都已经不再使用Dinput协议了,但是二者都是基于HID规范,也因此很多使用Dinput协议的老游戏,也能识别到现代控制器的按键和轴的信号,但也会导致一些功能的缺失,比如力反馈和振动等。

探索过程

为Xbox360开发的Dinput力反馈驱动

       当然,得益于万能的玩家社区,现在已经由玩家开发出一套驱动,能将dinput的力反馈、振动信号转发到xinput设备上了。因此通过这个驱动,使用Xinput的手柄也能在这些老游戏中体验到振动了。一位日本的玩家为使用Xbox360协议的控制器开发了一个力反馈驱动,这个驱动安装后,如果是使用Xbox360协议的手柄,在玩例如《星球大战:X翼联盟》这样的游戏的时候,在设置内开启力反馈即可获得手柄振动效果。

这是驱动的下载链接:

为Xbox360开发的Dinput力反馈驱动

https://lavendy.net/special/driver/xi/index.html

驱动的下载页面

驱动的安装界面

       当然,这个方法也并不是万能的,比如当我使用XboxOne手柄玩这些游戏时,仍然没有振动效果。但这个比较好解决,使用ReWASD或者是X360ce,抑或是XOutput等软件把手柄映射成Xbox360手柄即可。

       另外它在一些游戏内支持也不算完整,比如我前文提到的《星球大战:侠盗中队》,当我在使用Xbox360协议的手柄进行游玩的时候,振动是有,但不完整,它只会在机体发生碰撞的时候会振动,开火,或者是减速加速都没有振动。

Xidi的使用

       接下来我就要找其他的方法,我查看了PCGW的控制器专题后,看到两个插件可以解决类似的问题,二者的功能比较类似,它们可以将Dinput转化为Xinput,首先我先尝试了Xinput Plus,用起来很简单,但实际上仍然存在bug,我在《侠盗中队》中使用后,手柄一开始会一直振动,直到玩家在关卡重生后才正常,然后在《X翼联盟》则是几乎无效。然后我尝试了另外一个插件,那就是Xidi,它没有图形化的设置页面,需要玩家自行编写配置文件,虽然看起来很麻烦,但我用插件,成功实现了在《侠盗中队》的手柄振动。

Xidi的GitHub主页:

Xidi的GitHub主页

https://github.com/samuelgr/XidiGameConfigurations

       xidi的用法也比较简单,想到它的GitHub上下载好文件,然后解压,其中有x64,win32两个文件夹,根据游戏是32位还是64位,选择将文件夹中的dll文件拖入到游戏可执行文件所在的目录下,比如《侠盗中队》的就是.....\steamapps\common\RogueSquadron\ROGUE(Steam版),然后在这个目录下创建一个“xidi.ini"配置文件,可以先创建一个txt文件,然后修改后辍为ini即可。

       另外,Xidi的作者也为多个游戏做好了对应的配置文件,这些可以在xidi的GitHub上找到:

Xidi作者的配置文件

https://github.com/samuelgr/XidiGameConfigurations/tree/master/GameConfigurations

《侠盗中队》的游戏根目录

       接下来是对配置文件进行编辑,使用Xbox手柄或者是类似Xbox手柄的盒友们可以参考的我的配置文件,复制进去保存即可。

\\这是我的xidi配置文件

[Mapper]

Type = XInputSharedTriggers

Type.1 = XInputSharedTriggers

[Properties] MouseSpeedScalingFactorPercent = 100 UseBuiltInProperties = yes

[CustomMapper:DefaultForceFeedbackSettings]

ForceFeedback.LeftMotor = MagnitudeProjection(X, Y)

ForceFeedback.RightMotor = MagnitudeProjection(X, Y)

[Log] Enabled = no

Level = 1

       当然,这个遇到个别情况下,它仍然需要更复杂的设置才能正常使用,比如前面我提到的《X翼联盟》,我就懒得深入去研究了,我的手柄可以在Xbox360和XboxOne两种协议之间切换,所以对我来说不成问题,并且我也有了ReWASD。

       另外,PCGamingWiki也记录了这些带有力反馈功能的游戏,如果盒友们有玩到列表中的游戏,可以参考我的这篇文章,来恢复游戏中的振动或力反馈效果。

力反馈游戏列表:

PCGamingWiki的力反馈游戏列表

https://www.pcgamingwiki.com/wiki/List_of_games_that_support_TouchSense_force_and_haptic_feedbacks

小结

        这篇文章只是我在玩老游戏时的一些初步的探索成果分享给大家,是抛砖引玉,如果大家在这方面有更好的方案也可以和在评论区分享出来。  

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com