Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SML3.6.0 feature and migration documentation #256

Merged
merged 30 commits into from
Nov 14, 2023
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
a3e9edf
Fix typo
budak7273 Oct 23, 2023
2d6f06c
VS installer takes you to the "Workloads" screen, not "Components", b…
budak7273 Oct 27, 2023
5389891
Clarify which Steam update setting level to use ("only when I launch …
budak7273 Oct 27, 2023
b487c23
Fix asciidoc complaint with example template string (why is it only e…
budak7273 Nov 2, 2023
17efadf
SML3.6.0: all Engine subsystems now Game Instance, implemented unhooking
budak7273 Nov 5, 2023
3022a2b
Dediserver page disclaimer, remove old fandom links
budak7273 Nov 11, 2023
b95b1ee
WIP Updating from SML3.5 to 3.6 page
budak7273 Nov 11, 2023
b23c668
Fix missing semicolon in hooking example
budak7273 Nov 11, 2023
cd35d28
Fix incorrect heading level
budak7273 Nov 11, 2023
1b7eb3a
CallScope -> TCallScope
budak7273 Nov 11, 2023
e5c1a78
Wwise 2022.1.3.8179 -> 2022.1.5.8242.2714
budak7273 Nov 11, 2023
25b7e7d
UE 5.1.1 -> UE 5.2.1
budak7273 Nov 11, 2023
6c5904e
InstancedSplines should no longer be referenced in .Build.cs
budak7273 Nov 11, 2023
eeab0d4
Mention CallScope deprecation in updating guide
budak7273 Nov 11, 2023
36ffc4c
Close #255 by adding note about VCS integration and UE4GitDiff
budak7273 Nov 11, 2023
bb17bb6
Mention multiple mods in one git repo
budak7273 Nov 11, 2023
a488d5c
Fix alternate wwise version
budak7273 Nov 12, 2023
b3547e8
FAQ: Location of mod files
budak7273 Nov 12, 2023
57d6bf8
FAQ: Directions for how to use the Mod Manager
budak7273 Nov 12, 2023
1850818
Store all images previously linked from discord in the docs repo instead
budak7273 Nov 12, 2023
d693c47
Fix typos
budak7273 Nov 12, 2023
fd375f7
More small things for 3.6 updating notes
budak7273 Nov 13, 2023
2f94fea
Editor Viewport Shadows Warning
budak7273 Nov 13, 2023
4cfbd34
Update Mod Content Registry page to match new headers and feature set
budak7273 Nov 13, 2023
f9e5bf7
Required Changes section is empty so far
budak7273 Nov 13, 2023
2cf53cc
Remove WIP note and outdated folder mention
budak7273 Nov 13, 2023
2ab5ea1
Info on new Wwise version, DOREPLIFETIME include, Configuration Struc…
budak7273 Nov 14, 2023
cfa30d0
Fix heading level
budak7273 Nov 14, 2023
04d2d6c
Consistent toolchain version
budak7273 Nov 14, 2023
db80ddf
Update WIP notices
budak7273 Nov 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"doggos",
"DOREPLIFETIME",
"FACTORYGAME",
"favorited",
"Feyko",
"fgrecipe",
"FGUnlock",
Expand Down Expand Up @@ -104,6 +105,7 @@
"UKBFL",
"umenuworldmodule",
"undetailed",
"UOBJECT",
"UPARAM",
"uplugin",
"uproject",
Expand All @@ -123,6 +125,7 @@
"flagWords": [
"hte",
"reccomend",
"outselves"
"outselves",
"favortied"
]
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/FAQ/DebugModsFlowchart.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/FAQ/EpicVerifyIntegrity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/FAQ/SmmCompatibilityInfo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/FAQ/SmmGenerateDebugInfo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/FAQ/SmmImportExport.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modules/ROOT/images/FAQ/SteamVerifyIntegrity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

* xref:Development/index.adoc[Development]

** xref:Development/UpdatingFromSml34.adoc[Updating from SML 3.4.1]
** xref:Development/UpdatingFromSml35.adoc[Updating from SML 3.5.1]
// dedi-docs ** xref:Development/UpdatingToDedi.adoc[Updating to Dedicated Server Support]
** xref:Development/UpdatingToNewVersions.adoc[_Updating your Mod_]
** xref:Development/BeginnersGuide/index.adoc[Getting Started]
Expand Down Expand Up @@ -83,7 +83,7 @@

*** Legacy
**** xref:Development/UpdatingFromSml2.adoc[Updating from SML 2.2.1]
// **** xref:Development/UpdatingFromSml34.adoc[Updating from SML 3.4.1]
**** xref:Development/UpdatingFromSml34.adoc[Updating from SML 3.4.1]

** xref:Development/Localization.adoc[Localizing Mods]
** xref:Development/ReuseGameFiles.adoc[Reusing Base Game Files]
Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/CommunityResources/ModelingTools.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
= AngryBeaver's ModelingTools

image:https://cdn.discordapp.com/attachments/601030071221878784/776993445566480415/unknown.png[image]
image:CommunityResources/ModelingTools/ModelingToolsCover.png[image]

Community member AngryBeaver maintains a repository of re-modeled 'pieces'
of base Satisfactory buildings that are quite useful in creating your own
Expand Down
27 changes: 27 additions & 0 deletions modules/ROOT/pages/Development/BeginnersGuide/CreateGitRepo.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,15 @@ This backs them up on the GitHub servers and makes them available to other users
Directions for pushing files in GitHub Desktop can be found
https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop[here].

## Enable UE VCS Integration

The custom engine version used in the Satisfactory Modding community has been modified to allow Unreal Engine's Git integration to recognize and work with multiple git repos in a single project.

To enable, navigate to "Tools" > (Source Control heading) > "Connect to Source Control...".
Select Git from the dropdown, then click "Accept Settings".

You can now right click on assets in the Content Browser to view their change history, diff assets, and more.

## Git Workflow

Congratulations, you have now set up your local repository and pushed it to GitHub.
Expand Down Expand Up @@ -255,3 +264,21 @@ Most Unreal Engine asset files are raw binary files, which means git diffing the
Panakotta has directions on using UE as diff tool
https://gist.github.com/Panakotta00/c90d1017b89b4853e8b97d13501b2e62[here],
but it's best to totally avoid merge conflicts wherever possible.

## UE4GitDiff

A tool that runs the UE diff interface from git command line.

https://github.com/mircearoata/UE4GitDiff

It currently has an issue in finding the project and engine when using symlinked plugin folders and git bash.
When cd-ing inside a symlinked folder, git bash will pass the real path to UE4GitDiff,
rather than the plugin path inside the SML project.
The workaround for this is to either run it from command prompt or powershell,
or to open git bash directly in the plugin folder and not cd from there.

## Nested Mod Folders

It's possible to keep the files for multiple mods in one git repository
by having a parent folder as the git repository with a subfolder for each mod.
The xref:CommunityResources/AssetToolkit.adoc[Asset Toolkit] is an example of a project that does this.
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ Use curly brackets `{}` in its format input to indicate where you want to insert
The node will automatically add new ports that match the names you type inside the curly braces.
Consider reading more about this node in the Unreal documentation.

For one of the text elements, use Format Text with `Total item count: {itemCount}` and feed it the machine's ItemAmount integer value.
For one of the text elements, use Format Text with `Total item count: \{itemCount\}` and feed it the machine's ItemAmount integer value.

For the second one, use `# of unique items: {uniqueItemCount}` and feed it the Length of the ItemTypes set from the machine.
For the second one, use `# of unique items: \{uniqueItemCount\}` and feed it the Length of the ItemTypes set from the machine.

[TIP]
====
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,13 @@ you have two options for selecting the relevant components.
[id="ImportConfiguration"]
=== Option 1: Import an Installer Configuration

If the installer took you directly to the component selection screen
If the installer took you directly to the Workflow or Component selection screen
you'll have to use the smaller X button in the top right to close out of that prompt first.

Instead of clicking "Install" next to Visual Studio 2022,
click the 'More' dropdown and select `Import Configuration`.
If the option does not appear, make sure that your existing installation is not "pending"
by allowing it to finish installing.

// cspell:ignore vsconfig
Download link:{attachmentsdir}/BeginnersGuide/dependencies/SML.vsconfig[this configuration file]
Expand Down Expand Up @@ -98,7 +100,7 @@ Cross-compiling from Windows to Linux requires the compatible version of Unreal
The download link for these files can be found on the Unreal documentation page for
https://docs.unrealengine.com/5.0/en-US/linux-development-requirements-for-unreal-engine/[Cross-Compiling for Linux].

Currently, Satisfactory uses Unreal Engine 5.1.1 with custom changes provided by Coffee Stain Studios.
Currently, Satisfactory uses Unreal Engine 5.2.1 with custom changes provided by Coffee Stain Studios.
Therefore, the toolchain version required is `-v20` or `clang-13.0.1-based`.

// UE5.2 Dedi //Currently, Satisfactory uses Unreal Engine 5.2.1 with custom changes provided by Coffee Stain Studios.
Expand Down Expand Up @@ -262,7 +264,7 @@ After the installer is complete it should open the Wwise launcher for you.
In the launcher, select `WWISE` from the sidebar.
Click the `Latest` drop-down and change it to `All`.
Select `2022.1` from the next dropdown.
Select version `2022.1.3.8179` from the final dropdown.
Select version `2022.1.5.8242.2714` from the final dropdown.
Click `Install`.

[WARNING]
Expand Down
10 changes: 5 additions & 5 deletions modules/ROOT/pages/Development/BeginnersGuide/project_setup.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -127,15 +127,15 @@ Your project should now appear in the Wwise launcher.
Click on the `Integrate Wwise into Project...` button.

Change the left hand drop-down to `All`.
Then select the same version you installed earlier (likely `2022.1.3.8179`).
Then select the same version you installed earlier (likely `2022.1.5.8242`).
The version number may have additional numbers on the end of it e.g.
`2022.1.3.8179.1234` but as long as it starts with `2022.1.3.8179` it should work.
`2022.1.5.8242.1234` but as long as it starts with `2022.1.5.8242` it should work.

If version `2022.1.3.8179` does not appear even after you have selected `All`,
If version `2022.1.5.8242` does not appear even after you have selected `All`,
edit the `.uproject` file in a text editor to be sure that `EngineAssociation`
is set to `5.1.1-CSS`.
is set to `5.2.1-CSS`.

If this version still doesn't show up, try any other version starting with `2022.1.3`.
If this version still doesn't show up, try any other version starting with `2022.1.5`.

If you missed a required component as part of the Wwise installation,
it may show a yellow warning box indicating what's missing
Expand Down
23 changes: 17 additions & 6 deletions modules/ROOT/pages/Development/Cpp/hooking.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ There is a normal hook which gets called before the actual function gets called.
Through this hook you are able to prevent the final function call and you are also able to overwrite the return value.
If you cancel the execution of the final function, you can prevent the following hooks from being called.
Keep in mind that this means that another hook can prevent your hooks from being called by Satisfactory.
The normal hook's signature is `void(CallScope<HookFuncSignature>&, hookFuncParams)`.
The normal hook's signature is `void(TCallScope<HookFuncSignature>&, hookFuncParams)`.
If you hook a member function, the `this` pointer is handled like a parameter and is the first parameter used.
As long as you don't cancel the final function execution, or do it yourself by calling the scope object,
the final function will be implicitly called after your hook function returns.
Expand All @@ -33,7 +33,7 @@ The call scope object allows you to:
+
[source,cpp]
----
void hook(CallScope<...>& Scope, class* exampleClass, int exampleArg)
void hook(TCallScope<...>& Scope, class* exampleClass, int exampleArg)
scope.Cancel();
}
----
Expand All @@ -42,7 +42,7 @@ Calling the scope need to have all the same parameters as the func hook signatur
+
[source,cpp]
----
void hook(CallScope<int(int)>& Scope, class* exampleClass, int exampleArg)
void hook(TCallScope<int(int)>& Scope, class* exampleClass, int exampleArg)
// stuff before final function call
int result = scope(exampleClass, exampleArg); // call following hooks (final function might get called as long as following hooks don't cancel/overwrite it)
// stuff after final function call
Expand All @@ -52,7 +52,7 @@ void hook(CallScope<int(int)>& Scope, class* exampleClass, int exampleArg)
+
[source,cpp]
----
void hook(CallScope<int(int)>& Scope, class* exampleClass, int exampleArg)
void hook(TCallScope<int(int)>& Scope, class* exampleClass, int exampleArg)
// final function might get called
scope.Override(customReturnValue);
// final function wont get called anymore
Expand All @@ -64,7 +64,7 @@ no care about if the final function got called or not we introduce the "after" h
These hooks get all called after the normal hook calls and only allow you to
read the parameters as well as the resulting return value.
That means you can't influence the final function call.
These also don't use the CallScope object, instead the first parameter of your hooks signature
Also, don't use the TCallScope object, instead the first parameter of your hooks signature
is the return value following by the function call parameters.

[source,cpp]
Expand Down Expand Up @@ -191,6 +191,17 @@ Functions that are `FORCEINLINE` cannot be hooked.

A function being a `UFUNCTION` or not makes no difference on whether it can be hooked.

=== Unhooking

[WARNING]
====
Unhooking functionality has not been extensively tested. Please report issues you encounter on the Discord.
====

Macros will return a delegate that can be used with the
`UNSUBSCRIBE_METHOD` or `UNSUBSCRIBE_UOBJECT_METHOD` macro respectively
in order to unsubscribe from the function.

== Blueprint-Hooking

Blueprint function hooking works by changing the instructions of a Blueprint UFunction
Expand Down Expand Up @@ -218,7 +229,7 @@ void registerHooks() {
FString* localStr = helper.GetLocalVarPtr<FString>("StrVariable"); // getting the pointer to a local variable
FString* output = helper.GetOutVariablePtr<FString>("OutValue"); // getting the pointer to a output variable
// do some nice stuff there
})
});
}
----

