A nice chap on steam has made a utility for unlocking ID tech 5 engine configs. Link below - Jim: could you rehost the actual dropbox file on here? (it's only 292kb)[id5Unlocker] Remove FPS cap, Force CVars And More What is this?
All games using the id Tech 5 engine have a lock which prevents users from achieving more than 60 FPS. Contrary to what some people say, this is not a hard limitation of the engine, but rather a design decision by the developers.
While there are some methods out there which supposedly should unlock the FPS, many of them don't seem to work or ceased to work after the games were patched. The Evil Within might be an exception to this, although I couldn't test it myself because I don't own the game.
This Unlocker provides a wide variety of functionalities, which can be specified using a configuration file. These include changing the FPS cap, forcing restricted CVars, changing CVars to values outside of their bounds (e.g. FOV) and more.InstructionsImportant: This is an experimental mod. There are some known issues when changing the FPS cap (see below). Additionally, although I tested all supported games for some time, I played none of them all the way through. There might be crashes or other issues that I don't know of and that require further updates of the mod.InstallNote: The mod does not make any permanent changes to the game or the system and can easily be removed (see below).
Download this zip-file[www.dropbox.com]
Extract the file dinput8.dll
to your main game folder. For Steam this in most cases is "Steam\steamapps\common"
. For example: "D:\Games\Steam\steamapps\common\Wolfenstein The New.Order"
Place the id5Unlocker.ini
config file in the game directory and edit as necessary (see below).
Start the game like you would normally, for example directly through Steam or a desktop shortcut.Note: There are two versions of the DLL in the zip-file. Since the default version of RAGE is a 32 bit executable, it needs a separate DLL. The 64 bit version of RAGE as well as Wolfenstein: The New Order and Wolfenstein: The Old Blood can use the same DLL. This has nothing to do with the bitness of your Windows version!Uninstall
Remove or rename the dinput8.dll
from the folder of the game.Supported GamesImportant: This mod relies on the latest, fully patched executables of the supported games. Older versions or ones that otherwise have been tempered with very likely won't work. This also includes versions of the games from other regions which I don't own myself. For example, the German versions of the Wolfenstein games probably currently won't work with the mod.
This also means that if a game were to be patched -- which is very unlikely at this point -- it would break the mod and require it to be updated.RAGE (32 bit and 64 bit version)
Global -> SteamDB entry[steamdb.info]Wolfenstein: The New Order
Global -> SteamDB entry[steamdb.info]Wolfenstein: The Old Blood
Global -> SteamDB entry[steamdb.info]Note: You can find out what version of a a game you have by using one of the methods stated here[gaming.stackexchange.com].Using The Config
The Unlocker can be adapted to your needs by using the configuration file id5Unlocker.ini
, contained in the zip-file. Don't be put off by the amount of text you find there. The explanations are detailed on purpose, to make the mod also usable by people who are less familiar with config file editing and the id Tech 5 CVar system.
There are three sections in the config file:
This section contains options specific to the id5Unlocker. Currently the only available option is the FPS limit. When no value is specified, the default of 140 is used.
In this section you can specify any console variable (CVar) available in the respective game. The value of the CVar is forced directly via the internal CVar system. This allows direct usage of CVars that may be disabled in the retail version or are set to read-only. Using the cvaradd
command is therefore not necessary. For some CVars the Unlocker changes the bounds of the value you can assign to them. An example is the CVar of the FOV, for which the upper limit is set to 200.
Every line in this section gets send to the command system of the game as if it were manually entered into the console. Therefore, anything you can enter into the console of a specific game can also be used here. Although it is possible to set CVars this way, it is recommended to use the [CVARS] section for those, since using the command system imposes the same restrictions as the console, e.g. making certain commands unavailable.The default config already contains the most important CVars and commands. However, most of them are disabled because they are a matter of personal preference or the hardware. To enable them, uncomment the corresponding line by removing the ';'
The config file gets read and applied every time a level is loaded. You can also manually trigger a reload of the config by typing the id5unlocker_reset
command into the console. This can be useful when trying to find the right settings. Just edit and save the file and reload the config. By default, this command is bound to the '/'
key on the numpad.
You might encounter areas of the game that don't work with high frame rate (see Known Issues
below). If this happens, use the id5unlocker_togglefps
command in the console to toggle the FPS unlock. By default, this command is bound to the '*'
key on the numpad.
The Unlocker also uses the in-game console to print status information every time the configuration is applied. This output is color coded in super stylish cyan
. So if something does not work as intended, look into the console to see if for example the specified command or CVar could not be found.Optimizing Performance
Maintaining a rock-solid 144 FPS is difficult, even on high-end hardware. Although the usual options, such as resolution and anti-aliasing, have an impact on the overall frame rate, other, more obscure settings, have a greater impact on stability -- i.e. frame times. Because the virtual textures continuously have to be transcoded and streamed, the frame times may fluctuate depending on the configuration and level geometry. Because many of the corresponding CVars have an effect on each other, their overall impact on performance is not as easy to assess as traditional options such as anti-aliasing.Important CVars
From my experience, the following CVars are the most important:
vt_pageImageSize* [4096, 8192, 16384]
vt_maxPPF [1, 2, 4, 8, 16, 32, 64, 128]The size of the page images determines the overall texture quality. The bigger the images are, the better the textures look and the more VRAM the game needs. Using uncompressed physical images further increases image quality at the expense of even more VRAM. The maxPPF option determines how many pages are transcoded (i.e. "loaded") per frame.
Bigger textures mean that it is more costly to transcode the textures. At the same time, not being able to transcode the textures fast enough will result in the notorious "pop-in"
of the id Tech 5 games.
Overall, it comes down to a balance of visual fidelity and frame time stability, while at the same time minimizing texture pop-in.
Many people should be able to set the page sizes to 16384. This leads to a VRAM usage of around 3GB for RAGE and 4GB for the Wolfenstein games. However, I would disadvise from enabling the usage of uncompressed images. Not only does this increase the VRAM usage in conjunction with big page sizes to about 5GB for RAGE and up to 8GB for the Wolfenstein games, it may also introduces micro-stutter in many areas of all games.
The value of the max pages per frame should be set as low as possible. Fortunately, playing at high FPS also means that more textures can get transcoded more quickly, making the pop-in much less noticeable and in most cases even a non-issue. This is primarily a CPU-heavy setting.Warning: Even with CUDA-Transcode enabled, a large amount of the work will be done on CPU and the engine is very efficient in using the all available cores. Setting the maxPPF to values of 64 or higher with high FPS might load even high-end CPUs to 100%.Recommended Approach
My recommendation to approach the best settings would be the following:
Set all four vt_pageImageSize
* CVars to 16384, vt_uncompressedPhysicalImages
to 0, and vt_maxPPF
If you experience noticeable pop-in, double the vt_maxPPF
value until the pop-in is no longer noticeable/bothersome
If you can't find a good balance between stability and pop-in or are experiencing severe stutter due to a lack of VRAM, set the page image sizes to 8192
If you are satisfied by the performance, have at least 6GB of VRAM and want to further push image quality, set vt_uncompressedPhysicalImages
to 1For The Tech-Savvy and Adventurous
The main bottleneck of the engine seems to be the streaming of the virtual textures. By default, this means a lot of reads on the drive the game is installed on. The game also allows to set a path for a cache file. Playing the game from a slow, fragmented HDD may prevent players entirely from achieving high FPS. If your SSD is too small to install the whole game, you can at least set the cache path to it. The path can be set by adding +fs_cachepath ""
to the command-line of the corresponding game.
If you have enough RAM, you can also use a RAM-Disk for the cache file or even install install the whole game to it, although this might only be feasible for RAGE, even for the vast majority of high-end systems.
Finally, although I spent a fair amount of time analyzing the various CVars and their impact on FPS and stability, the approach above might not be the best. Feel free to experiment to search for better combinations and share your experiences. Remember that you can use the find
command in the in-game console to search for CVars and commands.
A starting point could be to enable the usage of CUDA to transcode the textures, which for me seems to make very little difference in FPS or stability and appears to introduce micro-stutter in some situations. Use vt_useCudaTranscode
to enable the usage of CUDA. If you enable CUDA you should also set vt_cudaBudget
to a value below your frame time. Remember that CUDA only works on Nvidia GPUs.What You Should Know
First and foremost, bear in mind that this mod is essentially a hack and relies on the layout of the specific executable. There may be crashes or unexpected issues. Feel free to provide feedback so that the problems can get fixed.
Also, beware that some of these games were not optimized for such a high frame rate. Although the games generally perform well, I ran into sections were the FPS would drop significantly, even on a very powerful machine.
Finally, since this mod consists of an executable DLL-File, I could have put any harmful shenanigans in there. You just have to trust me that the file is clean.
If you don't -- and why should you -- feel free to use a meta online virus scanner like VirusTotal to verify the file. Be aware however, that because the mod uses "hacking techniques" such as injection and hooking, it could trigger anti-virus software without being harmful.Known Issues
There are some known problems when unlocking the framerate in certain parts of some of the games. Some of these problems are more severe than others. Remember that you can toggle the FPS unlock with the id5unlocker_togglefps
console command, which by default is bound to the '*'
key on the numpad.
This might not a complete list and probably will be extended in the future. If you encounter any problems, feel free to provide a description of the corresponding section in the style seen below.RAGE
Ghost Hideout [type: visuals, severity: minor]
Location: Throughout the level
Description: Some parts of cloth decorating the level are animated faster than normalWolfenstein: The New Order
Chapter 2 - Asylum [type: gameplay, severity: game-breaking]
Description: The two drones that are released from the truck that crashes through the gate get ejected faster than normal and can get stuck in the ground, making them unkillableFuture Development
Depending on the response to the mod, I might continue the development and add further functionality down the line. These additions might include bug fixes, the support of more versions -- such as the cut German one -- or further options such as disabling the certain parts of the HUD. I'm also currently experimenting with memory files, to reduce the amount of disk operations when streaming the textures.Version HistoryBeta 0.1:
Last edited 9 Jan at 08:13:14.