SpecialKO / SpecialK

Lovingly referred to as the Swiss Army Knife of PC gaming, Special K does a bit of everything.
https://www.special-k.info/
GNU General Public License v3.0
718 stars 45 forks source link

Changed FPS limiter GUI constraints #139

Open trudnorx opened 5 months ago

trudnorx commented 5 months ago

Addresses #138 by:

Notes:

trudnorx commented 5 months ago

However, after further testing I find that:

  1. Some games load extremely slowly with low FPS limits. Others aren't affected at all. This is a game-related issue and occurs with other FPS limiters too (not just Special K).
  2. The Special K settings window has trouble handling input; inputs are lost when foreground FPS limit is extremely low, even when the game is still handling inputs correctly. This also affects whether the GUI even appears; it can take multiple key presses. This can make it difficult for the user to change foreground FPS to a higher value once again after having limited it to a very low value.
  3. The Special K settings window's FPS is limited along with the game's. This can also make it difficult for the user to change foreground FPS to a higher value once again after having limited it to a very low value.
  4. Extremely low background FPS causes no issues, other than (1) if loading in the background and slow alt-tabbing.

Possible solutions:

  1. Improve functioning of Special K GUI to avoid issues 2 and/or 3, or,
  2. Allow user to specify extremely low foreground FPS values only after ticking a check box, or,
  3. Constrain minimum foreground FPS to a value like 5-10. Minimum background FPS 0.1-1.
Aemony commented 5 months ago

Yeah, the current minimum limit of 11 or whatever it is is due to the various issues that can occur if it's too low. Special K used to support arbitrary framerates in the limiter, but over the years it was constricted to improve the user experience.

A proper fix would probably be to move all of Special K's ImGui input processing over to its modern method. For context, a few years ago ImGui changed the way it processes input entirely to be event-based instead of frame-based to improve compatibility in various scenarios -- in particular RDP and touch-based sessions where "mouse input" works entirely different.

Special K updated to a newer ImGui codebase in 2023 but its input processing was never migrated (probably due to SK using a heavily customized one), so right now it's using ImGui's classic processing in a sort of compatibility mode.

marat569 commented 5 months ago

I remember kal made it 12 because he'd try to input 120 either with his controller; and constnatly get like 1 or something

idr the details 100%; but yea it was because kal kept running into issues inputting 120; and went "nobody really needs fps under 12 anyway"