Add asset replacements guide

This commit is contained in:
Sainan 2025-02-19 06:15:27 +01:00
parent 36c6a1e3d8
commit aa79e6a10e
4 changed files with 62 additions and 31 deletions

29
_components/navbar.php Normal file
View File

@ -0,0 +1,29 @@
<?php
$ext = substr($_SERVER["SERVER_SOFTWARE"] ?? "", 0, 3) == "PHP" ? ".php" : "";
?>
<nav class="navbar navbar-expand bg-body-tertiary">
<div class="container">
<a class="navbar-brand" href="/" <?php if ($_SERVER["REQUEST_URI"] == "/"): ?> onclick="event.preventDefault();" <?php endif; ?>>OpenWF</a>
<ul class="navbar-nav me-auto mb-0">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle<?=((substr($_SERVER["REQUEST_URI"], 0, 6) == "/guide" || substr($_SERVER["REQUEST_URI"], 0, 25) == "/asset-replacements-guide") ? " active" : ""); ?>" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Guides</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item<?=(substr($_SERVER["REQUEST_URI"], 0, 6) == "/guide" ? " active" : ""); ?>" href="/guide<?=$ext;?>">Setup</a></li>
<li><a class="dropdown-item<?=(substr($_SERVER["REQUEST_URI"], 0, 25) == "/asset-replacements-guide" ? " active" : ""); ?>" href="/asset-replacements-guide<?=$ext;?>">Asset Replacements</a></li>
</ul>
</li>
</ul>
<ul class="navbar-nav ms-auto mb-0">
<li class="nav-item">
<a class="nav-link" href="https://discord.gg/PNNZ3asUuY" target="_blank">Discord</a>
</li>
</ul>
</div>
</nav>
<script>
// Disable navbar links that point back to this page.
document.querySelectorAll(".navbar-nav .nav-link.active, .navbar-nav .dropdown-item.active").forEach(elm =>
{
elm.onclick = (event) => { event.preventDefault() };
});
</script>

View File

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<title>Asset Replacements Guide | 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">
<p>This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.</p>
<p>
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.<br/>
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>.
</p>
<ol>
<li>Clone <a href="https://github.com/Sainan/warframe-cache-tools" target="_blank">warframe-cache-tools</a>.</li>
<li>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.</li>
<li>Head inside of the <code>assets</code> folder until you find <code>PolarityPoint.png.dds</code>.</li>
<li>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.</li>
<li>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.</li>
<li>To build your assets, run <code>pluto build.pluto</code> within the warframe-cache-tools directory.</li>
<li>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.</li>
</ol>
</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>

View File

@ -10,21 +10,7 @@ $dll_version = @file_get_contents("supplementals/client drop-in/latest.txt");
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> <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> </head>
<body data-bs-theme="dark"> <body data-bs-theme="dark">
<nav class="navbar bg-body-tertiary"> <?php require "_components/navbar.php"; ?>
<div class="container">
<a class="navbar-brand" href="/">OpenWF</a>
<ul class="navbar-nav me-auto mb-0">
<li class="nav-item">
<a class="nav-link active" href="#">Guide</a>
</li>
</ul>
<ul class="navbar-nav ms-auto mb-0">
<li class="nav-item">
<a class="nav-link" href="https://discord.gg/PNNZ3asUuY" target="_blank">Discord</a>
</li>
</ul>
</div>
</nav>
<div class="container mt-3"> <div class="container mt-3">
<h2>Client/Boostrapper Installation</h3> <h2>Client/Boostrapper Installation</h3>
<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> <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>
@ -66,5 +52,6 @@ $dll_version = @file_get_contents("supplementals/client drop-in/latest.txt");
<li>Now to start the server again, run <code>npm run dev</code> (if this is too slow on your machine, you can use <code>npm run build</code> followed by <code>npm run start</code>)</li> <li>Now to start the server again, run <code>npm run dev</code> (if this is too slow on your machine, you can use <code>npm run build</code> followed by <code>npm run start</code>)</li>
</ol> </ol>
</div> </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> </body>
</html> </html>

View File

@ -6,28 +6,14 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> <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> </head>
<body data-bs-theme="dark"> <body data-bs-theme="dark">
<nav class="navbar bg-body-tertiary"> <?php require "_components/navbar.php"; ?>
<div class="container">
<a class="navbar-brand" href="#">OpenWF</a>
<ul class="navbar-nav me-auto mb-0">
<li class="nav-item">
<a class="nav-link" href="/guide">Guide</a>
</li>
</ul>
<ul class="navbar-nav ms-auto mb-0">
<li class="nav-item">
<a class="nav-link" href="https://discord.gg/PNNZ3asUuY" target="_blank">Discord</a>
</li>
</ul>
</div>
</nav>
<div class="container mt-3"> <div class="container mt-3">
<p>OpenWF is a software suite centered around customizing Warframe:</p> <p>OpenWF is a software suite centered around customizing Warframe:</p>
<ul> <ul>
<li><b>SpaceNinjaServer</b> is 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><b>SpaceNinjaServer</b> is 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> is 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> is 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>
</ul> </ul>
<a href="/guide" class="btn btn-primary">Get Started</a> <a href="/guide<?=$ext;?>" class="btn btn-primary">Get Started</a>
<h3 class="mt-3">Preserving Warframe</h3> <h3 class="mt-3">Preserving Warframe</h3>
<p> <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/> 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/>
@ -36,5 +22,6 @@
<hr> <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> <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>
</div> </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> </body>
</html> </html>