Satisfactory Modding

SM

Satisfactory Modding

Modding community for Satisfactory, the factory building and exploration game by Coffee Stain.

Join

help-using-mods

help-developing-mods

modding-resources

How do I display the inventory in the Widget_Window_DarkMode?

I'm creating a new machine that will only have a single recipe. I want to show the player inventory in the UI for the machine but I can't get it to show. I think that I'm supposed to use the Widget_PlayerInventoryAddon in the inventory slot, but the inventory doesn't show up in the game and I can't figure out what to do to make it show up.

Referencing assets in other mods

Hi, how can create a mod that references assets from other mods? Is it possible to do this without access to the original mod source? Specifically I would like to create a compatibility mod for my fluid mod that includes recipes where the output or ingredient would be a fluid from another mod like Ficsit Farming or Refined Power. I can determine the asset paths using FModel, even their properties, and I assume I should be able to create placeholders like in the starter project, but I do not know how. A nice bonus would be if I could do this without creating a separate mod and conditionally register the recipes/schematics if the mods are present....
Solution:
There's no secret steps. You have the answers. Use FModel to find the name and path of an asset, then make a version just like the starter project and point to that. That will correctly reference content from another mod. The problems start with making it work when other people can't haven't or won't install the other mod.

Difference between UFGRecipe* and TSubclassOf< class UFGRecipe > as implemented by BuildableManufact

Anyone know why the BuildableManufacturer class holds both
/** Cached Recipe CDO to reduce calls.*/
UPROPERTY()
const UFGRecipe* mCachedRecipe;
/** Cached Recipe CDO to reduce calls.*/
UPROPERTY()
const UFGRecipe* mCachedRecipe;
and
/** The recipe we're currently running. */
UPROPERTY( SaveGame, Replicated, ReplicatedUsing = OnRep_CurrentRecipe, Meta = (NoAutoJson = true) )
TSubclassOf< class UFGRecipe > mCurrentRecipe;
/** The recipe we're currently running. */
UPROPERTY( SaveGame, Replicated, ReplicatedUsing = OnRep_CurrentRecipe, Meta = (NoAutoJson = true) )
TSubclassOf< class UFGRecipe > mCurrentRecipe;
My understanding is that the first, "UFGRecipe*" would allow any pointer to any UFGRecipe object, but "TSubclassOf< class UFGRecipe >", also allows pointers of children of UFGRecipe to be assigned to it. Functionally, I believe they are very similar... perhaps the advantage of TSubclassOf as implemented here is simply to avoid casting? Maybe the reason both exist, is because classes that inherit UFGRecipe can be held in mCurrentRecipe, and instead of casting those as UFGRecipe where UFGRecipe is required, we cached the cast? Idk... I am way out on a limb on this...

Performance Impact Question

Just a quick question what the best method for picking items off belts is, when completing custom recipes. I'd guess using the native manufacture implementation would be the best. Looking at an ancient copy of refined power they do something like this ```c++ void ARPMPHeaterBuilding::CollectItems(float dt) { if (InputFuelConveyor) {...

Buildable Nodes Redux + Resource Roulette

