God of War

God of War

View Stats:
Kirian Jan 17, 2022 @ 1:14pm
2
3
Repeated inputs if game is running at high FPS and DS4/DualSense controller sends Input Reports at slower than default rate
ISSUE DESCRIPTION

If the game is running at a high FPS (example: 120) but the controller Input Report rate is slower than default (example ~8ms), the game start having double inputs, as if the user was releasing and pressing again the same button.

This issue only happens if using a DS4/DualSense controller natively in the game. Won't occur if using it via Steam Input or another XInput remapper. The XInput implementation seems to be working as normal.

The video below demonstrates the issue:

https://youtu.be/Q4SzLf-m3U0

THEORY ON WHY THAT'S HAPPENING

What I think the game is doing is the following:

  1. Engine reads last received Input Report
    • If no NEW Input Report was received, interpret that the controller is in a "resting" state (all buttons released, sticks in neutral position)
  2. Send Input info to the game
  3. Repeat on next game frame

The issue then happens because the game has not received a new Input Report in time when it checked for it, then instead of just maintaining the last known state it instead "resets" the input to the resting state until a new Input Report arrives.

If my theory is correct, running the game over 300FPS would cause the issue frequently with a wired controller in perfect condition, since at this FPS rate the frame delta is ~3,3ms, faster than what the controller sends in its usual rate of ~3,5ms.

Alternatively (in a more real world scenario), if the controller is not maintaining the default ~3,5ms input rate and sometimes falling to over 10ms, then the issue can easily happen if running the game with 120 FPS. The slower the input rate and the higher the FPS the higher the chance of the issue happening.

Example on what happens under the hood (based on my theory)

  1. Frame 1: Player is holding "R1" -> Engine Receives Input Report -> Engine updates Input state so R1 is now pressed
    1. Player is holding "R1" in real time, controller sends Input Report with this info
    2. Engine Receives Input Report from the controller and then updates Input state so R1 is now pressed in-game
  2. Frame 2:
    1. Player is still holding "R1" in real time, but the controller didn't send a new Input Report at this point in time
    2. Engine receives no Input Report from the controller and then incorrectly "resets" in-game Input State (R1 is released) instead of just no updating it
  3. Frame 3:
    1. Player is still holding "R1" in real time, controller sends new Input Report with this info
    2. Engine receives Input Report then updates Input state so R1 is now pressed in-game

Result: game interpreted the player pressed R1, released it and then pressed it again, even though they were actually maintaining R1 pressed all the time