Expand Down
1 change: 0 additions & 1 deletion modules/ROOT/pages/Development/Cpp/setup.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ public class <mod_reference> : ModuleRules
"AIModule",
"GameplayTasks",
"SlateCore", "Slate", "UMG",
"InstancedSplines",
"RenderCore",
"CinematicCamera",
"Foliage",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ and check out the ExampleMod.

== Configuration Manager

The configuration manager is a engine subsystem that manages all configurations loaded into the game.
The configuration manager is a Game Instance subsystem that manages all configurations loaded into the game.

It will then be able to load and save registered configurations.

Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/Development/TestingResources.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ dedi-docs

In order to start testing on dedicated servers, you will first need to set up your own dedicated server.

Follow the directions on the https://satisfactory.fandom.com/wiki/Dedicated_servers[Satisfactory Wiki]
Follow the directions on the https://satisfactory.wiki.gg/wiki/Dedicated_servers[Satisfactory Wiki]
to set up a working dedicated server and verify that you can connect to it with an unmodified client.

Note that in order to perform the first time server claiming process
Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/Development/UnrealEngine/index.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
= Unreal Engine

Satisfactory uses the Unreal Engine (UE) 5.1.1 by Epic Games as their Game Engine.
Satisfactory uses the Unreal Engine (UE) 5.2.1 by Epic Games as their Game Engine.
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.

In this section we go over some minor basics you should know.
Expand Down
4 changes: 2 additions & 2 deletions modules/ROOT/pages/Development/UpdatingFromSml34.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ but we'd like to draw extra attention to them.
The SML configuration option has been removed because it was redundant and does the same thing as the startup parameter.
See xref:Development/ModLoader/Logging.adoc[Logging] for more information.

== Player Hud Widget Functionality Change
=== Player Hud Widget Functionality Change

Some widget features (ex. Text Block element bindings of text to a value or function) no longer function correctly when your widget is a child of the player HUD's widget tree.

Expand All @@ -222,7 +222,7 @@ in order to get the same look as they did before.
You may also need to adjust buttons' Pressed and Normal paddings
as those also seem to have been reset.

image:https://cdn.discordapp.com/attachments/1036634533077979146/1128346194012282971/image.png[D4rk screenshot of changing button Draw As]
image:Development/ChangeButtonDrawAs.png[D4rk screenshot of changing button Draw As]

=== Online Subsystem Changes

Expand Down
Loading