Compare commits

...

31 Commits
german ... main

Author SHA1 Message Date
5766fcc098 Note remaining U22 manifests 2025-05-10 06:48:05 +02:00
07fff3ae87 Note 3725569727599851360 2025-05-10 06:32:40 +02:00
cbbf2aba46 Note 5869273198520287595 2025-05-09 14:19:11 +02:00
483c37a2d0 Note 2970877824413815022 2025-05-09 12:08:55 +02:00
df6a7cfaf6 Note 3099723078202393524 2025-05-09 11:03:10 +02:00
605cb89e98 Note 4404971551504983924 2025-05-09 02:18:12 +02:00
5c53d359d1 Note 4942488930993990244 2025-05-08 15:44:42 +02:00
ae9167d5b4 Note 896988770099174429 2025-05-08 14:45:23 +02:00
0d834151e4 Note 3078917755629993445 2025-05-08 05:23:17 +02:00
5cf3da534a Note 1659398175797234554 2025-05-08 05:21:21 +02:00
2645b5a6c4 Note 4538343592657854566 2025-05-07 12:29:52 +02:00
c41f47d7a2 Update bootstrapper manual for 0.10.14 2025-05-07 07:33:10 +02:00
dc51c60b61 Update for booststrapper 0.10.13 2025-05-06 16:43:36 +02:00
e5ecc596dc Note versions which load into tutorial 2025-05-05 14:04:58 +02:00
25856e7077 Update old versions for bootstrapper 0.10.12 2025-05-05 04:05:44 +02:00
16071ecacc Update old versions for bootstrapper 0.10.11 2025-05-03 07:13:14 +02:00
a73b7956f5 Note 2084947150827453084 2025-05-02 07:08:11 +02:00
ed52d3f902 Note 3864063200081954630 2025-05-02 06:00:21 +02:00
415bc087d6 Update for booststrapper 0.10.10 hotfix 1 2025-05-01 13:31:55 +02:00
e26672e0c9 Note jade shadows hotfix 7 2025-05-01 06:43:13 +02:00
be97927c8d Update old versions for bootstrapper 0.10.10 2025-05-01 05:50:46 +02:00
208ae1ff8a Note another somewhat-interesting supported version 2025-04-29 11:08:06 +02:00
5bb7685559 Fix missing tbody 2025-04-29 04:18:34 +02:00
f0f2237e7e Fix get started link 2025-04-29 01:54:12 +02:00
629f6c0e0b Fix navbar dropdown active indicator for import & old versions page 2025-04-29 01:51:42 +02:00
e39a89cdda Note initial backwards compat 2025-04-29 01:45:20 +02:00
747b260d2c Update bootstrapper-manual for 0.10.9 2025-04-29 01:44:28 +02:00
0ae31d3d5f Slightly better wording 2025-04-29 00:50:45 +02:00
439d88418e Remove _lang folder
Missing cleanup from b040366e655fe81b2c865a345d61abfb59cc0447
2025-04-24 20:27:58 +02:00
03f367699b Link api helper shell script for Linux users 2025-04-24 07:05:30 +02:00
f90e13d455 Fix DLL download link
Issue introduced in b040366e655fe81b2c865a345d61abfb59cc0447
2025-04-23 20:09:49 +02:00
9 changed files with 655 additions and 171 deletions

View File

@ -11,11 +11,12 @@ $path = strtok($_SERVER["REQUEST_URI"], '?');
<div class="collapse navbar-collapse" id="navbar-content">
<ul class="navbar-nav me-auto mb-0">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle<?=((substr($path, 0, 6) == "/guide" || substr($path, 0, 25) == "/asset-replacements-guide") ? " active" : ""); ?>" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Guides</a>
<a class="nav-link dropdown-toggle<?=((substr($path, 0, 6) == "/guide" || substr($path, 0, 7) == "/import" || substr($path, 0, 25) == "/asset-replacements-guide" || substr($path, 0, 13) == "/old-versions") ? " active" : ""); ?>" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Guides</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item<?=(substr($path, 0, 6) == "/guide" ? " active" : ""); ?>" href="/guide<?=$ext;?>">Setup</a></li>
<li><a class="dropdown-item<?=(substr($path, 0, 7) == "/import" ? " active" : ""); ?>" href="/import<?=$ext;?>">Importing</a></li>
<li><a class="dropdown-item<?=(substr($path, 0, 25) == "/asset-replacements-guide" ? " active" : ""); ?>" href="/asset-replacements-guide<?=$ext;?>">Asset Replacements</a></li>
<li><a class="dropdown-item<?=(substr($path, 0, 13) == "/old-versions" ? " active" : ""); ?>" href="/old-versions<?=$ext;?>">Old Versions</a></li>
</ul>
</li>
<li class="nav-item"><a class="nav-link<?=(substr($path, 0, 11) == "/contribute" ? " active" : ""); ?>" href="/contribute<?=$ext;?>">Contribute</a></li>

View File

