SML3.11 and 5.3.2-CSS-68
Hi,
I have been struggeling with sml3.11-dev and the 3.5.2-CSS-68 engine... i can't get it to work. Get stuck in the build everytime after adding some cpp code to a alpakit created project. I add files in VS and rebuild, then it makes errors on varies issues, automation script missing... but several others too. Updated VS , regenerate VS files. Chdck wwise and audio files,
... should it work or is it still depending on certain parts not covered in the dev docs
I also tried copying the header and cpp in their rspective folders in the source dir of my mod, then regenerate VS files and start rebuild in VS of factorygame, but again errors... i am doing something wrong, it should at least rebuild.
The cpp files also never show up in the UE editor browser #SML3.11
78 Replies
You should post the build log, in the Output tab (the Errors tab is not particularly useful to understand why something is an error)
the build log is massive... let me look for relevant section
Init section:
Build started at 00:03...
1>------ Build started: Project: FactoryGame (Games\FactoryGame\FactoryGame), Configuration: Development_Editor x64 ------
1>Using bundled DotNet SDK version: 6.0.302
1>Running UnrealBuildTool: dotnet "....\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" FactoryEditor Win64 Development -Project="F:\Modding\SatisfactoryModLoader-dev\FactoryGame.uproject" -WaitMutex -FromMsBuild
1>Log "https://docs.unrealengine.com/en-US/Programming/BuildTools/UnrealBuildTool/IWYU/index.html">https://docs.unrealengine.com/en-US/Programming/BuildTools/UnrealBuildTool/IWYU/index.html. (Previously: PCHUsageMode.UseSharedPCHs).
1>[Upgrade] bLegacyParentIncludePaths = false => Omits module parent folders from include paths to reduce compiler command line length. (Previously: true).
1>[Upgrade] CppStandard = CppStandardVersion.Default => Updates C++ Standard to C++20 (Previously: CppStandardVersion.Cpp17).
1>[Upgrade] WindowsPlatform.bStrictConformanceMode = true => Updates MSVC strict conformance mode to true (Previously: false).
1>[Upgrade] Suppress this message by setting 'DefaultBuildSettings = BuildSettingsVersion.V4;' in FactoryEditor.Target.cs, and explicitly overriding settings that differ from the new defaults.
1>[Upgrade]
1>Determining max actions to execute in parallel (4 physical cores, 8 logical cores)
1> Executing up to 4 processes, one per physical core
1>------ Building 424 action(s) started ------
Relevant??
>[275/424] Compile [x64] Module.SML.6.cpp
1>F:\Modding\SatisfactoryModLoader-dev\Mods\SML\Source\SML\Private\Configuration\Properties\ConfigPropertySection.cpp(81): warning C4996: 'UObject::IsDataValid': Please use IsDataValid(FDataValidationContext&) const as the FDataValidationContext will allow distinguishing between Warnings and Errors. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
1>F:\Modding\SatisfactoryModLoader-dev\Mods\SML\Source\SML\Private\Kismet\RuntimeBlueprintFunctionLibrary.cpp(16): warning C4996: ANY_PACKAGE has been deprecated. Either use full path name of objects (including classes) or provide a valid Outer for FindObject functions Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
1>F:\Modding\SatisfactoryModLoader-dev\Mods\SML\Source\SML\Private\Kismet\RuntimeBlueprintFunctionLibrary.cpp(19): warning C4996: ANY_PACKAGE has been deprecated. Either use full path name of objects (including classes) or provide a valid Outer for FindObject functions Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
1>F:\Modding\SatisfactoryModLoader-dev\Mods\SML\Source\SML\Private\Kismet\RuntimeBlueprintFunctionLibrary.cpp(290): warning C4996: 'USpinBox::Font': Direct access to Font is deprecated. Please use the getter or setter. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
F:\Modding\SatisfactoryModLoader-dev\Mods\Alpakit\Intermediate\Build\Win64\x64\UnrealEditor\Development\Alpakit\UnrealEditor-Alpakit.sup.lib and object F:\Modding\SatisfactoryModLoader-dev\Mods\Alpakit\Intermediate\Build\Win64\x64\UnrealEditor\Development\Alpakit\UnrealEditor-Alpakit.sup.exp
1>Total time in Parallel executor: 702.81 seconds
1>Total execution time: 706.95 seconds
1>e:\Microsoft Visual Studio\2022\Preview\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(44,5): error MSB3073: The command ""F:\Unreal Engine - CSS\Engine\Build\BatchFiles\Build.bat" FactoryEditor Win64 Development -Project="F:\Modding\SatisfactoryModLoader-dev\FactoryGame.uproject" -WaitMutex -FromMsBuild" exited with code 6.
1>Done building project "FactoryGame.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build completed at 00:15 and took 11:47,495 minutes ==========
Note: the "exit code 6" message which appears in build logs is very vague - it indicates that building C++ failed for some other reason. If you'd like help with this error, make sure that you also share the rest of the build output as described here (or from the Alpakit Log tab if you're getting this at mod package time)
https://docs.ficsit.app/satisfactory-modding/latest/Development/BeginnersGuide/project_setup.html#_the_command_exited_with_code_6
-# Responding to
exitcode6moreinfoneeded
triggered by @xpsionHere is a fatal error :
1>[402/424] Link [x64] UnrealEditor-FactoryEditor.dll
1> Creating library F:\Modding\SatisfactoryModLoader-dev\Intermediate\Build\Win64\x64\UnrealEditor\Development\FactoryEditor\UnrealEditor-FactoryEditor.sup.lib and object F:\Modding\SatisfactoryModLoader-dev\Intermediate\Build\Win64\x64\UnrealEditor\Development\FactoryEditor\UnrealEditor-FactoryEditor.sup.exp
1>EditorDebugSubsystem.cpp.obj : error LNK2019: unresolved external symbol "declspec(dllimport) public: struct FWorldContext & cdecl UEditorEngine::GetEditorWorldContext(bool)" (imp_?GetEditorWorldContext@UEditorEngine@@QEAAAEAUFWorldContext@@_N@Z) referenced in function "private: void cdecl UEditorDebugSubsystem::DebugDrawCanvas(class UCanvas *,class APlayerController *)" (?DebugDrawCanvas@UEditorDebugSubsystem@@AEAAXPEAVUCanvas@@PEAVAPlayerController@@@Z)
1>EditorDebugSubsystem.cpp.obj : error LNK2019: unresolved external symbol "declspec(dllimport) class UEditorEngine * GEditor" (imp?GEditor@@3PEAVUEditorEngine@@EA) referenced in function "private: static void cdecl UEditorDebugSubsystem::ClearAllEditorDebugStrings(void)" (?ClearAllEditorDebugStrings@UEditorDebugSubsystem@@CAXXZ)
1>F:\Modding\SatisfactoryModLoader-dev\Binaries\Win64\UnrealEditor-FactoryEditor.dll : fatal error LNK1120: 2 unresolved externals
1>[403/424] Link [x64] UnrealEditor-ReliableMessagingEOSP2P.lib
2 unresolved externals????
Mmm, i think i maybe start to understand it.
*The Core Problem:**
EditorDebugSubsystem.cpp.obj : error LNK2019: unresolved external symbol "declspec(dllimport) public: struct FWorldContext & cdecl UEditorEngine::GetEditorWorldContext(bool)" (imp?GetEditorWorldContext@UEditorEngine@@QEAAAEAUFWorldContext@@_N@Z) referenced in function "private: void __cdecl UEditorDebugSubsystem::DebugDrawCanvas(class UCanvas *,class APlayerController *)" (?DebugDrawCanvas@UEditorDebugSubsystem@@AEAAXPEAVUCanvas@@PEAVAPlayerController@@@Z)
EditorDebugSubsystem.cpp.obj : error LNK2019: unresolved external symbol
linker error (LNK2019
Something i initiated with my c++ adding method caused something to look for the UnrealEd module or???
I think better to cteate empty cpp class inside UE and not via explorer or VS, it creates bugs as the doc indeed advised....
Weird indeed, maybe it's having trouble resolving an include or something as well?
In the future, if you were to paste the entire build log, discord will turn it into a text file upload because it's so long. And you can use triple backtick fences for code formatting of text
(``` on each end)
I guess create a file with the new class wizard and then compare its contents with the one you wrote manually?
You can also upload the log as a file
I would need to see your code to know what's going on
But sounds like you might be calling a method from a module that you don't list as a dependency. It also seems to be an editor-only method?
LNK2019
I checked the factory.build.cs but dependency to UnrealEd is in
Now further digging as the FactoryEditor.Build.cs did not have it
Yes. I will do that.
Cpp that was in private
#include "TruckNameHook.h"
// Static storage for truck names
TMap<FString, F String> FTruckNameHook::TruckNames;
void FTruckNameHook::Initialize()
{
UE_LOG(LogTemp, Log, TEXT("xpsion's Truck Manager: Initializing truck name hook"));
// need to add hook UE_LOG(LogTemp, Log, TEXT("xpsion's Truck Manager: Hook initialized successfully")); } void FTruckNameHook::Shutdown() { UE_LOG(LogTemp, Log, TEXT("xpsion's Truck Manager: Shutting down truck name hook")); // Hooks are automatically cleaned up by SML } FText FTruckNameHook::GetTruckDisplayText(const class AFGWheeledVehicle* Truck) { return FText::FromString("Truck"); } void FTruckNameHook::SetTruckName(const FString& TruckPath, const FString& Name) { TruckNames.Add(TruckPath, Name); UE_LOG(LogTemp, Log, TEXT("xpsion's Truck Manager: Set truck name '%s' for path '%s'"), *Name, TruckPath); } FString FTruckNameHook::GetTruckName(const FString& TruckPath) { if (TruckNames.Contains(TruckPath)) { return TruckNames[TruckPath]; } return ""; } FString FTruckNameHook::GetTruckObjectPath(const class AFGWheeledVehicle Truck) { return ""; } And the header #pragma once #include "CoreMinimal.h" #include "Patching/NativeHookManager.h" /** * intercept truck name display and handle F key naming / class XPSIONTRUCKMANAGER_API FTruckNameHook { public: static void Initialize(); static void Shutdown();
public: // Hook function to replace truck display text static FText GetTruckDisplayText(const class AFGWheeledVehicle Truck);
// Set a truck name static void SetTruckName(const FString& TruckPath, const FString& Name);
// Get a truck name static FString GetTruckName(const FString& TruckPath);
// Get truck object path for identification static FString GetTruckObjectPath(const class AFGWheeledVehicle* Truck); private: // in-mem sto for truck names static TMap<FString, FString> TruckNames; };
// need to add hook UE_LOG(LogTemp, Log, TEXT("xpsion's Truck Manager: Hook initialized successfully")); } void FTruckNameHook::Shutdown() { UE_LOG(LogTemp, Log, TEXT("xpsion's Truck Manager: Shutting down truck name hook")); // Hooks are automatically cleaned up by SML } FText FTruckNameHook::GetTruckDisplayText(const class AFGWheeledVehicle* Truck) { return FText::FromString("Truck"); } void FTruckNameHook::SetTruckName(const FString& TruckPath, const FString& Name) { TruckNames.Add(TruckPath, Name); UE_LOG(LogTemp, Log, TEXT("xpsion's Truck Manager: Set truck name '%s' for path '%s'"), *Name, TruckPath); } FString FTruckNameHook::GetTruckName(const FString& TruckPath) { if (TruckNames.Contains(TruckPath)) { return TruckNames[TruckPath]; } return ""; } FString FTruckNameHook::GetTruckObjectPath(const class AFGWheeledVehicle Truck) { return ""; } And the header #pragma once #include "CoreMinimal.h" #include "Patching/NativeHookManager.h" /** * intercept truck name display and handle F key naming / class XPSIONTRUCKMANAGER_API FTruckNameHook { public: static void Initialize(); static void Shutdown();
public: // Hook function to replace truck display text static FText GetTruckDisplayText(const class AFGWheeledVehicle Truck);
// Set a truck name static void SetTruckName(const FString& TruckPath, const FString& Name);
// Get a truck name static FString GetTruckName(const FString& TruckPath);
// Get truck object path for identification static FString GetTruckObjectPath(const class AFGWheeledVehicle* Truck); private: // in-mem sto for truck names static TMap<FString, FString> TruckNames; };


For the future

Hehrj got crazy bit i found it!!!
Yes, sorry was plain txt.. shitty to read
Why do you have EditorSubsystem, UnrealEd and EditorStyle in there?
Also, I'm not sure what
FTruckNameHook
is supposed to beWhile for some reason a linker error stayed petcistent, the i looked in the editor build
I put them in aside the UnrealEd
I would not depend on editor-only stuff like that, because the editor stuff doesn't exist in the actual game
These cpp and header are not the good ones but they caused this
Uh, what are the good ones then?
please do not use LogTemp https://docs.ficsit.app/satisfactory-modding/latest/Development/ModLoader/Logging.html#_logging_from_c
You don't need a whole lot to use C++ hooks:
https://github.com/Th3Fanbus/Th3SwiftSwim/blob/master/Source/Th3SwiftSwim/Th3SwiftSwim.Build.cs (I don't use all of those dependencies, but it's a relatively small subset that works for most things)
https://github.com/Th3Fanbus/Th3SwiftSwim/blob/master/Source/Th3SwiftSwim/Public/Th3SwiftSwim.h
https://github.com/Th3Fanbus/Th3SwiftSwim/blob/master/Source/Th3SwiftSwim/Private/Th3SwiftSwim.cpp
did the alpakit c++ mod template's base Build.cs not work correctly for you?
They had more other hooks and links to widgets, but i took all out as it was to complicated for 1st test, then i took wrong files into my source (incomplete)... but i did not undetstsnd why the build suddenly failed with these srrange errors
Wat
Links to widgets?
Using blueprint UI interface
Yes it did
I'm confused
Yes it did [work]
or Yes it did [not work]
?.... i am sorry, i did not sleep fir the last 15 hours. I could not find the problem... my brain is tired
Please take a rest. I'm struggling to understand your situation which makes it significantly harder to troubleshoot.
It did st first yes, even alpakit packing until the last minute, then "could not find a header file" error. After that the whole problem started and i reinstalled engine and sml etc and finally took out all my cpp files but VS build problem came back every time i added cpp files, but i did it via explorer, so i think this creates unintended issues
I made new fresh install of the sml3.11-dev all dep (wwise 2023.3... , etc accodding docs) then setup a alpakit project and just put in a Game World Module, set to root. Compiled and then build with Alpakit and no luck.
Log with the errors:
awaits logfile
Hmmm, what is the parent class of your Game World Module?
Open it in UE then send a screenshot of the entire editor window
Sh..t.... SmL.GameWorldModule
Yeah, that seems wrong
You can reparent the Blueprint
I have nust a very bad day....
Thkx
Did you take a rest? There's lots of moving parts to setting up and using the modding environment, so getting enough rest is important to avoid making mistakes due to exhaustion.
The whole root cause of thr previous weird errors, was that i have done a rebuild of other parts of the sml outside factory game.....😬🙄
Not sure how, but good thing you figured that out
>add crash WrongGameWorldModuleParentClass
What should the logs match (regex)?
Error:.Attempting.to.enqueue.RootGameWorldModule_SML
What should the response be?
Do not use SML's mod-specific game world module as the parent class for your mod's game world module! Use the regular game world module class.
Known crash 'wronggameworldmoduleparentclass' added!
Well, but in the 3.11 SML dev, if you follow instruction of doc Then you end up with a SML.GameWorldModule as parrent.....
is there another section with conflicting info? we need to fix that
>modify crash WrongGameWorldModuleParentClass
Do you want to change the crash to match?
no
Do you want to change the response?
yes
What response do you want it to provide? Responding with
>command_name
will use the response of that command.Do not use SML's own game world module (
RootGameWorldModule_SML
) as the parent class for your mod's game world module! Use the regular game world module class (GameWorldModule
)Crash 'wronggameworldmoduleparentclass' modified!
The point is if you select the class GameWorldModule, it results in a SML.GameWorldModule, if you do like in manual
is the parent class of your module
https://github.com/satisfactorymodding/SatisfactoryModLoader/blob/dev/Mods/SML/Content/RootGameWorldModule_SML.uasset
or
https://github.com/satisfactorymodding/SatisfactoryModLoader/blob/dev/Mods/SML/Source/SML/Public/Module/GameWorldModule.h
?
because it should be #2, and the logs make it sound like you picked #1
(xpsion) please send this screenshot
(sorry forgot to turn off ping Rex)

that parent class is fine and shouldn't be causing any problems
Aha
Then something else is alien
do you also have game world module defined in c++ and marked as root?
No
Because that is not said in docs to be done
if you remove your mod's folder from the starter project, are you able to package SML itself without issues?
I will try
Fyi i am doing assembler and c++ progr for avr and stm microcontrollerrs, but my experience with Unreal and editor is blank, i got interested in modding due to satisfacfory game setup and that the game is Fantastic! 💥 but this ide is something.....
you may find this video amusing https://www.youtube.com/watch?v=iwI_AaHDUbo
Mental Checkpoint
YouTube
The Unreal Way
I remembered my password!
Hi hello, sorry for going radio silent for a million years, followed by dropping a non game design video... I might be cooking something and got a bit distracted in the process by my frustrations towards this amazing engine called Unreal (more on that soon)
Everything in this video happened on a new Unreal 5.6 project...
Houston we have a problem...
No mods , just SML packing
F:\Unreal Engine - CSS\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\Scripts\AutomationScripts.Automation.dll
does this file exist?.... nope!
sounds like something went wrong while the engine was installing then? not sure how else that could possibly go missing
I'm on my laptop right now which has an older engine install but it does have that file
Jezus. No idea
I downloaded the bins and exe of css68
All right this is good news!
Then i will do a re install of the whole engine. But then all the rest also i guess
K will do a side install from same files and compare both
😂😂😂

The file.is now indeed under scripts
In both versions this file is also present under AutomationTool
So something went worng during the install then... 🙄
👌 you where right! Thanks!

That's technically not what I asked (double click to open the asset first)
Check your antivirus, maybe it blocked something? Not sure why that file would go missing
Was reallyba weird thing
But after i reinstslled the enginez all runs well
The class in the setting says Game World Module
The hoover window says SML.GameWorldModule
Ssme as before, but there are no error issues anymore.
Modding target in 1983... just assembler...
Is this Satisfactory? I'm confused
Nooooo 😃
Thats how I started with assembler in 1983.... hacking games