Jump to content

About This File

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. 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".
  2. (Optional) Place the id5Tweaker.ini config file in the game directory and edit as necessary (see below).
  3. 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 "<path-to-folder>" 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


What's New in Version 0.3   See changelog

Released

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




User Feedback

Recommended Comments

I have a few observations with playing Rage, specifically issues with high frame rate. The author of ID5Tweaker says that only some cosmetic effects and the rotations of turrets are affected, but this is not true: 

  1. setting the FPS limit above 142 will cause the game to crash when during the slow mo effect upon completing a bandit car mission , even if your game is not actually rendering at that framerate
  2. the 5 Finger Fillet minigame is entirely dependent on frame rate , it becomes a joke to play at anything above the default 60fps

Share this comment


Link to comment
Share on other sites

To use this with the epic version perform the hex editing instructions listed on this github page on the 64bit dll version: https://gist.github.com/Spikeyy/b2e4d1f9892eeee7692d2fc6f43c1dd1

Quote
  1. Download Id5Tweaker and extract.
  2. Open 64bit_RAGE_Wolfenstein/dinput8.dll in a hex editor (e.g. HxD)
  3. Using the table below, search for the values on the left as hex and replace with the values on the right
  4. Save and copy dinput8.dll to the games install folder (Epic Games/WolfensteinTNO).
Find Replace
20 A1 5B 41 01 30 25 48 41 01
30 DF 9E 40 01 80 A3 A5 40 01
E0 CC 15 A0 55 16
40 54 86 40 01 A0 0B 83 40 01
40 54 86 40 01 A0 0B 83 40 01
90 E1 9E 40 01 70 B9 A5 40 01
D0 D2 9D 40 01 20 B9 A4 40 01
40 6F EF 41 01 20 62 CE 41 01
80 D5 9D 40 01 E0 AA A4 40 01
60 17 6B 41 01 90 55 55 41 01

Alternatively I have linked a dll that where I have already performed these modifications.

 

 

dinput8.dll

Share this comment


Link to comment
Share on other sites

In gamepass when I add the files it will crash every time I try to open the game (Wolfenstein: The Old Blood).

It seems I am not the only one.

Thank you.

 

Share this comment


Link to comment
Share on other sites

This affected the gravity in Rage. Whenever I jump, I go to the ceiling and I won't come down until I re-enable the 60FPS cap.

Share this comment


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...