Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
4b21cde
feat: Added Wwise volume sliders
mrhid6 Apr 21, 2025
2613e79
Fix outdated note on ada voiceline importing and TTS options
budak7273 Jun 14, 2025
cd4266c
UE5 calls it Revision instead of Source Control
budak7273 Jun 19, 2025
2180074
Hybrid subsystem info, getting subsystems in C++, Wait for Subsystem
budak7273 Jun 21, 2025
f7a322b
Actor mixin behavior clarifications
budak7273 Jun 22, 2025
e0c0e0a
Clarify hybrid subsystem naming and creation
budak7273 Jun 22, 2025
9149afd
Info on hooking failure log messages
budak7273 Jun 29, 2025
9e68df7
Mention Details pane options for Hook nodes
budak7273 Jun 29, 2025
a45f658
Add note about cloud sync and the Desktop
budak7273 Jul 1, 2025
5e19d9f
Mixin Target/Self info
budak7273 Jul 2, 2025
9a5b9e2
Fix outdated link to Unreal Resource
DavidHGillen Jul 28, 2025
cc99a80
Merge pull request #390 from DavidHGillen/patch-1
budak7273 Jul 30, 2025
3cc2b08
Remove old 1.0 download notes
budak7273 Aug 5, 2025
3f7492b
Mention Mod Module data validation
budak7273 Aug 5, 2025
ab2efe1
Clarify how to set Wwise project directory, remove reference to remov…
budak7273 Aug 5, 2025
58c495f
Clarify process of setting up example buildable mesh
budak7273 Aug 6, 2025
87d78a5
Merge pull request #382 from mrhid6/Dev
budak7273 Aug 9, 2025
78cf1dc
Formatting and typo fixes
budak7273 Aug 9, 2025
d34db06
Screenshots for Research Tree Editor page
budak7273 Aug 11, 2025
ab928f3
Added more info on using Access Transformers for struct properties
mklierman Aug 16, 2025
b3b7c83
Add comment explaining why `Class=` is used to select the struct
budak7273 Aug 16, 2025
aca7137
Merge pull request #394 from mklierman/Dev
budak7273 Aug 16, 2025
ff9edad
rename Notify job for clarity
budak7273 Aug 16, 2025
e092f6b
Merge branch 'Dev' of github.com:satisfactorymodding/Documentation in…
budak7273 Aug 16, 2025
19e0612
Mention additional tools for tracking down asset paths
budak7273 Aug 19, 2025
55ae67a
Fix typo, add info, formatting
budak7273 Aug 21, 2025
afe2a32
Additional info on key bind display + formatting
budak7273 Aug 22, 2025
ca9634d
Multiplayer/singleplayer codepaths note, clarify why 20 custom data f…
budak7273 Aug 23, 2025
79c7dbf
Add note about VS unsupported components warning
budak7273 Aug 23, 2025
6c8e2a5
Add "Unreal Learning Resources" page and link to it from relevant pag…
budak7273 Aug 24, 2025
a5209f2
Escape asciidoc attribute syntax
budak7273 Aug 25, 2025
758284d
List cpp Alpakit Convert option before new mod option
budak7273 Aug 25, 2025
8484f50
Quick reference table for building Cpp targets from Visual Studio
budak7273 Aug 25, 2025
9e6f815
Link mods useful for icon gen
budak7273 Aug 27, 2025
aa6f99a
More info on SetReplicationRelevancyOwner
budak7273 Aug 27, 2025
3314bda
Make notice about editing the script more obvious
budak7273 Aug 27, 2025
fe65ec2
Fix launch script unset gameDir check
budak7273 Aug 27, 2025
9db877d
Note about how to tell if you have a plugin or project level repo
budak7273 Aug 27, 2025
d1910c3
Info on working around asset toolkit stalled merges
budak7273 Aug 27, 2025
0098d20
`-nullrhi` works again when used with `-norhithread`
budak7273 Aug 27, 2025
4469afc
Additional powershell usage info, prevent path from splitting to mult…
budak7273 Aug 27, 2025
20954bb
Clearer action links on front page
budak7273 Aug 27, 2025
f425f2f
Move ContentLib before TweakIt since TweakIt hasn't been updated for …
budak7273 Aug 27, 2025
b4d2beb
Use asciidoc includes to centralize editing engine and repo download …
budak7273 Aug 27, 2025
cabddfa
Mention session setting replication in overview
budak7273 Aug 31, 2025
af69a94
Mention how to make a c++ mod module root
budak7273 Sep 1, 2025
118d5e3
WIP page on optional mod dependencies based on BlueBeka example
budak7273 Sep 1, 2025
e6e435a
Clarify wording
budak7273 Sep 17, 2025
ea30603
style: :art: Updated localization images to UE5
Rovetown Sep 20, 2025
5d78ad5
Updated Bulk Sound Extraction and added updated conversion script
Rovetown Sep 3, 2025
16dc834
style: :art: Added WWise Installation Images
Rovetown Sep 20, 2025
899358f
Update asset toolkit fork info
budak7273 Sep 30, 2025
fda155e
Mention VS "packages with vulnerabilities" note
budak7273 Sep 30, 2025
f6200d5
Remove outdated BindOnBPFunction info
budak7273 Sep 30, 2025
7878234
More specific UE docs link
budak7273 Sep 30, 2025
d9251e6
Move images to correct folder, remove extra 1px left on wwise_version
budak7273 Sep 30, 2025
9f22904
Remove dates, add note about UI differences, add headings
budak7273 Sep 30, 2025
dd8506d
Retake wwise_no_plugins with with Install button instead of Modify
budak7273 Sep 30, 2025
9054aaf
Edit wwise_version to hide existing install UI elements
budak7273 Sep 30, 2025
441d30a
Merge pull request #403 from Rovetown/wwise-image-update
budak7273 Sep 30, 2025
a8e680c
Update .vsconfig to fix reference to a removed package
budak7273 Sep 30, 2025
05ce51f
Move VS popup info into headings. Add "Unreal Engine Integration Conf…
budak7273 Sep 30, 2025
5ce3f02
Merge remote-tracking branch 'origin/Dev' into pr/Rovetown/400
budak7273 Sep 30, 2025
30c639f
Edit out dead space in screenshots
budak7273 Sep 30, 2025
9cea9d0
Add unused ConfigureTargetDependencies screenshot
budak7273 Sep 30, 2025
2979d78
Merge pull request #400 from Rovetown/localisation-update-clean
budak7273 Sep 30, 2025
d9b84d9
Update DedicatedServerSetup.adoc with hosting details
nunopaiva1 Oct 2, 2025
ef08251
Remove Shockbyte from Unsupported Hosts (#405)
budak7273 Oct 2, 2025
133e02d
Add additional detail to session setting BP usage info
budak7273 Oct 21, 2025
915c415
Add more info on SML disabledChatCommands
budak7273 Oct 21, 2025
963660f
Add note about lack of console mod support
budak7273 Oct 24, 2025
e5fedfe
Update index.adoc
thewanderinglust Nov 5, 2025
41a714d
Merge pull request #407 from thewanderinglust/patch-1
budak7273 Nov 5, 2025
1e7599a
Add FAQ entry for how to open folder paths
budak7273 Nov 9, 2025
3e6e867
Remove note about python dependencies as they are all core libraries
budak7273 Nov 9, 2025
4386e30
Update conversion script:
budak7273 Nov 10, 2025
77d8b25
Modern FModel correctly labels raw data type
budak7273 Nov 10, 2025
7ff5f39
Fix conversion script check behavior
budak7273 Nov 10, 2025
509b58a
Increase site-wide Table of Contents max nesting level to 3
budak7273 Nov 10, 2025
a6af5af
Add `zero-width-join` asciidoc attribute
budak7273 Nov 10, 2025
0fa13cf
Additional ExtractGameFiles headings. Update bulk audio renamer direc…
budak7273 Nov 10, 2025
8b7a3b4
Merge pull request #401 from Rovetown/bulk-sound-extract-clean
budak7273 Nov 10, 2025
0e48c82
Update steam verify files screenshot. Add links to platform support p…
budak7273 Nov 16, 2025
51d9d82
Exclude https://epicgames.com/help/ from link checker
budak7273 Nov 16, 2025
852a0c3
Fix exclusion
budak7273 Nov 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ jobs:
BUILD=build:ci

notify:
name: Notify
name: Build Failure Notifications
runs-on: ubuntu-latest
needs:
- build
Expand Down
10 changes: 9 additions & 1 deletion antora.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,13 @@ asciidoc:
# Custom text replacements. Built-in ones can be found here:
# https://github.com/asciidoctor/asciidoctor/blob/917d3800a08a8f283a8d05beb08bb75af1673de5/lib/asciidoctor.rb#L391
attributes:
# Increase max table of content nesting levels from 2 to 3 https://docs.antora.org/antora/latest/page/page-attributes/#access-attributes-from-ui-template
page-toclevels: 3@
# Zero-width joiner (U+200D) to avoid being split across lines
zero-width-join: ‍
# Uses zero-width joiner (U+200D) to avoid being split across lines
cpp: C‍+‍+
cpp: C‍+‍+
# Use backslash without it escaping things in other situations
literal-backslash: \
# To keep paths from breaking across lines
NoBreakBackslash: ‍\‍
1 change: 1 addition & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@
"structs",
"subfolder",
"subfolders",
"toclevels",
"Tolgee",
"Treelo",
"uasset",
Expand Down
5 changes: 2 additions & 3 deletions lychee.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,13 @@ exclude = [
"https://docs.unrealengine.com/",
"https://dev.epicgames.com/",
"^https://www.unrealengine.com/en-US/blog/.*",
"^https://www.epicgames.com/help/.*",
# Times out despite being valid
"https://www.adobe.com/learn/substance-3d-designer/web/the-pbr-guide-part-1",
# Pages often time out and Shouldn't™ ever get deleted anyways
"https://web.archive.org/web/",
# Cloudflare checks this, unlikely to be deleted
"^https://superuser.com/.*",
# Temporarily allow link to 3.10 docs that won't exist till PR is merged. Clean this up as soon as 3.10 is stable.
"https://docs.ficsit.app/satisfactory-modding/v3.10.0/index.html"
"^https://superuser.com/.*"
]

# Exclude these filesystem paths from getting checked.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
"Microsoft.VisualStudio.Component.Graphics.Tools",
"Microsoft.VisualStudio.Component.VC.DiagnosticTools",
"Microsoft.VisualStudio.Component.Windows11SDK.22000",
"Microsoft.VisualStudio.Component.Windows11SDK.26100",
"Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites",
"Microsoft.VisualStudio.Component.DotNetModelBuilder",
"Microsoft.ComponentGroup.Blend",
Expand Down
245 changes: 228 additions & 17 deletions modules/ROOT/attachments/Development/SatisfactoryAudioRenamer/convert.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,242 @@
# pylint: disable=logging-fstring-interpolation, global-statement, missing-function-docstring, missing-module-docstring, broad-exception-caught
import os
import subprocess
from pathlib import Path
import shutil
import logging
import sys

def convert(filename):
# Full path to vgmstream-cli.exe, usually in your FModel's Output Directory
# Example Path
VGMSTREAM = Path(r"C:/FModel/Output/.data/vgmstream-cli.exe")

my_file = open("./txtp/" + filename, "r")
data = my_file.read()
# ==================================================================================================

data_into_list = data.replace('\n', ' ').split(" ")
# Logs
MAIN_LOG = "conversion_main.log"
FAILED_LOG = "conversion_errors.log"

# Setup main logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
logging.FileHandler(MAIN_LOG, mode="w", encoding="utf-8"),
logging.StreamHandler(),
],
)

