id5 Tweaker

What is this?

The id5Tweaker is a small mod that allows additional configuration of id Tech 5 games. Its features include the option to change the FPS limit, force the value of CVars and additional game specific settings.

Overview

Description

Although the id Tech 5 engine offers a surprising amount of flexibility in regards to configurations through its CVar system, it is inconvenient to use because some CVars won’t be saved, are restricted or have too narrow bounds (e.g. the FOV in the Wolfenstein games).

Additionally, there are some problems that can’t be fixed by CVars at all, such as the limit of 60 FPS. While there are some methods out there which supposedly should unlock the FPS, they don’t seem to work or ceased to work after the games were patched.

This mod aims to make the overall configuration easier while at the same time to offer additional options for certain problems. The mod is used through a set of new console commands which can either be directly entered into in the in-game console or applied by using an optional config file. The Tweaker can change the FPS limit, force restricted CVars without having to use workarounds such as the cvaradd command and push some CVars out of their bounds. It also offers some game specific options.

Features

All Games

  • Change FPS limit
  • Force restricted or read-only CVars
  • Push some CVars out of their bounds (e.g. FOV)
  • Bind opening the console to any key
  • Bundle configuration in a single config file
  • Easy to install

RAGE (32-/64-Bit)

  • Bind the use of items to individual keys
  • Bind toggle versions of aim down sights or sprint
  • Disable parts of the HUD (e.g. crosshair or minimap)

Instructions

Supported Games

Important: 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.

  • RAGE [32-/64-Bit, Global]
  • Wolfenstein: The New Order [Global]
  • Wolfenstein: The Old Blood [Global]

Note: You can find out what version of a a game you have by using one of the methods stated here.

Install

Note: The mod does not make any permanent changes to the game or the system and can easily be removed (see below).

  1. Download this zip-file from PC Gaming Wiki
  2. 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".
  3. (Optional) Place the id5Tweaker.ini config file in the game directory and edit as necessary (see below).
  4. 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 both Wolfenstein games can use the same DLL.

Uninstall

  1. Remove or rename the dinput8.dll from the folder of the game.

How To Use

After the installation, the mod gets loaded automatically when you start a supported game. You can interact with the mod by using one of the corresponding console commands (see below). They behave like original commands and can either just be entered into the console or bound to a key by using the bind command. You can also use the optional config file to bundle commands and CVars, which are executed and set each time a level is loaded.

The mod also uses the in-game console to print status information every time a command is executed. 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.

List Of Commands

All Games

id5Tweaker_SetFpsLimit value

  • Changes the FPS limit to value
  • Example: id5Tweaker_SetFpsLimit 140
    Note: There are some known issues with unlocking the FPS (see below)

id5Tweaker_ToggleFps

  • Enables or disables the above FPS limit
  • Can be used to play sections of a game that have issues with high FPS
  • Is in the default config file bound to the '*' key on the numpad

id5Tweaker_ForceCVar name value

  • Forces a CVar with name to value
  • Can be used to set restricted or read-only CVars
  • Extends the bounds for certain CVars (e.g. g_fov)
  • Example 1: id5Tweaker_ForceCVar g_fov 110
  • Example 2: id5Tweaker_ForceCVar r_postProcessDofMode -1

id5Tweaker_Reset

  • Reloads the id5Tweaker.ini config file executing and setting all commands and CVars
  • Is in the default config file bound to the '-' key on the numpad

id5Tweaker_ToggleConsole [0.0-1.0]

  • Toggles the state of the in-game console
  • The optional argument specifies the fraction of the screen being covered by the console
  • Obviously only makes sense when bound to a key

RAGE (32-/64-Bit)

id5Tweaker_RAGE_Bind key action

  • Binds an action to key
  • For a full list of actions use the id5Tweaker_RAGE_ListActions command
  • For a full list of keys use the id5Tweaker_RAGE_ListKeys command
  • Example 1: id5Tweaker_RAGE_Bind F use_grenade_he
  • Example 2: id5Tweaker_RAGE_Bind MOUSE2 toggle_zoom

