While the main feature of the bootstrapper (dwmapi.dll or wtsapi32.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
— 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
— 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_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.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, e.g. ["samples/Cycle Camera Hotkey (K).pluto"]
.alternative_loading
— Enables an alternative loading mode (Server.FastLoad
) which also skips some intro cutscenes, e.g. when loading into a relay.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, the 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_timer
prohibit_fov_override
prohibit_freecam
prohibit_teleport
prohibit_scripts
The 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 OpenWF/Metadata Patches.txt
, although you can also create a OpenWF/Metadata Patches/
folder and any text file inside of that will be loaded as well.
They 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
.s|
, a regex substitution is added to the current patch, e.g. s|(.+)=1|$1=0
would change HasCooldown=1
to be HasCooldown=0
.If multiple patches affect the same absolute path, they are combined.