for i in range(len(data_into_list)):
if data_into_list[i].startswith('wem'):

wavname = "./txtp/" + data_into_list[i].split('.')[0] + '.wav'
# Set up subfolders
currentDirectory = Path(os.path.dirname(os.path.abspath(__file__)))
(currentDirectory / "out").mkdir(exist_ok=True)
(currentDirectory / "txtp" / "wem").mkdir(parents=True, exist_ok=True)

if os.path.isfile(wavname):
os.rename(wavname, "./out/" + filename.split('.')[0] + '_' + str(i) + '.wav')
# Check if vgmstream exists
if not VGMSTREAM.exists():
logging.critical(
f"vgmstream-cli.exe not found at {VGMSTREAM}. It should have been downloaded by FModel. Edit the script if necessary to change the path."
)
sys.exit(1)
else:
logging.info(f"Using vgmstream-cli.exe at {VGMSTREAM}")

# Setup failed conversion logging (Will overwrite each run, could be replaced with RotatingFileHandler but needs script changes)
failed_logger = logging.getLogger("failed")
failed_handler = logging.FileHandler(FAILED_LOG, mode="w", encoding="utf-8")
failed_handler.setLevel(logging.ERROR)
failed_logger.addHandler(failed_handler)
failed_logger.propagate = False