Testing

  • METHOD 1: Run the game over 290 FPS (not exactly a current real world scenario but hey, it's possible!)
    1. Running the game with this FPS would be necessary since using the controller in "normal" conditions (wired with a good cable) its Input Rate is ~3,5ms
    2. This would basically guarantee that the issue would occur

  • METHOD 2: Run the game over 240 FPS with the controller in "non-usual" conditions (still wired, but because wired is kind-of reliable it would mean having to keep testing until a Input Report is dropped randomly)
    1. Depending on the user system, cable conditions etc it could be easier for the issue to occur if the system is not maintaining the ideal Input Rate of ~3,5ms at all times
    2. Alternatively, to "prove" the issue exist when wired one can use some program/driver to force the DS4 via USB to communicate in a slower rate. Though it's a forced scenario, it's one that should not cause issues anyway in the game (does not happen when playing this game via XInput, for example, nor happens when using native DS4 in other games with support for it)

  • METHOD 3: Test above 120 FPS but using the controller via Sony’s Official USB Wireless Adapter for DS4 controllers
    1. At 120 FPS the frame delta is ~8,33ms, and the usual Input Rate for using the DS4 controller via the official adapter is ~7,5ms
    2. Because BT connection is not as stable as wired, there would be frequent Input Reports that would not arrive in-time under these test conditions
    3. Tested this myself, issue happens frequently

  • METHOD 4: Test above 120 FPS but using the controller via BT by remapping it into a "virtual" wired DS4
    1. DS4Windows can be used to test this with DS4 or DualSense controllers. It can also specifically force the BT polling rate for DS4 controllers (not DualSense), making testing the issue easier
    2. DualSenseX can be used to test this with DualSense controllers
    3. Tested this myself. Game is basically unplayable at above 8ms BT polling rate and higher than 90FPS


PROPOSED SOLUTIONS

    Only update the controller Input State in-game if a Input Report is actually received
      Currently the game seems to be resetting the game Input state to the "resting state" (no buttons pressed, sticks and triggers at rest)

WHY IT’S IMPORTANT TO FIX THIS ISSUE AND WHO IT IS AFFECTING

  1. To start, as I said above, basically no decent game engine has this behavior of resetting input state if an Input Report has not been received in time. If a new Input Report is not received when the engine checks for it then it should just consider that there were no updates while maintaining the last known Input
  2. There are situations that can cause DS4/DualSense to miss sending Input Reports in time even when wired
  3. This issue can easily happen if using the controller wirelessly through official/certified means (Sony’s USB Wireless Adapter for DS4 controllers) or through non-usual methods (using the DS4/DualSense via a generic Bluetooth adapter and then remapping it into a virtual wired DS4). Both these cases will have variable Input Report Rate depending on the quality of the Bluetooth connection, which even in good conditions can randomly have missing input reports causes by radio interference.

CONCLUSION

Part of being a PC gamer is having to workaround some issues or unexpected behaviors but this issue in specific is one that can't be "solved" from the outside. For the good of the PC-Gaming community and Playstation controllers enjoyers, I hope this behavior is rectified!
Last edited by Kirian; Jan 21, 2022 @ 9:33am
< >
Showing 1-15 of 19 comments
Alarcus_SMS Jan 17, 2022 @ 6:52pm 
Thanks for the detailed report Kirian. I've passed this post along to the development team. We appreciate the work you put into this.
Comanso Jan 18, 2022 @ 3:17am 
https://youtu.be/PSm_G1q57uQ I actually have this issue on my DS5 controller running at roughly over 160fps my menus and in game I will get double inputs and weird stuff happening like my shield spamming. Of course my video shows it at 267fps because that was where my frame cap is, but I actually saw it happen when set to 160 with Nvidia Control panel for example.
Raging Panda Jan 20, 2022 @ 9:39am 
Originally posted by Alarcus_SMS:
Thanks for the detailed report Kirian. I've passed this post along to the development team. We appreciate the work you put into this.
I think this is my issue is as well. I'm running a 240hz monitor and a high fps to match. (not sure the exact fps). Thank you for addressing this. It's not seen as much I assume cause of high fps need, but can we get this pinned for others?
Kirian Jan 21, 2022 @ 9:36am 
Originally posted by Alarcus_SMS:
Thanks for the detailed report Kirian. I've passed this post along to the development team. We appreciate the work you put into this.

Thanks for the answer. I've edited the formatting on the post a little and also included a video demonstrating the issue. Though in the video it looks "exaggerated", I can assure you that it's that easy to cause the issue if playing through the official Sony wireless adapter for DS4 controllers and that the issue can happen when playing wired, albeit it's harder to cause it (but not less frustrating when it happens).
Raging Panda Jan 21, 2022 @ 5:13pm 
Originally posted by Kirian:
Originally posted by Alarcus_SMS:
Thanks for the detailed report Kirian. I've passed this post along to the development team. We appreciate the work you put into this.

Thanks for the answer. I've edited the formatting on the post a little and also included a video demonstrating the issue. Though in the video it looks "exaggerated", I can assure you that it's that easy to cause the issue if playing through the official Sony wireless adapter for DS4 controllers and that the issue can happen when playing wired, albeit it's harder to cause it (but not less frustrating when it happens).
Yeah I use the official wireless adapter to.
Parasol Jan 24, 2022 @ 1:12pm 
DualShock 4 Problem.
Hello i'm trying to use playstation buttons prompts with DS4 i could only do it successfully with DS4Windows but the downside is i'll get repeated/turbo inputs. I dont know what to do honestly.
Kirian Jan 24, 2022 @ 1:49pm 
The repeated/turbo inputs is a issue with the game that happens when the controller communicates with the PC slower than the time difference between frames. It is not a DS4Windows issue, it just so happens that it's vastly easier to trigger the issue when playing wirelessly. If you were to use the official Sony USB wireless adapter for DS4 controllers you'd suffer the same issue.

Because the only way to use the controller wirelessly with PS glyphs is by emulating a virtual wired DS4 (like DS4Windows does) or using Sony's official adapter, you will still suffer from this issue since it won't change the fact that your controller is connected wirelessly (and therefore, is not maintaing the required Input Rate for the issue to not occur)

For more info: https://steamcommunity.com/app/1593500/discussions/1/3202623344541441402/

Until this game issue is fixed if you really want to play wirelessly I advice you on using your controller as if it were a Xbox controller, since the game's XInput implementation seems to not suffer from this issue.
Last edited by Kirian; Jan 24, 2022 @ 1:54pm
マルツェル Feb 1, 2022 @ 1:45pm 
Strange, as the wireless (1000hz) polling rate of the DS4 is higher than the wired (250hz) on PC.
Raging Panda Feb 1, 2022 @ 1:50pm 
Originally posted by Kirian:
The repeated/turbo inputs is a issue with the game that happens when the controller communicates with the PC slower than the time difference between frames. It is not a DS4Windows issue, it just so happens that it's vastly easier to trigger the issue when playing wirelessly. If you were to use the official Sony USB wireless adapter for DS4 controllers you'd suffer the same issue.

Because the only way to use the controller wirelessly with PS glyphs is by emulating a virtual wired DS4 (like DS4Windows does) or using Sony's official adapter, you will still suffer from this issue since it won't change the fact that your controller is connected wirelessly (and therefore, is not maintaing the required Input Rate for the issue to not occur)

For more info: https://steamcommunity.com/app/1593500/discussions/1/3202623344541441402/

Until this game issue is fixed if you really want to play wirelessly I advice you on using your controller as if it were a Xbox controller, since the game's XInput implementation seems to not suffer from this issue.
I've found success locking it to 60 fps
Kirian Feb 1, 2022 @ 2:34pm 
Originally posted by Eniff:
Strange, as the wireless (1000hz) polling rate of the DS4 is higher than the wired (250hz) on PC.

The problem is that BT cannot maintain this polling rate perfectly. USB is not perfect either, but it's stable enough to not cause issues on 99% of situations, which is why basically nobody playing wired is complaining about this issue, since it happens rarely enough to not bother these people.

If you set the controller's BT polling rate to 1000 Hz and then monitor the BT connection with wireshark you'll notice that Input Reports will have a variable time delta. Though it tends to remain close to 1ms if the connection quality is good, radio interference will randomly cause some of them to be much higher, specially if you increase distance. I have a pretty stable overral BT connection and even then I was having some Input Reports coming with a time delta of >10ms.
Last edited by Kirian; Feb 1, 2022 @ 2:35pm
Raging Panda Feb 1, 2022 @ 2:36pm 
Originally posted by Kirian:
Originally posted by Eniff:
Strange, as the wireless (1000hz) polling rate of the DS4 is higher than the wired (250hz) on PC.

The problem is that BT cannot maintain this polling rate perfectly. USB is not perfect either, but it's stable enough to not cause issues on 99% of situations, which is why basically nobody playing wired is complaining about this issue, since it happens rarely enough to not bother these people.

If you set the controller's BT polling rate to 1000 Hz and then monitor the BT connection with wireshark you'll notice that Input Reports will have a variable time delta. Though it tends to remain close to 1ms if the connection quality is good, radio interference will randomly cause some of them to be much higher, specially if you increase distance. I have a pretty stable overral BT connection and even then I was having some Input Reports coming with a time delta of >10ms.
Yes but I have no issue with this on other games. I am using the ps4 official dongle too, for what it's worth.
Kirian Feb 1, 2022 @ 2:45pm 
Originally posted by Raging Panda:
Yes but I have no issue with this on other games. I am using the ps4 official dongle too, for what it's worth.

This is an issue with this game in specific. It's not a matter of wired x wireless, it's the game's native support for Playstation controllers having a bug.

The game shouldn't be "resetting" the in-game input state even if I were to play with 100ms input latency,
Last edited by Kirian; Feb 1, 2022 @ 2:48pm
Raging Panda Feb 1, 2022 @ 2:56pm 
Originally posted by Kirian:
Originally posted by Raging Panda:
Yes but I have no issue with this on other games. I am using the ps4 official dongle too, for what it's worth.

This is an issue with this game in specific. It's not a matter of wired x wireless, it's the game's native support for Playstation controllers having a bug.

The game shouldn't be "resetting" the in-game input state even if I were to play with 100ms input latency,
That's my point
It only happens in GOW. Showing it's the game itself. Fortunately, devs have acknowledged this and supposedly are working to fix.
blackdragon Sep 23, 2022 @ 11:56pm 
experiencing this as well. has this been already fixed?
Kirian Sep 26, 2022 @ 12:31pm 
Originally posted by blackdragon:
experiencing this as well. has this been already fixed?


From what I know, this has not been fixed on the game's "native" DS4 support.

It do is fixed if you use the controller through Steam's "Playstation Configuration Settings", which is kinda of sad that it has only been fixed partially.

Hope the devs fix it for good without the need of Steam Input
< >
Showing 1-15 of 19 comments
Per page: 1530 50