logo
Published on

How to Set a Custom FPS Limit in Wuthering Waves

Understanding the Problem

So, a lot of Wuthering Waves players are finding it tricky to set a custom FPS limit in the game. The in-game settings only let you choose between 30, 45, or 60 FPS, which isn't great if you want a smoother experience. Let's fix that by editing the game's SQLite database.

Setting Up SQLite

First, you'll need SQLite. Make sure the game is closed but the launcher can stay open.

Steps:

  1. Go to the directory:

    <install dir>\Wuthering Waves\Wuthering Waves Game\Client\Saved\LocalStorage
    
  2. Open "LocalStorage.db" using SQLite. You can use the SQLite command-line tool or a graphical tool like DB Browser for SQLite.

  3. Run this query to get the current graphics settings:

    SELECT value FROM LocalStorage WHERE key LIKE 'GameQualitySetting';
    

Modifying FPS Limit

Now, let's set the FPS limit to what you want.

Example

If you want to set it to 240 FPS, change "KeyCustomFrameRate":60 to "KeyCustomFrameRate":240.

UPDATE LocalStorage SET value = '{"KeyQualityLevel":3,"KeyCustomFrameRate":240,"KeyNewShadowQuality":3,"KeyNiagaraQuality":1,"KeyImageDetail":2,"KeyAntiAliasing":1,"KeySceneAo":1,"KeyVolumeFog":1,"KeyVolumeLight":1,"KeyMotionBlur":0,"KeyStreamLevel":2,"KeyPcVsync":1,"KeyMobileResolution":3,"KeySuperResolution":2,"KeyPcResolutionWidth":3840,"KeyPcResolutionHeight":2160,"KeyBrightness":-0.33283058166503904,"KeyPcWindowMode":0,"KeyNvidiaSuperSamplingEnable":1,"KeyNvidiaSuperSamplingFrameGenerate":1,"KeyNvidiaSuperSamplingMode":4,"KeyNvidiaSuperSamplingSharpness":0,"KeyNvidiaReflex":1,"KeyFsrEnable":0,"HorizontalViewSensitivity":100,"VerticalViewSensitivity":100,"AimHorizontalViewSensitivity":80,"AimVerticalViewSensitivity":80,"CameraShakeStrength":1,"MobileHorizontalViewSensitivity":50,"MobileVerticalViewSensitivity":50,"MobileAimHorizontalViewSensitivity":50,"MobileAimVerticalViewSensitivity":50,"MobileCameraShakeStrength":1,"CommonSpringArmLength":100,"FightSpringArmLength":100,"IsResetFocusEnable":1,"IsSidestepCameraEnable":0,"IsSoftLockCameraEnable":0,"JoystickShakeStrength":50,"JoystickShakeType":0,"WalkOrRunRate":0.3,"JoystickMode":0,"IsAutoSwitchSkillButtonMode":0,"AimAssistEnable":0}' WHERE key LIKE 'GameQualitySetting';

Simplifying the Process

To make it easier, you can use this updated query to set the FPS limit. This example sets it to 144 FPS:

UPDATE LocalStorage SET value = (SELECT json_set(value, '$.KeyCustomFrameRate', 144) FROM LocalStorage WHERE key LIKE 'GameQualitySetting') WHERE key LIKE 'GameQualitySetting';

Or, as a full command:

sqlite3.exe LocalStorage.db "UPDATE LocalStorage SET value = (SELECT json_set(value, '$.KeyCustomFrameRate', 144) FROM LocalStorage WHERE key LIKE 'GameQualitySetting') WHERE key LIKE 'GameQualitySetting';"

Automating the Process

You can automate the whole process with a batch script. Create a new .bat file and paste in the following script. Set the "wantedfps" value to your desired FPS, then just double-click to run it.

@echo off

set wantedfps=240

if not exist ".\sqlite3.exe" (
    echo Downloading sqlite....
    powershell.exe Invoke-WebRequest "https://sqlite.org/2024/sqlite-tools-win-x64-3460000.zip" -OutFile .\sqlite.zip
    powershell.exe Expand-Archive .\sqlite.zip -Force
    copy .\sqlite\sqlite3.exe .\sqlite3.exe
    del /F /Q .\sqlite
    rmdir .\sqlite
    del /F /Q  .\sqlite.zip
)

for /f "tokens=2*" %%a in ('REG QUERY "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\KRInstall Wuthering Waves Overseas" /v "InstallPath"') do set "installpath=%%~b"
echo %installpath%

if defined installpath (
    if "%installpath%"=="" goto noinstall
) else goto noinstall

goto foundinstall

:noinstall
echo Couldn't find install location
pause
exit

:foundinstall
set "db=%installpath%\Wuthering Waves Game\Client\Saved\LocalStorage\LocalStorage.db"

echo Found installation at %installpath%

echo using DB %db%

echo|set /p="checking current fps value: "
.\sqlite3.exe "%db%" "SELECT json_extract(value, '$.KeyCustomFrameRate') FROM LocalStorage WHERE key like 'GameQualitySetting';" || goto :error

echo setting fps value
.\sqlite3.exe "%db%"  "UPDATE LocalStorage SET value = (SELECT json_set(value, '$.KeyCustomFrameRate', %wantedfps%) FROM LocalStorage WHERE key LIKE 'GameQualitySetting') WHERE key LIKE 'GameQualitySetting';" || goto :error

echo|set /p="fps value is now: "
.\sqlite3.exe "%db%" "SELECT json_extract(value, '$.KeyCustomFrameRate') FROM LocalStorage WHERE key like 'GameQualitySetting';" || goto :error

pause
exit

:error
echo Something broke
pause
exit

Additional Tips

Tip 1: Using Graphical Tools

If you’re not comfortable with command-line tools, you can use graphical tools like DB Browser for SQLite to make the process easier.

Tip 2: Handling Errors

Make sure the game is closed before editing the database to avoid errors like "Runtime error: attempt to write a readonly database."

Tip 3: Avoiding Resets

Remember that changing any settings in the game’s UI will reset the FPS limit to 120. You’ll need to rerun the script or queries if this happens.

By following these steps, you can enjoy a smoother gaming experience in Wuthering Waves with your desired FPS limit.