├── .devcontainer └── devcontainer.json ├── .gitattributes ├── .github └── workflows │ ├── SubModPush.yml.example │ ├── pull-request.yml │ └── push.yml ├── .gitignore ├── .vscode ├── extensions.json └── tasks.json ├── Dockerfile ├── README.md ├── antora-playbook-ci.yml ├── antora-playbook-dev.yml ├── antora-playbook.yml ├── antora.yml ├── buildDev.ps1 ├── cspell.json ├── lychee.toml ├── modules └── ROOT │ ├── attachments │ ├── BeginnersGuide │ │ ├── dependencies │ │ │ └── SML.vsconfig │ │ ├── generating_icons │ │ │ └── Iconguide.pdf │ │ └── simpleMod │ │ │ ├── DocItem.zip │ │ │ ├── ExampleBuildableMesh.blend │ │ │ ├── Icon_DocBuild.png │ │ │ ├── Icon_DocItem.png │ │ │ ├── Icon_SchemDoc.png │ │ │ ├── Icon_SimpleMachine.png │ │ │ ├── Mesh_DocBuild.fbx │ │ │ └── SM_SampleMachine.fbx │ └── Development │ │ ├── Satisfactory │ │ └── AdaMessages │ │ │ └── All_Vanilla_ADA_Voicelines.txt │ │ └── SatisfactoryAudioRenamer │ │ └── convert.py │ ├── images │ ├── AddingModIcon │ │ ├── FolderCreated.jpg │ │ └── NoIngameModIcon.jpg │ ├── BeginnersGuide │ │ ├── Alpakit.png │ │ ├── AlpakitReleaseDemo.png │ │ ├── BatchBuildingSettings.png │ │ ├── BuildFromMenu.png │ │ ├── BuildTargetSelection.png │ │ ├── DoNotBuildSolution.png │ │ ├── OpenAlpakitDev.png │ │ ├── SML_Mods.png │ │ ├── SML_Plugins.png │ │ ├── ShowFullBuildOutput.png │ │ ├── StarterProjectStructure │ │ │ ├── ContentFolder.png │ │ │ └── IronRodPlaceholder.png │ │ └── simpleMod │ │ │ ├── AlpakitCreateMod.png │ │ │ ├── CreateDocItem.gif │ │ │ ├── CreateDocRecipeDescriptor.gif │ │ │ ├── CreateGameWorldModule.png │ │ │ ├── CreateInitMod.gif │ │ │ ├── DirtyBlueprint.png │ │ │ ├── EditPlugin.png │ │ │ ├── FinalMeshAppearance.png │ │ │ ├── MakeRootModule.png │ │ │ ├── MaterialInstanceSettings.png │ │ │ ├── ModInModsMenu.jpg │ │ │ ├── ModInit_InitFuncs.jpg │ │ │ ├── NoMaterialImport.png │ │ │ ├── PickFilesToSave.png │ │ │ ├── PickParentClass.jpg │ │ │ ├── PickParentClass_Actor.jpg │ │ │ ├── PreConstructPatchWindowDark.png │ │ │ ├── RegisterSchematic.jpg │ │ │ ├── RightClickEmptySpace.png │ │ │ ├── SaveOnCompileSuccess.gif │ │ │ ├── SetDocRecipeProperties.gif │ │ │ ├── ShowPluginContentInViewer.png │ │ │ ├── UnsavedAssetContentBrowser.png │ │ │ ├── UnsavedAssetTab.png │ │ │ ├── WindowDarkModeFixOpacity.png │ │ │ ├── WindowDarkModeSlot.png │ │ │ ├── Wwise_integrate.gif │ │ │ ├── machines │ │ │ ├── CreateBinding.png │ │ │ ├── SimpleMachine_CreateItemTypesSet_Part1.png │ │ │ ├── SimpleMachine_CreateItemTypesSet_Part2.png │ │ │ ├── SimpleMachine_CreateVariable.png │ │ │ ├── SimpleMachine_Grab.png │ │ │ ├── SimpleMachine_Init.jpg │ │ │ ├── SimpleMachine_Override.jpg │ │ │ └── SolarPanel │ │ │ │ ├── CallOnceOnSpawn.png │ │ │ │ ├── DisableDynamicProduction.png │ │ │ │ ├── EventBound.png │ │ │ │ ├── FinishedCode.png │ │ │ │ └── SettingPowerProduction.png │ │ │ └── sRGB_Off.png │ ├── CommunityResources │ │ ├── AssetToolkit │ │ │ ├── AssetDumperUI.png │ │ │ └── OpenAssetGeneratorUI.png │ │ ├── Incredibuild │ │ │ ├── incredibuild-email.png │ │ │ ├── incredibuild-tray.png │ │ │ ├── incredibuild_cmd.png │ │ │ ├── incredibuild_ip_1.png │ │ │ └── incredibuild_ip_2.png │ │ ├── ModelingTools │ │ │ └── ModelingToolsCover.png │ │ └── TrainSignalGuide │ │ │ ├── Engine_Left.png │ │ │ ├── FreightCar_Empty.png │ │ │ ├── TrainNote10.png │ │ │ ├── TrainNote11.png │ │ │ ├── TrainNote12.png │ │ │ ├── TrainNote13.png │ │ │ ├── TrainNote14.png │ │ │ ├── TrainNote15.png │ │ │ ├── TrainNote16.png │ │ │ ├── TrainNote17.png │ │ │ ├── TrainNote18.png │ │ │ ├── TrainNote19.png │ │ │ ├── TrainNote21.png │ │ │ ├── TrainNote22.png │ │ │ ├── TrainNote25.png │ │ │ ├── TrainNote26.png │ │ │ ├── TrainNote27.png │ │ │ ├── TrainNote28.png │ │ │ ├── TrainNote29.png │ │ │ ├── TrainNote3.png │ │ │ ├── TrainNote31.png │ │ │ ├── TrainNote32.png │ │ │ ├── TrainNote33.png │ │ │ ├── TrainNote34.png │ │ │ ├── TrainNote35.png │ │ │ ├── TrainNote36.png │ │ │ ├── TrainNote37.png │ │ │ ├── TrainNote38.png │ │ │ ├── TrainNote39.png │ │ │ ├── TrainNote5.png │ │ │ ├── TrainNote6.png │ │ │ ├── TrainNote7.png │ │ │ ├── TrainNote8.png │ │ │ ├── TrainNote9.png │ │ │ └── TrainStation.png │ ├── Cpp │ │ ├── EditorCreateClass.png │ │ └── IDA_Symbol.jpg │ ├── DedicatedServers │ │ ├── CLI_FTP.png │ │ ├── CLI_SFTP.png │ │ ├── CLI_SMB.png │ │ ├── ExampleDoesNotSupportDedicatedServers.png │ │ ├── ExampleSupportsDedicatedServers.png │ │ ├── SMM2_vs_SMM3.png │ │ ├── SMM_FTP.png │ │ ├── SMM_SFTP.png │ │ └── SMM_SMB.png │ ├── Development │ │ ├── ChangeButtonDrawAs.png │ │ ├── Cpp │ │ │ └── hooking │ │ │ │ ├── BPW_MapMenuFunctions.png │ │ │ │ ├── BPW_MapMenuHover.png │ │ │ │ └── BPW_MapMenuTypeSelected.png │ │ ├── CustomLevels │ │ │ ├── AssetMigrator.png │ │ │ ├── CorrectReferenceViewer.png │ │ │ └── OpenLevelBlueprint.png │ │ ├── ModLoader │ │ │ ├── ActorMixins │ │ │ │ ├── AddLogic.png │ │ │ │ ├── ChooseActor.png │ │ │ │ ├── Components.png │ │ │ │ ├── CreateMixinAsset.png │ │ │ │ ├── EnableTick.png │ │ │ │ ├── Functions.png │ │ │ │ └── RegisterMixin.png │ │ │ └── BlueprintHooks │ │ │ │ ├── CreateBlueprintHook.png │ │ │ │ ├── CreateHook.png │ │ │ │ ├── FillDropdowns.png │ │ │ │ ├── LatentActionWorkaround.png │ │ │ │ ├── NewFunction.png │ │ │ │ ├── RegisterHook.png │ │ │ │ ├── TargetSpecifierConnected.png │ │ │ │ ├── TargetSpecifierTooltip.png │ │ │ │ └── ViewHookGraph.png │ │ └── UpdatingGuides │ │ │ ├── AlpakitButtons38.png │ │ │ ├── DeadBindOnBpFuncNode.png │ │ │ ├── HubMilestones.jpg │ │ │ ├── NewHookFromOldBindOnBpFuncNode.png │ │ │ ├── OldScsHook.png │ │ │ ├── PickMixinTargetClass.png │ │ │ ├── SpawnLightweightBuildable.png │ │ │ └── WwiseMigrationPopupScreenshot.png │ ├── ExtractingGameFiles │ │ ├── FModelModelSettings.png │ │ ├── FModel_BrokenJSON.png │ │ └── fModelExport.png │ ├── FAQ │ │ ├── CreateProfile.png │ │ ├── DebugModsFlowchart.png │ │ ├── EpicBranch.png │ │ ├── EpicVerifyIntegrity.png │ │ ├── FicsitAppCompatibility.png │ │ ├── InstallSpecificModVersion.png │ │ ├── LocalFiles_Epic.png │ │ ├── LocalFiles_Steam.png │ │ ├── SmmCompatibilityInfo.png │ │ ├── SmmCopyModList.png │ │ ├── SmmDisableDownloadTimeout.png │ │ ├── SmmGenerateDebugInfo.png │ │ ├── SmmImportExport.png │ │ ├── SmmSelectInstall.png │ │ ├── SteamBranch.png │ │ ├── SteamVerifyIntegrity.png │ │ ├── TurnOffMods.png │ │ ├── smm_installer_properties_unblock.png │ │ ├── win10_install_smm_guide.png │ │ └── win11_subtle_block.png │ ├── ForUsers │ │ └── CoreRedirectMigration │ │ │ ├── ContentInspector.png │ │ │ └── TFIT.png │ ├── L10n │ │ ├── AddNewCulture.png │ │ ├── AddTarget.png │ │ ├── CompileTranslations.png │ │ ├── ConfigureTargetDependencies.png │ │ ├── EditTranslationsForCulture.png │ │ ├── EditTranslationsInEditor.png │ │ ├── GatherText.png │ │ ├── OpenDashboard.png │ │ ├── PickPlugin.png │ │ ├── RenameTarget.png │ │ ├── SchematicDisplayNameAdvancedSettings.png │ │ ├── TolgeePluginButtonLocation.png │ │ └── ViewTarget.png │ ├── ManualInstall │ │ ├── mod_in_folder_example.png │ │ └── sml_folder_example.png │ ├── ModLoader │ │ ├── BlueprintInterface_ConfigExample.png │ │ ├── NewConfigurationSystemExample.png │ │ └── SCSHook_Example_FreeSamples.png │ ├── ReuseContent │ │ ├── FModelFoundPath.png │ │ ├── FModelHubParts.png │ │ ├── PlaceholderIcon.png │ │ ├── PlaceholderMesh.png │ │ └── WikiHubPartsBox.png │ ├── Satisfactory │ │ ├── AdaMessages │ │ │ ├── AdaMessage_1.png │ │ │ ├── AdaMessage_2.png │ │ │ ├── AdaMessage_3.png │ │ │ ├── AdaMessage_4.png │ │ │ ├── AdaMessage_5.png │ │ │ └── AdaMessage_6.png │ │ ├── Chainsawable │ │ │ ├── StaticMesh_AssetUserData_1.png │ │ │ └── StaticMesh_AssetUserData_2.png │ │ ├── Clipboard │ │ │ ├── ClipboardCopy.png │ │ │ ├── ClipboardPaste.png │ │ │ ├── GetClipboardMappingClass.png │ │ │ └── GetClipboardSettingsClass.png │ │ ├── ConveyorAssetDataExample.png │ │ ├── ConveyorProblem.jpg │ │ ├── ConveyorSettings_LOD1.png │ │ ├── ConveyorSettings_LOD2.png │ │ ├── ConveyorSettings_Root.png │ │ ├── FactoryLegs │ │ │ ├── LegExampleComponent.png │ │ │ └── LegExampleViewport.png │ │ ├── IconLibrary │ │ │ ├── CreateDataAsset.png │ │ │ ├── FreshIconDataArrayElement.png │ │ │ ├── IconTextureSettings.png │ │ │ ├── ImportAsset.png │ │ │ └── SelectDataAssetClass_FGIconLibrary.png │ │ ├── ItemCrate │ │ │ └── SpawnCrateExample.png │ │ ├── MI_Factory_Base_01.png │ │ ├── SFSerializationFlow.svg │ │ ├── Subsystems │ │ │ ├── Subsystems_gwm.PNG │ │ │ ├── Subsystems_sam.PNG │ │ │ └── Subsystems_sam_node.PNG │ │ └── Wwise │ │ │ ├── Wwise_AkEvent_Create.png │ │ │ ├── Wwise_AkEvent_Info.png │ │ │ ├── Wwise_Attenuation_Audio_Settings.png │ │ │ ├── Wwise_Attenuation_Create.png │ │ │ ├── Wwise_Attenuation_Info.png │ │ │ ├── Wwise_Attenuation_ProjectExplorer.png │ │ │ ├── Wwise_Attenuation_Spread_Graph.png │ │ │ ├── Wwise_Import_ImportWindow.png │ │ │ ├── Wwise_Import_ProjectExplorer.png │ │ │ ├── Wwise_Import_VirtualFolderCreate.png │ │ │ ├── Wwise_IsSignificant.png │ │ │ ├── Wwise_PlaybackLimit.png │ │ │ ├── Wwise_RTPC_Configure.png │ │ │ ├── Wwise_RTPC_Create.png │ │ │ ├── Wwise_RTPC_Overview.png │ │ │ ├── Wwise_RTPC_Range.png │ │ │ ├── Wwise_Significance.png │ │ │ ├── Wwise_Soundbank_Create.png │ │ │ ├── Wwise_Soundbank_EditTab.png │ │ │ ├── Wwise_Soundbank_Generate.png │ │ │ ├── Wwise_Soundbank_ProjectExplorer.png │ │ │ ├── Wwise_Soundbank_Window.png │ │ │ ├── Wwise_UEAkEvent_Create.png │ │ │ ├── Wwise_UEAkEvent_EndPlay.png │ │ │ ├── Wwise_UEAkEvent_FireAndForget.png │ │ │ ├── Wwise_UEAkEvent_Verify.png │ │ │ ├── Wwise_UE_RTPC_Create.png │ │ │ └── Wwise_UE_RTPC_Usage.png │ ├── TestingResources │ │ └── Unreal-Console.png │ └── UnrealEditor │ │ ├── MainContentBrowser.jpg │ │ ├── MainMenuBar.jpg │ │ ├── MainModes.jpg │ │ ├── MainOutliner.jpg │ │ ├── MainToolBar.jpg │ │ ├── MainViewport.jpg │ │ └── TabBar.jpg │ ├── nav.adoc │ └── pages │ ├── CommunityModLists │ └── QOL.adoc │ ├── CommunityResources │ ├── AcronymVault.adoc │ ├── AssetToolkit.adoc │ ├── IconGenerator.adoc │ ├── ModelingTools.adoc │ ├── SFUIKIT.adoc │ ├── TrainSignalGuide.adoc │ ├── incredibuild.adoc │ └── index.adoc │ ├── Development │ ├── BeginnersGuide │ │ ├── Adding_Ingame_Mod_Icon.adoc │ │ ├── CreateGitRepo.adoc │ │ ├── ImportingAnotherMod.adoc │ │ ├── LearnGit.adoc │ │ ├── ReleaseMod.adoc │ │ ├── SimpleMod │ │ │ ├── NextSteps.adoc │ │ │ ├── buildable.adoc │ │ │ ├── gameworldmodule.adoc │ │ │ ├── index.adoc │ │ │ ├── item.adoc │ │ │ ├── machines │ │ │ │ ├── SimpleInteraction.adoc │ │ │ │ ├── SimpleMachine.adoc │ │ │ │ └── SolarPanel.adoc │ │ │ └── recipe.adoc │ │ ├── StarterProject │ │ │ ├── ObtainStarterProject.adoc │ │ │ ├── StarterProjectViaClone.adoc │ │ │ └── StarterProjectViaZip.adoc │ │ ├── StarterProjectStructure.adoc │ │ ├── dependencies.adoc │ │ ├── generating_icons.adoc │ │ ├── index.adoc │ │ ├── overwriting.adoc │ │ └── project_setup.adoc │ ├── Cpp │ │ ├── Cookbook.adoc │ │ ├── GettingBpData.adoc │ │ ├── debugging.adoc │ │ ├── hooking.adoc │ │ ├── index.adoc │ │ ├── setup.adoc │ │ └── thirdparty.adoc │ ├── EditorTools │ │ ├── SMLEditor │ │ │ ├── ResearchTreeEditor.adoc │ │ │ └── SMLEditor.adoc │ │ └── SMLFeatureTests │ │ │ └── SMLFeatureTests.adoc │ ├── ExampleModDirectory.adoc │ ├── ExtractGameFiles.adoc │ ├── Localization.adoc │ ├── Migration │ │ ├── BpHookMigrationGuide.adoc │ │ └── ScsMigrationGuide.adoc │ ├── ModLoader │ │ ├── AccessTransformers.adoc │ │ ├── ActorMixins.adoc │ │ ├── BlueprintHooks.adoc │ │ ├── BlueprintInterface.adoc │ │ ├── ChatCommands.adoc │ │ ├── Configuration.adoc │ │ ├── ContentTagRegistry.adoc │ │ ├── ExtendedAttributeProvider.adoc │ │ ├── GameMapRegistry.adoc │ │ ├── Logging.adoc │ │ ├── ModModules.adoc │ │ ├── Registry.adoc │ │ ├── SessionSettings.adoc │ │ ├── SimpleConstructionScript.adoc │ │ ├── Subsystems.adoc │ │ ├── WidgetBlueprintHooks.adoc │ │ └── index.adoc │ ├── Modeling │ │ ├── MainMaterials.adoc │ │ ├── index.adoc │ │ ├── setup.adoc │ │ └── style.adoc │ ├── OpenSourceExamples.adoc │ ├── ReuseGameFiles.adoc │ ├── Satisfactory │ │ ├── AbstractInstance.adoc │ │ ├── AdaMessages.adoc │ │ ├── Audio.adoc │ │ ├── BuildableHolograms.adoc │ │ ├── Chainsawable.adoc │ │ ├── CheatBoard.adoc │ │ ├── Clipboard.adoc │ │ ├── ConditionalPropertyReplication.adoc │ │ ├── ConveyorRendering.adoc │ │ ├── Crafting.adoc │ │ ├── CustomLevels.adoc │ │ ├── DedicatedServerAPIDocs.adoc │ │ ├── EnhancedInputSystem.adoc │ │ ├── FactoryConnectors.adoc │ │ ├── FactoryLegs.adoc │ │ ├── FactoryTick.adoc │ │ ├── IconLibrary.adoc │ │ ├── Inventory.adoc │ │ ├── ItemCrate.adoc │ │ ├── ModsWithoutSML.adoc │ │ ├── Multiplayer.adoc │ │ ├── OreScanner.adoc │ │ ├── Paintable.adoc │ │ ├── PowerNetwork.adoc │ │ ├── ResourceSink.adoc │ │ ├── Savegame.adoc │ │ ├── Schematic.adoc │ │ ├── ShoppingList.adoc │ │ └── index.adoc │ ├── TestingResources.adoc │ ├── UnrealEngine │ │ ├── BluePrints.adoc │ │ ├── Code.adoc │ │ ├── CoreRedirect.adoc │ │ ├── Editor │ │ │ ├── MainWindow.adoc │ │ │ └── index.adoc │ │ ├── StringClasses.adoc │ │ └── index.adoc │ ├── UpdatingFromSml2.adoc │ ├── UpdatingFromSml310.adoc │ ├── UpdatingFromSml34.adoc │ ├── UpdatingFromSml35.adoc │ ├── UpdatingFromSml36.adoc │ ├── UpdatingFromSml37.adoc │ ├── UpdatingFromSml38.adoc │ ├── UpdatingFromSml39.adoc │ ├── UpdatingToDedi.adoc │ ├── UpdatingToNewVersions.adoc │ ├── index.adoc │ └── modding_concepts.adoc │ ├── ForUsers │ ├── ConfiguringMods.adoc │ ├── CoreRedirectMigration.adoc │ ├── DedicatedServerSetup.adoc │ ├── SatisfactoryModManager.adoc │ ├── Tags.adoc │ └── Welcome.adoc │ ├── ManualInstallDirections.adoc │ ├── SMLChatCommands.adoc │ ├── SMLConfiguration.adoc │ ├── Translation │ ├── Developers │ │ └── RequestTolgeeProject.adoc │ ├── GetStartedTranslating.adoc │ └── UsingTolgee.adoc │ ├── UploadToSMR.adoc │ ├── faq.adoc │ └── index.adoc ├── nginx └── default.conf ├── package.json ├── pnpm-lock.yaml └── supplemental-ui ├── css └── site-extra.css ├── favicon.ico ├── helpers ├── og-description.js └── og-image.js ├── layouts └── default.hbs ├── logo.png ├── partials ├── footer-content.hbs ├── head-meta.hbs └── header-content.hbs └── ui.yml /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the 2 | // README at: https://github.com/devcontainers/templates/tree/main/src/javascript-node 3 | { 4 | "name": "SML Documentation", 5 | // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile 6 | "image": "mcr.microsoft.com/devcontainers/javascript-node:20", 7 | 8 | // Features to add to the dev container. More info: https://containers.dev/features. 9 | "features": { 10 | "ghcr.io/devcontainers-contrib/features/pnpm": "latest" 11 | }, 12 | 13 | // Use 'forwardPorts' to make a list of ports inside the container available locally. 14 | "forwardPorts": [8000], 15 | 16 | // Consistently name the folder so that it can be added as a git safe directory inside the container 17 | "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/SML_Documentation,type=bind", 18 | "workspaceFolder": "/workspaces/SML_Documentation", 19 | 20 | // Use 'postCreateCommand' to run commands after the container is created. 21 | "postCreateCommand": "git config --global --add safe.directory \"/workspaces/SML_Documentation\"; pnpm install", 22 | // Print a warning about the hot reload watcher not working, after which, start the web server and watcher 23 | "postAttachCommand": "export CHOKIDAR_USEPOLLING=1; { pnpm run serve & pnpm run watch:dev ; }", 24 | 25 | // Fix `$SHELL environment variable is not set` (https://github.com/open-cli-tools/chokidar-cli/issues/62) 26 | "containerEnv": { 27 | "SHELL": "/bin/bash" 28 | }, 29 | 30 | // Configure tool-specific properties. 31 | "customizations": { 32 | "vscode": { 33 | // cSpell:disable 34 | "extensions": [ 35 | "asciidoctor.asciidoctor-vscode", 36 | "streetsidesoftware.code-spell-checker", 37 | "eamodio.gitlens", 38 | "DavidAnson.vscode-markdownlint", 39 | "medo64.render-crlf", 40 | "andrejunges.Handlebars", 41 | "bierner.markdown-preview-github-styles", 42 | "tamasfe.even-better-toml" 43 | ], 44 | // cSpell:enable 45 | "settings": { 46 | "npm.packageManager": "pnpm", 47 | "asciidoc.antora.enableAntoraSupport": true 48 | } 49 | } 50 | } 51 | 52 | // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. 53 | // "remoteUser": "root" 54 | } 55 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.github/workflows/SubModPush.yml.example: -------------------------------------------------------------------------------- 1 | name: Push 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'docs/**' 7 | 8 | jobs: 9 | dispatch: 10 | name: Dispatch 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Documentation Repository Dispatch 14 | uses: peter-evans/repository-dispatch@v1 15 | with: 16 | token: ${{ secrets.DOCS_REPO_ACCESS_TOKEN }} 17 | repository: satisfactorymodding/Documentation 18 | event-type: mod-docs-update 19 | -------------------------------------------------------------------------------- /.github/workflows/pull-request.yml: -------------------------------------------------------------------------------- 1 | name: PR 2 | 3 | on: pull_request 4 | 5 | jobs: 6 | build: 7 | name: Build 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout 11 | uses: actions/checkout@v4 12 | 13 | - name: Setup pnpm 14 | uses: pnpm/action-setup@v3 15 | with: 16 | version: 9 17 | 18 | - name: Setup NodeJS 19 | uses: actions/setup-node@v4 20 | with: 21 | node-version: '20' 22 | cache: 'pnpm' 23 | 24 | - name: Install Dependencies 25 | run: pnpm install 26 | 27 | - name: Build 28 | run: npm run build:ci 29 | 30 | - name: Build Summary Header (Main Docs) 31 | run: | 32 | echo "# Link Checker (Main Docs)" >> $GITHUB_STEP_SUMMARY 33 | 34 | - id: lychee-main 35 | name: Check for Broken Links (Main Docs) 36 | uses: lycheeverse/lychee-action@v1 37 | with: 38 | args: --verbose --exclude-all-private --no-progress --accept '200,429' --github-token '${{ secrets.LYCHEE_TOKEN }}' './build/site/satisfactory-modding/**/*.html' 39 | fail: true 40 | 41 | - name: Build Summary Header (Subsites) 42 | run: | 43 | echo "# Link Checker (Subsites)" >> $GITHUB_STEP_SUMMARY 44 | 45 | - id: lychee-submods 46 | name: Check for Broken Links (Subsites) 47 | uses: lycheeverse/lychee-action@v1 48 | with: 49 | # TODO there surely must be a better way to do this 50 | # exclude the main docs dir from this check to avoid doing work twice 51 | # maybe use separate lychee configs to use their exclude_path option? 52 | args: --verbose --exclude-all-private --no-progress --accept '200,429' --github-token '${{ secrets.LYCHEE_TOKEN }}' './build/site/[!s][!a][!t][!i]*/**/*.html' 53 | fail: false 54 | 55 | image: 56 | name: Image 57 | runs-on: ubuntu-latest 58 | needs: 59 | - build 60 | steps: 61 | - name: Checkout repository 62 | uses: actions/checkout@v4 63 | 64 | - name: Build Docker image (without pushing) 65 | uses: docker/build-push-action@v5 66 | with: 67 | context: . 68 | push: false 69 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .vscode/* 3 | !.vscode/tasks.json 4 | !.vscode/extensions.json 5 | build/ 6 | *.rst 7 | node_modules/ 8 | .pnpm-store/ 9 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See more in .devcontainer/devcontainer.json 3 | "recommendations": [ 4 | "asciidoctor.asciidoctor-vscode", 5 | "streetsidesoftware.code-spell-checker", 6 | "eamodio.gitlens", 7 | "mushan.vscode-paste-image", 8 | ] 9 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "npm", 6 | "script": "build:dev", 7 | "group": { 8 | "kind": "build", 9 | "isDefault": true 10 | }, 11 | "problemMatcher": [], 12 | "label": "pnpm: build:dev", 13 | "detail": "antora antora-playbook-dev.yml" 14 | }, 15 | { 16 | "type": "shell", 17 | "label": "Hot Rebuild", 18 | "command": "pnpm serve", 19 | "hide": true, 20 | "presentation": { 21 | "group": "hot-rebuild-server" 22 | }, 23 | "problemMatcher": [ 24 | { 25 | "base": "$tsc-watch", 26 | "background": { 27 | "beginsPattern": "Listening on", 28 | "endsPattern": "TODO_WHAT_END_PATTERN_TO_USE_SEEMS_FINE_WITH_THIS?" 29 | } 30 | } 31 | ] 32 | }, 33 | { 34 | "type": "shell", 35 | "label": "Webserver", 36 | "command": "pnpm watch:dev", 37 | "hide": true, 38 | "presentation": { 39 | "group": "hot-rebuild-server" 40 | } 41 | }, 42 | { 43 | "type": "shell", 44 | "label": "Open in browser", 45 | "windows": { 46 | "command": "Start-Process http://127.0.0.1:8000/" 47 | }, 48 | "presentation": { 49 | "reveal": "silent" 50 | }, 51 | "problemMatcher": [] 52 | }, 53 | { 54 | "type": "shell", 55 | "label": "Launch hot rebuilding development server", 56 | "group": { 57 | "kind": "none", 58 | "isDefault": true 59 | }, 60 | "dependsOn": [ 61 | "Hot Rebuild", 62 | "Webserver", 63 | "Open in browser" 64 | ], 65 | "command": "echo 'Development server and watch started'", 66 | "problemMatcher": [] 67 | } 68 | ] 69 | } -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:alpine as build 2 | 3 | ARG BUILD=build 4 | 5 | WORKDIR /app 6 | 7 | RUN npm install -g pnpm 8 | 9 | COPY package.json package.json 10 | COPY pnpm-lock.yaml pnpm-lock.yaml 11 | 12 | RUN pnpm install 13 | 14 | COPY . . 15 | 16 | RUN pnpm run $BUILD 17 | 18 | 19 | FROM nginx 20 | 21 | WORKDIR /app 22 | 23 | COPY nginx/default.conf /etc/nginx/conf.d/default.conf 24 | COPY --from=build /app/build/site /usr/share/nginx/html 25 | -------------------------------------------------------------------------------- /antora-playbook-ci.yml: -------------------------------------------------------------------------------- 1 | site: 2 | title: Satisfactory Modding Documentation 3 | start_page: satisfactory-modding::index.adoc 4 | url: http://localhost:8000 5 | 6 | content: 7 | sources: 8 | - url: ./ 9 | branches: HEAD 10 | 11 | - url: https://github.com/CoderDE/FicsIt-Networks.git 12 | branches: master 13 | edit_url: '{web_url}/blob/{refname}/{path}' 14 | start_path: docs 15 | 16 | - url: https://github.com/Mrhid6Mods/RRD_Docs.git 17 | branches: master 18 | edit_url: '{web_url}/blob/{refname}/{path}' 19 | start_path: docs 20 | 21 | - url: https://github.com/Feyko/TweakIt.git 22 | branches: docs 23 | edit_url: '{web_url}/blob/{refname}/{path}' 24 | start_path: docs 25 | 26 | - url: https://github.com/porisius/FicsitRemoteMonitoring.git 27 | branches: main 28 | edit_url: '{web_url}/blob/{refname}/{path}' 29 | start_path: docs 30 | 31 | - url: https://github.com/Kyri123/KMods-Docs.git 32 | branches: main 33 | edit_url: '{web_url}/blob/{refname}/{path}' 34 | start_path: docs 35 | 36 | - url: https://github.com/budak7273/ContentLib_Documentation.git 37 | branches: main 38 | edit_url: '{web_url}/blob/{refname}/{path}' 39 | start_path: / 40 | 41 | ui: 42 | bundle: 43 | url: https://gitlab.com/vilsol/antora-ui-default/-/jobs/artifacts/master/raw/build/ui-bundle.zip?job=bundle-stable 44 | snapshot: true 45 | supplemental_files: ./supplemental-ui 46 | -------------------------------------------------------------------------------- /antora-playbook-dev.yml: -------------------------------------------------------------------------------- 1 | site: 2 | title: DEV Satisfactory Modding Documentation 3 | start_page: satisfactory-modding::index.adoc 4 | 5 | ## Used for dev 6 | url: http://localhost:8000 7 | 8 | content: 9 | sources: 10 | # Used for dev 11 | - url: ./ 12 | branches: HEAD 13 | 14 | # To add additional sites, use the format below 15 | # You will probably want to mark this file assume-unchanged in git if so 16 | # https://dev.to/nickraphael/git-assume-unchanged-for-when-you-want-git-to-ignore-an-edit-for-a-while-2lig 17 | 18 | #- url: G:\Projects\Satisfactory\Mods\FicsItNetworks 19 | # branches: HEAD 20 | # edit_url: '{web_url}/blob/{refname}/{path}' 21 | # start_path: docs 22 | 23 | ui: 24 | bundle: 25 | url: https://gitlab.com/vilsol/antora-ui-default/-/jobs/artifacts/master/raw/build/ui-bundle.zip?job=bundle-stable 26 | snapshot: true 27 | supplemental_files: ./supplemental-ui 28 | -------------------------------------------------------------------------------- /antora-playbook.yml: -------------------------------------------------------------------------------- 1 | site: 2 | title: Satisfactory Modding Documentation 3 | start_page: satisfactory-modding::index.adoc 4 | 5 | ## Used for prod 6 | url: https://docs.ficsit.app 7 | 8 | ## Used for dev 9 | #url: http://localhost:8000 10 | 11 | content: 12 | sources: 13 | ## Used for prod 14 | - url: https://github.com/satisfactorymodding/Documentation.git 15 | branches: master, v3.10.0, v3.9.1, v3.8.0, v3.7.0, v3.6.1, v3.5.1, v3.4.1, v3.3.2, v3.1.1, v2.2.1, v2.1.1, v2.0.0, v1.0.2 16 | edit_url: '{web_url}/blob/{refname}/{path}' 17 | 18 | ## Used for dev 19 | #- url: ./ 20 | # branches: HEAD 21 | 22 | - url: https://github.com/CoderDE/FicsIt-Networks.git 23 | branches: master 24 | edit_url: '{web_url}/blob/{refname}/{path}' 25 | start_path: docs 26 | 27 | - url: https://github.com/Mrhid6Mods/RRD_Docs.git 28 | branches: master 29 | edit_url: '{web_url}/blob/{refname}/{path}' 30 | start_path: docs 31 | 32 | - url: https://github.com/Feyko/TweakIt.git 33 | branches: docs 34 | edit_url: '{web_url}/blob/{refname}/{path}' 35 | start_path: docs 36 | 37 | - url: https://github.com/porisius/FicsitRemoteMonitoring.git 38 | branches: main 39 | edit_url: '{web_url}/blob/{refname}/{path}' 40 | start_path: docs 41 | 42 | - url: https://github.com/Kyri123/KMods-Docs.git 43 | branches: main 44 | edit_url: '{web_url}/blob/{refname}/{path}' 45 | start_path: docs 46 | 47 | - url: https://github.com/budak7273/ContentLib_Documentation.git 48 | branches: main 49 | edit_url: '{web_url}/blob/{refname}/{path}' 50 | start_path: / 51 | 52 | ui: 53 | bundle: 54 | url: https://gitlab.com/vilsol/antora-ui-default/-/jobs/artifacts/master/raw/build/ui-bundle.zip?job=bundle-stable 55 | snapshot: true 56 | supplemental_files: ./supplemental-ui 57 | -------------------------------------------------------------------------------- /antora.yml: -------------------------------------------------------------------------------- 1 | name: satisfactory-modding 2 | title: Satisfactory Modding Documentation 3 | version: latest 4 | nav: 5 | - modules/ROOT/nav.adoc 6 | 7 | asciidoc: 8 | # Custom text replacements. Built-in ones can be found here: 9 | # https://github.com/asciidoctor/asciidoctor/blob/917d3800a08a8f283a8d05beb08bb75af1673de5/lib/asciidoctor.rb#L391 10 | attributes: 11 | # Uses zero-width joiner (U+200D) to avoid being split across lines 12 | cpp: C‍+‍+ -------------------------------------------------------------------------------- /buildDev.ps1: -------------------------------------------------------------------------------- 1 | pnpm run build:dev 2 | -------------------------------------------------------------------------------- /lychee.toml: -------------------------------------------------------------------------------- 1 | # CI Link checker configuration 2 | # See https://github.com/lycheeverse/lychee/blob/master/lychee.example.toml 3 | 4 | # Exclude URLs and mail addresses from checking (supports regex). 5 | # Please explain the inclusion of each one. 6 | exclude = [ 7 | # Don't check the SMM or ficsit-cli auto download link 8 | "https://smm.ficsit.app/", 9 | "https://cli.ficsit.app/", 10 | # These will always be 404s unless you're authed 11 | "https://github.com/satisfactorymodding/UnrealEngine/", 12 | "https://github.com/EpicGames/UnrealEngine/", 13 | "https://github.com/EpicGames-Mirror-A/UnrealEngine/", 14 | "https://github.com/SatisfactoryModdingUE/UnrealEngine/", 15 | # Ignore compare links that might not exist before the docs are published 16 | "https://github.com/satisfactorymodding/SatisfactoryModLoader/compare/", 17 | # Site seems to disallow robots 18 | "https://cable.ayra.ch/satisfactory/editor.php", 19 | # Reports a 404 despite the link working? 20 | "https://www.unrealengine.com/en-US/blog/download-our-new-blender-addons", 21 | # Possible not allowing robots, receiving 403 22 | "https://steamdb.info/app/526870/", 23 | # Don't check edit links for the docs itself (randomly 403s but also why check these anyways) 24 | "https://github.com/satisfactorymodding/Documentation/edit/", 25 | # Don't check license links at the bottom of pages, seems to frequently "Failed: Network error: unexpected EOF" 26 | "https://www.gnu.org/", 27 | # This is a valid page but still 404s for some reason 28 | "https://www.audiokinetic.com/en/download/", 29 | # unable to get local issuer certificate 30 | "https://questions.satisfactorygame.com/", 31 | # 403s despite being valid pages 32 | "https://stackoverflow.com/questions/", 33 | "https://superuser.com/questions/", 34 | "https://www.unrealengine.com/en-US/ue-on-github", 35 | "https://store.epicgames.com/en-US/p/satisfactory", 36 | # 403s despite being valid page, we should try to get this working somehow, since these links can change without warning 37 | "https://docs.unrealengine.com/", 38 | "https://dev.epicgames.com/", 39 | "^https://www.unrealengine.com/en-US/blog/.*", 40 | # Times out despite being valid 41 | "https://www.adobe.com/learn/substance-3d-designer/web/the-pbr-guide-part-1", 42 | # Pages often time out and Shouldn't™ ever get deleted anyways 43 | "https://web.archive.org/web/", 44 | # Cloudflare checks this, unlikely to be deleted 45 | "^https://superuser.com/.*", 46 | # 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. 47 | "https://docs.ficsit.app/satisfactory-modding/v3.10.0/index.html" 48 | ] 49 | 50 | # Exclude these filesystem paths from getting checked. 51 | exclude_path = [] 52 | -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/dependencies/SML.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Component.CoreEditor", 5 | "Microsoft.VisualStudio.Workload.CoreEditor", 6 | "Microsoft.Net.Component.4.8.SDK", 7 | "Microsoft.Net.Component.4.7.2.TargetingPack", 8 | "Microsoft.Net.ComponentGroup.DevelopmentPrerequisites", 9 | "Microsoft.VisualStudio.Component.TypeScript.TSServer", 10 | "Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions", 11 | "Microsoft.VisualStudio.Component.JavaScript.TypeScript", 12 | "Microsoft.VisualStudio.Component.Roslyn.Compiler", 13 | "Microsoft.Component.MSBuild", 14 | "Microsoft.VisualStudio.Component.Roslyn.LanguageServices", 15 | "Microsoft.VisualStudio.Component.TextTemplating", 16 | "Microsoft.VisualStudio.Component.NuGet", 17 | "Microsoft.VisualStudio.Component.SQL.CLR", 18 | "Microsoft.Component.ClickOnce", 19 | "Microsoft.VisualStudio.Component.ManagedDesktop.Core", 20 | "Microsoft.NetCore.Component.Runtime.6.0", 21 | "Microsoft.NetCore.Component.Runtime.7.0", 22 | "Microsoft.NetCore.Component.SDK", 23 | "Microsoft.VisualStudio.Component.FSharp", 24 | "Microsoft.ComponentGroup.ClickOnce.Publish", 25 | "Microsoft.NetCore.Component.DevelopmentTools", 26 | "Microsoft.Net.Component.4.8.TargetingPack", 27 | "Microsoft.Net.ComponentGroup.4.8.DeveloperTools", 28 | "Microsoft.VisualStudio.Component.DiagnosticTools", 29 | "Microsoft.VisualStudio.Component.EntityFramework", 30 | "Microsoft.VisualStudio.Component.Debugger.JustInTime", 31 | "Component.Microsoft.VisualStudio.LiveShare.2022", 32 | "Microsoft.VisualStudio.Component.IntelliCode", 33 | "Microsoft.VisualStudio.Component.VC.CoreIde", 34 | "Microsoft.VisualStudio.Component.Windows10SDK", 35 | "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", 36 | "Microsoft.VisualStudio.Component.Graphics.Tools", 37 | "Microsoft.VisualStudio.Component.VC.DiagnosticTools", 38 | "Microsoft.VisualStudio.Component.Windows11SDK.22000", 39 | "Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites", 40 | "Microsoft.VisualStudio.Component.DotNetModelBuilder", 41 | "Microsoft.ComponentGroup.Blend", 42 | "Microsoft.VisualStudio.Workload.ManagedDesktop", 43 | "Microsoft.VisualStudio.Component.VC.ATL", 44 | "Microsoft.VisualStudio.Component.VC.Redist.14.Latest", 45 | "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core", 46 | "Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake", 47 | "Microsoft.VisualStudio.Component.VC.CMake.Project", 48 | "Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest", 49 | "Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest", 50 | "Microsoft.VisualStudio.Component.VC.ASAN", 51 | "Microsoft.VisualStudio.Component.Vcpkg", 52 | "Microsoft.VisualStudio.Workload.NativeDesktop", 53 | "Microsoft.VisualStudio.Component.HLSL", 54 | "Component.Unreal.Ide", 55 | "Microsoft.VisualStudio.Workload.NativeGame", 56 | "Microsoft.VisualStudio.Component.VC.14.34.17.4.x86.x64" 57 | ] 58 | } -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/generating_icons/Iconguide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/generating_icons/Iconguide.pdf -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/simpleMod/DocItem.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/simpleMod/DocItem.zip -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/simpleMod/ExampleBuildableMesh.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/simpleMod/ExampleBuildableMesh.blend -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/simpleMod/Icon_DocBuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/simpleMod/Icon_DocBuild.png -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/simpleMod/Icon_DocItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/simpleMod/Icon_DocItem.png -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/simpleMod/Icon_SchemDoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/simpleMod/Icon_SchemDoc.png -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/simpleMod/Icon_SimpleMachine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/simpleMod/Icon_SimpleMachine.png -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/simpleMod/Mesh_DocBuild.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/simpleMod/Mesh_DocBuild.fbx -------------------------------------------------------------------------------- /modules/ROOT/attachments/BeginnersGuide/simpleMod/SM_SampleMachine.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/attachments/BeginnersGuide/simpleMod/SM_SampleMachine.fbx -------------------------------------------------------------------------------- /modules/ROOT/attachments/Development/SatisfactoryAudioRenamer/convert.py: -------------------------------------------------------------------------------- 1 | import os 2 | from pathlib import Path 3 | 4 | def convert(filename): 5 | 6 | my_file = open("./txtp/" + filename, "r") 7 | data = my_file.read() 8 | 9 | data_into_list = data.replace('\n', ' ').split(" ") 10 | 11 | 12 | for i in range(len(data_into_list)): 13 | if data_into_list[i].startswith('wem'): 14 | 15 | wavname = "./txtp/" + data_into_list[i].split('.')[0] + '.wav' 16 | 17 | if os.path.isfile(wavname): 18 | os.rename(wavname, "./out/" + filename.split('.')[0] + '_' + str(i) + '.wav') 19 | else: 20 | print(wavname + " not found.") 21 | 22 | my_file.close() 23 | 24 | relevant_path = "./txtp/" 25 | included_extensions = ['txtp'] 26 | file_names = [fn for fn in os.listdir(relevant_path) 27 | if any(fn.endswith(ext) for ext in included_extensions)] 28 | 29 | 30 | for file_name in file_names: 31 | convert(file_name) -------------------------------------------------------------------------------- /modules/ROOT/images/AddingModIcon/FolderCreated.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/AddingModIcon/FolderCreated.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/AddingModIcon/NoIngameModIcon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/AddingModIcon/NoIngameModIcon.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/Alpakit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/Alpakit.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/AlpakitReleaseDemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/AlpakitReleaseDemo.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/BatchBuildingSettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/BatchBuildingSettings.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/BuildFromMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/BuildFromMenu.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/BuildTargetSelection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/BuildTargetSelection.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/DoNotBuildSolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/DoNotBuildSolution.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/OpenAlpakitDev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/OpenAlpakitDev.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/SML_Mods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/SML_Mods.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/SML_Plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/SML_Plugins.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/ShowFullBuildOutput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/ShowFullBuildOutput.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/StarterProjectStructure/ContentFolder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/StarterProjectStructure/ContentFolder.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/StarterProjectStructure/IronRodPlaceholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/StarterProjectStructure/IronRodPlaceholder.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/AlpakitCreateMod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/AlpakitCreateMod.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/CreateDocItem.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/CreateDocItem.gif -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/CreateDocRecipeDescriptor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/CreateDocRecipeDescriptor.gif -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/CreateGameWorldModule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/CreateGameWorldModule.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/CreateInitMod.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/CreateInitMod.gif -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/DirtyBlueprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/DirtyBlueprint.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/EditPlugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/EditPlugin.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/FinalMeshAppearance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/FinalMeshAppearance.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/MakeRootModule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/MakeRootModule.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/MaterialInstanceSettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/MaterialInstanceSettings.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/ModInModsMenu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/ModInModsMenu.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/ModInit_InitFuncs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/ModInit_InitFuncs.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/NoMaterialImport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/NoMaterialImport.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/PickFilesToSave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/PickFilesToSave.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/PickParentClass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/PickParentClass.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/PickParentClass_Actor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/PickParentClass_Actor.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/PreConstructPatchWindowDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/PreConstructPatchWindowDark.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/RegisterSchematic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/RegisterSchematic.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/RightClickEmptySpace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/RightClickEmptySpace.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/SaveOnCompileSuccess.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/SaveOnCompileSuccess.gif -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/SetDocRecipeProperties.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/SetDocRecipeProperties.gif -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/ShowPluginContentInViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/ShowPluginContentInViewer.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/UnsavedAssetContentBrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/UnsavedAssetContentBrowser.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/UnsavedAssetTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/UnsavedAssetTab.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/WindowDarkModeFixOpacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/WindowDarkModeFixOpacity.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/WindowDarkModeSlot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/WindowDarkModeSlot.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/Wwise_integrate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/Wwise_integrate.gif -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/CreateBinding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/CreateBinding.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_CreateItemTypesSet_Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_CreateItemTypesSet_Part1.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_CreateItemTypesSet_Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_CreateItemTypesSet_Part2.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_CreateVariable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_CreateVariable.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_Grab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_Grab.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_Init.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_Init.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_Override.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SimpleMachine_Override.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/CallOnceOnSpawn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/CallOnceOnSpawn.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/DisableDynamicProduction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/DisableDynamicProduction.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/EventBound.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/EventBound.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/FinishedCode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/FinishedCode.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/SettingPowerProduction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/machines/SolarPanel/SettingPowerProduction.png -------------------------------------------------------------------------------- /modules/ROOT/images/BeginnersGuide/simpleMod/sRGB_Off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/BeginnersGuide/simpleMod/sRGB_Off.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/AssetToolkit/AssetDumperUI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/AssetToolkit/AssetDumperUI.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/AssetToolkit/OpenAssetGeneratorUI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/AssetToolkit/OpenAssetGeneratorUI.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/Incredibuild/incredibuild-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/Incredibuild/incredibuild-email.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/Incredibuild/incredibuild-tray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/Incredibuild/incredibuild-tray.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/Incredibuild/incredibuild_cmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/Incredibuild/incredibuild_cmd.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/Incredibuild/incredibuild_ip_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/Incredibuild/incredibuild_ip_1.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/Incredibuild/incredibuild_ip_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/Incredibuild/incredibuild_ip_2.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/ModelingTools/ModelingToolsCover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/ModelingTools/ModelingToolsCover.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/Engine_Left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/Engine_Left.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/FreightCar_Empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/FreightCar_Empty.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote10.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote11.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote12.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote13.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote14.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote15.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote16.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote17.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote18.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote19.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote21.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote22.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote25.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote26.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote27.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote28.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote29.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote3.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote31.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote32.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote33.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote34.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote35.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote36.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote37.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote38.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote39.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote5.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote6.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote7.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote8.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainNote9.png -------------------------------------------------------------------------------- /modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainStation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/CommunityResources/TrainSignalGuide/TrainStation.png -------------------------------------------------------------------------------- /modules/ROOT/images/Cpp/EditorCreateClass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Cpp/EditorCreateClass.png -------------------------------------------------------------------------------- /modules/ROOT/images/Cpp/IDA_Symbol.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Cpp/IDA_Symbol.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/CLI_FTP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/CLI_FTP.png -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/CLI_SFTP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/CLI_SFTP.png -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/CLI_SMB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/CLI_SMB.png -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/ExampleDoesNotSupportDedicatedServers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/ExampleDoesNotSupportDedicatedServers.png -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/ExampleSupportsDedicatedServers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/ExampleSupportsDedicatedServers.png -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/SMM2_vs_SMM3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/SMM2_vs_SMM3.png -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/SMM_FTP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/SMM_FTP.png -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/SMM_SFTP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/SMM_SFTP.png -------------------------------------------------------------------------------- /modules/ROOT/images/DedicatedServers/SMM_SMB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/DedicatedServers/SMM_SMB.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ChangeButtonDrawAs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ChangeButtonDrawAs.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/Cpp/hooking/BPW_MapMenuFunctions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/Cpp/hooking/BPW_MapMenuFunctions.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/Cpp/hooking/BPW_MapMenuHover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/Cpp/hooking/BPW_MapMenuHover.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/Cpp/hooking/BPW_MapMenuTypeSelected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/Cpp/hooking/BPW_MapMenuTypeSelected.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/CustomLevels/AssetMigrator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/CustomLevels/AssetMigrator.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/CustomLevels/CorrectReferenceViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/CustomLevels/CorrectReferenceViewer.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/CustomLevels/OpenLevelBlueprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/CustomLevels/OpenLevelBlueprint.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/ActorMixins/AddLogic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/ActorMixins/AddLogic.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/ActorMixins/ChooseActor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/ActorMixins/ChooseActor.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/ActorMixins/Components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/ActorMixins/Components.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/ActorMixins/CreateMixinAsset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/ActorMixins/CreateMixinAsset.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/ActorMixins/EnableTick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/ActorMixins/EnableTick.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/ActorMixins/Functions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/ActorMixins/Functions.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/ActorMixins/RegisterMixin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/ActorMixins/RegisterMixin.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/CreateBlueprintHook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/CreateBlueprintHook.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/CreateHook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/CreateHook.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/FillDropdowns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/FillDropdowns.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/LatentActionWorkaround.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/LatentActionWorkaround.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/NewFunction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/NewFunction.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/RegisterHook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/RegisterHook.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/TargetSpecifierConnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/TargetSpecifierConnected.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/TargetSpecifierTooltip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/TargetSpecifierTooltip.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/ModLoader/BlueprintHooks/ViewHookGraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/ModLoader/BlueprintHooks/ViewHookGraph.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/UpdatingGuides/AlpakitButtons38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/UpdatingGuides/AlpakitButtons38.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/UpdatingGuides/DeadBindOnBpFuncNode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/UpdatingGuides/DeadBindOnBpFuncNode.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/UpdatingGuides/HubMilestones.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/UpdatingGuides/HubMilestones.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/Development/UpdatingGuides/NewHookFromOldBindOnBpFuncNode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/UpdatingGuides/NewHookFromOldBindOnBpFuncNode.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/UpdatingGuides/OldScsHook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/UpdatingGuides/OldScsHook.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/UpdatingGuides/PickMixinTargetClass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/UpdatingGuides/PickMixinTargetClass.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/UpdatingGuides/SpawnLightweightBuildable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/UpdatingGuides/SpawnLightweightBuildable.png -------------------------------------------------------------------------------- /modules/ROOT/images/Development/UpdatingGuides/WwiseMigrationPopupScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Development/UpdatingGuides/WwiseMigrationPopupScreenshot.png -------------------------------------------------------------------------------- /modules/ROOT/images/ExtractingGameFiles/FModelModelSettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ExtractingGameFiles/FModelModelSettings.png -------------------------------------------------------------------------------- /modules/ROOT/images/ExtractingGameFiles/FModel_BrokenJSON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ExtractingGameFiles/FModel_BrokenJSON.png -------------------------------------------------------------------------------- /modules/ROOT/images/ExtractingGameFiles/fModelExport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ExtractingGameFiles/fModelExport.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/CreateProfile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/CreateProfile.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/DebugModsFlowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/DebugModsFlowchart.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/EpicBranch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/EpicBranch.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/EpicVerifyIntegrity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/EpicVerifyIntegrity.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/FicsitAppCompatibility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/FicsitAppCompatibility.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/InstallSpecificModVersion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/InstallSpecificModVersion.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/LocalFiles_Epic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/LocalFiles_Epic.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/LocalFiles_Steam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/LocalFiles_Steam.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/SmmCompatibilityInfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/SmmCompatibilityInfo.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/SmmCopyModList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/SmmCopyModList.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/SmmDisableDownloadTimeout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/SmmDisableDownloadTimeout.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/SmmGenerateDebugInfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/SmmGenerateDebugInfo.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/SmmImportExport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/SmmImportExport.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/SmmSelectInstall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/SmmSelectInstall.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/SteamBranch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/SteamBranch.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/SteamVerifyIntegrity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/SteamVerifyIntegrity.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/TurnOffMods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/TurnOffMods.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/smm_installer_properties_unblock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/smm_installer_properties_unblock.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/win10_install_smm_guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/win10_install_smm_guide.png -------------------------------------------------------------------------------- /modules/ROOT/images/FAQ/win11_subtle_block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/FAQ/win11_subtle_block.png -------------------------------------------------------------------------------- /modules/ROOT/images/ForUsers/CoreRedirectMigration/ContentInspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ForUsers/CoreRedirectMigration/ContentInspector.png -------------------------------------------------------------------------------- /modules/ROOT/images/ForUsers/CoreRedirectMigration/TFIT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ForUsers/CoreRedirectMigration/TFIT.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/AddNewCulture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/AddNewCulture.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/AddTarget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/AddTarget.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/CompileTranslations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/CompileTranslations.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/ConfigureTargetDependencies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/ConfigureTargetDependencies.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/EditTranslationsForCulture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/EditTranslationsForCulture.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/EditTranslationsInEditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/EditTranslationsInEditor.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/GatherText.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/GatherText.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/OpenDashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/OpenDashboard.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/PickPlugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/PickPlugin.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/RenameTarget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/RenameTarget.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/SchematicDisplayNameAdvancedSettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/SchematicDisplayNameAdvancedSettings.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/TolgeePluginButtonLocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/TolgeePluginButtonLocation.png -------------------------------------------------------------------------------- /modules/ROOT/images/L10n/ViewTarget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/L10n/ViewTarget.png -------------------------------------------------------------------------------- /modules/ROOT/images/ManualInstall/mod_in_folder_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ManualInstall/mod_in_folder_example.png -------------------------------------------------------------------------------- /modules/ROOT/images/ManualInstall/sml_folder_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ManualInstall/sml_folder_example.png -------------------------------------------------------------------------------- /modules/ROOT/images/ModLoader/BlueprintInterface_ConfigExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ModLoader/BlueprintInterface_ConfigExample.png -------------------------------------------------------------------------------- /modules/ROOT/images/ModLoader/NewConfigurationSystemExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ModLoader/NewConfigurationSystemExample.png -------------------------------------------------------------------------------- /modules/ROOT/images/ModLoader/SCSHook_Example_FreeSamples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ModLoader/SCSHook_Example_FreeSamples.png -------------------------------------------------------------------------------- /modules/ROOT/images/ReuseContent/FModelFoundPath.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ReuseContent/FModelFoundPath.png -------------------------------------------------------------------------------- /modules/ROOT/images/ReuseContent/FModelHubParts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ReuseContent/FModelHubParts.png -------------------------------------------------------------------------------- /modules/ROOT/images/ReuseContent/PlaceholderIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ReuseContent/PlaceholderIcon.png -------------------------------------------------------------------------------- /modules/ROOT/images/ReuseContent/PlaceholderMesh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ReuseContent/PlaceholderMesh.png -------------------------------------------------------------------------------- /modules/ROOT/images/ReuseContent/WikiHubPartsBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/ReuseContent/WikiHubPartsBox.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_1.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_2.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_3.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_4.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_5.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/AdaMessages/AdaMessage_6.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Chainsawable/StaticMesh_AssetUserData_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Chainsawable/StaticMesh_AssetUserData_1.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Chainsawable/StaticMesh_AssetUserData_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Chainsawable/StaticMesh_AssetUserData_2.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Clipboard/ClipboardCopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Clipboard/ClipboardCopy.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Clipboard/ClipboardPaste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Clipboard/ClipboardPaste.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Clipboard/GetClipboardMappingClass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Clipboard/GetClipboardMappingClass.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Clipboard/GetClipboardSettingsClass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Clipboard/GetClipboardSettingsClass.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/ConveyorAssetDataExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/ConveyorAssetDataExample.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/ConveyorProblem.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/ConveyorProblem.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/ConveyorSettings_LOD1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/ConveyorSettings_LOD1.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/ConveyorSettings_LOD2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/ConveyorSettings_LOD2.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/ConveyorSettings_Root.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/ConveyorSettings_Root.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/FactoryLegs/LegExampleComponent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/FactoryLegs/LegExampleComponent.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/FactoryLegs/LegExampleViewport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/FactoryLegs/LegExampleViewport.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/IconLibrary/CreateDataAsset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/IconLibrary/CreateDataAsset.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/IconLibrary/FreshIconDataArrayElement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/IconLibrary/FreshIconDataArrayElement.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/IconLibrary/IconTextureSettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/IconLibrary/IconTextureSettings.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/IconLibrary/ImportAsset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/IconLibrary/ImportAsset.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/IconLibrary/SelectDataAssetClass_FGIconLibrary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/IconLibrary/SelectDataAssetClass_FGIconLibrary.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/ItemCrate/SpawnCrateExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/ItemCrate/SpawnCrateExample.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/MI_Factory_Base_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/MI_Factory_Base_01.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Subsystems/Subsystems_gwm.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Subsystems/Subsystems_gwm.PNG -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Subsystems/Subsystems_sam.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Subsystems/Subsystems_sam.PNG -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Subsystems/Subsystems_sam_node.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Subsystems/Subsystems_sam_node.PNG -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_AkEvent_Create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_AkEvent_Create.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_AkEvent_Info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_AkEvent_Info.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_Audio_Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_Audio_Settings.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_Create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_Create.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_Info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_Info.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_ProjectExplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_ProjectExplorer.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_Spread_Graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Attenuation_Spread_Graph.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Import_ImportWindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Import_ImportWindow.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Import_ProjectExplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Import_ProjectExplorer.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Import_VirtualFolderCreate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Import_VirtualFolderCreate.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_IsSignificant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_IsSignificant.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_PlaybackLimit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_PlaybackLimit.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_RTPC_Configure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_RTPC_Configure.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_RTPC_Create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_RTPC_Create.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_RTPC_Overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_RTPC_Overview.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_RTPC_Range.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_RTPC_Range.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Significance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Significance.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_Create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_Create.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_EditTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_EditTab.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_Generate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_Generate.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_ProjectExplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_ProjectExplorer.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_Window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_Soundbank_Window.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_UEAkEvent_Create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_UEAkEvent_Create.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_UEAkEvent_EndPlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_UEAkEvent_EndPlay.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_UEAkEvent_FireAndForget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_UEAkEvent_FireAndForget.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_UEAkEvent_Verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_UEAkEvent_Verify.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_UE_RTPC_Create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_UE_RTPC_Create.png -------------------------------------------------------------------------------- /modules/ROOT/images/Satisfactory/Wwise/Wwise_UE_RTPC_Usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/Satisfactory/Wwise/Wwise_UE_RTPC_Usage.png -------------------------------------------------------------------------------- /modules/ROOT/images/TestingResources/Unreal-Console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/TestingResources/Unreal-Console.png -------------------------------------------------------------------------------- /modules/ROOT/images/UnrealEditor/MainContentBrowser.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/UnrealEditor/MainContentBrowser.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/UnrealEditor/MainMenuBar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/UnrealEditor/MainMenuBar.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/UnrealEditor/MainModes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/UnrealEditor/MainModes.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/UnrealEditor/MainOutliner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/UnrealEditor/MainOutliner.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/UnrealEditor/MainToolBar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/UnrealEditor/MainToolBar.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/UnrealEditor/MainViewport.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/UnrealEditor/MainViewport.jpg -------------------------------------------------------------------------------- /modules/ROOT/images/UnrealEditor/TabBar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/modules/ROOT/images/UnrealEditor/TabBar.jpg -------------------------------------------------------------------------------- /modules/ROOT/pages/CommunityResources/IconGenerator.adoc: -------------------------------------------------------------------------------- 1 | = Icon Generation 2 | 3 | Some community members have created editor plugins that allow you to semi-automatically 4 | create icon images from item and building descriptors at a number of resolutions. 5 | This is helpful if you've already created a model for your content, and you want 6 | to create UI icons for it that are consistent with those from the base game. 7 | 8 | == Beaver's Icon Generator 9 | 10 | Beaver's tool offers batching functionality for generating icons for multiple items at once 11 | and the ability to save settings between icon capture sessions. 12 | 13 | Setup directions and a tutorial can be found on the tool's 14 | https://github.com/DavidHGillen/Satisfactory_IconCapture[GitHub page]. 15 | 16 | == Kyrium's Icon Generator 17 | 18 | Kyrium's tool captures images using a render target, allowing capture of materials with opacity. 19 | 20 | You can learn more about how to download and use the plugin on its https://github.com/Satisfactory-KMods/KIconMaker[GitHub page]. 21 | 22 | == Nog's Icon Generator 23 | 24 | Nog's tool uses Unreal screenshots to produce images. 25 | 26 | You can read more about how to install and use the plugin on its 27 | https://github.com/Nogg-aholic/EditorIconMaker[GitHub page]. 28 | -------------------------------------------------------------------------------- /modules/ROOT/pages/CommunityResources/ModelingTools.adoc: -------------------------------------------------------------------------------- 1 | = AngryBeaver's ModelingTools 2 | 3 | image:CommunityResources/ModelingTools/ModelingToolsCover.png[image] 4 | 5 | Community member AngryBeaver maintains a repository of re-modeled 'pieces' 6 | of base Satisfactory buildings that are quite useful in creating your own 7 | factory building models. 8 | 9 | These re-models have been optimized to have fewer vertices than the 10 | pieces of machines that one could take off of Satisfactory machines 11 | exported via xref:Development/ExtractGameFiles.adoc#FModel[FModel], and they still look great! 12 | 13 | You can read more about the Modeling Tools on its 14 | https://github.com/DavidHGillen/Satisfactory_ModelingTools[GitHub page]. -------------------------------------------------------------------------------- /modules/ROOT/pages/CommunityResources/SFUIKIT.adoc: -------------------------------------------------------------------------------- 1 | = SFUIKIT 2 | 3 | Community members Deantendo and Treelo maintain a "build your own" UI kit 4 | that can be used to help integrate your mod's UI with Satisfactory's. 5 | The files are vector-based and will require Adobe Photoshop CC 2018 or later to open. 6 | 7 | You can get the files and read more on 8 | the UI kit's https://github.com/deantendo/sfuikit[GitHub page]. -------------------------------------------------------------------------------- /modules/ROOT/pages/CommunityResources/index.adoc: -------------------------------------------------------------------------------- 1 | = Community Resources 2 | 3 | ==== 4 | "Modding is not just about the programming / scripting side" - Pleasure 2020 5 | ==== 6 | 7 | This section is a continual work in progress, 8 | and will contain information about and links to resources helpful for creating 9 | models, textures, user interfaces, and the other content for your mod. 10 | Many of these resources have been made or gathered by the community, 11 | and if you'd like to list another resource here or write a guide, 12 | feel free to pull request the docs repo (press Edit This Page in the top right corner) 13 | or contact us on the Discord with suggestions. 14 | 15 | [NOTE] 16 | ==== 17 | The `#modding-resources` channel on the Discord has additional resources that you may find helpful. 18 | ==== -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/BeginnersGuide/SimpleMod/NextSteps.adoc: -------------------------------------------------------------------------------- 1 | = Next Steps 2 | 3 | You've reached the end of the getting started guide - congratulations! 4 | 5 | If you're still looking to learn about a specific concept, 6 | check and see if we have a page on it in the other sections of the documentation. 7 | 8 | Once you have a mod you're ready to upload, follow the 9 | xref:Development/BeginnersGuide/ReleaseMod.adoc[Releasing Your Mod] 10 | directions to export and upload it for other people to use. 11 | 12 | You can also ask questions on the https://discord.ficsit.app[Discord Server]. 13 | 14 | You may also be interested in {cpp} modding, 15 | which allows modifying and creating much more advanced game behaviors. 16 | More info can be found on that xref:Development/Cpp/index.adoc[here]. 17 | 18 | Consider checking out what mods on ficsit.app have their source code available and 19 | xref:Development/BeginnersGuide/ImportingAnotherMod.adoc[checking them out in your editor] 20 | to learn from their code. 21 | A curated list of open source examples can be found xref:Development/OpenSourceExamples.adoc[here]. 22 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/BeginnersGuide/SimpleMod/index.adoc: -------------------------------------------------------------------------------- 1 | = Create a Simple Mod 2 | 3 | Now that you have learned the core concepts of Satisfactory modding, you can get started on creating your first mod. 4 | 5 | == Overview 6 | 7 | To get started, this tutorial will walk you through creating a simple 8 | mod that adds the following: 9 | 10 | * {blank} 11 | + 12 | The required core functions that register the mod with the game and 13 | allow its content to be added 14 | * {blank} 15 | + 16 | A custom recipe to make 1 Wood from 42 Leaves 17 | * {blank} 18 | + 19 | A HUB Milestone to purchase in order to unlock our custom recipe 20 | * {blank} 21 | + 22 | A new item to produce - a flatscreen TV called a 'Doc Item' 23 | * {blank} 24 | + 25 | A new buildable object that can be painted with the paint gun 26 | * {blank} 27 | + 28 | A basic machine that consumes power and counts the number and 29 | types of items that pass through it 30 | 31 | [TIP] 32 | ==== 33 | Knowledge about 3D modeling is very helpful if you want to add new items, buildings, enemies, etc. to the game. 34 | If you have an idea for such a mod but aren't experienced with modeling, 35 | consider posting it in the `#ideas-discussion` channel on the 36 | https://discord.ficsit.app[Discord server]. 37 | You may find an artist willing to work with you on a project. 38 | You could also learn how to model in a program like Blender, Meshmixer, Maya, etc. 39 | ==== 40 | 41 | == Next Steps 42 | 43 | Get started with the xref:Development/BeginnersGuide/SimpleMod/gameworldmodule.adoc[Plugin Setup and Game World Module], the entry point for your mod. 44 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/BeginnersGuide/StarterProject/ObtainStarterProject.adoc: -------------------------------------------------------------------------------- 1 | = Starter Project 2 | 3 | The Starter Project is distributed by the Satisfactory Modding team 4 | as a GitHub repository named "Satisfactory Mod Loader". 5 | Despite the name, the repository is actually an Unreal Engine project 6 | that includes the source code of the Satisfactory Mod Loader (as a plugin), 7 | the game's {cpp} headers, 8 | placeholder assets for base game content, 9 | and some useful developer plugins. 10 | 11 | Within this 'Starter Project,' you can develop as many mods as you like 12 | while still keeping their files separate, 13 | a process that will be covered later in the docs. 14 | 15 | First, let's decide where on your computer to store the Starter Project files. 16 | 17 | == Selecting a Storage Location 18 | 19 | The Starter Project folder will be your modding workspace, 20 | and could grow to a considerable file size depending on what kinds of mods you make. 21 | As such, you should extract the folder somewhere convenient so that you can find it later. 22 | 23 | **DO NOT** put the project in any of the following locations: 24 | 25 | * ❌ Downloads folder 26 | ** Windows sometimes automatically cleans up this folder depending on your system settings, deleting your files. 27 | * ❌ Cloud-synced folder 28 | ** Cloud sync services like Dropbox, Google Drive, and OneDrive can corrupt your project files. 29 | * ❌ Documents folder 30 | ** Some cloud sync services will automatically sync your Documents folder without telling you about it. 31 | * ❌ Nested within many folders 32 | ** When packing Unreal projects, some filenames can get long, 33 | so a deeply nested location may cause bizarre issues because Windows handles long paths poorly. 34 | * ❌ In a folder path with unusual/international characters in any folder name 35 | ** Unreal and Windows are easily confused by unicode characters in file and folder names. 36 | 37 | **DO** consider putting your project folder in one of these locations: 38 | 39 | * ✔️ Near the root of your drive (for example, `C:\Modding\Satisfactory\`) 40 | ** This avoids long path issues and avoids including your computer user's name in files distributed with your mod. 41 | * ✔️ On your SSD 42 | ** Most modding operations will run significantly faster if you keep the project on an SSD, assuming you have one. 43 | * ✔️ On a secondary drive 44 | ** This will help keep your primary drive from filling up with modding files. 45 | 46 | Once you have decided where to put the project, move on to the next heading. 47 | 48 | == Obtaining the Starter Project 49 | 50 | There are 2 ways to obtain the Starter Project. 51 | Select one based on the details below and what you are comfortable with. 52 | 53 | === Option 1: Git Clone 54 | 55 | If you are familiar with version control software (ex. Git), 56 | we suggest that you clone the repository, 57 | which drastically simplifies the process of updating the files later when the game updates. 58 | 59 | If you're not familiar with version control, 60 | xref:Development/BeginnersGuide/LearnGit.adoc[now is a great time to learn]! 61 | Using Version Control Software (VCS) is a great skill to have for developers 62 | and will greatly help with updating your project in the future, 63 | as well as protect you from losing your mod sources if you upload them to a hosting website like GitHub. 64 | 65 | ==== 66 | xref:Development/BeginnersGuide/StarterProject/StarterProjectViaClone.adoc[Follow the Git Clone path ➡] 67 | ==== 68 | 69 | === Option 2: Download Zip 70 | 71 | If you aren't familiar with version control and would just like to get started modding, 72 | you can download a zip of the Starter Project 73 | from the Satisfactory Modding GitHub. 74 | 75 | ==== 76 | xref:Development/BeginnersGuide/StarterProject/StarterProjectViaZip.adoc[Follow the Download Zip path ➡] 77 | ==== 78 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/BeginnersGuide/StarterProject/StarterProjectViaClone.adoc: -------------------------------------------------------------------------------- 1 | = You're Cloning the Starter Project 2 | 3 | You've chosen to clone the Starter Project repository. 4 | Good choice! This will make it easy to update the project with changes to SML later. 5 | 6 | The below box will help you decide which repository branch to clone. 7 | It's imperative that you download the correct Starter Project version of the game you're modding 8 | or you will have to repeat some of the setup process again. 9 | 10 | == What is Cloning? 11 | 12 | If you aren't familiar with version control software (VCS) like Git, 13 | check out our xref:Development/BeginnersGuide/LearnGit.adoc[mini tutorial] that will cover the basics. 14 | 15 | == What Branch to Clone 16 | 17 | ==== 18 | If you are looking to develop mods for Update 1.0, 19 | follow the link:https://docs.ficsit.app/satisfactory-modding/v3.10.0/index.html[SML v3.10.0] documentation instead. 20 | However, we strongly suggest developing mods for Update 1.1 instead as it will be released to the stable branch on June 10th. 21 | ==== 22 | 23 | // When updating the below, remember to update StaterProjectViaClone.adoc, StarterProjectViaZip.adoc, and dependencies.adoc (engine) 24 | ==== 25 | This is the *latest stable* version of the docs. 26 | // This is the *development* version of the docs. 27 | 28 | // Stable (Release) and Experimental are currently both the same version - 1.0 Release. 29 | 30 | Clone the **`master` branch** to develop a mod for the stable version of SML. 31 | // You should clone the **`dev` branch** because SML 3.8.? is not released yet. 32 | 33 | // You should clone either the **`dev` branch** or the **`master` branch**. 34 | // Of those two, you probably want whichever branch was pushed to most recently, which you can see 35 | // https://github.com/satisfactorymodding/SatisfactoryModLoader/branches[on the GitHub repository]. 36 | 37 | If you're uncertain about which branch to clone, **ask us on the Discord**. 38 | ==== 39 | 40 | https://github.com/satisfactorymodding/SatisfactoryModLoader/[Here] 41 | is a link to the GitHub page of repository to clone. 42 | Get the clone URL via the **`<> Code`** dropdown button on the GitHub page. 43 | 44 | If you just followed the xref:Development/BeginnersGuide/LearnGit.adoc[mini git tutorial], 45 | we suggest following the steps 46 | https://docs.github.com/en/desktop/adding-and-cloning-repositories/cloning-a-repository-from-github-to-github-desktop[here] 47 | to use GitHub Desktop to clone the repository. 48 | Otherwise, use the git clone method of your choice. 49 | 50 | Your Git client will probably start you on the `master` branch by default, 51 | so you may have to switch branches to the branch you actually intended to clone. 52 | 53 | You can move the cloned repository folder later, and you can name it whatever you'd like. 54 | Make sure to read the notes on the 55 | xref:Development/BeginnersGuide/StarterProject/ObtainStarterProject.adoc[Starter Project page] 56 | about good long-term homes for your starter project files. 57 | 58 | The directory is ready for use as soon as the clone is complete 59 | and you have switched to the branch you intend to use. 60 | 61 | [IMPORTANT] 62 | ==== 63 | Many Git clients will automatically clone the repository's default branch. 64 | Make sure it has actually cloned the branch you intended to before proceeding. 65 | ==== 66 | 67 | == Next Steps 68 | 69 | Now that all the dependencies are installed, you can move onto 70 | xref:Development/BeginnersGuide/project_setup.adoc[setting up the project]. 71 | 72 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/BeginnersGuide/StarterProject/StarterProjectViaZip.adoc: -------------------------------------------------------------------------------- 1 | = Downloading a Zip 2 | 3 | You've chosen to download a zip of the Starter Project repository. 4 | 5 | The below box will help you decide which repository branch to download a zip of. 6 | It's imperative that you download the correct Starter Project version 7 | or you will have to repeat some of the setup process again. 8 | 9 | == What Version to Download 10 | 11 | ==== 12 | If you are looking to develop mods for Update 1.0, 13 | follow the link:https://docs.ficsit.app/satisfactory-modding/v3.10.0/index.html[SML v3.10.0] documentation instead. 14 | However, we strongly suggest developing mods for Update 1.1 instead as it will be released to the stable branch on June 10th. 15 | ==== 16 | 17 | // When updating the below, remember to update StaterProjectViaClone.adoc, StarterProjectViaZip.adoc, and dependencies.adoc (engine) 18 | ==== 19 | This is the *latest stable* version of the docs. 20 | // This is the *development* version of the docs. 21 | 22 | Download a zip of the **`master` branch** to develop a mod for the stable version of SML 23 | by clicking https://github.com/satisfactorymodding/SatisfactoryModLoader/archive/refs/heads/master.zip[here]. 24 | 25 | // Download a zip of the **`dev` branch** (because SML 3.8.? is not released yet) 26 | // by clicking https://github.com/satisfactorymodding/SatisfactoryModLoader/archive/refs/heads/dev.zip[here]. 27 | 28 | // You should download a zip either of the **`dev` branch** or the **`master` branch**. 29 | // Of those two, you probably want whichever branch was pushed to most recently, which you can see 30 | // https://github.com/satisfactorymodding/SatisfactoryModLoader/branches[on the GitHub repository]. 31 | 32 | If you're uncertain about which branch to download, **ask us on the Discord**. 33 | ==== 34 | 35 | == Unzipping the Files 36 | 37 | [WARNING] 38 | ==== 39 | By default, Windows marks files downloaded from the internet as "blocked". 40 | You will run into problems later on because of this. 41 | To get around this issue, right-click the zip file and "unblock" it from the Properties menu before unzipping it. 42 | ==== 43 | 44 | Unzip `SatisfactoryModLoader-master.zip` (or the `-dev.zip`) to get the Starter Project files. 45 | If you're encountering issues extracting the zip, 46 | try using another zip extracting software 47 | such as https://www.7-zip.org/[7zip] 48 | or https://www.win-rar.com/start.html[WinRAR]. 49 | 50 | You can move the directory later, and you can name the outermost folder whatever you'd like. 51 | 52 | Make sure to read the notes on the 53 | xref:Development/BeginnersGuide/StarterProject/ObtainStarterProject.adoc[Starter Project page] 54 | about good long-term homes for your starter project files. 55 | 56 | == Next Steps 57 | 58 | Now that all the dependencies are installed, you can move onto 59 | xref:Development/BeginnersGuide/project_setup.adoc[setting up the project]. 60 | 61 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/BeginnersGuide/generating_icons.adoc: -------------------------------------------------------------------------------- 1 | = Generating Item and Building Icon Files 2 | 3 | ==== 4 | This docs page has yet to be written. Looking to help out? Feel free to contribute. 5 | Contact us on the discord if you have any questions. 6 | ==== 7 | 8 | This page will eventually walk through using an Icon Generator tool to create icon images from the meshes of items and buildings. 9 | Until then, look at the xref:CommunityResources/IconGenerator.adoc[list of community created tools] 10 | and the tools' own documentation. 11 | 12 | == Information from Coffee Stain Studios 13 | 14 | // cspell:ignore Nathalie 15 | Nathalie at Coffee Stain has shared a document containing information on how the base game's icons are created. 16 | You can view said document 17 | link:{attachmentsdir}/BeginnersGuide/generating_icons/Iconguide.pdf[here]. 18 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Cpp/Cookbook.adoc: -------------------------------------------------------------------------------- 1 | = Cookbook 2 | 3 | [NOTE] 4 | ==== 5 | You have found a hidden docs page! 6 | 7 | This page is still a work in progress. 8 | 9 | If you have any feedback, please let us know in the Discord. 10 | ==== 11 | 12 | Collection of assorted code snippets and useful approaches. 13 | 14 | == TActorIterator 15 | 16 | Faster than GetAllActorsOfClass and GetTypedBuildable 17 | 18 | ```cpp 19 | for (TActorIterator It(GetWorld()); It; ++It) 20 | { 21 | YourBuildableClass* Buildable = *It; 22 | .... 23 | } 24 | ``` 25 | 26 | https://discord.com/channels/555424930502541343/862002356626128907/1365513493456883713 27 | 28 | == SetTimerForNextTick 29 | 30 | ```cpp 31 | FName Tag; 32 | if (ResourceRouletteCompatibilityManager::IsCompatibilityClass(SpawnedActor, Tag)) 33 | { 34 | World->GetTimerManager().SetTimerForNextTick([World, SpawnedActor, Tag]() 35 | { 36 | ResourceRouletteCompatibilityManager::TagActorAndMesh(SpawnedActor, Tag); 37 | }); 38 | } 39 | ``` 40 | 41 | https://discord.com/channels/555424930502541343/862002356626128907/1365406523227902043 42 | 43 | == Custom Attachment Points 44 | 45 | https://discord.com/channels/555424930502541343/601030071221878784/1358241612546834607 46 | 47 | ```cpp 48 | const TSubclassOf Type = point.Type; 49 | const TSubclassOf SnappedType = targetPoint.Type; 50 | UFGAttachmentPointType* LocalObject = Type.GetDefaultObject(); 51 | const UFGAttachmentPointType* RemoteObject = SnappedType.GetDefaultObject(); 52 | for (auto SnapType : LocalObject->mAllowedAttachmentPointSnapTypes) { 53 | if(RemoteObject->IsA(SnapType)) { 54 | return true; 55 | } 56 | } 57 | return false; 58 | ``` 59 | 60 | == Collision Filtering 61 | 62 | https://www.unrealengine.com/en-US/blog/collision-filtering 63 | 64 | == Timers 65 | 66 | https://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-timers-in-unreal-engine 67 | 68 | https://dev.epicgames.com/documentation/en-us/unreal-engine/using-timers-in-unreal-engine 69 | 70 | == Scripted Actions 71 | 72 | https://dev.epicgames.com/documentation/en-us/unreal-engine/scripted-actions-in-unreal-engine?application_version=5.3 73 | 74 | == Check if Main Menu 75 | 76 | Keep in mind that 99.99% of the time your logic should not require you to do this, 77 | use something like a game world mod module instead. 78 | 79 | ```cpp 80 | if (AFGGameMode* GameMode = World->GetAuthGameMode()) { 81 | return GameMode->IsMainMenuGameMode(); 82 | } 83 | return false; 84 | ``` 85 | 86 | == Lightweight Buildable Ref Struct Data Access 87 | 88 | https://discord.com/channels/555424930502541343/862002356626128907/1377079724484067469 89 | 90 | ```cpp 91 | const FRuntimeBuildableInstanceData* RuntimeData = Ref.ResolveBuildableInstanceData(); 92 | const FBuildableBeamLightweightData* beamData = RuntimeData->TypeSpecificData.GetValuePtr(); 93 | float length = beamData->BeamLength; 94 | return length; 95 | ``` 96 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/EditorTools/SMLEditor/ResearchTreeEditor.adoc: -------------------------------------------------------------------------------- 1 | = Research Tree Editor 2 | 3 | [NOTE] 4 | ==== 5 | This page is still a work in progress. 6 | 7 | If you have any feedback, please let us know in the Discord. 8 | ==== 9 | 10 | Have you been holding off on implementing a MAM research tree in your mod because of how tedious it is? 11 | Wait no more! 12 | 13 | The new Research Tree Editor allows you to create and edit research trees in a visual interface 14 | and provides basic error checking functionality. 15 | 16 | To launch the tool, navigate to the `SMLEditor Content/ResearchTree/` folder in the Content Browser, 17 | right click on the `ResearchTreeHelper` asset, then select `Run Editor Utility Widget`. 18 | Hover over elements in the tool to see tooltips explaining what they do. 19 | 20 | The Example Mod has been updated with a complex research tree (created by the tool) 21 | to demonstrate and explain some important research tree concepts. 22 | Explore this tree, and the base game's trees, to learn more about how research trees work. 23 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/EditorTools/SMLFeatureTests/SMLFeatureTests.adoc: -------------------------------------------------------------------------------- 1 | = SML Feature Tests 2 | 3 | **SML Feature Tests** is a mod that contains code for verifying that SML features are behaving as intended. 4 | Since it does not always follow good mod coding practices in the interest of being a more useful test, 5 | it is purposefully not distributed with the Starter Project to avoid confusing developers with bad examples 6 | and polluting the project with classes and assets that will never be present in an end user's game. 7 | 8 | That being said, 9 | it can be a useful resource for understanding how various SML features are expected to behave 10 | and as an inspiration for how to test your own mods. 11 | 12 | The mod is available https://github.com/satisfactorymodding/SMLFeatureTests[on GitHub] 13 | and can be brought into the project via 14 | xref:Development/BeginnersGuide/ImportingAnotherMod.adoc[standard mod importing procedures]. 15 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/ExampleModDirectory.adoc: -------------------------------------------------------------------------------- 1 | = ExampleMod Feature List 2 | 3 | [NOTE] 4 | ==== 5 | You have found a hidden docs page! 6 | 7 | This page is still a work in progress. 8 | 9 | If you have any feedback, please let us know in the Discord. 10 | ==== 11 | 12 | This page exists to signpost the features demonstrated in the Starter Project's ExampleMod. 13 | It lists every change the mod implements, where to find it in the mod's code, and links to relevant documentation for that feature. 14 | 15 | ** Menu World Module - Adds a power slug to the main menu. 16 | ** Game World Module - Registers recipes and items 17 | *** Adds a milestone that unlocks items and recipes 18 | ** Sub Game World Module: Class Default Object edit example 19 | *** Adds recipe to existing milestone 20 | 21 | * Custom resource 22 | 23 | * Custom Game Levels/Maps 24 | ** Drop Pods, Somersloop/Mercer Sphere shrines 25 | ** Gas rocks 26 | ** Explodable rocks 27 | ** Foliage 28 | ** Water 29 | ** Ore Nodes, Oil Nodes, Fracking Nodes 30 | ** Deposits/Clusters 31 | 32 | * Mod Configuration 33 | * Mod Session Settings 34 | 35 | * Chat commands 36 | * Persistent string value stored per-player 37 | 38 | * Custom recipe-based production building 39 | * Decorative building 40 | * Item counter building with custom blueprint logic 41 | ** Custom building UI 42 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Migration/ScsMigrationGuide.adoc: -------------------------------------------------------------------------------- 1 | = Migrating SCS Hooks to Mixins 2 | 3 | [IMPORTANT] 4 | ==== 5 | Before following this guide you should read the xref:Development/ModLoader/ActorMixins.adoc[Actor Mixins] page 6 | to get an overview of the new system and how to create Mixins using it. 7 | ==== 8 | 9 | Migrating from a SCS Hook to a Mixin is easy because you already have all the information you need in your Mod Game Instance Module. 10 | 11 | image::Development/UpdatingGuides/OldScsHook.png[Existing SCS Hook] 12 | 13 | New SCS Hooks cannot be made, but old ones will remain so you can use them when migrating to Mixins. 14 | 15 | From this old information we get: 16 | 17 | - Actor being attached to 18 | - Parent Component 19 | - Component with your logic 20 | 21 | Now follow the instruction from the xref:Development/ModLoader/ActorMixins.adoc[Actor Mixins] page to create a new Mixin. 22 | When prompted for the Mixin Target use the one from the "Actor Class" in your old SCS Hook: 23 | 24 | image::Development/UpdatingGuides/PickMixinTargetClass.png[Pick Mixin Target] 25 | 26 | From here you can add any logic you had in your old SCS Component into your new Mixin. 27 | Make sure to set any of the settings from your SCS hooks' actor component template(s) on the new component(s) you add to the Mixin, 28 | assuming your editor displays the template, as a now-irrelevant bug prevented the option from being presented in most circumstances. 29 | 30 | [WARNING] 31 | ==== 32 | Don't forget to register your new Mixin as described in the xref:Development/ModLoader/ActorMixins.adoc[Actor Mixins] page. 33 | ==== 34 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/ModLoader/ChatCommands.adoc: -------------------------------------------------------------------------------- 1 | = Chat Commands 2 | 3 | SML adds a system allowing you to add your own chat commands. 4 | It is highly recommended that you use this system as opposed to 5 | writing your own so that the behavior of chat commands is 6 | consistent across different mods. 7 | 8 | == AChatCommandInstance 9 | 10 | Each chat command you want to implement in BP should inherit from `AChatCommandInstance`. 11 | 12 | This class contains some attributes you need to set to tell SML about your command: 13 | 14 | - `Only Usable by Player` 15 | + 16 | This allows you to make sure only players can execute the command, 17 | as opposed to other mods calling them. 18 | - `Min Number Of Arguments` 19 | + 20 | If the number of arguments used to execute the command is lower than this value, 21 | the command wont get executed. 22 | - `Command Name` 23 | + 24 | This is the name of your command you want to add. 25 | It will be what the user types to run the command. 26 | - `Aliases` 27 | + 28 | This is a list alternative Command Names for your command. 29 | You will be able to use them in place of the Command Name when running the command. 30 | - `Usage` 31 | + 32 | This is the description of your command how it should get used by the player. 33 | It will be displayed in help menus and when the command is not given enough arguments. 34 | You should provide a description of what the command does, what each parameter is, 35 | and possibly an example valid command. 36 | 37 | To give the command now some functionality, 38 | you just need to override the `Execute Command` function and add your own logic to it. 39 | 40 | This function receives the command sender, the command arguments, and the used alias (if any) 41 | and should either return COMPLETED in the case of success, or, in the case of an error, 42 | logging an error about what in the execution didn't work and returning 43 | UNCOMPLETED, INSUFFICIENT_PERMISSIONS, or BAD_ARGUMENTS. 44 | 45 | After that you need to register your command for SML to be able to load it. 46 | You can do that by simply adding it to the `M Chat Commands` array of your 47 | xref:Development/ModLoader/ModModules.adoc#_game_world_module_ugameworldmodule[Game World Module]. 48 | 49 | == UCommandSender 50 | 51 | This class represents the sender of a chat command 52 | and allows you to get abstract information about the sender. 53 | 54 | A sender could be a player, for example. 55 | 56 | == AChatCommandSubsystem 57 | 58 | This subsystem provides a number of helpful chat command utilities. 59 | It allows you to... 60 | 61 | * Register a chat command instance manually 62 | * Get a list of registered commands 63 | * Executed a command programmatically 64 | * Access the `ParsePlayerName` function, which allows you to get the `AFGPlayerController` 65 | based on the player name. 66 | ** This is generally used to parse the player name that was passed as command argument. 67 | It also allows you to parse selectors in the command like @all and @self. 68 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/ModLoader/ExtendedAttributeProvider.adoc: -------------------------------------------------------------------------------- 1 | = Extended Attribute Provider 2 | 3 | Introduced in SML3.8, `ISMLExtendedAttributeProvider` is an interface 4 | that allows any modded asset to offer additional data to other mod systems without involving a specific class in the hierarchy. 5 | 6 | Consider the base game's `FGItemDescriptorNuclearFuel` and `FGItemDescriptorBiomass` classes. 7 | Nuclear Fuel adds new 2 properties to the standard item descriptor, while Biomass adds none. 8 | However, because they are implemented as full classes, it's impossible to have an item which is both nuclear fuel and biomass. 9 | 10 | As an interface, the Extended Attribute Provider can be used without locking you out of using another class as the parent. 11 | 12 | == Usage 13 | 14 | To use the interface, implement it on your asset. 15 | 16 | For blueprints, this is done in `Class Settings` > (Interfaces subheading) `Implemented Interfaces` > `Add`. 17 | 18 | == Features 19 | 20 | As of SML3.8, the only system that uses this interface is the xref:Development/ModLoader/ContentTagRegistry.adoc[Content Tag Registry]. 21 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/ModLoader/GameMapRegistry.adoc: -------------------------------------------------------------------------------- 1 | = Game Map Registry 2 | 3 | Introduced in SML3.5, the Game Map Registry is a 4 | xref:Development/ModLoader/ModModules.adoc#_game_instance_bound_module_ugameinstancemodule[Game Instance] 5 | xref:Development/ModLoader/Subsystems.adoc[Subsystem] 6 | that allows mods to add additional game levels without fighting each others' main menu widget blueprint hooks to adjust the level select UI. 7 | 8 | SML automatically creates a Game Map Registry entry for the base game's level and populates it with the original 4 starting locations. 9 | 10 | An example custom level and Game Map Registry entry can be found in the Example Mod shipped with the starter project. 11 | 12 | Mods can add levels to the registry via SMLGameMapData entries in the 13 | xref:Development/ModLoader/ModModules.adoc#_game_instance_bound_module_ugameinstancemodule[Game Instance Module]. 14 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/ModLoader/SimpleConstructionScript.adoc: -------------------------------------------------------------------------------- 1 | = Simple Construction Script (SCS) Hooks 2 | 3 | [IMPORTANT] 4 | ==== 5 | As of SML 3.11, this system has been deprecated in favor of the 6 | xref:Development/ModLoader/ActorMixins.adoc[Actor Mixins] system. 7 | ==== 8 | 9 | Introduced in SML3.5, Blueprint Simple Construction Script hooks allow adding modded 10 | https://docs.unrealengine.com/5.1/en-US/components-in-unreal-engine/[Components] 11 | to any blueprint-based actor. 12 | 13 | Mods can define Blueprint SCS Hooks in their 14 | xref:Development/ModLoader/ModModules.adoc#_game_instance_bound_module_ugameinstancemodule[Game Instance Module] under Class Defaults -> Advanced -> Hooks -> Blueprint SCSHooks 15 | 16 | This system is very flexible and it is difficult to summarize its capabilities. 17 | Here are some example usages: 18 | 19 | * Spawn a component on the player character that does some custom logic 20 | ** Example Mod uses this to add a hat to the player if they have an Example Item in their inventory. 21 | Note that the component is always spawned, but custom logic controls if the hat is visible to the player. 22 | * Easily track (and potentially store with the save file) per-player data that is guaranteed to exist by hooking the construction of BP_PlayerState 23 | ** The open-source https://ficsit.app/mod/FreeSamples[Free Samples] mod 24 | attaches a FreeSampleDataComponent to each BP_PlayerState with this configuration on its RootInstance_FreeSamples blueprint: 25 | image:ModLoader/SCSHook_Example_FreeSamples.png[FreeSamples SCS Hook Example] 26 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/ModLoader/WidgetBlueprintHooks.adoc: -------------------------------------------------------------------------------- 1 | = Widget Blueprint Hooks 2 | 3 | Introduced in SML3.5, Widget Blueprint Hooks can be used to add your custom widget into one of the existing game widgets. 4 | 5 | This functionality is used by SML to add the 'Mods' button to the main menu and pause menu. 6 | 7 | Mods can define widget blueprint hooks in their 8 | xref:Development/ModLoader/ModModules.adoc#_game_instance_bound_module_ugameinstancemodule[Game Instance Module]. 9 | 10 | An example usage of this feature applied to the player HUD can be found in the Example Mod shipped with the starter project. 11 | 12 | The system works on the widget archetype level so your widget ends up fully integrated into the game's asset. 13 | You have full control over slot properties and widget settings. 14 | 15 | [NOTE] 16 | ==== 17 | A similar effect to Widget Blueprint Hooks can be achieved by hooking the widget's construct 18 | (for example, using Bind on BPFunction 'Construct') 19 | and manually adding your widget via blueprint code, but this system provides a simpler and more convenient way. 20 | ==== 21 | 22 | == Useful Blueprint Nodes 23 | 24 | SML offers some utility functions that make working with widget blueprint hooking cleaner and easier. 25 | 26 | Use the editor 'Find in Blueprints' functionality to search for usage examples in SML itself. 27 | Only a brief description of the node's purpose is provided here. 28 | Read more information in the node's tooltip or the SMLBlueprintWidgetLibrary.h header file. 29 | 30 | === Find Parent Widget of Class 31 | 32 | Traverses the outer hierarchy of the provided widget 33 | and attempts to find the first widget of the class that be casted to the provided one and returns it. 34 | 35 | Particularly useful for a widget that injected into another to operate on its parent widget tree to perform additional modifications or gather extra data. 36 | 37 | This should only be used when you have very clear knowledge of your supposed parent widget. 38 | 39 | === Find Child Widgets Of Class 40 | 41 | Traverses all of the direct and potentially indirect widgets owned by the provided widget tree 42 | and attempts to find all the widgets matching the provided class. 43 | 44 | An example use case is for obtaining and operating on children of a widget that you can't modify the implementation of. 45 | 46 | This should only be used when you have very clear knowledge of the widget tree 47 | since bindings and named slots should be used to implement this functionality when you do have control over the implementation. 48 | 49 | [WARNING] 50 | ==== 51 | Note that the search process can't break through the sandboxing of child user widgets, 52 | so you must either chain calls to this function on those child widgets 53 | or pass the "closest" child if you have access to it. 54 | Examples of this situation include content in named slots or widgets that use other User Widgets in their hierarchy. 55 | ==== 56 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/ModLoader/index.adoc: -------------------------------------------------------------------------------- 1 | = SML 2 | 3 | The Satisfactory Mod Loader provides framework for all the stuff you as modder might encounter 4 | but Unreal doesn't provide help with. 5 | 6 | == Mod "Types" 7 | 8 | All Satisfactory mods are full Unreal Engine plugins. 9 | There are three main ways to create a mod with this approach, 10 | each with advantages and disadvantages. 11 | 12 | * {blank} 13 | Blueprint Mods:: 14 | Blueprint mods consist of Unreal Blueprint assets which can contain data (like meshes, sounds, textures) 15 | and code written in Unreal Blueprint scripting. 16 | SML provides a number of utilities and entry points to enable blueprint mods to function. 17 | Blueprint mods can do a lot, but they can generally only access fields and methods have been made blueprint accessible from the {cpp} side. 18 | + 19 | * {blank} 20 | {cpp} Mods:: 21 | Writing a mod in Unreal {cpp} provides deep access to the Satisfactory runtime 22 | and is usually more performant than blueprint code because it does not need to go through the overhead of the blueprint VM. 23 | However, it's a pain to reference blueprint assets (a frequent requirement for working with base game content) 24 | in a non-brittle manner, and working with widgets is agonizingly verbose. 25 | Performing delayed actions is also much more involved than in Blueprint scripting. 26 | + 27 | * {blank} 28 | Hybrid Blueprint and {cpp} Mods:: 29 | Writing a mod with {cpp} does not mean replacing all of your Blueprint assets with {cpp} code. 30 | The best mods are implemented with a careful combination of both {cpp} and Blueprint code 31 | since each side covers for the other's disadvantages. 32 | For example, you can implement references to blueprint assets and widgets on the 33 | However, changes to your mod's class {cpp} structure will require closing the editor and rebuilding Development Editor 34 | for the blueprint side to recognize the changes. 35 | + 36 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Modeling/index.adoc: -------------------------------------------------------------------------------- 1 | = Getting Started 2 | 3 | In this section, we will cover a variety of topics about making models and visuals for Satisfactory mods. 4 | It is essential you have a modding environment and working mod to test you changes. If you don't, go and follow the xref:Development/BeginnersGuide/index.adoc[Beginners Guide]. 5 | 6 | == Basic Theories 7 | 8 | While we're not going to teach you how to model, that's too big of a concept to fit in these docs, but if you're just getting started try some intro to Blender tutorials before continuing further. 9 | 10 | Even if you do know how to model there may be some concepts/processes the game is using you might want to lookup/practice. Below is a list of some major technologies or techniques you should at least be aware of. 11 | 12 | * {blank} 13 | + 14 | Weighted Vertex Normals:: 15 | Save triangles and make you mesh look good. Very important for mechanical or hard surface models. 16 | Used extensively on all buildable objects. 17 | ** {blank} 18 | https://www.youtube.com/watch?v=sqGFhiP-2mc[Vertex Normals and/with Modifiers(Youtube)] 19 | ** {blank} 20 | https://www.youtube.com/watch?v=DgEBfdYD7aE[Vertex Normals and Game Engines(Youtube)] 21 | * {blank} 22 | + 23 | PBR Materials:: 24 | Use a collection of textures together to better represent metal vs plastic vs rock etc. 25 | There's many tools to help create PBR textures like Substance or Quixel. 26 | https://www.adobe.com/learn/substance-3d-designer/web/the-pbr-guide-part-1[Indepth Article] 27 | * {blank} 28 | + 29 | Texture Atlases:: 30 | Helps understand the painting system (which allows you to change factory colours) and allows you to use decals on your models. 31 | https://web.archive.org/web/20200101133356/https://blog.immersed.team/texture-atlasing-an-inside-look-at-optimizing-3d-worlds-8a07145856d7?gi=9b479f256ecc[Tutorial Article] 32 | * {blank} 33 | + 34 | Normal Map Decals:: 35 | Exceptionally important for adding extra details without adding massive triangle counts. 36 | https://www.youtube.com/watch?v=66IGMnPgEW0[Youtube walkthrough] 37 | * {blank} 38 | + 39 | Lightmap UVs:: 40 | Give every portion of the mesh unique surface area so that lighting calculations can save information to the right spots without issues. 41 | https://www.youtube.com/watch?v=UnUn4nRoh-E[Youtube Example] 42 | * {blank} 43 | + 44 | Ambient Occlusion Bake:: 45 | Help the lighting engine do a better job by making a texture to describe where the nooks, crannies, and edges of meshes are. 46 | https://web.archive.org/web/20231202113004/https://www.katsbits.com/tutorials/blender/baking-ambient-occlusion.php[Tutorial Article] 47 | 48 | == Help 49 | 50 | Keep in mind these are common techniques and many more resources are available to learn from. 51 | 52 | Feel free to ask for help in the `#general-help` channel on the https://discord.ficsit.app[Discord server] 53 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/Chainsawable.adoc: -------------------------------------------------------------------------------- 1 | = Chainsaw and Foliage 2 | 3 | In Satisfactory, the location of foliage is stored 4 | as part of the game map file that is shared across all saves. 5 | Imagine how large your save files would be if every save contained 6 | the location of every single plant in the map! 7 | 8 | Instead, Satisfactory saves the removal of plants in a certain radius. 9 | The Chainsaw (and Nobelisk, and hand picking) creates 10 | removal markers which are stored in the save file 11 | to tell the game a plant has been removed. 12 | 13 | If you wanted, you could use a save editor such as 14 | https://github.com/Goz3rr/SatisfactorySaveEditor/[SatisfactorySaveEditor] 15 | to remove all of these markers, restoring foliage to its original state. 16 | 17 | == Make Things Chainsawable 18 | 19 | To make custom foliage interact with the chainsaw, 20 | you need to the `FGFoliageIdentifier_Chainsawable` identifier to an `FGFoliage Resource User Data` 21 | entry in the Asset User Data of the foliage's static mesh. 22 | 23 | image:Satisfactory/Chainsawable/StaticMesh_AssetUserData_1.png[Static Mesh Asset User Data Field] 24 | 25 | image:Satisfactory/Chainsawable/StaticMesh_AssetUserData_2.png[Add Chainsawable Identifier] 26 | 27 | This process was explained by Ben in https://discord.com/channels/555424930502541343/555515791592652823/779248979816218635[this message chain on the Discord]. 28 | 29 | == Make a Chainsaw 30 | 31 | You should extend the base chainsaw when creating your own for simplicity. 32 | 33 | The property of a chainsaw that controls the radius of 34 | plant collection is `mCollateralPickupRadius`. 35 | 36 | If you want something else to destroy foliage, 37 | it will need to create the foliage removal markers 38 | that existing methods use. 39 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/CheatBoard.adoc: -------------------------------------------------------------------------------- 1 | = Cheat Board 2 | 3 | Beginning with the 1.0 release, Coffee Stain now distributes their Unreal Cheat Board with the game. 4 | It can be accessed by 5 | xref:SMLChatCommands.adoc#EnableCheats[enabling cheats] 6 | then running the `Cheats` console command. 7 | 8 | == Adding New Cheats 9 | 10 | Mods can add additional cheats to the existing Cheat Board. 11 | 12 | 1. Implement a cheat UFunction as `CheatBoard` in a class derived from `UCheatManagerExtension`. 13 | 2. Register the cheat manager extension class via `UCheatManager::OnCheatManagerCreatedDelegate`. 14 | 15 | See the code example below from Archengius: 16 | 17 | Header file: 18 | 19 | ```h 20 | UCLASS(MinimalAPI) 21 | class UMyCoolCheatManagerExtension : public UCheatManagerExtension 22 | { 23 | GENERATED_BODY() 24 | public: 25 | UFUNCTION(Exec, CheatBoard) 26 | void MyCoolCustomCheat(); 27 | } 28 | ``` 29 | 30 | Registering the class in StartupModule: 31 | 32 | ```cpp 33 | void FMyCoolModModule::StartupModule() 34 | { 35 | UCheatManager::OnCheatManagerCreatedDelegate.AddLambda([](UCheatManager* CheatManager) 36 | { 37 | CheatManager->AddCheatManagerExtension(NewObject(CheatManager)); 38 | }); 39 | } 40 | ``` 41 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/Clipboard.adoc: -------------------------------------------------------------------------------- 1 | = In-Game Clipboard 2 | 3 | Satisfactory offers a clipboard functionality to copy-paste configuration options between machines. 4 | It's possible to extend this functionality to work with your own custom buildings. 5 | 6 | The `AFGBuildable` class already implements the `IFGFactoryClipboardInterface` interface, the interface defining the functions that must be overridden to implement clipboard functionality, so listing this interface an extra time is not necessary. 7 | 8 | 1. Create a class with basetype `FGFactoryClipboardSettings` and add variables for the stuff you want to save in the clipboard 9 | 2. Override the `GetClipboardSettingsClass` function and set the return value to your class 10 | 3. Override the `GetClipboardMappingClass` and set the return value to the class of object that uses this clipboard 11 | 4. Override the `CanUseFactoryClipboard` function to return true 12 | 5. Override the copy and paste functions and implement your own logic 13 | 14 | Below is an example implementation from the https://ficsit.app/mod/FicsitWiremod[Circuity] mod. 15 | 16 | image:Satisfactory/Clipboard/GetClipboardSettingsClass.png[GetClipboardSettingsClass] 17 | 18 | image:Satisfactory/Clipboard/GetClipboardMappingClass.png[GetClipboardMappingClass] 19 | 20 | image:Satisfactory/Clipboard/ClipboardCopy.png[Copy] 21 | 22 | image:Satisfactory/Clipboard/ClipboardPaste.png[Paste] 23 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/Crafting.adoc: -------------------------------------------------------------------------------- 1 | = Crafting 2 | 3 | The crafting system used by Satisfactory is relatively straightforward and 4 | easy to add your own recipes to. 5 | 6 | == Recipes [.title-ref]#(FGRecipe)# 7 | 8 | Describing recipes for the workbench, buildgun or other machines works 9 | through the usage of the native `FGRecipe` class. 10 | Recipes allow you to describe what items and how many you need to deliver 11 | to get the given items with the given amounts. 12 | 13 | It is important to note that buildgun recipes are also described by `FGRecipe`, 14 | so if you want to add a new building to the buildgun, 15 | you'll need to create a new `FGRecipe` class 16 | with proper default values and then register the recipe. 17 | 18 | Satisfactory uses a recipe manager to register and store all recipes there are. 19 | Whether you want to add a normal workbench recipe or a smelting recipe, just create a recipe with your desired descriptors and amounts and then let it register in the manager. 20 | The machines get their information from this manager so they can give the 21 | player a proper choice of what they can craft and what not. 22 | To determine this, if a machine is capable of crafting this recipe, you will need to 23 | pass an object type implementing the "`Crafter`" interface. 24 | 25 | * {blank} 26 | + 27 | M Display Name:: 28 | If you want to define a name for your recipe, check this and type the name in. 29 | * {blank} 30 | + 31 | M Ingredients:: 32 | This is an array of structs, each of which contains the information of one crafting component. 33 | Together, the array forms the input items for the recipe. 34 | * {blank} 35 | + 36 | M Manufacturing Duration:: 37 | This determines the time it takes for a machine to process this recipe. 38 | * {blank} 39 | + 40 | M Manual Manufacturing Multiplier:: 41 | If you want to use the same recipe for machines and the craft bench, 42 | with this value you can define how much longer the crafting of this recipe should take longer in the craft bench. 43 | * {blank} 44 | + 45 | M Produced In:: 46 | Here we need to select the machine that can use the recipe. 47 | * {blank} 48 | + 49 | M Product:: 50 | This is again an array of structs containing information regarding the 51 | item types and amounts that form the output of the recipe. 52 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/DedicatedServerAPIDocs.adoc: -------------------------------------------------------------------------------- 1 | = Vanilla Dedicated Server API 2 | 3 | The 1.0 release introduced two API endpoints to the base game's dedicated servers. 4 | 5 | * **Dedicated Server Lightweight Query API**: 6 | a simple UDP protocol designed for polling the server state through UDP continuously with minimal overhead. 7 | * **Dedicated Server HTTPS API**: 8 | a HTTPS server serving the requests to retrieve the more detailed state of the server, and control it's behavior. 9 | 10 | The documentation for these APIs is provided in the 11 | `DedicatedServerAPIDocs.md` markdown file 12 | in the `CommunityResources` folder of your 13 | xref:faq.adoc#Files_GameInstall[game install directory]. 14 | In the interest of keeping this documentation up-to-date 15 | we will not be duplicating the API documentation here. 16 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/FactoryConnectors.adoc: -------------------------------------------------------------------------------- 1 | = Factory-Connectors 2 | 3 | Factory connectors are Satisfactory's system for transferring items from one machine to the next. 4 | Conveyors also utilize factory connectors to transfer items from a machine into its internal buffer (the belt). 5 | 6 | The Factory-Connector-System is a pull-based system. 7 | That means if a machine has an empty internal buffer and wants to get filled by a factory connector, 8 | the machine requests (via a Grab call) an item from the given connector. 9 | The connector can then reply with nothing (if there aren't any items) or the item it transfers. 10 | If it returns something, the caller (the machine) needs to 11 | make sure it does something with that item, 12 | else the item just disappears. 13 | The Factory-Connector itself asks its connected 14 | Factory-Connector or it's outer object to return an item. 15 | A machine (`AFGBuildable`) contains a Factory-Connector which contains a 16 | reference to a connected one, and that one will grab the item from the connected machine (belt). 17 | 18 | This is a flow example of a machine output of the Grab calls. 19 | 20 | A conveyor which has a free space -> FactoryConnector in the conveyor 21 | which is connected to the machines connector -> Factory-Connector of the 22 | machine which is connected to the connector of the conveyor -> Machine 23 | 24 | This is a flow example of a machine input of the Grab calls. 25 | 26 | Machine -> Factory-Connector of the machine connected to the connector 27 | of the conveyor -> Factory-Connector of the conveyor connected to the 28 | connector of the machine -> Conveyor 29 | 30 | If the machine just want to know what it can grab without actually transferring any items, then it can use the Peek functions. An example use case of this is filtering what it allows on the input side. 31 | These Peek functions work mostly the same as the Grab functions, except they don't actually cause a item transfer to happen. 32 | 33 | [WARNING] 34 | ==== 35 | It is highly recommended to do item transfers, peeks, etc. in the xref:/Development/Satisfactory/FactoryTick.adoc[Factory Tick] call so that they are optimized for multiple cores. 36 | ==== 37 | 38 | == Grab & Peak 39 | 40 | The `FGBuildable` adds two functions. 41 | 42 | === `FactoryGrabOutput` 43 | 44 | This function gets called by `FGFactoryConnector`s which have the `mForwardPeekAndGrabToBuildable` option enabled. 45 | Information about what connector wants to grab is passed and the function returns what actually gets grabbed. 46 | 47 | [WARNING] 48 | ==== 49 | If you interact with a inventory or what ever, you need to make sure that you have removed the item from it, 50 | else the component could grab indefinitely, and that's not what we want. 51 | ==== 52 | 53 | === `FactoryPeekOutput` 54 | 55 | This function works just like `FactoryGrabOutput` but there you should not remove the item from your inventory or what ever. 56 | This function is only used to allow the output to check what it can grab if it wants to. 57 | 58 | == FGFactoryConnection 59 | 60 | A `UFGFactoryConnectionComponent` is a `USceneComponent` used to implement a Factory-Connector. 61 | Use this directly as a component for you `AFGBuildable`. 62 | 63 | * {blank} 64 | + 65 | M Connector:: 66 | The material type of connection. (Solid, Liquid, or Gas) 67 | * {blank} 68 | + 69 | M Direction:: 70 | The I/O direction of the factory connector. 71 | If it receives items or if it sends items. 72 | * {blank} 73 | + 74 | M Connector Clearance:: 75 | The distance after which the connected conveyor is allowed to bend. 76 | * {blank} 77 | + 78 | M Forward Peek and Grab to Buildable:: 79 | If the grab and peeks should get redirected to the owner (just `FGBuildable` works) 80 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/FactoryLegs.adoc: -------------------------------------------------------------------------------- 1 | = Factory Legs 2 | 3 | Satisfactory machinery often includes "legs" to appear sturdily supported even when placed on uneven ground. 4 | 5 | To set up legs on modded buildings, your building need two things: 6 | 7 | * Named leg sockets defined on your building's mesh 8 | ** The https://dev.epicgames.com/documentation/en-us/unreal-engine/using-sockets-with-static-meshes-in-unreal-engine?application_version=5.3[Unreal documentation] 9 | covers how to add sockets to your mesh in the editor. 10 | ** Socket names must follow the format `foot_xx` where `xx` is a zero-left-padded number starting at `01`. 11 | According to CSS, this numbering format is hardcoded internally. 12 | * FGFactoryLegs actor component on the building actor 13 | ** Use the "mLegSocketNames" property to specify the names of the leg sockets used on your mesh. 14 | 15 | Note that if your building has a FGFactoryLegs component and its mesh NOT have leg sockets, the building hologram will always report that it's on uneven ground and prevent placement. 16 | 17 | image::Satisfactory/FactoryLegs/LegExampleViewport.png[Screenshot of editor viewport visualizing socket names] 18 | 19 | image::Satisfactory/FactoryLegs/LegExampleComponent.png[Screenshot of editor displaying FGFactoryLegs component settings] 20 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/Inventory.adoc: -------------------------------------------------------------------------------- 1 | = Inventories and Items 2 | 3 | [NOTE] 4 | ==== 5 | This page is not comprehensive. 6 | Check out the comments in `FGInventoryComponent.h` and `FGInventoryLibrary.h` for additional context and helper functions. 7 | ==== 8 | 9 | == Item Descriptor [.title-ref]#(`UFGItemDescriptor`)# 10 | 11 | The native `AFGItemDescriptor` class, who would have thought, 12 | contains properties of Item-like game concepts. 13 | Notably, this is the base class for things like UFGBuildDescriptor (buildings) 14 | and UFGFactoryCustomizationDescriptor (Customizer patterns), 15 | which are not 'items' in the usual sense, 16 | and do not make use of all available UFGItemDescriptor properties. 17 | 18 | == Inventory Item [.title-ref]#(`FInventoryItem`)# 19 | 20 | Represents a single "instance" of an item descriptor and its associated item state (any kind of actor). 21 | Usually used when referring to items outside of inventories, for example, on belts. 22 | 23 | Most items do not have state, and the game's recipe system ignores item state. 24 | Equipment items use item state to store ammo/fuel levels, user settings, and other persistent data. 25 | 26 | == Item Amount [.title-ref]#(`FItemAmount`)# 27 | 28 | Associates an item descriptor class with a count of items, notably without an item state. 29 | Useful for representing quantities of items without regard to how they are being stored. 30 | Primarily used to define ingredients/products in recipes and costs of schematics. 31 | 32 | Be careful converting these to/from Inventory Stacks to avoid losing item state data. 33 | 34 | == Inventory Stack [.title-ref]#(`FInventoryStack`)# 35 | 36 | Represents an Inventory Item as a stack of potentially multiple items. 37 | Unlike Item Amount, this maintains state data. 38 | 39 | Be careful converting these to/from Item Amounts to avoid losing item state data. 40 | 41 | == Inventory Component [.title-ref]#(`UFGInventoryComponent`)# 42 | 43 | A `USceneComponent` used to attach a inventory, able to hold multiple Inventory Stacks at the same time, to a actor. This is not only used for the player, it's nearly always used where you know there are items inside. 44 | That means you can think of them like a container full of items. 45 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/ItemCrate.adoc: -------------------------------------------------------------------------------- 1 | = Item Crates 2 | 3 | If you dismantle a building and you don't have enough space in your inventory to hold its ingredients and contents, 4 | Satisfactory will spawn a temporary crate containing those items instead. 5 | 6 | You may wish to reuse this functionality for your own purposes in mods. 7 | 8 | == Spawning Item Crates 9 | 10 | Remember that spawning actors and performing inventory operations 11 | should be done with authority (server side) in multiplayer. 12 | 13 | To spawn an item crate with items from an MInventoryStack array: 14 | 15 | 1. Spawn actor BP_Crate 16 | ** Make sure to use an "Always Spawns" collision handling option to ensure the crate is always spawned 17 | 2. Call "Set Allow Adding Items" with `true` on the crate actor 18 | 3. Call the FGInventoryLibrary utility function "Get Min Num Slots for Items" with the crate actor and array of items 19 | 4. Get the crate's inventory component and call Resize with the num slots, then call Add Stacks 20 | 5. (Optional) Clear the array of MInventoryStack entries to ensure you don't duplicate them later on accident 21 | 22 | image:Satisfactory/ItemCrate/SpawnCrateExample.png[Blueprint code screenshot] 23 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/ModsWithoutSML.adoc: -------------------------------------------------------------------------------- 1 | = Modding Without Satisfactory Mod Loader 2 | 3 | [NOTE] 4 | ==== 5 | This page is still a work in progress. 6 | 7 | If you have any feedback, please let us know in the Discord. 8 | ==== 9 | 10 | == History 11 | 12 | Back in https://satisfactory.wiki.gg/wiki/Patch_0.3.8.9[Update 3], 13 | Coffee Stain switched Satisfactory to being built in the Modular Build mode. 14 | This meant that mods no longer technically needed SML to be "loaded", 15 | so SML switched over to serving as a utility library and coordinator. 16 | 17 | Up until the release of SML 3.8, we still required all mods uploaded to Ficsit.app to depend on SML 18 | because it acted as a way to check which game and engine versions a mod was compatible with. 19 | With the release of SML 3.8 we also updated Ficsit.app internals to allow mods to be uploaded without SML as a dependency, 20 | instead using the "GameVersion" uplugin field. 21 | 22 | [id="AreYouSure"] 23 | == Are You Really Sure You Want to Do This? 24 | 25 | Consider the following SML features that you'll be losing by not depending on it: 26 | 27 | - Significant wheel reinvention required for blueprint (pak-only) mods ({cpp} mods can use StartupModule) 28 | - xref:Development/Cpp/hooking.adoc[{cpp} hooking helpers] - SML bundles a modified version of funchook 29 | - Mod dependency version checking at launch 30 | - Client-server version consistency checking when playing in multiplayer 31 | - Other mods being able to detect your mod's presence 32 | - Mod Content Registry access 33 | 34 | Also, consider that nearly every player will still have SML installed anyways so they can use other mods. 35 | It's already possible to run SML on just the client. 36 | 37 | == Systems You Will Have to Care About 38 | 39 | Here's a list of special considerations you'll have to make if you decide to go down this path. 40 | Every mod is different, so this will never be a comprehensive list. 41 | Please let us know what you find out so we can update this page. 42 | 43 | - You still need to use the Starter Project to have a working Unreal Engine project to build your mod with. 44 | - Your mod breaking on game updates. {cpp} code, especially hooks, are very prone to breaking on game updates as offsets change. 45 | - Entry point for your code. {cpp} mods can use `StartupModule`, blueprint mods will need something else to help them load. 46 | - Alpakit GameVersion dependency field explained on the xref:Development/BeginnersGuide/ReleaseMod.adoc#_special_fields[Releasing Your Mod page]. 47 | - Not conflicting with any systems that SML uses, because there is a very high chance that end users will already have SML installed. 48 | 49 | == Examples 50 | 51 | Examples of mods that do not use SML: 52 | 53 | - https://github.com/NotNite/Statisfactory/[Statisfactory] - 54 | Provides additional xref:Development/Satisfactory/DedicatedServerAPIDocs.adoc[Dedicated Server API endpoints] 55 | - https://github.com/Archengius/BetterVehiclePaths/[BetterVehiclePaths] - 56 | Alternative vehicle path definition system 57 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/OreScanner.adoc: -------------------------------------------------------------------------------- 1 | = Ore Scanner 2 | 3 | [NOTE] 4 | ==== 5 | This page is a work in progress. 6 | ==== 7 | 8 | In order to add a custom ore node type to the ore scanner, 9 | you should grant the player a schematic with an 10 | xref:Development/Satisfactory/Schematic.adoc#_fgunlock_ufgunlock[FGUnlock] 11 | of type UnlockScannableResource. 12 | 13 | If you dynamically spawn ore nodes that are not part of the game level, 14 | they will not appear on the scanner unless you call the AFGResourceScanner GenerateNodeClustersAccessor function 15 | to rebuild the scanner's internal data. 16 | 17 | 18 | //// 19 | == Spawning Custom Ore Nodes 20 | 21 | TODO write this section 22 | 23 | If you do this with the world partition system you don't need your own node classes (need to ask the Refind R&D devs about how this works) 24 | 25 | If manually spawning nodes, you need to create your own node classes 26 | 27 | https://discord.com/channels/555424930502541343/862002311579435028/1177733658585604116 28 | 29 | Need to deal with the following edge cases 30 | 31 | - you changed an existing node's position/location/scale 32 | - you added a new node that isn't in their save file yet 33 | - you removed a node that was present in their save file 34 | 35 | https://blueprintue.com/blueprint/zj9143mp/ 36 | 37 | //// 38 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/Paintable.adoc: -------------------------------------------------------------------------------- 1 | = Paintable Materials & Tintable Lights 2 | 3 | Making things paintable is not as difficult as it may seem. You can use the existing materials, or create your own implementation. 4 | 5 | == Existing Materials 6 | 7 | Making use of the xref:Development/Modeling/MainMaterials.adoc[existing materials] used by Satisfactory is the easiest way to make your models paintable. 8 | Simply use a paintable material on a mesh in your blueprint and the game will find it and apply the correct parameters from the customizer / light panel. 9 | Its important that when importing a mesh you do not import and use new materials. Instead point your meshes at the correct existing materials or your material instances which point to their materials. 10 | 11 | == New Custom Materials 12 | 13 | If the xref:Development/Modeling/MainMaterials.adoc[existing materials] don't do what you need and you need a special new feature you can make new materials respond to the painting system. New materials limit the best performance the game can have so consider adding them carefully. 14 | 15 | For Primary and Secondary paint colours find the corresponding Material Function (MF_Get-------Color) and use it in your node graph. 16 | 17 | For the Light colour you can use MF_HasPower and unfortunately there's no convenient node for the light colour, but it works identically to the other nodes, reference the list below for the correct values, or look at MM_Factory_Array. 18 | 19 | [NOTE] 20 | ==== 21 | When making new materials it's important to properly set the https://docs.unrealengine.com/5.0/en-US/unreal-engine-material-properties/#usage[usage flags] for Satisfactory. The Game uses a lot of instances, and splines, so be sure to check Instanced Static Mesh, and think about on what the material is used. 22 | ==== 23 | 24 | == Making Any Class Paintable 25 | 26 | You can implement the ability to paint in any object by implementing the `IFGColorInterface`. Simply override the given functions with the functionality you need and you're done. Consider asking about this on the Discord if you need help. 27 | 28 | The customizer will now interact with your object, which is done via the reflection system. 29 | 30 | == Behind The Scenes 31 | 32 | The Update 5 Customizer changes provided a new and unified way of setting properties for customization. 33 | Every standard material is monitoring what's know as "Per Instance Custom Data", this is data that's provided to the instancing system to allow each and every object to receive unique parameters but still render in a fast instanced manner. 34 | This means the system is two disconnected parts working in sync. Code will set the parameters, materials and other objects will read them. 35 | 36 | Coffee Stain Studios has an intended layout for the parameters found on objects, this is what the customizer is setting on objects and the materials are responding to. 37 | Anything marked with a * is not currently set by the customizer, but is guaranteed to exist. Higher indices may simply not be available. 38 | Lighting Colour for example is not set by a customizer but is used by some materials. 39 | Below is the currently known mapping of these parameters: 40 | 41 | - `0` PrimaryPaint ( R ) 42 | - `1` PrimaryPaint ( G ) 43 | - `2` PrimaryPaint ( B ) 44 | - `3` SecondaryPaint ( R ) 45 | - `4` SecondaryPaint ( G ) 46 | - `5` SecondaryPaint ( B ) 47 | - `6` HasPower 48 | - `7` Pattern ID ( Floor Markings ) 49 | - `8` Material ID ( Floor Markings ) 50 | - `9` Metallic ( No usages known ) 51 | - `10` Roughness ( No usages known ) 52 | - `11` *Light Colour ( R ) 53 | - `12` *Light Colour ( G ) 54 | - `13` *Light Colour ( B ) 55 | - `14` *Available 56 | - `15` *Available 57 | - `16` *Available 58 | - `17` *Available 59 | - `18` *Available 60 | 61 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/PowerNetwork.adoc: -------------------------------------------------------------------------------- 1 | = Power-Network 2 | 3 | We currently don't really know how the power network works, but we do 4 | know how we can use it, and in this chapter, we explain it to you. 5 | 6 | [WARNING] 7 | ==== 8 | If you want to make changes to the power settings of a machine. 9 | (Settings values of FGInventoryComponent) and other stuff, 10 | then you should definitely perform this call in the xref:/Development/Satisfactory/FactoryTick.adoc[Factory Tick]. 11 | ==== 12 | 13 | The Power-Network consists of three key components. 14 | 15 | * {blank} 16 | + 17 | UFGPowerCircuit:: 18 | This class manages a power network (aka. PowerCircuit) itself. It 19 | gathers data about the current production and consumption of the 20 | network and decides what needs to happen. 21 | * {blank} 22 | + 23 | UFGPowerConnectionComponent:: 24 | This is the component used to connect components/machines. It manages 25 | cable connections and hidden connections from other connection 26 | components to itself. It f.e. limits the number of cables you can 27 | attach to it. 28 | * {blank} 29 | + 30 | UFGPowerInfoComponent:: 31 | This component represents the needs of a power consumer/producer 32 | itself (like production, consumption). If you want to know if 33 | your machine has power or make it consume power, you will need to use this component. 34 | 35 | == FGPowerConnectionComponent 36 | 37 | This class manages is a connection point for wires and hidden 38 | connections to "transfer" energy. 39 | 40 | * {blank} 41 | + 42 | M Max Num Connection Links:: 43 | Max number of connections allowed to get connected to the connections 44 | * {blank} 45 | + 46 | M Is Hidden Connection:: 47 | If the connections should be hidden (no cables allowed) 48 | * {blank} 49 | + 50 | M Wires:: 51 | The list of connected wires (cables) 52 | * {blank} 53 | + 54 | M Nb Wires connected:: 55 | Number of wires connected to this component 56 | * {blank} 57 | + 58 | M Circuit ID:: 59 | The ID of the connected power circuit 60 | * {blank} 61 | + 62 | M Hidden Connections:: 63 | The list of hidden connections (f.e. train rails) 64 | 65 | == FGPowerInfoComponent 66 | 67 | This class handles and contains information about the needs and status 68 | of a power consumer/producer. 69 | 70 | You need to use the provided member functions (nodes) to set/get data 71 | like: 72 | 73 | * {blank} 74 | + 75 | Target consumption:: 76 | The amount of power the power consumer needs to work 77 | * {blank} 78 | + 79 | Base Production:: 80 | The amount of power the producer produces definitely (like a 81 | geothermal generator) and doesn't get decreased dynamically like a 82 | fuel generator. 83 | * {blank} 84 | + 85 | Dynamic Production Capacity:: 86 | The max amount of power the producer can provide. (used to limit the 87 | dynamic production) 88 | * {blank} 89 | + 90 | Actual Consumption:: 91 | The consumption used in the last tick of the power grid. 92 | * {blank} 93 | + 94 | Regulated Dynamic Production:: 95 | The amount of power provided to the power circuit in the last tick. 96 | * {blank} 97 | + 98 | Has Power:: 99 | If the consumer has actual power 100 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/ResourceSink.adoc: -------------------------------------------------------------------------------- 1 | = Resource Sink 2 | 3 | By default, modded items can't be fed into the AWESOME Sink 4 | to gather coupon points since they have no associated point values. 5 | 6 | If you'd like your mod's items to be sinkable, you need to 7 | specify how many points they provide when sinked. 8 | 9 | SML provides a facility for you to easily load a list of FGItemDescriptors 10 | and assign points values to them through the use of a Data Table. 11 | Only one of these tables can exist per Game World (sub) Module. 12 | 13 | == Data Table 14 | 15 | To get started, go to a Content Browser window in the editor and add a new Data Table asset (it's an Advanced Asset in the Miscellaneous category). 16 | You'll be prompted to select a Row Structure, pick `Resource Sink Points Data` from the dropdown. 17 | Call it "Points_YourModName" or similar so it's easy to find later. 18 | 19 | You'll need to create a row in the data table for each item you 20 | want to be sinkable. The `Row Name` does not matter, the `Item Class` should be 21 | the FGItemDescriptor of the item, and the `Points` column is how many points it's worth 22 | in the sink. You can go to the https://satisfactory.wiki.gg/AWESOME_Sink#Points_generated_per_item[Satisfactory Wiki] to see how many 23 | points each vanilla item is worth for comparison. Consider making your item worth more 24 | points than the sum of its components to encourage crafting and sinking 25 | it as opposed to just sinking the raw materials. You can see the "point profit" 26 | of various vanilla recipes https://satisfactory.wiki.gg/AWESOME_Sink#Recipe_point_improvement_ratios[here] for comparison. 27 | 28 | There is an additional column, `Overridden Resource Sink Points`. This should always 29 | be set to -1. CSS uses a script to automatically calculate point values for them, 30 | and they use this column to manually override their generated values. Since we 31 | are specifying our values by hand, we don't have any use for this column. 32 | If you were to specify a value other than -1, the game would select the higher 33 | point value of the two fields. 34 | 35 | == Registering the Data Table 36 | 37 | Now we just need to tell Satisfactory to load the contents of the data table. 38 | Thankfully, SML can do this for you using the xref:Development/ModLoader/ModModules.adoc#_game_world_module_ugameworldmodule[Game World Module]. 39 | Simply set the `M Resource Sink Item Points Data Table` variable in the defaults tab 40 | (in the Advanced subsection) to your own just created data table. 41 | SML will read the contents and adds them to the resource sink systems for you. 42 | 43 | == Overriding Vanilla Points Values 44 | 45 | It is possible to override the base-game's specified points values for an item by listing it with a new points value in your mod's Resource Sink data table. 46 | 47 | In the case that multiple mods specify a points value, the points value of the last mod to load will be the one used by the game. 48 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/ShoppingList.adoc: -------------------------------------------------------------------------------- 1 | = To-Do List and Shopping List 2 | 3 | Satisfactory offers players a to-do list to keep track of items to craft and leave notes for themselves and other multiplayer players. 4 | 5 | The list is displayed on the right side of the screen when it contains something, 6 | and players can edit the contents of the list by clicking on the right side of the screen 7 | from most GUIs (build gun, codex, etc). 8 | 9 | == Shopping List 10 | 11 | The shopping list portion of the to-do list is a list of items that the player wants to craft. 12 | Players can manually add items to it from the codex, crafting bench, and buildgun. 13 | 14 | The shopping list can hold arbitrary data, 15 | but the base game seems to have only implemented visualization of Schematics, Recipes, and Blueprints. 16 | 17 | Obtain a reference to the player's shopping list via 18 | the Get Shopping List Component static function of FGShoppingListComponent. 19 | 20 | === Adding and Modifying Entries 21 | 22 | [NOTE] 23 | ==== 24 | This functionality has not been tested in multiplayer. 25 | ==== 26 | 27 | To work with shopping list entries, first call "Get Shopping List Object from Class" 28 | supplying the class (for example, recipe) you wish to either add or retrieve info for. 29 | 30 | If the entry exists, it will be returned as an `FGShoppingListObject_Object`. 31 | If the entry doesn't exist yet, the function will return false 32 | and you can create one via Construct Object from Class: `FGShoppingListObject_Class`. 33 | Use the Shopping List Componenet as the Outer and your class as the mSubclass. 34 | 35 | You can then call Get, Set, Increase, or Decrease Amount to modify the values in the list. 36 | 37 | == Notes 38 | 39 | No documentation has been written yet about interacting with the Notes feature of the list. 40 | Please add some if you know how to use it. 41 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/Satisfactory/index.adoc: -------------------------------------------------------------------------------- 1 | = Satisfactory 2 | 3 | In this section we will discuss some technical concepts and Coffee Stain Studios implementations on which Satisfactory operates. Reading and understanding the contents of this section is important, because these topics are where Satisfactory diverges the most from other Unreal Engine games. 4 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/UnrealEngine/Code.adoc: -------------------------------------------------------------------------------- 1 | = Code & Content 2 | 3 | In Unreal we have generally two types of codes and one type of content. 4 | 5 | == Content 6 | 7 | "Content" in terms of 3D models, sounds, textures, materials and so on 8 | are called `Assets`. You use these assets to make stuff in your game 9 | f.e. visible to the user. There are multiple types of assets: 10 | 11 | * {blank} 12 | + 13 | StaticMesh:: 14 | A simple 3D Object like a `.obj` or `.fbx` 15 | * {blank} 16 | + 17 | Sound:: 18 | Sounds like the background music or footsteps. 19 | * {blank} 20 | + 21 | Skeleton:: 22 | Characters like the player or enemies have a skeleton to tell the 23 | engine f.e. where bones and joints are. 24 | * {blank} 25 | + 26 | TextureSample:: 27 | Textures like the grass texture, ficsit logo or the items in the 28 | inventory are simple images called "Texture Samples". 29 | * {blank} 30 | + 31 | Materials:: 32 | Every surface has a material applied on it, so the renderer does know 33 | how he should let the surface look like. Here textures and surface 34 | properties like reflection and roughness come together. 35 | * {blank} 36 | + 37 | Blueprints:: 38 | Discussed in its own xref:Development/UnrealEngine/BluePrints.adoc[Concept-Page]. 39 | 40 | == Native Code 41 | 42 | Native code describes code that is written in C++ and can't directly be 43 | changed in the Unreal Editor because the Editor itself uses this code. 44 | This kind of code can interact with the computer on a very low level and 45 | is often used when performance is really important. Much things of 46 | Satisfactory is written in C++ so you will often find out that there is 47 | the functionality you cant access from within `+Blueprints+`. Native 48 | code is compiled directly into machine code and that means for every 49 | platform you want to compile for, you would need to compile this code 50 | separately. 51 | 52 | [WARNING] 53 | ==== 54 | This can be a problem for you when the game updates. Because that would 55 | mean you need to download the C++ code again and compile it, and this 56 | can be difficult if you don't know what you do. 57 | ==== 58 | 59 | Besides this downside, native code allows you to low-level 60 | manipulation of the engine environment and also allows you to implement 61 | third-party libraries like discord, curl and Lua. 62 | 63 | == Blueprint Code 64 | 65 | This is a kind of asset which is compiled into the pak files as a kind 66 | of bytecode which then gets loaded and linked at runtime through the 67 | Unreal BP VM. 68 | 69 | [TIP] 70 | ==== 71 | To learn more about `Blueprints` visit the 72 | xref:/Development/UnrealEngine/BluePrints.adoc[Concept-Page] about that topic. 73 | ==== 74 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/UnrealEngine/Editor/MainWindow.adoc: -------------------------------------------------------------------------------- 1 | = MainWindow 2 | 3 | The main window contains most important settings and docks for the 4 | primary editor features. 5 | 6 | == Menu-Bar 7 | 8 | image:UnrealEditor/MainMenuBar.jpg[image] 9 | 10 | Every window has a menu bar, but the menu bar of the main window is a 11 | little bit special because it also contains entries for global settings, 12 | project settings and file management. 13 | 14 | == Tab-Bar 15 | 16 | image:UnrealEditor/TabBar.jpg[image] 17 | 18 | Every window has a tab bar which can hold multiple views/windows. If the 19 | main window/view get closed (as tab or the containing "real" window) the 20 | project gets completely closed, also all other windows. 21 | 22 | == Viewport 23 | 24 | image:UnrealEditor/MainViewport.jpg[image] 25 | 26 | The viewport is simply a preview of the map, where you can place and 27 | manipulate a world. We don't have access to the Satisfactory map source files like Coffee Stain does, 28 | so this viewport is more or less useless to us. Our work will take place mainly in other windows. 29 | 30 | == Tool-Bar 31 | 32 | image:UnrealEditor/MainToolBar.jpg[image] 33 | 34 | The tool-bar is a strongly simplified version of the menubar and is icon 35 | base, but its the only place where you can find the access to the 36 | `+Alpakit+` window. The Tool-bar contains mainly shortcuts for the 37 | project settings, c++ building and source control, the remaining features are mostly 38 | not useful without a map as mentioned above in the Viewport section. 39 | 40 | == Outliner 41 | 42 | image:UnrealEditor/MainOutliner.jpg[image] 43 | 44 | The outliner is here again pretty useless because it contains the 45 | list of placed objects in the world, and again, we don't have the map files. 46 | 47 | == Modes 48 | 49 | image:UnrealEditor/MainModes.jpg[image] 50 | 51 | One more useless view cause we don't have a proper map to edit, but this 52 | would help you to place things into the world and contains a list of 53 | basic actors and edit tools for brushes, terrain and so on. 54 | 55 | == Content-Browser 56 | 57 | image:UnrealEditor/MainContentBrowser.jpg[image] 58 | 59 | Finally a very very useful and important view. This view is simply a 60 | file browser for all contents of your mod project and SF/UE source like 61 | C++ classes, models and textures, etc. 62 | 63 | In the left half, you can see a tree structure based folder explorer 64 | where you can select a folder which contents get the displayed on the 65 | right-hand side half of the view. 66 | 67 | It also has in the left upper corner or in the context menu 68 | (r-click-menu) the ability to create, import, export, delete or modify 69 | content. 70 | 71 | You can find in the `Content`-Root folder all "normal" assets and the 72 | `C++-Classes` root folder contains all c++ classes. 73 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/UnrealEngine/Editor/index.adoc: -------------------------------------------------------------------------------- 1 | = Unreal Editor 2 | 3 | The Unreal Editor should have been installed during the 4 | xref:/Development/BeginnersGuide/index.adoc[Getting Started setup process]. 5 | This is your IDE where you will spend the most time in to add especially 6 | "visible" content called `assets`. But it's also used to add simple 7 | logic to your mod with an integrated visual programming language called 8 | Blueprints. 9 | 10 | [TIP] 11 | ==== 12 | If you want to learn more about `Blueprints` and the so called 13 | `UObject-System` we recommend you the concept page for 14 | xref:Development/UnrealEngine/BluePrints.adoc[Blueprints] 15 | and Unreal's documentation on the UObject system. 16 | ==== 17 | 18 | [TIP] 19 | ==== 20 | We recommend the https://academy.unrealengine.com/[Unreal Academy] for 21 | learning more about the concepts and deep topics of Unreal Engine itself 22 | (like Particle System, advanced Blueprints, and so on) 23 | ==== 24 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/UnrealEngine/StringClasses.adoc: -------------------------------------------------------------------------------- 1 | # Unreal String Classes 2 | 3 | Unreal offers different storage types for strings, each with its own use case. 4 | 5 | This page serves as a brief overview of the 3 main string classes available in Unreal Engine 5 6 | and how they relate to modding. 7 | 8 | For more detailed information about these classes, check out the 9 | https://dev.epicgames.com/documentation/en-us/unreal-engine/string-handling-in-unreal-engine?application_version=5.3[Unreal Engine documentation]. 10 | 11 | ## String Classes 12 | 13 | ### FText 14 | 15 | If you are displaying a string to the end user, 99% of the time you want to be using this string type. 16 | It is mutable, provides nice formatter methods, and has built in engine localization support. 17 | In memory, FTexts store localization keys that point to external data providing the string's contents. 18 | 19 | Special edits have been made to the modding engine to enable mods to take advantage of Unreal's localization system at the per-plugin level. 20 | Read more about how to use it on the xref:Development/Localization.adoc[Localizing Mods] page. 21 | 22 | Read more on the 23 | https://dev.epicgames.com/documentation/en-us/unreal-engine/ftext-in-unreal-engine?application_version=5.3[UE docs page for FText]. 24 | 25 | In modding, FText should be used for any string you plan to display to the user. 26 | For example, schematic names, item descriptions, UI text, predefined chat messages, etc. 27 | 28 | ### FName 29 | 30 | FNames are designed to be more efficient in cases where you are using a string as an identifier. 31 | They are case-insensitive and immutable. 32 | The actual string contents of an FName are stored once in a global data table. 33 | In memory, they are a 4 byte identifier that can be used with this table to retrieve the related string. 34 | 35 | FNames are useful as keys in maps because checking their equality is fast regardless of the length of the string. 36 | 37 | Read more on the 38 | https://dev.epicgames.com/documentation/en-us/unreal-engine/ftext-in-unreal-engine?application_version=5.3[UE docs page for FName]. 39 | 40 | In modding, FNames should be used in identifier, keys, or any other string you deem its optimizations beneficial. 41 | 42 | ### FString 43 | 44 | FStrings are generic mutable strings with no additional context. 45 | They take up as much memory as they have characters and offer the "typical" string operations like find and replace, substring, concatenation, comparison, etc. 46 | 47 | Read more on the 48 | https://dev.epicgames.com/documentation/en-us/unreal-engine/fstring-in-unreal-engine?application_version=5.3[UE docs page for FString]. 49 | 50 | In modding, FString is generally used for log messages, strings that change contents often, or strings that doesn't benefit from the features of FText or FName. 51 | 52 | ## Conversion 53 | 54 | Although **it is possible to convert between all of the string types**, 55 | doing so usually results in **missing out on features or optimizations** offered by that type, 56 | and you lose the information about the original type of the string. 57 | For example, going from an FText to an FString loses you the context of its localization key, 58 | meaning you can't go "back" to the same FText you started with, even if you never changed the underlying string. 59 | 60 | To perform "typical" string operations on FText and FName you may need to convert them to FStrings first 61 | - just remember that going back is either unsafe or impossible. 62 | 63 | If you're trying to make a hardcoded value in one of these types, 64 | make sure to use the "Literal" syntax for creating it rather than one of the conversion functions. 65 | For example, use the `Make Literal Name` blueprint node instead of the `String to Name` conversion function. 66 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/UnrealEngine/index.adoc: -------------------------------------------------------------------------------- 1 | = Unreal Engine 2 | 3 | Satisfactory uses a customized version of Unreal Engine (UE) 5.3.2 by Epic Games as its game engine. 4 | UE provides a solid framework for developing fast executing native code and a interface for artists to use a more easy way for creating content. 5 | 6 | In this section we go over some minor basics you should know. 7 | 8 | [WARNING] 9 | ==== 10 | This does not replace the https://docs.unrealengine.com/[Unreal Engine Documentation]. 11 | 12 | Even if we make mods and not a standalone game, most of the stuff you will need to use is not stuff from Satisfactory, it will be actually from the Unreal Engine. That means, we highly recommend you to go through some Unreal Engine tutorials and try to make such a tutorial game. 13 | Because the process creating the content is nearly the same! 14 | 15 | Most of your answerers will be answered there! This documentation here, is rly just for the stuff about modding, the modloader and Satisfactory itself. 16 | 17 | For getting started with Unreal Engine we also recommend the https://academy.unrealengine.com/[Unreal Academy]. 18 | ==== 19 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/UpdatingToDedi.adoc: -------------------------------------------------------------------------------- 1 | = Updating/Supporting Dedicated Servers 2 | 3 | The contents of this page have been moved to 4 | xref:Development/UpdatingFromSml36.adoc[Updating from SML 3.6.1] 5 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/index.adoc: -------------------------------------------------------------------------------- 1 | = Development 2 | 3 | If you'd like to make your own mod, this section of the docs is for you! 4 | 5 | Here you can find information regarding making mods and getting your development environment up and running. 6 | Check out the subcategories on the left to get started. 7 | 8 | If you're just looking to play Satisfactory with mods, check out how to install mods xref:index.adoc#_for_users[here] instead. 9 | 10 | == Resources 11 | 12 | Below is a list of some good resources about making mods for Satisfactory, Unreal Engine, {cpp} and 3D Modeling. Please contact us if you know of other resources that should be added to this list. 13 | 14 | - https://www.youtube.com/channel/UCOVfF7PfLbRdVEm0hONTrNQ[Mathew Wadstein] 15 | + 16 | A good YouTube Channel showing a more in-depth look at features of Unreal Engine (BP only). 17 | - https://www.youtube.com/c/AlexForsythe[Alex Forsythe] 18 | + 19 | A YouTube Channel that covers Unreal concepts (both BP and {cpp}) in detail, including replication. 20 | - https://www.youtube.com/channel/UCz-eYJAUgSE-mqzKtit7m9g[Virtus Learning Hub] 21 | + 22 | A "general" tutorial series channel for UE game development (also covers some {cpp}) 23 | - http://academy.unrealengine.com/[Unreal Engine Academy] 24 | + 25 | A neat learning platform made by Epic Games for learning Unreal Engine. 26 | 27 | === {cpp}-specific 28 | 29 | - link:https://dev.epicgames.com/documentation/en-us/unreal-engine/programming-with-cplusplus-in-unreal-engine?application_version=5.3[Unreal Engine Documentation: Programming with {cpp}] 30 | - link:https://dev.epicgames.com/documentation/en-us/unreal-engine/epic-cplusplus-coding-standard-for-unreal-engine?application_version=5.3[Unreal Engine Documentation: Coding Standard] 31 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Development/modding_concepts.adoc: -------------------------------------------------------------------------------- 1 | = Modding concepts 2 | 3 | In this section, we will provide information about many internal Satisfactory and Unreal Engine systems, as well as other important information regarding modding. Reading these sections will likely help you the most if you're looking to make something specific that isn't covered in the getting started tutorials. 4 | -------------------------------------------------------------------------------- /modules/ROOT/pages/ForUsers/ConfiguringMods.adoc: -------------------------------------------------------------------------------- 1 | = Configuring Mods 2 | 3 | There are two primary ways that mods offer configuration options: 4 | **Mod Configuration Options** and **Mod Savegame Settings**. 5 | 6 | == Mod Configuration Options 7 | 8 | Mods using the SML Configuration System can have their configuration edited in-game 9 | via the "Mods" button on the main menu and pause menu. 10 | 11 | Some mod configuration options can only be edited from the main menu. 12 | If this is the case, 13 | the game will prevent you from modifying them mid-game 14 | and explain this in the hover tooltip for the configuration option. 15 | 16 | Note that some mods may not offer any configuration options, 17 | or may manage them in another manner. 18 | If so, it is up to the mod developer to communicate this information to you. 19 | Try checking the mod's page on ficsit.app for more information. 20 | 21 | === Configuration file location 22 | 23 | The xref:faq.adoc#Files_ModConfig[FAQ] covers where mod configuration files are stored. 24 | You should not normally need to edit these files directly. 25 | 26 | == Mod Savegame Settings 27 | 28 | xref:Development/ModLoader/SessionSettings.adoc[Mod Savegame Settings] 29 | are special type of configuration option that only apply to a single game file, 30 | similar to the base game's https://satisfactory.wiki.gg/wiki/Advanced_Game_Settings[Advanced Game Settings]. 31 | 32 | You can set Mod Savegame Settings when creating a new save file on the main menu 33 | or via the "Mod Savegame Settings" entry in the pause menu. 34 | 35 | === Mod Savegame Setting file location 36 | 37 | Mod Savegame Settings values are stored inside the save file as part of the Map Travel URL, 38 | so they can not be edited externally without third party tools. 39 | 40 | No third party tools are currently known to support editing Mod Savegame Settings. 41 | 42 | == Writing a Patch Mod 43 | 44 | If you'd like to change something about a mod that you can't configure, 45 | you might be able to write a mod of your own to make that change. 46 | 47 | For example, it's fairly straightforward to create or change a recipe using 48 | xref:Development/BeginnersGuide/overwriting.adoc#_use_a_library_mod[various community-created libraries.] 49 | 50 | Check out the modding xref:Development/BeginnersGuide/index.adoc[Getting Started Guide] 51 | to learn how to make your own mods. 52 | -------------------------------------------------------------------------------- /modules/ROOT/pages/ForUsers/Tags.adoc: -------------------------------------------------------------------------------- 1 | = Tags and Tag Search 2 | 3 | The Satisfactory Mod Repository (ficsit.app) features a tag system to help users find mods relevant to them. 4 | Example tags include "buildings", "equipment", "qol", and "cheats". 5 | 6 | Remember that tags are intended to be general categories, 7 | so your personal thoughts on a mod's features and balance may vary from what tags have been assigned to it. 8 | 9 | The Satisfactory Mod Manager does not support filtering or displaying mod tags at the time of writing - 10 | you will have to browse the website to use this feature. 11 | 12 | == Using Tags to Search 13 | 14 | Use tags to filter down your search results for mods. 15 | For example, if you want to find all mods that add new equipment, 16 | go to the https://ficsit.app/mods[Mods page] and click the `Filter...` button, 17 | then click the `#equipment` tag. 18 | Hover over tags to see a description explaining the purpose of the tag. 19 | 20 | == Creating New Tags 21 | 22 | The list of tags is managed by the site moderators to avoid an abundance of low-mod-count tags. 23 | If you have an idea for a new tag, 24 | suggest it on our Discord server. 25 | 26 | Mod developers and site moderators can attach tags to mods via the Edit Mod page. 27 | If a mod has been tagged with an irrelevant tag, site moderators may choose to remove the tag from that mod. 28 | If you believe a mod has been mistagged, please discuss it on our Discord server. 29 | -------------------------------------------------------------------------------- /modules/ROOT/pages/ForUsers/Welcome.adoc: -------------------------------------------------------------------------------- 1 | = Welcome to the Satisfactory Modding Community 2 | 3 | Hello, and welcome to the Satisfactory Modding Community and the ficsit.app mod repository! 4 | 5 | Below we'll explain how to find and install mods, as well as how to get help with them. 6 | 7 | == Frequently Asked Questions 8 | 9 | If you have a question, there's a pretty good chance it has been answered on our 10 | xref:faq.adoc[FAQ - Frequently Asked Questions] page. 11 | 12 | If it's not answered there, or something is unclear, feel free to ask in our 13 | https://discord.ficsit.app[Discord server]. 14 | 15 | == Installing the Mod Manager 16 | 17 | To use mods you will need to install the Satisfactory Mod Manager (SMM) 18 | which takes care of all the configurations at install, 19 | and is also the best way to get mods working and into the game. 20 | Learn how to install and use the Mod Manager on the 21 | xref:ForUsers/SatisfactoryModManager.adoc[Using the Mod Manager] page. 22 | 23 | == Discovering New Mods 24 | 25 | All Satisfactory mods are uploaded to the Satisfactory Mod Repository (https://ficsit.app/), 26 | but there's more than one way to peruse the list. 27 | 28 | === Via the Mod Manager 29 | 30 | You can browse the list of all available mods directly within your mod manager! 31 | Make sure that your "Show" dropdown is set to "Compatible". 32 | Explore the options by scrolling, or search for a specific mod with the search bar. 33 | Click on a mod to open its mod page in an details panel to the side. 34 | 35 | // TODO tags tag search in SMM 36 | 37 | === Via ficsit.app 38 | 39 | If you prefer to browse mods on the ficsit.app website, 40 | it's easy to install mods from there too. 41 | 42 | Once you're on the page for a mod, click the 'Versions' button in the top right, 43 | then click the Download arrow icon in the "Latest Versions" section to install the mod via the Mod Manager. 44 | This will prompt you to allow the website to communicate with your installed copy of the Mod Manager 45 | and handle installing the mod for you. 46 | 47 | == Suggested Mods 48 | 49 | In order to experience Satisfactory as the developers intended it, 50 | we suggest you play the game for a while without mods, unlocking at least 51 | https://satisfactory.wiki.gg/wiki/Milestones#Tier_6[Tier 6 of the HUB]. 52 | However, since you're here, you're probably not looking to just play the base game! 53 | If you'd still like to keep the base-game feel and balance, 54 | check out xref:ForUsers/Tags.adoc[mods tagged with #qol] to find Quality of Life mods. 55 | 56 | If you're looking for new experiences, check out the mod repository! 57 | There's a lot of options to choose from 58 | and you can xref:ForUsers/Tags.adoc[filter with tags] to find mods that suit your playstyle. 59 | 60 | [id="GettingInfoAboutMods"] 61 | == Getting Info About Mods 62 | 63 | It is up to the mod developer to inform you how to use their mod. 64 | Check the mod's page on ficsit.app for documentation. 65 | 66 | Generally, most mods will require you to unlock something in the HUB or MAM before you can use them. 67 | Mods can be configured from the 'Mods' tab on the main menu, 68 | or from in-game via the 'Mod Configs' tab on the pause menu. 69 | 70 | Some mods will provide a support link, such a documentation site or a Discord join link. 71 | You can access this from the in-game mods menu via the "Get Support" button. 72 | Note that the button will not appear if no link is provided by that mod. 73 | It is likely that the same link is present on the mod's page on ficsit.app. 74 | 75 | == Making Your Own Mods 76 | 77 | Check out 78 | xref:index.adoc#_for_developers[this section of the home page] 79 | for more information. 80 | -------------------------------------------------------------------------------- /modules/ROOT/pages/SMLConfiguration.adoc: -------------------------------------------------------------------------------- 1 | = SML Configuration 2 | 3 | SML's configuration file system makes it easy for mod developers to create config files for their mods 4 | and easy for users to change mod settings. 5 | 6 | == Config Folder 7 | 8 | The config files for all mods (and SML itself) reside in the same configuration file folder. 9 | 10 | The folder is located under `/FactoryGame/Configs`. 11 | 12 | You can find your game install directory via the steps 13 | xref:faq.adoc#_where_are_my_game_files_located[described in the FAQ]. 14 | 15 | == Config File 16 | 17 | SML's configuration system uses json format. 18 | 19 | All config files are located in the aforementioned <> and share the same naming scheme, `.cfg`. The config file for SML is called `SML.cfg`. 20 | 21 | If you don't see a mod's config file listed here, it's most likely because the mod doesn't have a config file. 22 | 23 | == SML configuration options 24 | 25 | SML itself also provides a couple of configuration settings allowing you to control its behavior. 26 | 27 | [cols="1,1,1,4a"] 28 | |=== 29 | |Name |Type |Default |Description 30 | 31 | |enableFunchookLogging 32 | |bool 33 | |false 34 | |Enables additional logging functionality to assist with troubleshooting a 35 | https://github.com/satisfactorymodding/SatisfactoryModLoader/issues/131[rare crash]. 36 | 37 | |disabledChatCommands 38 | |string array 39 | |[ ] 40 | |Allows you to disable certain chat commands by simply putting the command into the string array. 41 | In Multiplayer, if the host lists commands here, they will also be disabled for clients. 42 | 43 | |=== 44 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Translation/Developers/RequestTolgeeProject.adoc: -------------------------------------------------------------------------------- 1 | = Requesting a Project on the Tolgee 2 | 3 | [NOTE] 4 | ==== 5 | You have found a hidden docs page! 6 | 7 | This page is still a work in progress. 8 | 9 | If you have any feedback, please let us know in the Discord. 10 | ==== 11 | 12 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Translation/GetStartedTranslating.adoc: -------------------------------------------------------------------------------- 1 | = Get Started Translating 2 | 3 | [NOTE] 4 | ==== 5 | You have found a hidden docs page! 6 | 7 | This page is still a work in progress. 8 | 9 | If you have any feedback, please let us know in the Discord. 10 | ==== 11 | 12 | -------------------------------------------------------------------------------- /modules/ROOT/pages/Translation/UsingTolgee.adoc: -------------------------------------------------------------------------------- 1 | = Using Tolgee 2 | 3 | [NOTE] 4 | ==== 5 | You have found a hidden docs page! 6 | 7 | This page is still a work in progress. 8 | 9 | If you have any feedback, please let us know in the Discord. 10 | ==== 11 | 12 | -------------------------------------------------------------------------------- /nginx/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | listen [::]:80; 4 | server_name localhost; 5 | 6 | location / { 7 | root /usr/share/nginx/html; 8 | index index.html index.htm; 9 | } 10 | 11 | error_page 404 /404.html; 12 | 13 | error_page 500 502 503 504 /50x.html; 14 | location = /50x.html { 15 | root /usr/share/nginx/html; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "documentation", 3 | "version": "1.0.0", 4 | "license": "UNLICENSED", 5 | "repository": "https://github.com/satisfactorymodding/Documentation.git", 6 | "scripts": { 7 | "build": "antora antora-playbook.yml --clean --fetch", 8 | "build:ci": "antora antora-playbook-ci.yml --clean --fetch --stacktrace", 9 | "build:dev": "antora antora-playbook-dev.yml", 10 | "watch:dev": "chokidar -c \"antora antora-playbook-dev.yml\" --initial \"modules/ROOT/**/*.*\"", 11 | "serve": "ws -d build/site", 12 | "spellcheck": "cspell \"**/*.{adoc,md}\"" 13 | }, 14 | "devDependencies": { 15 | "@antora/cli": "^3.1.4", 16 | "@antora/site-generator-default": "^3.1.4", 17 | "chokidar-cli": "^3.0.0", 18 | "cspell": "^7.0.0", 19 | "local-web-server": "^5.3.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /supplemental-ui/css/site-extra.css: -------------------------------------------------------------------------------- 1 | .navbar-brand .navbar-item + .navbar-item { 2 | -ms-flex-positive: 1; 3 | -webkit-box-flex: 1; 4 | flex-grow: 1; 5 | -ms-flex-pack: end; 6 | -webkit-box-pack: end; 7 | justify-content: flex-end; 8 | } 9 | 10 | /* Modified from https://github.com/algolia/docsearch/blob/main/packages/docsearch-css/src/_variables.css */ 11 | .DocSearch { 12 | --docsearch-primary-color: #ff9800; 13 | 14 | --docsearch-highlight-color: var(--docsearch-primary-color); 15 | --docsearch-muted-color: rgb(159, 159, 159); 16 | --docsearch-container-background: rgba(48, 48, 48, 0.8); 17 | 18 | /* modal */ 19 | --docsearch-modal-height: calc(max(600px, 100vh - 150px)); 20 | --docsearch-modal-background: #212121; 21 | --docsearch-modal-shadow: inset 1px 1px 0 0 rgb(44, 44, 44), 0 3px 8px 0 rgb(0, 3, 9);; 22 | 23 | /* searchbox */ 24 | --docsearch-searchbox-background: #303030; 25 | --docsearch-searchbox-focus-background: #212121; 26 | --docsearch-searchbox-shadow: inset 0 0 0 2px var(--docsearch-primary-color); 27 | 28 | /* hit */ 29 | --docsearch-hit-color: rgb(195, 195, 195); 30 | --docsearch-hit-background: #303030; 31 | 32 | /* key */ 33 | --docsearch-key-gradient: linear-gradient( 34 | -26.5deg, 35 | rgb(88, 88, 88) 0%, 36 | rgb(53, 53, 53) 100% 37 | ); 38 | --docsearch-key-shadow: inset 0 -2px 0 0 rgb(40, 40, 40), inset 0 0 1px 1px rgb(81, 81, 81), 0 2px 2px 0 rgba(3, 4, 9, 0.3); 39 | 40 | /* footer */ 41 | --docsearch-footer-background: #303030; 42 | --docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 73, 73, 0.5), 0 -4px 8px 0 rgba(0, 0, 0, 0.2); 43 | } 44 | 45 | @media screen and (max-width: 768px) { 46 | .navbar-brand .navbar-item + .navbar-item { 47 | padding-left: 0; 48 | padding-right: 0; 49 | } 50 | 51 | .algolia-autocomplete .ds-dropdown-menu { 52 | min-width: calc(100vw - 2.75rem) !important; 53 | } 54 | } 55 | 56 | @media screen and (min-width: 1024px) { 57 | .navbar-brand { 58 | -ms-flex-positive: 1; 59 | -webkit-box-flex: 1; 60 | flex-grow: 1; 61 | } 62 | 63 | .navbar-menu { 64 | -ms-flex-positive: 0; 65 | -webkit-box-flex: 0; 66 | flex-grow: 0; 67 | } 68 | } 69 | 70 | #search-input { 71 | background: #424242; 72 | color: #ffffff; 73 | font-family: inherit; 74 | font-size: 0.95rem; 75 | width: 150px; 76 | border: 1px solid #656565; 77 | border-radius: 0.1em; 78 | line-height: 1.5; 79 | padding: 0 0.25em; 80 | } 81 | 82 | @media screen and (min-width: 769px) { 83 | #search-input { 84 | width: 200px; 85 | } 86 | } 87 | 88 | iframe.blueprint { 89 | width: 100%; 90 | height: 350px; 91 | margin: 1rem 0 0; 92 | border: 1px solid #ffffff; 93 | } 94 | 95 | 96 | iframe.blueprint + div:after { 97 | content: "Right-click to pan. Scroll wheel to zoom. Select nodes and press CTRL+C to copy them."; 98 | font-size: 0.7rem; 99 | position: relative; 100 | top: -0.5rem; 101 | font-style: italic; 102 | } 103 | 104 | .footer a { 105 | color: #fff; 106 | } 107 | 108 | .navbar { 109 | flex-wrap: wrap; 110 | } 111 | 112 | .version-warning { 113 | padding-top: 5px; 114 | padding-bottom: 5px; 115 | text-align: center; 116 | background: orangered; 117 | color: #6A0E0E; 118 | flex-basis: 100%; 119 | } 120 | 121 | .version-warning a { 122 | color: #ffd900; 123 | font-style: italic; 124 | } 125 | 126 | .hidden { 127 | display: none; 128 | } 129 | 130 | /* Keep versions in the picker from being split across multiple lines */ 131 | span.version { 132 | min-width: fit-content; 133 | } 134 | -------------------------------------------------------------------------------- /supplemental-ui/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/supplemental-ui/favicon.ico -------------------------------------------------------------------------------- /supplemental-ui/helpers/og-description.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const TAG_ALL_RX = /<[^>]+>/g 4 | const TAG_HEADERS = /]*>.+?<\/h[0-9]>/g 5 | 6 | module.exports = (html) => html && html 7 | .toString() 8 | .replace(TAG_HEADERS, '') 9 | .replace(TAG_ALL_RX, '') 10 | .trim() 11 | .replace(/\n/g, ' ') 12 | .substr(0, 140) + '...' 13 | -------------------------------------------------------------------------------- /supplemental-ui/helpers/og-image.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | module.exports = (page) => page['attributes']['og-image'].startsWith('http') ? page['attributes']['og-image'] : '../'.repeat((page['attributes']['relative'].match(/\//g) || []).length) + '_images/' + page['attributes']['og-image']; 4 | -------------------------------------------------------------------------------- /supplemental-ui/layouts/default.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{> head defaultPageTitle='Untitled'}} 5 | 6 | 7 | {{> header}} 8 | {{> body}} 9 | {{> footer}} 10 | 11 | 12 | -------------------------------------------------------------------------------- /supplemental-ui/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/satisfactorymodding/Documentation/226adb66ddd113b3b65f72c98e9f158a9b5c2c84/supplemental-ui/logo.png -------------------------------------------------------------------------------- /supplemental-ui/partials/footer-content.hbs: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 21 | -------------------------------------------------------------------------------- /supplemental-ui/partials/head-meta.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /supplemental-ui/ui.yml: -------------------------------------------------------------------------------- 1 | static_files: 2 | - favicon.ico 3 | - logo.png 4 | --------------------------------------------------------------------------------