MrWolf
MrWolf
SMSatisfactory Modding
Created by MrWolf on 11/30/2024 in #help-developing-mods
What do y'all think about this Conveyor Item Mesh Material
No description
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/30/2024 in #help-developing-mods
What do y'all think about this Conveyor Item Mesh Material
No description
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/30/2024 in #help-developing-mods
What do y'all think about this Conveyor Item Mesh Material
This is how I merge a mesh into our new mesh. This lives inside a few other loops, because we need to grab NewColor and NewShape, for every shape we want to add to the new mesh. CuCuCuCu, has four gray quarter circles, for example. I could instead translate a UV Map across a texture, but I'd think vertex coloring it would be less expensive, because the GPU doesnt have to walk across a texture, and instead just interpolates the constant. I've written Shaders in Adobe Graphis Assembly Language when Flash Was a thing. Shading this with agal would be cheaper as Vertex colors instead of Textures because we wouldnt need to sample our texture... but technology has changed and this isnt AGAL so I'm using an out of date understanding of how GPU's actually render this thing...
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/30/2024 in #help-developing-mods
What do y'all think about this Conveyor Item Mesh Material
Reason is Vertex Coloring isn't supported by Asset_Master. Not sure what domain means in this context. This material is just, a new material... so it doesnt inherit the others. purpose was to ensure it was super light weight and I could re-color items without changing Material.
c++
for (int32 LOD = 0; LOD < ShapeLODCount; LOD++) {
FMeshDescription* SourceMeshDescription = BasicShapeLib[NewShape]->GetMeshDescription(LOD);

TVertexInstanceAttributesRef<FVector4f> VertexColors = SourceMeshDescription->VertexInstanceAttributes().GetAttributesRef<FVector4f>(MeshAttribute::VertexInstance::Color);
for (const FVertexInstanceID& VertexInstanceID : SourceMeshDescription->VertexInstances().GetElementIDs())
{
// Get the current vertex color
FVector4f CurrentColor = VertexColors[VertexInstanceID];
FColor CurrentFColor = FColor(CurrentColor.X * 255, CurrentColor.Y * 255, CurrentColor.Z * 255, CurrentColor.W * 255);

// Check if the vertex is red, we use RED as our default color.
if (CurrentFColor == FColor::Red)
{
// Update to the new color
VertexColors[VertexInstanceID] = FVector4f(NewColor.R / 255.0f, NewColor.G / 255.0f, NewColor.B / 255.0f, NewColor.A / 255.0f);
}
}

FStaticMeshOperations::AppendMeshDescription(*SourceMeshDescription, *AllNewMeshDescriptions[LOD], AppendSettings);
}
c++
for (int32 LOD = 0; LOD < ShapeLODCount; LOD++) {
FMeshDescription* SourceMeshDescription = BasicShapeLib[NewShape]->GetMeshDescription(LOD);

TVertexInstanceAttributesRef<FVector4f> VertexColors = SourceMeshDescription->VertexInstanceAttributes().GetAttributesRef<FVector4f>(MeshAttribute::VertexInstance::Color);
for (const FVertexInstanceID& VertexInstanceID : SourceMeshDescription->VertexInstances().GetElementIDs())
{
// Get the current vertex color
FVector4f CurrentColor = VertexColors[VertexInstanceID];
FColor CurrentFColor = FColor(CurrentColor.X * 255, CurrentColor.Y * 255, CurrentColor.Z * 255, CurrentColor.W * 255);

// Check if the vertex is red, we use RED as our default color.
if (CurrentFColor == FColor::Red)
{
// Update to the new color
VertexColors[VertexInstanceID] = FVector4f(NewColor.R / 255.0f, NewColor.G / 255.0f, NewColor.B / 255.0f, NewColor.A / 255.0f);
}
}

FStaticMeshOperations::AppendMeshDescription(*SourceMeshDescription, *AllNewMeshDescriptions[LOD], AppendSettings);
}
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/30/2024 in #help-developing-mods
What do y'all think about this Conveyor Item Mesh Material
No description
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/30/2024 in #help-developing-mods
What do y'all think about this Conveyor Item Mesh Material
I have looked into different methods to generate the shapes. Without adding plugins, it would seem creating a new mesh and mesh descriptor and subsequently merging a bunch of static mesh descriptors into it, and finally using that new mesh as a conveyor mesh for a ItemDesc, gets me most of the way there. The normal map, specifically the panel normal map, give me depth and detail without costing me triangles. Trying to keep each primitive under 40 triangles, so... if I have 5 stacks of 4, still keeps us relatively low on the triangle count at around 800. For conveyor items I'd really like to stick to 400 or less.
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/30/2024 in #help-developing-mods
What do y'all think about this Conveyor Item Mesh Material
No description
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/30/2024 in #help-developing-mods
What do y'all think about this Conveyor Item Mesh Material
Because it is one of two options I could determine to change the color of dynamically generated item at runtime. The other thought I had was to make a texture with all possible colors on it and shift the UV Map. However because I am just using RGB CYM WB and Gray, there wasn't a need to carry the texture, nor the UV Maps. As I can just chuck a color on a vertex... which I believe is cheaper when I dynamically generate a static mesh from up to twenty other static mesh. One material. Honestly I might want to drop the normal map, but it's what provides that detail you're talking about. The fact this might be lighter weight is very good news. I'm building Shapez 2, Shapes in Satisfactory. So this should... be a much better way of handling it. Thank you AngryBeaver, you always have the best advice on the rendering pipeline. Wish I could just download all your knowledge in one go without annoying you 😆
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/19/2024 in #help-developing-mods
Referencing blueprint widget elements that aren't variables
This worked, thanks robb
7 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
Ty for taking the time to chat anyway
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
Ill need it 🙂
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
@Robb (Busy) Honestly its not about learning how to model. I have a pretty decent foundation and am continuing to build off of that. Rather... I'm a bit burnt out, so I'm trying something fun. I'll definitely get back into making the original stuff I was making. Ill also learn alot through this process too.
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
Uh... is it really feasible to hold all the meshes? Just one layer is 4 shapes per quadrant, 5 including none... so 625 possible combinations per layer. 5 possible layers... 95,367,431,640,625 possible shapes. Assuming we dont need to handle colors because I can handle that in the UVMap.
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
My concern is creating ItemDesc objects at runtime might run up against undefined behavior due to how various Objects and Managers are loaded.
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
Which... in theory... I should be able to do and hold a list for every one we make. I think if I hold them all as the same Class then they will stack ontop of eachother and make a mess. I could solve this by reducing inventory size to 1 I guess... but I think I'd prefer to make a new ItemDesc for each unique ShapeCode ex. CuRuCuRu, so on and so forth...
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
Yes. Due to codding up the bulk of a FGBuildableManufacturer, and my poor modeling skills. I shifted focus for a second to trying to implement Shapez like behavior into satisfactory. This essentially means I only have to model a few primitives and a half dozen buildings and dont have to focus on making anything look realistic or super pretty, just functional. So I've made a quarter circle and quarter square in blender. Imported those. While I could, in theory... generate a mesh for every single permutation. I figure that would be less then desirable. Similarly, a bunch of static mesh's flying around wouldn't be great from a performance stand point. So to achieve this, I figure a subsystem could be used. I could pass it a request for a shape using a FString, say "CuRu----", if I have not created that yet, create it and a ItemDesc for it, using the mesh as its conveyor mesh. To make "CuRu----" That would be a quarter circle top left quarter square top right, both uncolored. I can handle the mesh generation by creating a new mesh, creating a new mesh descriptor, and then merging the descriptors from the circle and the rectangle into that descriptor with the proper translation. For performance reasons, I'll use the same texture for everyone, and instead just translate the uvmap also found in the mesh descriptor... over to the proper colors. This should provide me a Dictionary.. sorry a TMap< FString, UStaticMesh* > with all of the meshs we have created up to this point. I think I can hold those in a package and save/load them but haven't got that far. In order to pass these around I'd need them of type FInventoryItem, which... means we need one of these TSubclassOf< class UFGItemDescriptor >, which implies I need to generate a UFGItemDescriptor for them.
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
I should be all set right? The item descriptors are referenced by a bunch of things like recipes... but Im not making a recipe, just the item descriptor.
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/29/2024 in #help-developing-mods
Anyone know when ItemDesc Blueprints are loaded?
So in theory... could I generate them on the fly at runtime? Or will Satisfactory get upset because they were not registered earlier in the process?
25 replies
SMSatisfactory Modding
Created by MrWolf on 11/21/2024 in #help-developing-mods
Performance Impact Question
And here is where I run up against the limits of my understanding. Having my MS in Computer Engineering and the bulk of my work much lower in the stack... The highest level thing I've ever written was pieces of OpenShift to implement OpenShift on PowerVS and PowerVC 😋 I totally understand that the Factory Ticks are executed in parallel. Hence the caution. But in theory... as Satisfactory owns all of the memory for all of its threads... couldn't I "safeishly" Read Thread B's memory From Thread A, while Thread B acts on it? Or does that just count as an access violation and seg fault? If it doesn't seg fault... if I'm reading memory that is being written, I'd guess we'd just get garbage back. But as I am just traversing the linked list... We "shouldn't" be modifying the connection data often. Similarly... I think, if we did get garbage back... that it might be possible to validate if we had received valid data or not. Wonder why the conveyor is exempt from this issue. I'd have thought it would follow the same rules as everything else.
50 replies
SMSatisfactory Modding
Created by MrWolf on 11/21/2024 in #help-developing-mods
Performance Impact Question
Any thoughts on what to do if both the input and the output are unfiltered inventories? Am I stuck peeking in that case?
50 replies