@ -1,21 +0,0 @@
<?php
php_sapi_name() == "cli" or die("CLI only!");
$source = json_decode(file_get_contents("en.json"), true);
foreach (["de"] as $code)
{
$target = json_decode(file_get_contents("$code.json"), true);
$rewritten = [];
foreach ($source as $key => $value)
{
if (array_key_exists($key, $target))
{
$rewritten[$key] = $target[$key];
}
else
{
$rewritten[$key] = "[UNTRANSLATED] ".$source[$key];
}
}
file_put_contents("$code.json", json_encode($rewritten, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
}

View File

@ -1,68 +0,0 @@
{
"about.title": "Über OpenWF",
"about.0": "OpenWF ist eine Software-Suite zur Anpassung von Warframe, die Folgendes umfasst:",
"about.1": "<b>SpaceNinjaServer</b> — eine <a href=\"https://openwf.io/SpaceNinjaServer.git\">Open-Source</a>-Reimplementierung der Webdienste des Spiels. Da wir eigene Server-Software haben, vermeidet OpenWF Eingriffe in das Live-Spiel und ermöglicht gleichzeitig eine vollständige Anpassung der Spieldaten.",
"about.2": "Der <b>Bootstrapper</b> — unsere Haupt-DLL für die neueste Spielversion. Ihr Hauptzweck ist die Verbindung zu benutzerdefinierten Servern, aber sie bietet auch einige QoL-Funktionen und Cheats sowie eine Skripting-API, Label-Ersetzungen und Metadaten-Patches an, die eine umfassende Anpassung des Spiels ermöglichen.",
"about.cta": "Jetzt Loslegen",
"preservation.title": "Warframe bewahren",
"preservation.0": "Ein langfristiges Ziel des Projekts ist es, Warframe auch nach der Abschaltung der offiziellen Server zu erhalten und tatsächlich jedes Update spielbar zu machen.",
"preservation.1": "Unser Hauptfokus liegt derzeit darauf, mit dem Spiel aktuell zu bleiben. Es gibt jedoch eine DLL + einen Fork von SpaceNinjaServer, mit dem man Warframe aus dem Jahr 2013 erneut erleben kann. Weitere Informationen dazu findest du <a href=\"https://discord.gg/PNNZ3asUuY\">auf unserem Discord</a>, insbesondere <a href=\"https://discord.com/channels/1108159019635462206/1280628166825873510/1280628233355923497\">in diesem Thread</a>.",
"tm_disclaimer": "Warframe ist eine eingetragene Marke von Digital Extremes. Die Verwendung dient ausschließlich zur Identifikation und impliziert keine Zugehörigkeit zu oder Unterstützung durch Digital Extremes.",
"guides": "Anleitungen",
"setup": "[UNTRANSLATED] Setup",
"setup.title": "[UNTRANSLATED] OpenWF Setup Guide",
"setup.c.title": "[UNTRANSLATED] Client/Boostrapper",
"setup.c.simple": "[UNTRANSLATED] To use OpenWF, you only need to download the |DLL| and put it in your game's installation folder (the one where Warframe.x64.exe is in).",
"setup.c.dblclk": "[UNTRANSLATED] As long as this DLL is in the game folder, you can double-click Warframe.x64.exe to start the game with OpenWF.",
"setup.c.laurvt": "[UNTRANSLATED] Opening the game's launcher will revert it back to normal.",
"setup.c.docshttp": "[UNTRANSLATED] The DLL is <a href=\"bootstrapper-manual\" target=\"_blank\">fully documented here</a>, but the most important point is that, while the game is running, you can visit <a href=\"http://localhost:6155/\" target=\"_blank\">http://localhost:6155/</a> to manage options, cheats, and scripts.",
"setup.c.next": "[UNTRANSLATED] <b>Next steps:</b> By default, the DLL redirects requests to localhost — meaning the same machine you're playing on — so you'll either need to set up a server or change the server_host to point to a different machine that's already got a server running.",
"setup.s.prereq": "[UNTRANSLATED] Server Prerequisites",
"download": "[UNTRANSLATED] Download",
"setup.s.install": "[UNTRANSLATED] Server Installation",
"setup.s.install.1": "[UNTRANSLATED] Run <code>git clone https://openwf.io/SpaceNinjaServer.git</code> in a command prompt to download SpaceNinjaServer in the current working directory",
"setup.s.install.2": "[UNTRANSLATED] Open the SpaceNinjaServer folder (<code>cd SpaceNinjaServer</code>)",
"setup.s.install.3": "[UNTRANSLATED] Run <code>copy config.json.example config.json</code> to create a config.json from config.json.example",
"setup.s.install.4": "[UNTRANSLATED] (Optional) Edit the config.json to match your MongoDB settings (if not default) and however else you would like to configure the server",
"setup.s.install.5": "[UNTRANSLATED] (Optional) If you want stripped assets (~622 <abbr title=\"mebibytes (1 MiB = 1048576 bytes)\">MiB</abbr>) which the client will request from the server on-demand (most notably, <abbr title=\"Ability videos show a brief clip of an ability in action. They can be seen by hovering over an ability in the Arsenal, Codex, etc.\">ability videos</abbr>), run <code>git clone https://openwf.io/0.git</code> in the <code>static/data</code> folder",
"setup.s.install.6": "[UNTRANSLATED] Run <code>npm install --omit=dev</code> to install library dependencies",
"setup.s.install.7": "[UNTRANSLATED] Run <code>npm run build</code> to build the server",
"setup.s.install.8": "[UNTRANSLATED] Now you can run <code>npm run start</code> to start the server anytime",
"setup.s.update": "[UNTRANSLATED] Server Update",
"setup.s.update.wineasy": "[UNTRANSLATED] Windows users can simply double-click the <code>UPDATE AND START SERVER.bat</code>, but otherwise the steps are pretty simple:",
"setup.s.update.1": "[UNTRANSLATED] Run <code>git pull</code> in the SpaceNinjaServer folder",
"setup.s.update.2": "[UNTRANSLATED] (Optional) If you have the stripped assets, run <code>git pull</code> in the <code>static/data/0</code> folder",
"setup.s.update.3": "[UNTRANSLATED] Run <code>npm install --omit=dev</code> to synchronize library dependencies",
"setup.s.update.5": "[UNTRANSLATED] Now you can use <code>npm run start</code> to start the server again",
"setup.irc": "[UNTRANSLATED] IRC Server",
"setup.irc.leadin": "[UNTRANSLATED] In addition to SpaceNinjaServer, you can also set up an IRC server for the in-game chat:",
"setup.irc.wheel": "[UNTRANSLATED] <a href=\"https://github.com/Sainan/warframe-irc-server/releases\" target=\"_blank\">warframe-irc-server</a> — an IRC server specifically made for Warframe. Talks to SpaceNinjaServer to give \"chat moderator\" permissions and report dropped connections.",
"setup.irc.inspircd": "[UNTRANSLATED] 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 <a href=\"/supplementals/IRC.zip\" download>here</a>.",
"arep": "[UNTRANSLATED] Asset Replacements",
"arep.title": "[UNTRANSLATED] Asset Replacements Guide | OpenWF",
"arep.desc": "[UNTRANSLATED] This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.",
"arep.what": "[UNTRANSLATED] Before we start: <b>know what you're replacing</b>. I am going to be using <code>/Lotus/Interface/PolarityPoint.png</code> as an example, which is the icon for the Vazarin polarity.",
"arep.explore": "[UNTRANSLATED] To explore textures, I can recommend using the GUI of <a href=\"https://github.com/Puxtril/Warframe-Exporter\" target=\"_blank\">Puxtril's Warframe Exporter</a>.",
"arep.1": "[UNTRANSLATED] Clone <a href=\"https://github.com/Sainan/warframe-cache-tools\" target=\"_blank\">warframe-cache-tools</a>.",
"arep.2": "[UNTRANSLATED] Within your copy of warframe-cache-tools, you can now run <code>pluto extract.pluto /Lotus/Interface/PolarityPoint.png</code> to download & export the texture to the <code>assets</code> folder.",
"arep.3": "[UNTRANSLATED] Head inside of the <code>assets</code> folder until you find <code>PolarityPoint.png.dds</code>.",
"arep.4": "[UNTRANSLATED] Open the DDS file inside of a hex editor like <a href=\"https://hexed.it/\" target=\"_blank\">HexEd.it</a> or <a href=\"https://mh-nexus.de/en/hxd/\" target=\"_blank\">HxD</a> and take note of the format, e.g. you will see the string <code>DXT1</code> or <code>DXT5</code> in the 6th row.",
"arep.5": "[UNTRANSLATED] 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.",
"arep.6": "[UNTRANSLATED] To build your assets, run <code>pluto build.pluto</code> within the warframe-cache-tools directory.",
"arep.7": "[UNTRANSLATED] Finally, to get the assets into the game, you can copy the <code>content (managed)</code> 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 <code>content (managed)</code> folder.",
"import": "[UNTRANSLATED] Importing",
"import.title": "[UNTRANSLATED] Importing Guide | OpenWF",
"import.intro": "[UNTRANSLATED] This guide will go over how to get your inventory data from live servers and import it in SpaceNinjaServer.",
"import.export.title": "[UNTRANSLATED] Exporting Your Inventory From Live",
"import.export.alecaframe": "[UNTRANSLATED] If you use AlecaFrame, you already have an encrypted version of your inventory. You can use <a href=\"https://sainan.github.io/alecaframe-inventory-parser/\" target=\"_blank\">this tool</a> to help you locate and decrypt it.",
"import.export.helper": "[UNTRANSLATED] Alternatively, you can use |warframe-api-helper| to get a fresh copy by running it while the game is running & logged in on live. It will store it in <code>inventory.json</code>.",
"import.import.title": "[UNTRANSLATED] Importing Your Inventory To SpaceNinjaServer",
"import.import.desc": "[UNTRANSLATED] Now that you have your inventory, open the SpaceNinjaServer WebUI and locate the \"Import\" tab. You can simply paste the entire thing in the textbox and press the \"Submit\" button.",
"contribute": "[UNTRANSLATED] Contribute",
"contribute.title": "[UNTRANSLATED] Contributing to OpenWF",
"contribute.code": "[UNTRANSLATED] Code",
"contribute.code.desc": "[UNTRANSLATED] Code contributions would be most welcome, especially on SpaceNinjaServer, with <a href='https://onlyg.it/OpenWF/SpaceNinjaServer/issues' target='_blank'>many open issues</a>.",
"contribute.trans": "[UNTRANSLATED] Translations",
"contribute.trans.desc": "[UNTRANSLATED] Most OpenWF software has support for translations:",
"contribute.trans.this": "[UNTRANSLATED] The website you're on right now"
}

View File

@ -1,68 +0,0 @@
{
"about.title": "About OpenWF",
"about.0": "OpenWF is a software suite centered around customizing Warframe, including:",
"about.1": "<b>SpaceNinjaServer</b> — an <a href=\"https://openwf.io/SpaceNinjaServer.git\">open-source</a> 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.",
"about.2": "The <b>Bootstrapper</b> — our main DLL targeting the latest game version. Its core precept is connecting to custom servers, but 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 game.",
"about.cta": "Get Started",
"preservation.title": "Preserving Warframe",
"preservation.0": "A long-term goal of the project is to preserve Warframe after the official servers have shut down, and indeed being able to play any update.",
"preservation.1": "Our main focus right now is on staying up-to-date with the game, but there is a DLL + fork of SpaceNinjaServer that can be used to revisit 2013 Warframe. More information about this can be found <a href=\"https://discord.gg/PNNZ3asUuY\">on our Discord</a>, specifically <a href=\"https://discord.com/channels/1108159019635462206/1280628166825873510/1280628233355923497\">in this thread</a>.",
"tm_disclaimer": "Warframe is a registered trademark of Digital Extremes. Its use is for identification purposes only and does not imply any affiliation with or endorsement by Digital Extremes.",
"guides": "Guides",
"setup": "Setup",
"setup.title": "OpenWF Setup Guide",
"setup.c.title": "Client/Boostrapper",
"setup.c.simple": "To use OpenWF, you only need to download the |DLL| and put it in your game's installation folder (the one where Warframe.x64.exe is in).",
"setup.c.dblclk": "As long as this DLL is in the game folder, you can double-click Warframe.x64.exe to start the game with OpenWF.",
"setup.c.laurvt": "Opening the game's launcher will revert it back to normal.",
"setup.c.docshttp": "The DLL is <a href=\"bootstrapper-manual\" target=\"_blank\">fully documented here</a>, but the most important point is that, while the game is running, you can visit <a href=\"http://localhost:6155/\" target=\"_blank\">http://localhost:6155/</a> to manage options, cheats, and scripts.",
"setup.c.next": "<b>Next steps:</b> By default, the DLL redirects requests to localhost — meaning the same machine you're playing on — so you'll either need to set up a server or change the server_host to point to a different machine that's already got a server running.",
"setup.s.prereq": "Server Prerequisites",
"download": "Download",
"setup.s.install": "Server Installation",
"setup.s.install.1": "Run <code>git clone https://openwf.io/SpaceNinjaServer.git</code> in a command prompt to download SpaceNinjaServer in the current working directory",
"setup.s.install.2": "Open the SpaceNinjaServer folder (<code>cd SpaceNinjaServer</code>)",
"setup.s.install.3": "Run <code>copy config.json.example config.json</code> to create a config.json from config.json.example",
"setup.s.install.4": "(Optional) Edit the config.json to match your MongoDB settings (if not default) and however else you would like to configure the server",
"setup.s.install.5": "(Optional) If you want stripped assets (~622 <abbr title=\"mebibytes (1 MiB = 1048576 bytes)\">MiB</abbr>) which the client will request from the server on-demand (most notably, <abbr title=\"Ability videos show a brief clip of an ability in action. They can be seen by hovering over an ability in the Arsenal, Codex, etc.\">ability videos</abbr>), run <code>git clone https://openwf.io/0.git</code> in the <code>static/data</code> folder",
"setup.s.install.6": "Run <code>npm install --omit=dev</code> to install library dependencies",
"setup.s.install.7": "Run <code>npm run build</code> to build the server",
"setup.s.install.8": "Now you can run <code>npm run start</code> to start the server anytime",
"setup.s.update": "Server Update",
"setup.s.update.wineasy": "Windows users can simply double-click the <code>UPDATE AND START SERVER.bat</code>, but otherwise the steps are pretty simple:",
"setup.s.update.1": "Run <code>git pull</code> in the SpaceNinjaServer folder",
"setup.s.update.2": "(Optional) If you have the stripped assets, run <code>git pull</code> in the <code>static/data/0</code> folder",
"setup.s.update.3": "Run <code>npm install --omit=dev</code> to synchronize library dependencies",
"setup.s.update.5": "Now you can use <code>npm run start</code> to start the server again",
"setup.irc": "IRC Server",
"setup.irc.leadin": "In addition to SpaceNinjaServer, you can also set up an IRC server for the in-game chat:",
"setup.irc.wheel": "<a href=\"https://github.com/Sainan/warframe-irc-server/releases\" target=\"_blank\">warframe-irc-server</a> — an IRC server specifically made for Warframe. Talks to SpaceNinjaServer to give \"chat moderator\" permissions and report dropped connections.",
"setup.irc.inspircd": "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 <a href=\"/supplementals/IRC.zip\" download>here</a>.",
"arep": "Asset Replacements",
"arep.title": "Asset Replacements Guide | OpenWF",
"arep.desc": "This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.",
"arep.what": "Before we start: <b>know what you're replacing</b>. I am going to be using <code>/Lotus/Interface/PolarityPoint.png</code> as an example, which is the icon for the Vazarin polarity.",
"arep.explore": "To explore textures, I can recommend using the GUI of <a href=\"https://github.com/Puxtril/Warframe-Exporter\" target=\"_blank\">Puxtril's Warframe Exporter</a>.",
"arep.1": "Clone <a href=\"https://github.com/Sainan/warframe-cache-tools\" target=\"_blank\">warframe-cache-tools</a>.",
"arep.2": "Within your copy of warframe-cache-tools, you can now run <code>pluto extract.pluto /Lotus/Interface/PolarityPoint.png</code> to download & export the texture to the <code>assets</code> folder.",
"arep.3": "Head inside of the <code>assets</code> folder until you find <code>PolarityPoint.png.dds</code>.",
"arep.4": "Open the DDS file inside of a hex editor like <a href=\"https://hexed.it/\" target=\"_blank\">HexEd.it</a> or <a href=\"https://mh-nexus.de/en/hxd/\" target=\"_blank\">HxD</a> and take note of the format, e.g. you will see the string <code>DXT1</code> or <code>DXT5</code> in the 6th row.",
"arep.5": "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.",
"arep.6": "To build your assets, run <code>pluto build.pluto</code> within the warframe-cache-tools directory.",
"arep.7": "Finally, to get the assets into the game, you can copy the <code>content (managed)</code> 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 <code>content (managed)</code> folder.",
"import": "Importing",
"import.title": "Importing Guide | OpenWF",
"import.intro": "This guide will go over how to get your inventory data from live servers and import it in SpaceNinjaServer.",
"import.export.title": "Exporting Your Inventory From Live",
"import.export.alecaframe": "If you use AlecaFrame, you already have an encrypted version of your inventory. You can use <a href=\"https://sainan.github.io/alecaframe-inventory-parser/\" target=\"_blank\">this tool</a> to help you locate and decrypt it.",
"import.export.helper": "Alternatively, you can use |warframe-api-helper| to get a fresh copy by running it while the game is running & logged in on live. It will store it in <code>inventory.json</code>.",
"import.import.title": "Importing Your Inventory To SpaceNinjaServer",
"import.import.desc": "Now that you have your inventory, open the SpaceNinjaServer WebUI and locate the \"Import\" tab. You can simply paste the entire thing in the textbox and press the \"Submit\" button.",
"contribute": "Contribute",
"contribute.title": "Contributing to OpenWF",
"contribute.code": "Code",
"contribute.code.desc": "Code contributions would be most welcome, especially on SpaceNinjaServer, with <a href='https://onlyg.it/OpenWF/SpaceNinjaServer/issues' target='_blank'>many open issues</a>.",
"contribute.trans": "Translations",
"contribute.trans.desc": "Most OpenWF software has support for translations:",
"contribute.trans.this": "The website you're on right now"
}

View File

@ -74,12 +74,12 @@
</head>
<body>
<h1>OpenWF Bootstrapper Manual</h1>
<p>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.</p>
<p>While the main feature of the bootstrapper (dwmapi.dll, wtsapi32.dll, or version.dll) is to use a custom server with the game, it has other features as well.</p>
<h2>client_config.json</h2>
<p>The bootstrapper's configuration is in <code>OpenWF/client_config.json</code> relative to your game folder. It has the following fields:</p>
<ul>
<li><code>fallback_language</code>The language to use when Warframe.x64.exe was double-clicked or the argument was simply omitted.</li>
<li><code>fallback_graphicsDriver</code>The graphics driver to use when Warframe.x64.exe was double-clicked or the argument was simply omitted.</li>
<li><code>fallback_language</code>If not empty, this language will be used when Warframe.x64.exe is invoked without a <code>language</code> command line argument.</li>
<li><code>fallback_graphicsDriver</code>If not empty, this graphics driver will be used when Warframe.x64.exe is invoked without a <code>graphicsDriver</code> command line argument.</li>
<li><code>fallback_cluster</code> — The cluster to use when Warframe.x64.exe was double-clicked or the argument was simply omitted. Can be <code>public</code>, <code>test</code>, or <code>dev</code> — the latter two enable some more logging.</li>
<li><code>server_host</code> — The hostname or IP address to redirect game traffic to. This should match <code>myAddress</code> in SpaceNinjaServer.</li>
@ -101,6 +101,7 @@
<li><code>fov_override</code> — If not 0, overrides the game's FOV setting. You can use any value from 1 to 226.</li>
<li><code>forced_profile_dir</code> — 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.</li>
<li><code>auto_start_scripts</code> — A list of scripts to automatically start, e.g. <code>["samples/Cycle Camera Hotkey (K).pluto"]</code>.</li>
<li><code>alternative_loading</code> — Enables an alternative loading mode (<code>Server.FastLoad</code>) which also skips some intro cutscenes, e.g. when loading into a relay.</li>
<li><code>dont_resolve_labels</code> — If true, shows language tags instead of their associated value, e.g. <code>/Menu/Confirm_Item_Yes</code> instead of <code>YES</code>.</li>
<li><code>save_all_metadata</code> — If true, implicitly creates an empty patch on every metadata read to make it available for get_effective_metadata requests. May degrade performance.</li>
<li><code>write_all_metadata_reads_to_console</code> — If true, writes all metadata reads to the console. May degrade performance.</li>
@ -122,6 +123,7 @@
<li><code>prohibit_scripts</code></li>
</ul>
<p>The presence of a field disables the respective feature.</p>
<p>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.</p>
<h2>Traffic Deviations</h2>
<ul>
<li>login.php & worldState.php requests have the extra query parameter <code>buildLabel</code> to indicate the client's buildLabel.</li>

View File

@ -13,7 +13,7 @@ $version = ""; //json_decode(file_get_contents("supplementals/static data/buildC
<?php require "_components/navbar.php"; ?>
<div class="container mt-3">
<h2>Client/Boostrapper</h2>
<p>To use OpenWF, you only need to download the <a href="/supplementals/client%20drop-in//dwmapi.dll" download>dwmapi.dll</a> and put it in your game's installation folder (the one where Warframe.x64.exe is in).</p>
<p>To use OpenWF, you only need to download the <a href="/supplementals/client%20drop-in/<?=$dll_version;?>/dwmapi.dll" download>dwmapi.dll</a> and put it in your game's installation folder (the one where Warframe.x64.exe is in).</p>
<ul>
<li>As long as this DLL is in the game folder, you can double-click Warframe.x64.exe to start the game with OpenWF.</li>
<li>Opening the game's launcher will revert it back to normal.</li>

View File

@ -12,7 +12,12 @@
<h2>Exporting Your Inventory From Live</h2>
<ul>
<li>If you use AlecaFrame, you already have an encrypted version of your inventory. You can use <a href="https://sainan.github.io/alecaframe-inventory-parser/" target="_blank">this tool</a> to help you locate and decrypt it.</li>
<li>Alternatively, you can use <a href="https://github.com/Sainan/warframe-api-helper/releases/latest/download/warframe-api-helper.exe">warframe-api-helper</a> to get a fresh copy by running it while the game is running & logged in on live. It will store it in <code>inventory.json</code>.</li>
<li>
Alternatively, you can use <a href="https://github.com/Sainan/warframe-api-helper/releases/latest/download/warframe-api-helper.exe">warframe-api-helper</a> to get a fresh copy by running it while the game is running & logged in on live. It will store it in <code>inventory.json</code>.
<ul>
<li>For Linux users, there's <a href="https://gist.github.com/Turbozis/9e5fa359030abdf32cff7f104544fd16" target="_blank">a shell script</a> based on warframe-api-helper. It requires <code>jq</code> and <code>curl</code>.</li>
</ul>
</li>
</ul>
<h2>Importing Your Inventory To SpaceNinjaServer</h2>
<p>Now that you have your inventory, open the SpaceNinjaServer WebUI and locate the "Import" tab. You can simply paste the entire thing in the textbox and press the "Submit" button.</p>

View File

@ -11,15 +11,11 @@
<p>OpenWF is a software suite centered around customizing Warframe, including:</p>
<ul>
<li><b>SpaceNinjaServer</b> an <a href="https://openwf.io/SpaceNinjaServer.git">open-source</a> 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.</li>
<li>The <b>Bootstrapper</b> our main DLL targeting the latest game version. Its core precept is connecting to custom servers, but 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 game.</li>
<li>The <b>Bootstrapper</b> our main DLL targeting the latest game version. Its core precept is connecting to custom servers, but 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.</li>
</ul>
<a href="/guide.php" class="btn btn-primary">Get Started</a>
<h3 class="mt-3">Preserving Warframe</h3>
<p>
A long-term goal of the project is to preserve Warframe after the official servers have shut down, and indeed being able to play any update.<br/>
Our main focus right now is on staying up-to-date with the game, but there is a DLL + fork of SpaceNinjaServer that can be used to revisit 2013 Warframe. More information about this can be found <a href="https://discord.gg/PNNZ3asUuY">on our Discord</a>, specifically <a href="https://discord.com/channels/1108159019635462206/1280628166825873510/1280628233355923497">in this thread</a>. </p>
<hr>
<p>Warframe is a registered trademark of Digital Extremes. Its use is for identification purposes only and does not imply any affiliation with or endorsement by Digital Extremes.</p>
<a href="/guide<?=$ext;?>" class="btn btn-primary">Get Started</a>
<h3 class="mt-3">Preservation</h3>
<p>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 <a href="/old-versions<?=$ext;?>">revisit old versions</a>.</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>

637
old-versions.php Normal file
View File

@ -0,0 +1,637 @@
<!DOCTYPE html>
<html>
<head>
<title>Old Versions | OpenWF</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
</head>
<body data-bs-theme="dark">
<?php require "_components/navbar.php"; ?>
<div class="container mt-3">
<h3>Recent Versions</h3>
<p>While the Bootstrapper and SpaceNinjaServer do stay up-to-date, they are still compatible with previous versions and should at least allow you to login and play:</p>
<table class="table table-sm">
<thead>
<tr>
<th>Steam Manifest ID</th>
<th colspan="2">Version</th>
<th>Title</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>4212893560910494140</td>
<td><code>2025.03.18.09.51</code></td>
<td>&lt;&nbsp;38.5.0</td>
<td>Techrot&nbsp;Encore</td>
<td></td>
</tr>
<tr>
<td>3864063200081954630</td>
<td><code>2024.12.11.14.26</code></td>
<td>&lt;&nbsp;38.0.0</td>
<td>1999</td>
<td></td>
</tr>
<tr>
<td>513490184226321110</td>
<td><code>2024.10.11.10.06</code></td>
<td>=&nbsp;37.0.6</td>
<td>Koumei&nbsp;&amp;&nbsp;the&nbsp;Five&nbsp;Fates</td>
<td></td>
</tr>
<tr>
<td>2655930801276651913</td>
<td><code>2024.09.30.16.56</code></td>
<td>&lt;&nbsp;37.0.0</td>
<td>Koumei&nbsp;&amp;&nbsp;the&nbsp;Five&nbsp;Fates</td>
<td></td>
</tr>
<tr>
<td>8111233839173446959</td>
<td><code>2024.08.21.20.02</code></td>
<td>=&nbsp;36.1.2</td>
<td>The&nbsp;Lotus&nbsp;Eaters</td>
<td></td>
</tr>
<tr>
<td>7104716125379362906</td>
<td><code>2024.07.17.17.07</code></td>
<td>=&nbsp;36.0.7</td>
<td>Jade&nbsp;Shadows</td>
<td></td>
</tr>
<tr>
<td>8456987056335242580</td>
<td><code>2024.06.25.16.44</code></td>
<td>=&nbsp;36.0.4</td>
<td>Jade&nbsp;Shadows</td>
<td></td>
</tr>
<tr>
<td>8444137865636064549</td>
<td><code>2024.06.12.18.42</code></td>
<td>&lt;&nbsp;36.0.0</td>
<td>Jade&nbsp;Shadows</td>
<td></td>
</tr>
<tr>
<td>4262681179882731333</td>
<td><code>2024.03.24.20.00</code></td>
<td>=&nbsp;35.5.0</td>
<td>Dante&nbsp;Unbound</td>
<td></td>
</tr>
<tr>
<td>3417254152679980994</td>
<td><code>2024.02.16.17.13</code></td>
<td>=&nbsp;35.1.0</td>
<td>Whispers&nbsp;in&nbsp;the&nbsp;Walls</td>
<td></td>
</tr>
<!-- Also verified that 34.0.8 works, but sadly there's no manifest id for any of U34.-->
<tr>
<td>4487452668036984689</td>
<td><code>2023.07.26.16.38</code></td>
<td>&nbsp;33.6.0</td>
<td>Echoes&nbsp;of&nbsp;Duviri</td>
<td></td>
</tr>
<tr>
<td>7706746084885057576</td>
<td><code>2023.06.22.13.21</code></td>
<td>&nbsp;33.5.2</td>
<td>The&nbsp;Seven&nbsp;Crimes&nbsp;of&nbsp;Kullervo</td>
<td></td>
</tr>
<tr>
<td>1040973097284770411</td>
<td><code>2023.06.21.07.11</code></td>
<td>&nbsp;33.5.0</td>
<td>The&nbsp;Seven&nbsp;Crimes&nbsp;of&nbsp;Kullervo</td>
<td></td>
</tr>
<tr>
<td>503269306359201928</td>
<td><code>2023.04.25.23.40</code></td>
<td>&nbsp;33.0.0</td>
<td>The&nbsp;Duviri&nbsp;Paradox</td>
<td></td>
</tr>
<tr>
<td>2084947150827453084</td>
<td><code>2023.02.13.10.22</code></td>
<td>&nbsp;32.3.0</td>
<td>Citrine's&nbsp;Last&nbsp;Wish</td>
<td></td>
</tr>
<tr>
<td>1591604753021484150</td>
<td><code>2022.11.30.08.13</code></td>
<td>&nbsp;32.2.0</td>
<td>Lua's&nbsp;Prey</td>
<td></td>
</tr>
<tr>
<td>2433324865707385268</td>
<td><code>2022.09.06.19.24</code></td>
<td>&nbsp;32.0.0</td>
<td>Veilbreaker</td>
<td></td>
</tr>
<tr>
<td>7280281005656793707</td>
<td><code>2022.07.25.16.59</code></td>
<td>&nbsp;31.7.1</td>
<td>Echoes&nbsp;of&nbsp;the&nbsp;Zariman</td>
<td></td>
</tr>
<tr>
<td>8725083537193522917</td>
<td><code>2022.06.09.08.45</code></td>
<td>&nbsp;31.6.0</td>
<td>Echoes&nbsp;of&nbsp;the&nbsp;Zariman</td>
<td></td>
</tr>
<tr>
<td>4634493262513910961</td>
<td><code>2022.04.29.12.53</code></td>
<td>&nbsp;31.5.0</td>
<td>Angels&nbsp;of&nbsp;the&nbsp;Zariman</td>
<td></td>
</tr>
<tr>
<td>1198361709927223847</td>
<td><code>2022.02.09.08.55</code></td>
<td>&nbsp;31.1.0</td>
<td>The&nbsp;New&nbsp;War</td>
<td></td>
</tr>
<tr>
<td>563653176338996292</td>
<td><code>2021.12.15.00.15</code></td>
<td>&nbsp;31.0.0</td>
<td>The&nbsp;New&nbsp;War</td>
<td></td>
</tr>
<tr>
<td>8243603931064121923</td>
<td><code>2021.09.08.19.27</code></td>
<td>&nbsp;30.7.2</td>
<td>Sisters&nbsp;of&nbsp;Parvos</td>
<td></td>
</tr>
<tr>
<td>4538343592657854566</td>
<td><code>2021.09.08.19.27</code></td>
<td>&nbsp;30.7.1</td>
<td>Sisters&nbsp;of&nbsp;Parvos</td>
<td></td>
</tr>
<tr>
<td>1659398175797234554</td>
<td><code>2021.07.05.17.03</code></td>
<td>&nbsp;30.5.0</td>
<td>Sisters&nbsp;of&nbsp;Parvos</td>
<td></td>
</tr>
<tr>
<td>896988770099174429</td>
<td><code>2021.06.02.13.38</code></td>
<td>&nbsp;30.3.4</td>
<td>Call&nbsp;of&nbsp;the&nbsp;Tempestarii</td>
<td></td>
</tr>
<tr>
<td>1516755954909330587</td>
<td><code>2021.05.25.09.41</code></td>
<td>&nbsp;30.3.0</td>
<td>Call&nbsp;of&nbsp;the&nbsp;Tempestarii</td>
<td></td>
</tr>
<tr>
<td>1471695976410467945</td>
<td><code>2021.04.13.19.58</code></td>
<td>&nbsp;30.0.0</td>
<td>Call&nbsp;of&nbsp;the&nbsp;Tempestarii</td>
<td></td>
</tr>
<tr>
<td>2360447165794825746</td>
<td><code>2021.03.19.10.30</code></td>
<td>&nbsp;29.10.0</td>
<td>Orphix&nbsp;Venom</td>
<td></td>
</tr>
<tr>
<td>5695018007407901588</td>
<td><code>2021.01.25.08.49</code></td>
<td>&nbsp;29.6.8</td>
<td>Orphix&nbsp;Venom</td>
<td></td>
</tr>
<tr>
<td>2281391866826940520</td>
<td><code>2020.11.19.17.52</code></td>
<td>&nbsp;29.5.0</td>
<td>Echoes&nbsp;of&nbsp;Deimos<!-- Login screen says "Heart of Deimos" --></td>
<td></td>
</tr>
<tr>
<td>4589169429267220816</td>
<td><code>2020.11.04.18.58</code></td>
<td>&nbsp;29.3.1</td>
<td>Heart&nbsp;of&nbsp;Deimos</td>
<td></td>
</tr>
<tr>
<td>1198696432420157033</td>
<td><code>2020.08.25.18.35</code></td>
<td>&nbsp;29.0.0</td>
<td>Heart&nbsp;of&nbsp;Deimos</td>
<td></td>
</tr>
<tr>
<td>4862052161935324630</td>
<td><code>2020.08.12.19.57</code></td>
<td>&nbsp;28.3.0</td>
<td>Derelict&nbsp;Shift<!-- Login screen says "The Deadlock Protocol" --></td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>8322392782655512672</td>
<td><code>2020.06.12.16.46</code></td>
<td>&nbsp;28.0.0</td>
<td>The&nbsp;Deadlock&nbsp;Protocol</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>940429389442729133</td>
<td><code>2020.03.24.20.24</code></td>
<td>&nbsp;27.3.0</td>
<td>Empyrean</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>3078917755629993445</td>
<td><code>2020.03.05.16.06</code></td>
<td>&nbsp;27.2.0</td>
<td>Empyrean</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>5383208407459190147</td>
<td><code>2019.12.13.15.04</code></td>
<td>&nbsp;27.0.0</td>
<td>Empyrean</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>1746499861411165604</td>
<td><code>2019.12.13.00.31</code></td>
<td>&nbsp;26.1.3</td>
<td>Rising&nbsp;Tide</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>5191423722994130705</td>
<td><code>2019.11.22.21.24</code></td>
<td>&nbsp;26.1.0</td>
<td>Rising&nbsp;Tide</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>4211752956119480973</td>
<td><code>2019.11.05.12.52</code></td>
<td>&nbsp;26.0.4</td>
<td>The&nbsp;Old&nbsp;Blood</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>5213493012981659231</td>
<td><code>2019.10.31.22.42</code></td>
<td>&nbsp;26.0.0</td>
<td>The&nbsp;Old&nbsp;Blood</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>6484357939617346090</td>
<td><code>2019.09.09.12.43</code></td>
<td>&nbsp;25.7.5</td>
<td>Saint&nbsp;of&nbsp;Altra</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>6955217559566015186&nbsp;</td>
<td><code>2019.08.29.21.58</code></td>
<td>&nbsp;25.7.0</td>
<td>Saint&nbsp;of&nbsp;Altra</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>8839989774604564585</td>
<td><code>2019.08.29.20.01</code></td>
<td>&nbsp;25.7.0</td>
<td>Saint&nbsp;of&nbsp;Altra</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>3318532863308652389</td>
<td><code>2019.05.22.23.12</code></td>
<td>&nbsp;25.0.0</td>
<td>The&nbsp;Jovian&nbsp;Concord</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>192898029640470386</td>
<td><code>2019.04.04.21.31</code></td>
<td>&nbsp;24.6.0</td>
<td>Buried&nbsp;Debts</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>4942488930993990244</td>
<td><code>2019.03.15.18.11</code></td>
<td>&nbsp;24.5.1</td>
<td>Buried&nbsp;Debts</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>4404971551504983924</td>
<td><code>2019.03.08.00.37</code></td>
<td>&nbsp;24.4.0</td>
<td>Buried&nbsp;Debts</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>1904743723246597237</td>
<td><code>2019.03.07.20.21</code></td>
<td>&nbsp;24.4.0</td>
<td>Fortuna</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 174676543101364914 is 2018.11.29.15.55, Fortuna, but has a broken font. -->
<tr>
<td>8040761247114336449</td>
<td><code>2018.11.29.15.55</code></td>
<td>&nbsp;24.1.2</td>
<td>Fortuna</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>3725569727599851360</td>
<td><code>2018.11.15.16.49</code></td>
<td>&nbsp;24.0.8</td>
<td>Fortuna</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 8461211368258506784 -->
<tr>
<td>6046541448142309692</td>
<td><code>2018.11.08.14.45</code></td>
<td>&nbsp;24.0.0</td>
<td>Fortuna</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 8049567794324118250 -->
<!-- 1234607834806579897 -->
<!-- 677450530474051174 -->
<tr>
<td>8058901711639962245</td>
<td><code>2018.06.14.23.21</code></td>
<td>&nbsp;23.0.0</td>
<td>The&nbsp;Sacrifice<!-- Login screen says "Beasts of the Sanctuary" --></td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>566447983471491143</td>
<td><code>2018.05.17.16.28</code></td>
<td>&nbsp;22.20.0</td>
<td>Beasts&nbsp;of&nbsp;the&nbsp;Sanctuary</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>8448828347811631025</td>
<td><code>2018.04.20.02.04</code></td>
<td>&nbsp;22.18.0</td>
<td>Beasts&nbsp;of&nbsp;the&nbsp;Sanctuary</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>5922375304465722812</td>
<td><code>2018.03.15.19.39</code></td>
<td>&nbsp;22.16.0</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>6640882772717519747</td>
<td><code>2018.03.07.14.18</code></td>
<td>&nbsp;22.15.0</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>8004325165498360760</td>
<td><code>2018.02.22.14.34</code></td>
<td>&nbsp;22.13.4</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 8621631773919294851 is 2018.01.26.12.22, can log in but then you're stuck due to Script Error: attempt to call method 'GetOperator' (a nil value): In ?(844) originating from /Lotus/Scripts/PlayerShip.lua::SpawnPets with owner /Layer0/ScriptTrigger2 -->
<tr>
<td>4946799727072561536</td>
<td><code>2018.01.04.13.12</code></td>
<td>&nbsp;22.8.2</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>5301169201249491747</td>
<td><code>2017.12.12.12.15</code></td>
<td>&nbsp;22.7.0</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 5914709226935570547 is 2017.12.08.15.29, fails to start due to an assertion failure -->
<tr>
<td>5869273198520287595</td>
<td><code>2017.11.16.17.34</code></td>
<td>&nbsp;22.2.4</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>4661126446448856114</td>
<td><code>2017.10.12.17.04</code></td>
<td>&nbsp;22.0.0</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>1835327182756411758</td>
<td><code>2017.07.26.13.59</code></td>
<td>&nbsp;21.2.0</td>
<td>Chains&nbsp;of&nbsp;Harrow</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>2970877824413815022</td>
<td><code>2017.06.29.03.54</code></td>
<td>&nbsp;21.0.1</td>
<td>Chains&nbsp;of&nbsp;Harrow</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>9187782625344917768</td>
<td><code>2017.06.29.02.13</code></td>
<td>&nbsp;21.0.0</td>
<td>Chains&nbsp;of&nbsp;Harrow</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>3099723078202393524</td>
<td><code>2017.05.05.15.41</code></td>
<td>&nbsp;20.4.0</td>
<td>Octavia's&nbsp;Anthem</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>4574874014936523212</td>
<td><code>2017.03.26.04.21</code></td>
<td>&nbsp;20.0.3</td>
<td>Octavia's&nbsp;Anthem</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 8705016425420648723 is 2017.03.24.17.25, ~20.0.0, seems to have a broken cache as the loading scaleform doesn't show properly and it doesn't proceed to the login screen -->
<tr>
<td>6263571497645662720</td>
<td><code>2017.03.06.15.49</code></td>
<td>&nbsp;19.13.0</td>
<td>The&nbsp;Glast&nbsp;Gambit</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 2663512682334598162 -->
<!-- 4864838558963648894 -->
<!-- 4666421798085404101 -->
<!-- 6118281920152298389 -->
<!-- 8998041413872250076 -->
<!-- 6784000424578492584 is 2016.11.11.17.46, ~19.0.0, fails to start due to an assertion failure -->
<tr>
<td>7585839495921050946</td>
<td><code>2016.09.30.12.04</code></td>
<td>&nbsp;18.22.1</td>
<td>The&nbsp;Silver&nbsp;Grove</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>2086935969100698619</td>
<td><code>2016.08.26.11.08</code></td>
<td>&nbsp;18.18.5</td>
<td>The&nbsp;Silver&nbsp;Grove</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>3584168904277131181</td>
<td><code>2016.08.19.17.12</code></td>
<td>&nbsp;18.18.0</td>
<td>The&nbsp;Silver&nbsp;Grove</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 8065552974390268707 is 2016.07.08.16.56. Seems to have a broken cache as everyone is A-posing and subtitle texts don't resolve. -->
<tr>
<td>2087739745223261142</td>
<td><code>2016.03.31.15.16</code></td>
<td>&nbsp;18.7.1</td>
<td>Sands&nbsp;of&nbsp;Inaros</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>1331043799698924734</td>
<td><code>2016.03.04.10.06</code></td>
<td>&nbsp;18.5.0</td>
<td>Sands&nbsp;of&nbsp;Inaros</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>5378301586494814297</td>
<td><code>2015.12.09.17.09</code></td>
<td>&nbsp;18.0.6</td>
<td>The&nbsp;Second&nbsp;Dream</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<!-- 4603106986143048670 is 2015.12.08.16.01, same issues as previous version. -->
<!-- 5567085556474789237 is 2015.12.05.18.07, should be ~18.0.2 The Second Dream, but says The Jordas Precept on the login screen. Seems to have a broken cache as enemy spawns are broken. -->
<tr>
<td>2275730668734249647</td>
<td><code>2015.10.21.12.48</code></td>
<td>&nbsp;17.8.0</td>
<td>The&nbsp;Jordas&nbsp;Precept</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
</tr>
<tr>
<td>7055925076570413672</td>
<td><code>2015.10.15.12.24</code></td>
<td>&nbsp;17.7.1</td>
<td>The&nbsp;Jordas&nbsp;Precept</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
</tr>
<tr>
<td>232461576962714068</td>
<td><code>2015.05.14.16.29</code></td>
<td>&nbsp;16.5.5</td>
<td>Tubemen&nbsp;of&nbsp;Regor</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
</tr>
<tr>
<td>567734397704178704</td>
<td><code>2015.03.21.08.17</code></td>
<td>&nbsp;16.0.2</td>
<td>Sanctuary</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
</tr>
<tr>
<td>5952644847955190118</td>
<td><code>2015.02.13.10.41</code></td>
<td>&nbsp;15.14.1</td>
<td>Eyes&nbsp;of&nbsp;Blight</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
</tr>
<tr>
<td>7377933404197762308</td>
<td><code>2014.11.27.14.35</code></td>
<td>&nbsp;15.5.0</td>
<td>Mesa&nbsp;Update</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
</tr>
<tr>
<td>6368936033089773713</td>
<td><code>2014.10.29.18.19</code></td>
<td>&nbsp;15.0.8</td>
<td>Archwing</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
</tr>
<tr>
<td>1212629036031221707</td>
<td><code>2014.10.28.17.15</code></td>
<td>&nbsp;15.0.7</td>
<td>Archwing</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
</tr>
<tr>
<td>1048315274024428186</td>
<td><code>2014.10.27.17.07</code></td>
<td>&nbsp;15.0.6</td>
<td>Archwing</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
</tr>
</tbody>
</table>
<p>To download an old version, you can use <a href="https://github.com/SteamRE/DepotDownloader/releases">DepotDownloader</a> like so: <code>DepotDownloader -app 230410 -depot 230411 -manifest &lt;manifest id&gt; -username &lt;your steam username&gt;</code></p>
<h3>2013 Warframe</h3>
<p>There is a DLL + fork of SpaceNinjaServer that can be used to revisit 2013 Warframe. More information about this can be found <a href="https://discord.gg/PNNZ3asUuY">on our Discord</a>, specifically <a href="https://discord.com/channels/1108159019635462206/1280628166825873510/1280628233355923497">in this thread</a>.</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>
</html>