Final Fantasy XIV 手柄输入偶尔会无响应的解决方案

タイトル:コントローラーが時々操作不能になるの対処法

本篇博文附带日语翻译。日本語訳付き(間違えたところがあったら教えてください)。

TL;DR: 用手柄游玩FFXIV的时候,如果发生硬件变动(包括新增和删除设备),将会导致手柄短暂失去响应。这是游戏本身的问题,但我们可以通过避免设备变动的发生来规避它。

まとめ:コントローラーでFFXIV遊んでいるとき、デバイスが検知もしく削除された場合、コントローラーが数秒間操作不能になる。これはゲーム自体の問題ではあるが、デバイスの検知・削除を避けることで、この問題を回避することができる。

症状

在Windows用手柄游玩的时候,偶尔会有几秒钟无法操作,此时会重复之前输入的指令。Windowsにてパッドでプレイしているとき、たまに数秒程度操作が受け付けられなくなり、直前の入力内容が繰り返されます。

  • 不管按哪个按钮都没有反应。 どのボタンを押しても反応しなくなる。
  • 如果正在移动(左摇杆)的话,就算松开摇杆角色也会继续移动(无法控制)。移動(左レバー操作)をしていると、上記と同じでレバーを離しても移動し続ける(操作不能)。
  • 如果正在移动视角(右摇杆)的话,就算松开摇杆视角也会继续移动(无法控制)。視点移動(右レバー操作)しているとレバーを離しても、1~2秒間視点が動き続ける(操作不能)

解决方案 / 対処法

执行PowerShell脚本以监控是什么硬件发生了变动。PowerShellスクリプトを実行して、検知・削除されたデバイスを特定する。

脚本内容如下。スクリプトの内容は以下通り。

# Device Manager 
# 0     Other Devices
# 1     Error Devices (Yellow Bang)
# 2     Camera Number

function GetDevStatus {
    $Device_other = @()
    $Device_yellowbang = @()
    $CameraNum=0
    $All_List = Get-WmiObject -Class Win32_PNPEntity
    foreach ($i in $All_List) {
        if ($Null -ne $i.Name  -and $Null -eq $i.PNPClass) {
            $Device_other += ($i.Name)
        }
        if ($i.Status -eq "Error") {
            $Device_yellowbang += ($i.Name)
        }
        if ($i.PNPClass -eq "Camera"){
            $CameraNum+=1
        }
    }
    return $Device_other, $Device_yellowbang,$CameraNum
}

function CatchChange {
    Write-Host("************Listening Device Change************")
    $device=Get-WmiObject -Class Win32_PNPEntity
    $device_num=$device.Length
    while ($device_num -eq((Get-WmiObject -Class Win32_PNPEntity).Length)){

    }
    if ($device_num -gt((Get-WmiObject -Class Win32_PNPEntity).Length)){
        Write-Host("Remove Device")
    }
    else{
        Write-Host("Add Device")
    }
    $device_Change=Get-WmiObject -Class Win32_PNPEntity
    $device_Compare=Compare-Object $device $device_Change
    Write-Host($device_Compare.InputObject.Name) 
}

# CatchChange
$a = GetDevStatus
 
if ($Null -eq $a) {
    Write-Host("No Error")
}
else {
    Write-Host("************Other Devices************")
    $a[0]
    Write-Host("")
    Write-Host("************YellowBang Devices************")
    $a[1]
    Write-Host("")
    Write-Host("************Camera Num************")
    $a[2]
}
while ($True){
    CatchChange
}

请把这个脚本保存为 script.ps1 并右键使用PowerShell运行。script.ps1 として保存して、右クリック「PowerShell で実行」してください。

这样一来,应该可以看到如下界面。回到FFXIV接着玩,发生症状之后应该就能看到脚本监控到了设备变动。Add Device和Remove Device的下面就是我们需要注意的设备。そうすると、Windows PowerShellのウィンドウが出てくる。しばらくFFXIVを遊んで、操作不能になったらさっきのウィンドウをチェック。「Add Device」と「Remove Device」の下のデバイスに注目。

我这里造成问题的设备是「HID-compliant vendor-defined device HID-compliant mouse」(蓝牙鼠标)。在这之前也有出现过「surface pen」。因为鼠标放置一段时间的话就会自动关掉电源,所以会产生设备的变动。自分のところは「HID-compliant vendor-defined device HID-compliant mouse」だった(ワイヤレスマウス)。他に「surface pen」もあった。ワイヤレスマウスをしばらく放置したので、電源が自動的に切れただろう。

知道了问题所在,把蓝牙鼠标的电源关掉,把手写笔收起来之后问题就解决了。解決策として、ワイヤレスマウスの電源を切った。それ以降問題がなくなった。

在禁用了「Microsoft Device Association Root Enumerator」之后问题并没有解决,所以写了这篇文章。「Microsoft Device Association Root Enumerator」を無効にすることで治らなかったので、この文章を書いた。

具体的处理方法根据设备不同也会不同,如果是外接设备的话关掉应该就可以了。如果有问题的话可以在评论里告诉我设备名称。具体的な対処法は特定されたデバイスによるが、外部デバイスだと電源を切ったらOKだと思う。何か問題があったらコメントお願いします。

参考

https://jp.finalfantasyxiv.com/lodestone/character/2800076/blog/2761167/

https://forum.square-enix.com/ffxiv/threads/250673-3.0%E4%BB%A5%E9%99%8D%E3%83%91%E3%83%83%E3%83%89%E3%81%8C%E6%99%82%E3%80%85%E6%93%8D%E4%BD%9C%E4%B8%8D%E8%83%BD%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E3%82%8A%E3%81%99%E3%82%8B

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注