This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.
-
- Before we start: know what you're replacing. I am going to be using /Lotus/Interface/PolarityPoint.png as an example, which is the icon for the Vazarin polarity.
- To explore textures, I can recommend using the GUI of Puxtril's Warframe Exporter.
Within your copy of warframe-cache-tools, you can now run pluto extract.pluto /Lotus/Interface/PolarityPoint.png to download & export the texture to the assets folder.
-
Head inside of the assets folder until you find PolarityPoint.png.dds.
-
Open the DDS file inside of a hex editor like HexEd.it or HxD and take note of the format, e.g. you will see the string DXT1 or DXT5 in the 6th row.
-
You are now free to modify the image however you want. Just take care that the file has the same name, dimensions/resolution, and format/encoding as seen before.
-
To build your assets, run pluto build.pluto within the warframe-cache-tools directory.
-
Finally, to get the assets into the game, you can copy the Content Replacements folder from warframe-cache-tools into the OpenWF folder of your client. The Bootstrapper will automatically patch the game to use your modified content, and if you ever wanna stop using it, you can simply remove the client's Content Replacements folder.
This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.
+
+ Before we start: know what you're replacing. I am going to be using /Lotus/Interface/PolarityPoint.png as an example, which is the icon for the Vazarin polarity.
+ To explore textures, I can recommend using the GUI of Puxtril's Warframe Exporter.
Within your copy of warframe-cache-tools, you can now run pluto extract.pluto /Lotus/Interface/PolarityPoint.png to download & export the texture to the assets folder.
+
Head inside of the assets folder until you find PolarityPoint.png.dds.
+
Open the DDS file inside of a hex editor like HexEd.it or HxD and take note of the format, e.g. you will see the string DXT1 or DXT5 in the 6th row.
+
You are now free to modify the image however you want. Just take care that the file has the same name, dimensions/resolution, and format/encoding as seen before.
+
To build your assets, run pluto build.pluto within the warframe-cache-tools directory.
+
Finally, to get the assets into the game, you can copy the Content Replacements folder from warframe-cache-tools into the OpenWF folder of your client. The Bootstrapper will automatically patch the game to use your modified content, and if you ever wanna stop using it, you can simply remove the client's Content Replacements folder.
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.
-
Client Config.json
-
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_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.
-
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.
-
-
HTTP Interface
-
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.
-
This web interface uses the game's language or ?lang= query parameter to check for translations. The builtin translations are mirrored from https://onlyg.it/OpenWF/Translations. You can provide a OpenWF/dict.cat.txt file to provide a custom work-in-progress translation.
-
Developers can also use the HTTP interface to interact with the bootstrapper. In addition to commands (documented below), the following routes are available: /ping, /save_all_metadata, /write_all_metadata_reads_to_console, /write_all_metadata_reads_to_ee_log, /write_patched_metadata_reads_to_console, /write_patched_metadata_reads_to_ee_log, /pause_always_stops_time, /server_host, /status, /toggle_console, /scripts, /start_script, /start_script_inline, /autostart_scripts, /add_autostart_script, /remove_autostart_script, /apply_hotfix, /version, /game_version, /check_label_replacements, /memory, /get_effective_metadata
-
Command Line Arguments
-
The bootstrapper adds the owfServerHost command line argument, which can be used to override the server_host in the config.
-
Tunables
-
When connecting to a server, the bootstrapper requests /custom/tunables.json. The resulting JSON object may provide the following fields:
-
-
token — if given, this string will be provided as a query parameter in the login request to indicate acknowledgement of the tunables
-
prohibit_skip_mission_start_timer — if true, prohibits skip_mission_start_timer
-
prohibit_fov_override — if true, prohibits fov_override
-
prohibit_freecam — if true, prohibits freecam
-
prohibit_teleport — if true, prohibits teleport
-
prohibit_scripts — if true, prohibits the execution of user-defined scripts
-
-
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.
-
Traffic Deviations
-
-
login.php & worldState.php requests have the extra query parameter buildLabel to indicate the client's buildLabel.
-
login.php requests also have an extra clientMod parameter indicating the Bootstrapper's name and version. If Metadata Patches are in use, metadataPatchesInUse=1 is added as well.
-
inventory.php & missionInventoryUpdate.php requests have the extra query parameter xpBasedLevelCapDisabled to indicate that the client has been patched to accept any PlayerLevel and doesn't need XPInfo to match.
-
The IRC USER message is adjusted to contain nonce=... in the 'realname' field.
-
-
Metadata Patches
-
Metadata Patches are loaded from .txt files in the OpenWF/Metadata Patches/ folder.
-
They are parsed line by line. If a line starts with /, a new patch for the given absolute path is started.
-
It is possible to have a single patch affect multiple paths by using ampersands. The start of a patch can also take up multiple lines if the ampersand is at the end of the line or the beginning of the next line.
-
For the remaining processing, leading and trailing spaces and tabs are ignored:
-
-
Lines starting with > also start a new patch but can be used at any indentation level.
-
Any line not starting with a special token (>, r|, ...) is added as a prefix to the effective metadata. This works to add top-level properties but also to replace them because the game resolves duplicates by ignoring subsequent entries.
-
Lines starting with r| create replacements, e.g. r|A|Z replaces all instances of A with Z in affected metadata.
-
Lines starting with 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.
-
Content Management
-
The bootstrapper handles the client's content requests by consulting the OpenWF/Content/ folder, forwarding the request to the configured server in case a file is not found.
-
At minimum, the client will request /0/H.Cache.bin!D_---------------------w. The bootstrapper has 3 modes for managing this file:
-
-
Managed — If content replacements are in use, they are copied over into the content folder along with backups, and new cache manifests (B.Cache.Windows.bin and H.Cache.bin) will be created to ensure your content is loaded. Otherwise,
-
Unmanaged — If OpenWF/Content/0/UNMANAGED exists, it is assumed that OpenWF/Content/0/H.Cache.bin!D_---------------------w is correctly in place and no attempts to correct it will be made. Otherwise,
-
Default — The bootstrapper will provide a OpenWF/Content/0/H.Cache.bin!D_---------------------w file that should require no extra content requests except for undoing content replacements.
-
-
WebSocket Connection to Server
-
After login, the bootstrapper will attempt to establish a WebSocket connection with ws://server_host:http_port/custom/ws. If the WebSocket upgrade succeeds, the bootstrapper sends {"auth_game":{"accountId":...,"nonce":...}}. With this connection in place, the server can send {"sync_inventory":true} to cause the client to resync from inventory.php or {"tunables":{...}} to send updated tunables.
-
Command API
-
The command API is a versatile way for developers to interact with the bootstrapper. Commands are available via HTTP, WebSocket, and the scripting API. For example, to enable skip_mission_start_timer, one can use HTTP with /skip_mission_start_timer?true, WebSocket with send("skip_mission_start_timer?true") or scripting with owf_command("skip_mission_start_timer?true").
I hope this document was useful. If you have any feature requests or bug reports regarding the bootstrapper, feel free to submit them at https://onlyg.it/OpenWF/Bootstrapper/issues.
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.
+
Client Config.json
+
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_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.
+
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.
+
+
HTTP Interface
+
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.
+
This web interface uses the game's language or ?lang= query parameter to check for translations. The builtin translations are mirrored from https://onlyg.it/OpenWF/Translations. You can provide a OpenWF/dict.cat.txt file to provide a custom work-in-progress translation.
+
Developers can also use the HTTP interface to interact with the bootstrapper. In addition to commands (documented below), the following routes are available: /ping, /save_all_metadata, /write_all_metadata_reads_to_console, /write_all_metadata_reads_to_ee_log, /write_patched_metadata_reads_to_console, /write_patched_metadata_reads_to_ee_log, /pause_always_stops_time, /server_host, /status, /toggle_console, /scripts, /start_script, /start_script_inline, /autostart_scripts, /add_autostart_script, /remove_autostart_script, /apply_hotfix, /version, /game_version, /check_label_replacements, /memory, /get_effective_metadata
+
Command Line Arguments
+
The bootstrapper adds the owfServerHost command line argument, which can be used to override the server_host in the config.
+
Tunables
+
When connecting to a server, the bootstrapper requests /custom/tunables.json. The resulting JSON object may provide the following fields:
+
+
token — if given, this string will be provided as a query parameter in the login request to indicate acknowledgement of the tunables
+
prohibit_skip_mission_start_timer — if true, prohibits skip_mission_start_timer
+
prohibit_fov_override — if true, prohibits fov_override
+
prohibit_freecam — if true, prohibits freecam
+
prohibit_teleport — if true, prohibits teleport
+
prohibit_scripts — if true, prohibits the execution of user-defined scripts
+
+
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.
+
Traffic Deviations
+
+
login.php & worldState.php requests have the extra query parameter buildLabel to indicate the client's buildLabel.
+
login.php requests also have an extra clientMod parameter indicating the Bootstrapper's name and version. If Metadata Patches are in use, metadataPatchesInUse=1 is added as well.
+
inventory.php & missionInventoryUpdate.php requests have the extra query parameter xpBasedLevelCapDisabled to indicate that the client has been patched to accept any PlayerLevel and doesn't need XPInfo to match.
+
The IRC USER message is adjusted to contain nonce=... in the 'realname' field.
+
+
Metadata Patches
+
Metadata Patches are loaded from .txt files in the OpenWF/Metadata Patches/ folder.
+
They are parsed line by line. If a line starts with /, a new patch for the given absolute path is started.
+
It is possible to have a single patch affect multiple paths by using ampersands. The start of a patch can also take up multiple lines if the ampersand is at the end of the line or the beginning of the next line.
+
For the remaining processing, leading and trailing spaces and tabs are ignored:
+
+
Lines starting with > also start a new patch but can be used at any indentation level.
+
Any line not starting with a special token (>, r|, ...) is added as a prefix to the effective metadata. This works to add top-level properties but also to replace them because the game resolves duplicates by ignoring subsequent entries.
+
Lines starting with r| create replacements, e.g. r|A|Z replaces all instances of A with Z in affected metadata.
+
Lines starting with 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.
+
Content Management
+
The bootstrapper handles the client's content requests by consulting the OpenWF/Content/ folder, forwarding the request to the configured server in case a file is not found.
+
At minimum, the client will request /0/H.Cache.bin!D_---------------------w. The bootstrapper has 3 modes for managing this file:
+
+
Managed — If content replacements are in use, they are copied over into the content folder along with backups, and new cache manifests (B.Cache.Windows.bin and H.Cache.bin) will be created to ensure your content is loaded. Otherwise,
+
Unmanaged — If OpenWF/Content/0/UNMANAGED exists, it is assumed that OpenWF/Content/0/H.Cache.bin!D_---------------------w is correctly in place and no attempts to correct it will be made. Otherwise,
+
Default — The bootstrapper will provide a OpenWF/Content/0/H.Cache.bin!D_---------------------w file that should require no extra content requests except for undoing content replacements.
+
+
WebSocket Connection to Server
+
After login, the bootstrapper will attempt to establish a WebSocket connection with ws://server_host:http_port/custom/ws. If the WebSocket upgrade succeeds, the bootstrapper sends {"auth_game":{"accountId":...,"nonce":...}}. With this connection in place, the server can send {"sync_inventory":true} to cause the client to resync from inventory.php or {"tunables":{...}} to send updated tunables.
+
Command API
+
The command API is a versatile way for developers to interact with the bootstrapper. Commands are available via HTTP, WebSocket, and the scripting API. For example, to enable skip_mission_start_timer, one can use HTTP with /skip_mission_start_timer?true, WebSocket with send("skip_mission_start_timer?true") or scripting with owf_command("skip_mission_start_timer?true").
I hope this document was useful. If you have any feature requests or bug reports regarding the bootstrapper, feel free to submit them at https://onlyg.it/OpenWF/Bootstrapper/issues.
Run git clone https://openwf.io/SpaceNinjaServer.git in a command prompt to download SpaceNinjaServer in the current working directory
-
Open the SpaceNinjaServer folder (cd SpaceNinjaServer)
-
Copy config-vanilla.json to create a config.json
-
(Optional) Edit the config.json to match your MongoDB settings (if not default) and however else you would like to configure the server
-
(Optional) If you have a GB of free space, you might want to download stripped assets such as ability videos so the client can request them on-demand: Run git clone https://openwf.io/0.git in the static/data folder
-
Run npm install --omit=dev --omit=optional to install library dependencies
-
Now you can run npm run raw to start the server anytime
-
-
Server Update
-
You can simply run the UPDATE AND START SERVER script for this, but otherwise the steps are pretty simple:
-
-
Run git pull in the SpaceNinjaServer folder
-
(Optional) If you have the stripped assets, run git pull in the static/data/0 folder
-
Run npm install --omit=dev --omit=optional to synchronize library dependencies
-
Now you can use npm run raw to start the server again
-
-
Client Patch
-
In order to connect to custom servers, the client needs to be patched, which is what the boostrapper is for.
-
-
Prerequisite: Because this is a project about preservation, we do not support the latest versions immediately. Please see here for supported versions and download instructions.
-
Setup: Download the boostrapper DLL (wtsapi32.dll) and put it in your game's installation folder (the one where Warframe.x64.exe is in). On Linux, you may need to rename it to dwmapi.dll and/or use WINEDLLOVERRIDE.
-
Usage: With the DLL in place, you can double-click Warframe.x64.exe to start the game with OpenWF.
In addition to SpaceNinjaServer, you can also set up an IRC server for the in-game chat:
-
-
warframe-irc-server — an IRC server specifically made for OpenWF. Talks to SpaceNinjaServer to give "chat moderator" permissions and report dropped connections.
-
InspIRCd — a well-known IRC server implementation used by DE themselves (albeit with unknown modifications). A pre-configured Windows copy of it can be downloaded here.
Run git clone https://openwf.io/SpaceNinjaServer.git in a command prompt to download SpaceNinjaServer in the current working directory
+
Open the SpaceNinjaServer folder (cd SpaceNinjaServer)
+
Copy config-vanilla.json to create a config.json
+
(Optional) Edit the config.json to match your MongoDB settings (if not default) and however else you would like to configure the server
+
(Optional) If you have a GB of free space, you might want to download stripped assets such as ability videos so the client can request them on-demand: Run git clone https://openwf.io/0.git in the static/data folder
+
Run npm install --omit=dev --omit=optional to install library dependencies
+
Now you can run npm run raw to start the server anytime
+
+
Server Update
+
You can simply run the UPDATE AND START SERVER script for this, but otherwise the steps are pretty simple:
+
+
Run git pull in the SpaceNinjaServer folder
+
(Optional) If you have the stripped assets, run git pull in the static/data/0 folder
+
Run npm install --omit=dev --omit=optional to synchronize library dependencies
+
Now you can use npm run raw to start the server again
+
+
Client Patch
+
In order to connect to custom servers, the client needs to be patched, which is what the boostrapper is for.
+
+
Prerequisite: Because this is a project about preservation, we do not support the latest versions immediately. Please see here for supported versions and download instructions.
+
Setup: Download the boostrapper DLL (wtsapi32.dll) and put it in your game's installation folder (the one where Warframe.x64.exe is in). On Linux, you may need to rename it to dwmapi.dll and/or use WINEDLLOVERRIDE.
+
Usage: With the DLL in place, you can double-click Warframe.x64.exe to start the game with OpenWF.
In addition to SpaceNinjaServer, you can also set up an IRC server for the in-game chat:
+
+
warframe-irc-server — an IRC server specifically made for OpenWF. Talks to SpaceNinjaServer to give "chat moderator" permissions and report dropped connections.
+
InspIRCd — a well-known IRC server implementation used by DE themselves (albeit with unknown modifications). A pre-configured Windows copy of it can be downloaded here.
This guide will go over how to get your inventory data from live servers and import it in SpaceNinjaServer.
-
Export via AlecaFrame
-
If you use AlecaFrame, you already have an encrypted version of your inventory. You can use this tool to help you locate and decrypt it.
-
Export via warframe-api-helper
-
You can use warframe-api-helper to get your credentials while the game is running & logged in on live. It will download your inventory for you and store it in inventory.json.
-
However, using the credentials (?accountId=...&nonce=...), it is also possible to get your personal rooms: https://api.warframe.com/api/getShip.php?accountId=...&nonce=...
-
Import to SpaceNinjaServer
-
Now that you have your inventory, open the SpaceNinjaServer WebUI and select the Import tab. You can simply paste the entire thing in the textbox and press the Submit button.
-
If you have a getShip response, you can import it the same way. Otherwise, you are advised to use Unlock All Ship Features in the Cheats tab to avoid being locked out of most things.
This guide will go over how to get your inventory data from live servers and import it in SpaceNinjaServer.
+
Export via AlecaFrame
+
If you use AlecaFrame, you already have an encrypted version of your inventory. You can use this tool to help you locate and decrypt it.
+
Export via warframe-api-helper
+
You can use warframe-api-helper to get your credentials while the game is running & logged in on live. It will download your inventory for you and store it in inventory.json.
+
However, using the credentials (?accountId=...&nonce=...), it is also possible to get your personal rooms: https://api.warframe.com/api/getShip.php?accountId=...&nonce=...
+
Import to SpaceNinjaServer
+
Now that you have your inventory, open the SpaceNinjaServer WebUI and select the Import tab. You can simply paste the entire thing in the textbox and press the Submit button.
+
If you have a getShip response, you can import it the same way. Otherwise, you are advised to use Unlock All Ship Features in the Cheats tab to avoid being locked out of most things.
OpenWF is a software suite centered around customizing Warframe, including:
-
-
SpaceNinjaServer — an open-source reimplementation of the game's web services. As we have custom server software, OpenWF avoids interference with the live game while allowing full customization of savedata.
-
The Bootstrapper — our main DLL patching the client to connect to custom servers, but for newer versions, it also has some QoL features and cheats as well as a scripting API, label replacements and metadata patches, allowing for extensive customization of the experience. Browse mods.
OpenWF works entirely offline, so the versions supported by OpenWF will always be available to play and revisit, and it is indeed already possible to revisit old versions.
-
-
-
-
-
+
+
+
+ About OpenWF
+
+
+
+
+
+
+
+
OpenWF is a software suite centered around customizing Warframe, including:
+
+
SpaceNinjaServer — an open-source reimplementation of the game's web services. As we have custom server software, OpenWF avoids interference with the live game while allowing full customization of savedata.
+
The Bootstrapper — our main DLL patching the client to connect to custom servers, but for newer versions, it also has some QoL features and cheats as well as a scripting API, label replacements and metadata patches, allowing for extensive customization of the experience. Browse mods.
OpenWF works entirely offline, so the versions supported by OpenWF will always be available to play and revisit, and it is indeed already possible to revisit old versions.
The following is a list of game versions that have been verified to at least be able to login and play when using the Bootstrapper and SpaceNinjaServer.
There is a DLL + fork of SpaceNinjaServer that can be used to revisit 2013 Warframe. More information about this can be found on our Discord, specifically in this thread.
Then, to download this version, simply run DepotDownloader -app 230410 -depot 230411 -manifest -username <your steam username> -remember-password. Note that DepotDownloader may report errors; these are generally only temporary and it will try again.
The following is a list of game versions that have been verified to at least be able to login and play when using the Bootstrapper and SpaceNinjaServer.
There is a DLL + fork of SpaceNinjaServer that can be used to revisit 2013 Warframe. More information about this can be found on our Discord, specifically in this thread.
Then, to download this version, simply run DepotDownloader -app 230410 -depot 230411 -manifest -username <your steam username> -remember-password. Note that DepotDownloader may report errors; these are generally only temporary and it will try again.