# Counters for summary
total_wems = 0
converted_count = 0
skipped_count = 0
failed_count = 0


# Step 1: Convert all .wem files into ./out_temp/wem/ (flat), mapping to digit folders
def wem_to_wav(input_root, temp_root):
global converted_count, skipped_count, failed_count
input_root = Path(input_root)
temp_wem_root = Path(temp_root) / "wem"

# CLEAN temp folder
if temp_wem_root.exists():
shutil.rmtree(temp_wem_root)
temp_wem_root.mkdir(parents=True, exist_ok=True)

wav_filename_to_digit_folder = {}

for folder, _, files in os.walk(input_root):
folder_path = Path(folder)

# If we are in root (txtp/wem) use "root" as folder name
digit_folder = "root" if folder_path == input_root else folder_path.name

for file in files:
ext = Path(file).suffix.lower()
base_name = Path(file).stem
wav_name = base_name + ".wav"

wem_path = folder_path / file
wav_path = temp_wem_root / wav_name
wav_filename_to_digit_folder[wav_name] = digit_folder

final_out_path = Path("out") / digit_folder / wav_name
if wav_path.exists() or final_out_path.exists():
skipped_count += 1
logging.info(f"Skipping existing WAV: {wav_path} or {final_out_path}")
continue

if ext == ".wem":
# Convert wem → wav
logging.info(f"Converting: {wem_path} → {wav_path}")
result = subprocess.run(
[str(VGMSTREAM), "-o", str(wav_path), str(wem_path)],
capture_output=True,
text=True,
check=False,
)
if result.returncode != 0 or not wav_path.exists():
failed_count += 1
logging.error(f"Conversion failed for {wem_path}: {result.stderr}")
failed_logger.error(str(wem_path))
else:
converted_count += 1
logging.info(f"Converted {wem_path} successfully")

