Clarifications Before Proceeding with This Mod:
- Make sure the folder containing the unzipped injector is excluded from your antivirus: Due to the way this tool is programmed, antivirus software will detect it as a Trojan (at least Windows Defender does). This happens because we launch a process from the injector (if you disable the "autorun_target" variable in the configuration file, the antivirus will not trigger an alert). I will upload the code in a separate file later, in case you have any questions about this tool.
- Risk of account bans: It’s probably not much different from the risk of using skin mods. So we had to be sure... FOR NOW (unless KuroGames decides to permanently ban mods).
Since Wuthering Waves has serious performance issues, I tried using other methods to improve stability somewhat and avoid micro-stuttering in certain areas during gameplay.
By default, Wuthering Waves can likely use Special K via the latter's global frontend (SKIF), but I haven't tested it, and from what I've gathered, it isn't very reliable.
Based on the library injection method (like the one used by XXMI), I created a program to inject the Special K DLL for this specific case.
But wouldn't that cause problems if we want to use WWMI/3Dmigoto?
And that’s how it is... so, we need to take several steps. First, we will extract the injector's contents into any folder (we need to create a folder for the injector). Once the contents have been extracted, you will see a "WSKr_config.ini" file. In this file, you can configure the injector's settings. Most parameters are already set up and ready to go; you simply need to change the path where your game is installed. You should enter this in the "target_path" variable:
Variables:
- "target" Specify the name of the executable the injector should target. In this case, Client-Win64-Shipping.exe.
- "target_allow_args" It allows the use of startup arguments for the "target" defined above. It accepts values such as `true` or `1`. Any other value or content is treated as invalid or as a negative value (disabled). If you use `true` as the option, ensure you write it in lowercase.
- "target_args" Here you specify the startup arguments for the target described above. This variable will be omitted if target_allow_args is disabled.
- "autorun_target" Indicates whether you want to start the target from the injector. Accepts values such as true or 1. Any other value or content is treated as invalid or as a negative value (disabled). If you use `true` as the option, ensure you write it in lowercase.
- "module" Specifies the name of the DLL file to inject. In this case, SpecialK64.dll (or d3d11.dll if you prefer).
- "OptiScaler_enable" Specify whether you want to inject OptiScaler alongside the previously assigned module. When activated, it will reserve the name `dxgi.dll`, so the module name must be different. Accepts values such as true or 1. Any other value or content is treated as invalid or as a negative value (disabled). If you use `true` as the option, ensure you write it in lowercase. NOTE: Using OptiScaler in this way causes the Steam overlay to stop working. I assume this is because both use the same methods to perform their operations.
Once this is done, upon launching the injector, the game should run with Special K active:
Okay. Special K works... But what about skin mods?
Okay, for WWMI to work, we need to add WWMI's d3d11.dll as a plugin. To do this, open the Special K control panel while the game is running by pressing "Left Ctrl + Shift + Backspace." Once in the menu, navigate to the Plugins > Add Plug-In section. Locate your WWMI installation on your PC and select d3d11.dll. Then, ensure the load order for d3d11.dll is set to "Lazy":
Once this is done, restart the game from the Injector, and WWMI should have loaded as a Special K plugin:
Well, that would be all... There's nothing left...
Wait... What if I want to launch it from XXMI Launcher?
That’s not a big problem. To do this, go to XXMI > Settings (the gear icon in the top right) > Advanced section. Here, we must disable WWMI (3dmigoto) injection. To do this, we add the following variables:- Run Pre-Launch: REM
- Custom Launch: start "WSKr Launcher" /d "- Your WSKr Loader Path -" WSKr.exe
Alright then... With this done, you can launch Special K directly from XXMI (this allows you to stay up to date with WWMI updates while injecting Special K).
Compatibility with other libraries
It is very likely to work with other libraries, but there are some that do not work quite right. Bear in mind that *Wuthering Waves* uses a heavily modified version of UE4 (incorporating technologies adapted from UE5).The libraries you could try using are the following:
- "WWMI" Is unnecessary, as XXMI handles this by default. In any case, it works using the filename d3d11.dll.
- "DXVK" Definitely does not work. It was usable in version 3.1, but currently, it causes D3D11 device errors that prevent the game from running at all. It uses the filenames d3d11.dll and dxgi.dll simultaneously.
- "Reshade" Works using the filename Reshade64.dll. If you are already using Special K, you can inject it from there.
- "Ultimate ASI Loader" Might work... or it might not. I haven't tested it to find out. It uses the filename dinput8.dll, though it can also use others like winmm.dll. If it does work, you could inject Reshade, OptiScaler, and other libraries as ASI plugins.
Compatibility with other games
I haven't used the tool with other games, except for one. The result isn't encouraging...Genshin Impact Compatibility:
- "Reshade" Works. It uses the filename Reshade64.dll.
- "GiMi" Works similarly to the method used in XXMI or the old launcher. It uses the filename d3d11.dll.
- "OptiScaler" Hasn't been tested; it likely won't work.
- "SpecialK" Definitely doesn't work. Using the filename d3d11.dll or dxgi.dll causes the game to crash. Using the filename Specialk64.dll allows the game to run, but the game itself appears to ignore SpecialK's existence, so it is as if nothing was injected.
- "DXVK" Triggers an "illegal tool detected" warning and crashes the game. It uses both d3d11.dll and dxgi.dll simultaneously. I doubt there is a solution for this.
- "Ultimate ASI Loader" hasn't been tested. It is usually injected using the filename dinput8.dll. It might work, even with other names like winmm.dll, though it would likely be detected as an illegal tool. If it isn't detected, you could potentially inject several of the aforementioned tools (specifically Reshade and OptiScaler) as ASI plugins.
Potential issues when using OptiScaler
You may encounter issues when using OptiScaler via WSKr. If this happens, I recommend downloading OptiScaler from its official GitHub repository, deleting the entire contents of the "OpS" folder included with WSKr, and moving the OptiScaler files into that folder instead. Then, proceed with the installation (run the .bat file included with OptiScaler) and ensure that OptiScaler is set to use `dxgi.dll` as the injection library.If OptiScaler fails to detect the necessary libraries upon launching the game, you can try moving the contents of the "OpS" folder (excluding the OptiScaler configuration file and dxgi.dll, of course) into the game folder. Since these libraries will be loaded via the injected dxgi.dll, the game should not detect them as a client modification, so you shouldn't trigger any alerts that could lead to a ban.