前言
最近我在玩一些老遊戲的時候,發現遊戲內有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