So RR conflicts with BRN because my scanning/destroying/spawning nodes and their meshes relies primarily on AFGResouceNode classnames for identification of the vanilla nodes to remove them (and they are always trying to come back!). After skimming through the BRN mod, one simple solution that comes to mind is to request Robb to put a tag on actors/mesh components spawned by BRN as I didn't see that they're assigned (or if it exists and I missed it, I guess that's the simple solution already) I'm not sure if there's another more clever way to filter out nodes so that way I can head off potential conflicts with nodes spawned by other mods as well, as there are likely to be many more resource node mods in the future and something smarter than that simple solution would mean I don't have to update this tag filtering logic routinely. I just don't know if there's anything....
Solution:
Robb, the solution I went with is just adding tags to the actors/meshes for your mod when they're spawned using a callback, and I'll do the same for the other conflicting mods. I have to see what kind of performance overhead it brings though but I don't imagine it's much. Although not the most elegant, I think it's the most maintainable solution because then I can adjust the logic slightly for the tagging if needed for any weird conflicts in this compatibility checking class, and I'm not dependent on other mod authors properly tagging their actors/meshes or following a standardized resource spawning method....

Referencing blueprint widget elements that aren't variables

Hello, Im trying to add a version of the BPW_Production display widget to my widget. Long story short... Im at the bottom of the stack trying to figure out how to access input items. I noticed that if I make an instance of BPW_Producion_Display_Module_InputOutput, I cannot access mcontent. However if I make a new blueprint that inherits UserWidget, and copy over everything from BPW_Produciton_DisplayModule_InputOutput, I can access that canvas no problem. The only difference between the two...
Solution:
if it isn't a variable you can either make it one yourself in your local copy of the editor (works, but not a good idea because it will break every time the content folder updates) or get a reference to it on widget (pre) construct by jumping parent/child from something that is a variable @MrWolf

various default includes missing (alphakit)

I don't get what's changed but memory.h, sal.h and etc are missing from CSS UE install dir. And no, a reinstall does not fix this.
Solution:
adding an 8GB page file (windows suggested 5GB) seems to have solved it

Project no longer builds

IT fails with this error:
10>C:\Program Files\Unreal Engine - CSS\Engine\Source\Runtime\Core\Public\Experimental\ConcurrentLinearAllocator.h(31): Error C4668 : '__has_feature' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
10>C:\Program Files\Unreal Engine - CSS\Engine\Source\Runtime\Core\Public\Experimental\ConcurrentLinearAllocator.h(31): Error C4067 : unexpected tokens following preprocessor directive - expected a newline
10>C:\Program Files\Unreal Engine - CSS\Engine\Source\Runtime\Core\Public\Experimental\ConcurrentLinearAllocator.h(31): Error C4668 : '__has_feature' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
10>C:\Program Files\Unreal Engine - CSS\Engine\Source\Runtime\Core\Public\Experimental\ConcurrentLinearAllocator.h(31): Error C4067 : unexpected tokens following preprocessor directive - expected a newline
...
Solution:
If the one in the docs doesn't have support anymore, use v14.36-17.6

Getting error while packaging mod

I'm trying to package my mod to release the first version but I'm getting an error that prevents the build. Here it is:

Making a fleshed out, custom map

I'm learning how to mod in my freetime, but my end goal is to make an entire custom map. Essentially making this post to wonder if anyone would be interested in trying this out?...

Build Effect making Decal Material DefaultMaterial

Problem Building effect appears on the main material index [0] but not the decals [1] or subsequent Indexes...
No description

Moving Meshes at Runtime

Moving this here as it's still a blocker for me and I guess it's more complicated as the more general UE modding server suggested coming back here to ask again - Do you have to change anything else meshes to update? E.g. setting visibility off and on again, or disabling/re-enabling collision? When updating node location, such as using ```cpp ResourceNode->SetActorLocation(NodeData.Location);...
Solution:
It turns out I'm a big dumb and there were at least a couple issues 1. My identifier from spawning wasn't propogating back to the struct I store it in so he was not properly finding the resource nodes to begin with :sadalpaca: . 2. I wasn't ensuring that I ignored self-raycasts, so when it did work everything was wonky, especially since there was a small chance it was moving a node from elsewhere on the map on top 😅...

Randomization Logic

I'm trying to lay down good logic for randomization that makes sense, and wonder if I've made some oversights in my planning. I know there are efficiency optimizations that can be done, but wrapping my head around this one by itself has already bent my brains into a pretzel so that will come later. Variables: ```ProcessedResourceNodes ...

Widget recipe selection.

I've been digging through the widget nodes. I havent been able to figure out a good method to generate a list of recipes used by a building type. The manufacturing widget does this with a stubbed function. Is there a way to call down into that function perhaps? The best I've come up with so far is to grab a list of recipes from each category, and then cycle through the recipes and filter by which are buildable by class of type self.
It might be better to write that up as a subsystem or cache it somehow... ...

Struct not serializing to savefile

Fixing all my rookie mistakes, there's still issues with serialization/de-serialization of more complex data structures it seems. Attaching debugger to PreSaveGame and PostLoadGame it's clear that they're present on save but not present on load ```cpp void AResourceRouletteSubsystem::PreSaveGame_Implementation(int32 SaveVersion, int32 GameVersion) {...
Solution:
In case you haven't solved this yet, the uproperties in the struct must be marked as savegame too
No description

Multicast function didn't actually update the property on the client side

I have a multicast function in a BlueprintSCSHook actor component: ```cpp UFUNCTION(BlueprintCallable,NetMulticast,Reliable, Category = "Infinite Spline") void SetLength(); ...
Solution:
I mean when you are playing in the game client and someone joins you (no dedicated server involved) this table (unrelated to the issue) shows the "types" of multiplayer

Terminal for drones

I am creating a system of drones (and robots) that will perform a multitude of tasks I have the idea of ​​a hub that will manage several drones and that will be powered by several types of fuel I want to reproduce the same system as for the drone station Several fuels can enter and be consumed to generate energy So I need to know what resource goes into determining the power...
Solution:
Finally, the Bio Burner will do the trick!
No description

Animation Help

So I made this entire crucible building in blender. After a bunch of research and animating this thing three different ways five different times... I finally got it into UE. I landed on, one armature, with 11 bones. 1 for the sliding car, 1 for the vertical motion, one for the crucible. 2 for the front and 2 for the back chains. 2 for a bezle curve for the front chain and 2 for a bezle curve for the back chain. The chains themselves are made with array modifiers which change the length bas...
No description