前言
最近我在玩一些老游戏的时候,发现游戏内有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主页:
https://github.com/samuelgr/XidiGameConfigurations
xidi的用法也比较简单,想到它的GitHub上下载好文件,然后解压,其中有x64,win32两个文件夹,根据游戏是32位还是64位,选择将文件夹中的dll文件拖入到游戏可执行文件所在的目录下,比如《侠盗中队》的就是.....\steamapps\common\RogueSquadron\ROGUE(Steam版),然后在这个目录下创建一个“xidi.ini"配置文件,可以先创建一个txt文件,然后修改后辍为ini即可。
另外,Xidi的作者也为多个游戏做好了对应的配置文件,这些可以在xidi的GitHub上找到:
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