elif ext == ".wav":
# Copy pre-existing wav into temp for rename step
try:
shutil.copy2(wem_path, wav_path)
skipped_count += 1
logging.info(
f"Using existing WAV instead of converting: {wem_path} → {wav_path}"
)
except Exception as e:
failed_count += 1
logging.error(f"Failed to copy existing WAV {wem_path}: {e}")
failed_logger.error(str(wem_path))
return wav_filename_to_digit_folder


# Step 2: Rename .wav files based on .txtp references
def convert(filename, wav_root, out_root, mapping):
wav_root = Path(wav_root)
out_root = Path(out_root)
txtp_path = Path("txtp") / filename

try:
with open(txtp_path, "r", encoding="utf-8") as my_file:
data = my_file.read()
except Exception as e:
logging.error(f"Failed to read {txtp_path}: {e}")
return

tokens = data.replace("\n", " ").split(" ")

for i, token in enumerate(tokens):
if token.startswith("wem"):
wav_file_only = Path(token).stem + ".wav"
wavname = wav_root / wav_file_only
digit_folder = mapping.get(wavname.name, "unknown")
out_folder = out_root / digit_folder
out_folder.mkdir(parents=True, exist_ok=True)
new_name = out_folder / f"{filename.split('.')[0]}_{i}.wav"

if new_name.exists():
logging.info(f"Skipping already renamed WAV: {new_name}")
continue

if wavname.exists():
try:
shutil.move(str(wavname), str(new_name))
logging.info(f"Renamed {wavname} → {new_name}")
except Exception as e:
logging.error(f"Failed to rename {wavname}: {e}")
else:
print(wavname + " not found.")
logging.warning(f"{wavname} not found.")


# Step 3: Retry failed conversions
def retry_failed_conversions(temp_wav_root):
global converted_count, failed_count
failed_path = Path(FAILED_LOG)
if not failed_path.exists():
logging.info("No failed conversions to retry.")
return

logging.info("Retrying failed conversions...")

# Read and truncate the failed log for this retry
with open(failed_path, "r+", encoding="utf-8") as f:
failed_files = [line.strip() for line in f.readlines() if line.strip()]
f.seek(0)
f.truncate(0)

new_failures = 0 # counter for files that fail again

for wem_path_str in failed_files:
wem_path = Path(wem_path_str)
wav_name = wem_path.stem + ".wav"
wav_path = temp_wav_root / wav_name

if wav_path.exists():
logging.info(f"Skipping existing WAV: {wav_path}")
continue

logging.info(f"Retrying conversion: {wem_path} → {wav_path}")
result = subprocess.run(
[str(VGMSTREAM), "-o", str(wav_path), str(wem_path)],
capture_output=True,
text=True,
check=False,
)
if result.returncode != 0 or not wav_path.exists():
new_failures += 1
logging.error(
f"Conversion failed a 2nd time: {wem_path}. "
"Either the .wem file is corrupt, broken, or there is no .txtp path for that file. "
"Consider a manual approach or ask for help in the Discord."
)
failed_logger.error(str(wem_path))
else:
# Count as converted only if it actually succeeds now
converted_count += 1
logging.info(f"Successfully converted on retry: {wem_path}")

# Update failed_count to reflect files that truly failed after retry
failed_count = new_failures


