While the main feature of the dwmapi.dll is to use a custom server with the game, it has other features as well.
The bootstrapper creates a client_config.json in your game folder. It has the following fields:
fallback_language
— The language to use when Warframe.x64.exe was double-clicked or the argument was simply omitted.fallback_graphicsDriver
— The graphics driver to use when Warframe.x64.exe was double-clicked or the argument was simply omitted.fallback_cluster
— The cluster to use when Warframe.x64.exe was double-clicked or the argument was simply omitted. Can be public
, test
, or dev
— the latter two enable some more logging.server_host
— The hostname or IP address to redirect game traffic to. This should match myAddress
in SpaceNinjaServer.http_port
— The port to use for HTTP traffic. This should match httpPort
in SpaceNinjaServer.https_port
— The port to use for HTTPS traffic. This should match httpsPort
in SpaceNinjaServer.autologin
autologin_email
autologin_password
— The whirlpool hash of the password to use for autologin. You can simply enter your password and it will automatically be hashed and overwritten.high_damage_numbers_patch
— If true, patches the game to display the exact number of damage that you dealt to fix -2147483648 showing up on high damage.simulacrum_blacklisted
— If true, blacklisted enemies are shown in the Simulacrum. Defaults to false to match the game.simulacrum_whitelisted
— If true, whitelisted enemies are shown in the Simulacrum. Defaults to true to match the game.pause_always_stops_time
disable_nrs_connection
— If true, disables NRS connections, preventing the game from showing "Please ensure that your firewall permits UDP ports 4950 & 4955."ee_log_in_console
— If true, writes everything that gets written to EE.log to the console as well.skip_mission_start_timer
— If true, disables the 5 second wait before a mission starts.fov_override
— If not 0, overrides the game's FOV setting. You can use any value from 1 to 226.forced_profile_dir
— An absolute path to a folder that will be used to read and write your game settings. Notably, this can be used to have the same settings regardless of username.auto_start_scripts
— A list of scripts to automatically start, e.g. ["samples/Cycle Camera Hotkey (K).pluto"]
.dont_resolve_labels
— If true, shows language tags instead of their associated value, e.g. /Menu/Confirm_Item_Yes
instead of YES
.save_all_metadata
— If true, implicitly creates an empty patch on every metadata read to make it available for get_effective_metadata requests. May degrade performance.write_all_metadata_reads_to_console
— If true, writes all metadata reads to the console. May degrade performance.write_all_metadata_reads_to_ee_log
— If true, write all metadata reads to EE.log. May degrade performance.write_patches_metadata_reads_to_console
— If true, writes patched metadata reads to the console. May degrade performance.write_patches_metadata_reads_to_ee_log
— If true, write patched metadata reads to EE.log. May degrade performance.While the game is running, the you can visit http://localhost:61558/ to modify some of the above options, access additional features like teleportation, and use scripts.
The bootstrapper adds the owfServerHost
command line argument, which can be used to override the server_host
in the config.
While in the pre-login state, the overlay indicates the current server host, which can also be changed by typing @server_host
(e.g. @localhost
) in the email field with any password and attempting to log in.
When connecting to a server, the bootstrapper requests /custom/tunables.json
to check the JSON object for the presence of the following fields:
prohibit_skip_mission_start_timer
prohibit_fov_override
prohibit_freecam
prohibit_teleport
prohibit_scripts
The presence of a field disables the respective feature.
buildLabel
to indicate the client's buildLabel.clientMod
parameter to indicate that the OpenWF Bootstrapper is being used and what version of it.xpBasedLevelCapDisabled
to indicate that the client has been patched to accept any PlayerLevel and doesn't need XPInfo to match.Metadata patches are generally parsed line by line, with roughly the following steps being taken for each line:
/
, a new patch for the given absolute path is started. If the line ends on &
, the next line that also starts with /
will be added to this patch instead of creating a new patch.&
, that character is removed from the line and the rest of the line is assumed to be an absolute path to be added to the current patch.>
, that character is removed from the line and the rest of the line is assumed to be an absolute path for which a new patch is created.r|
, a replacement is added to the current patch in the form r|A|Z
which means A
in the metadata will be replaced with Z
.If multiple patches affect the same absolute path, they are combined.