id5Tweaker_RAGE_ListActions

  • Lists all valid actions for the id5Tweaker_RAGE_Bind command in the console

id5Tweaker_RAGE_ListKeys

  • Lists all valid key names for the id5Tweaker_RAGE_Bind command in the console
  • Most key names should be intuitive, such as X, ENTER, MOUSE2 or KP_2

id5Tweaker_RAGE_HideCrosshair [0,1]

  • Hides the crosshair
  • Does not remove interaction info (see below)
  • Works as a toggle when used with no argument

id5Tweaker_RAGE_HideInteractionInfo [0,1]

  • Hides information of interactable things (e.g. bodies you can loot)
  • Works as a toggle when used with no argument

id5Tweaker_RAGE_HideMiniMap [0,1]

  • Hides the minimap
  • Works as a toggle when used with no argument

id5Tweaker_RAGE_HideWeaponInfo [0,1]

  • Hides all weapon information in the lower left including quick items
  • Works as a toggle when used with no argument

Using The Config

Instead of manually entering the commands into the console, you can use the id5Tweaker.ini config file.

The config file gets read and applied every time a level is loaded. You can also manually trigger a reload of the config by using the id5Tweaker_Reset command. 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.

There are two sections in the config file:

  • [CVARS]

    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 is equivalent to using the id5Tweaker_ForceCVar command.

  • [COMMANDS]

    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.

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 ';'.

You might encounter areas of the game that don’t work with high frame rate (see Known Issues below). If this happens, use the id5tweaker_ToggleFps command in the console to toggle the FPS unlock. By default, this command is bound to the '*' key on the numpad.

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_uncompressedPhysicalImages [0,1]
  • 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:

  1. Set all four vt_pageImageSize* CVars to 16384, vt_uncompressedPhysicalImages to 0, and vt_maxPPF to 4
  2. If you experience noticeable pop-in, double the vt_maxPPF value until the pop-in is no longer noticeable/bothersome
  3. 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
  4. If you are satisfied by the performance, have at least 6GB of VRAM and want to further push image quality, set vt_uncompressedPhysicalImages to 1

For 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.

Additional Information

What You Should Know

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 frame rate in certain parts the games. Some of these problems are more severe than others. Remember that you can toggle the FPS unlock with the id5tweaker_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

Various Locations [type: visuals, severity: minor]

  • A few physics animations like cloth or the turn rate of turrets are running faster than normal. As far as I can tell this has no effect on gameplay and is in most cases barely noticeable unless you look for it

Wolfenstein [Both Games]

Various Locations [type: interface, severity: medium]

  • Some players reported that the subtitles are lagging behind the audio in some cases, though I did not have time to verify this yet

Wolfenstein: The New Order

Chapter 1 – Deathshead’s Compound [type: performance, severity: medium]

  • Some players reported very low FPS on the first cutscene when starting a new game, although I could not confirm this on my end

Chapter 2 – Asylum – Yard [type: gameplay, severity: game-breaking]

  • 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 unkillable

Contact And Support

If you like this mod and want to support the development or show your appreciation, you can find more information on my website. There you can also find out more about other fixes that I have done and means to contact me if you have a question, want to provide feedback, bug reports or suggestions.

Version History

Beta 0.3:

  • RAGE: Toggling the HUD elements can now be done without having to reload the game
  • RAGE: Hiding the crosshair no longer hides the interaction info
  • RAGE: Added command to hide the interaction info
  • RAGE: Fixed bug that some items could not be correctly bound to a key (e.g. bandages)
  • RAGE: Binding an item to a key now also works with the advanced versions (e.g. Advanced RC Bomb Car)

Beta 0.2:

  • All functionality can now be accessed via in-game commands
  • Added command to open the console which can be bound to any key
  • Added some game-specific commands for RAGE

Beta 0.1:

  • Initial release
Advertisements

2 comments

    1. I though about it, but the Evil Within games are actually kind of special cases, because they use a modified version of the idTech5 engine. For example, they both use DirectX instead of OpenGL. Additionally, there do not seem to be that many issues that this mod could fix, at least not for the first game. So at the moment I do not think it is worth the effort. But I am open to be convinced otherwise.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s