# Main driver
if __name__ == "__main__":
wem_root = Path("txtp/wem")
wav_temp_root = Path("out_temp") / "wem"
out_root = Path("out")

logging.info("Starting .wem → .wav conversion")
mapping = wem_to_wav(wem_root, Path("out_temp"))

my_file.close()
logging.info("Starting .wav renaming based on .txtp files")
txtp_files = [f for f in Path("txtp").glob("*.txtp")]
for file_path in txtp_files:
convert(file_path.name, wav_temp_root, out_root, mapping)

relevant_path = "./txtp/"
included_extensions = ['txtp']
file_names = [fn for fn in os.listdir(relevant_path)
if any(fn.endswith(ext) for ext in included_extensions)]
# Retry any failed conversions
retry_failed_conversions(wav_temp_root)

# Clean up temp folder
if wav_temp_root.parent.exists():
shutil.rmtree(wav_temp_root.parent)
logging.info(f"Temporary folder {wav_temp_root.parent} deleted")

for file_name in file_names:
convert(file_name)
# Final summary
logging.info("===================================")
logging.info(f"Total .wem files found: {total_wems}")
logging.info(f"Successfully converted: {converted_count}")
logging.info(f"Skipped (already exists): {skipped_count}")
logging.info(f"Failed conversions: {failed_count}")
logging.info("Conversion and renaming complete")
logging.info("===================================")
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/FAQ/SteamVerifyIntegrity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/AddNewCulture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/CompileTranslations.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/ConfigureTargetDependencies.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/EditTranslationsForCulture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/EditTranslationsInEditor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/GatherText.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/PickPlugin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/RenameTarget.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified modules/ROOT/images/L10n/ViewTarget.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Diff not rendered.
Binary file removed modules/ROOT/images/UnrealEditor/MainMenuBar.jpg
Diff not rendered.
Binary file removed modules/ROOT/images/UnrealEditor/MainModes.jpg
Diff not rendered.
Binary file removed modules/ROOT/images/UnrealEditor/MainOutliner.jpg
Diff not rendered.
Binary file removed modules/ROOT/images/UnrealEditor/MainToolBar.jpg
Diff not rendered.
Binary file removed modules/ROOT/images/UnrealEditor/MainViewport.jpg
Diff not rendered.
Binary file removed modules/ROOT/images/UnrealEditor/TabBar.jpg
Diff not rendered.
10 changes: 6 additions & 4 deletions modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,11 @@
*** xref:Development/Modeling/MainMaterials.adoc[Main Materials]
*** xref:Development/Modeling/style.adoc[Style Guide]
** xref:Development/UnrealEngine/index.adoc[Unreal Engine]
*** xref:Development/UnrealEngine/Code.adoc[Code]
*** xref:Development/UnrealEngine/BluePrints.adoc[Blueprints]
*** xref:Development/UnrealEngine/Editor/index.adoc[Unreal Editor]
**** xref:Development/UnrealEngine/Editor/MainWindow.adoc[Main Window]
*** xref:Development/UnrealEngine/UnrealLearningResources.adoc[Unreal Learning Resources]
*** xref:Development/UnrealEngine/CoreRedirect.adoc[Core Redirects]
*** xref:Development/UnrealEngine/StringClasses.adoc[String Classes]
*** xref:Development/UnrealEngine/Code.adoc[Code]
*** xref:Development/UnrealEngine/BluePrints.adoc[Blueprints]
** xref:Development/Satisfactory/index.adoc[Satisfactory]
*** xref:Development/Satisfactory/Multiplayer.adoc[Multiplayer]
*** Game Features
Expand Down Expand Up @@ -128,6 +127,7 @@
** xref:Development/ReuseGameFiles.adoc[Reusing Base Game Files]
** xref:Development/ExtractGameFiles.adoc[Extracting Game Files]
** xref:Development/TestingResources.adoc[Testing/Multiplayer Testing]
// TODO ** xref:Development/OptionalModDependencies.adoc[Optional Mod Dependencies]
** xref:Development/OpenSourceExamples.adoc[Learning from Open Source Mods]
** xref:UploadToSMR.adoc[Uploading your Mod to SMR]

Expand All @@ -144,6 +144,8 @@
// * Translating Mods
// ** xref:Translation/GetStartedTranslating.adoc[Get Started Translating]
// ** xref:Translation/UsingTolgee.adoc[Using Tolgee]
// ** For Users
// *** TODO
// ** For Mod Developers
// *** xref:Translation/Developers/RequestTolgeeProject.adoc[Using Tolgee]
// *** xref:Development/Localization.adoc[Localizing Mods]
Expand Down
Loading