While the main feature of the bootstrapper (wtsapi32.dll, dwmapi.dll, or version.dll) is to use a custom server with the game, it has other features as well.
The bootstrapper's configuration is in OpenWF/Client Config.json relative to your game folder. It has the following fields:
fallback_language — If not empty, this language will be used when Warframe.x64.exe is invoked without a language command line argument.fallback_languageVO — If not empty, this voiceover language will be used when Warframe.x64.exe is invoked without a languageVO command line argument.fallback_graphicsDriver — If not empty, this graphics driver will be used when Warframe.x64.exe is invoked without a graphicsDriver command line argument.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 — Uses the provided credentials to automatically login on startup. If another instance is logged in on the same account, it will be forcefully logged out.autologin_emailautologin_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_timedisable_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.logout_on_request_failure — If false, the game will ignore HTTP request failures/timeouts instead of forcing a logout.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.alternative_loading — Enables an alternative loading mode (Server.FastLoad) which also skips intro cutscenes when loading into a relay. However, this breaks some parts of The New War and possibly other missions.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, writes 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, writes patched metadata reads to EE.log. May degrade performance.While the game is running, you can visit http://localhost:6155/ 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.
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_timerprohibit_fov_overrideprohibit_freecamprohibit_teleportprohibit_scriptsThe presence of a field disables the respective feature.
To aid in troubleshooting, the bootstrapper assumes that a compatible server responds to this request with status code 200 and a valid JSON object, otherwise showing a warning popup.
buildLabel to indicate the client's buildLabel.clientMod parameter indicating the Bootstrapper's name and version. If Metadata Patches are in use, metadataPatchesInUse=1 is added as well.xpBasedLevelCapDisabled to indicate that the client has been patched to accept any PlayerLevel and doesn't need XPInfo to match.USER message is adjusted to contain nonce=... in the 'realname' field.Metadata Patches are loaded from .txt files in the OpenWF/Metadata Patches/ folder.
They are parsed line by line, with leading and trailing spaces and tabs being ignored:
> /Path/Here starts a patch that will be applied to /Path/Here.> /First/Path & /Second/Path starts a patch that will be applied to /First/Path and /Second/Path. It is possible to stretch this over multiple lines by either ending a line with & or starting the new line &.>, r|, ...) is added as a prefix to all affected metadata. This works to add top-level properties but also to replace them because the game resolves duplicates by ignoring subsequent entries.r| create replacements, e.g. r|A|Z replaces all instances of A with Z in affected metadata.s| create regex substitutions, e.g. s|(?m)^(.+)=1$|$1=0 would replace a value of 1 on any line with a 0, using the 'm' flag here so ^ and $ also match on line boundaries. See here for more information about the Regex engine.If multiple patches affect the same absolute path, they are combined.