[USER=“222363”]Llama Del Rey[/USER] Please try as [USER=“59677”]J.C. Smith[/USER] mentioned. The dungeon will not build if it cannot satisfy the following constraints:
If it cannot build a dungeon that satisfies the dungeon flow graph. It could happen for a few reasons:
There’s a node in the graph (e.g. with name “ArmoryRoom”) and no corresponding mapping to a module in the module database
The module has fewer connections (entry/exists) than the graph requires. For e.g. in the generated graph, the node “ArmoryRoom” might have one entry link and 4 outgoing links which would require a minimum of 5 connections in the module level file and you have only 4
The module bounds are larger than expected. This can happen if you place a custom blueprint somewhere far away outside the bounds and it takes it as part of the bounds thus increasing it. Place a Level Bounds actor and select it to make sure it is tightly packed
The module database is out of date. If you modified your modules, it needs to be rebuilt
The modules cannot be connected as the art asset overlap with the adjacent connected module’s art asset. In this case try increasing the Overlap threshold from the config
The orientation of your connections is wrong. Make sure the red arrow points outward and is at the edge of the module bounds
When the snap dungeon doesn’t build, it needs better error reporting as to why it didn’t build. I’ll add that in the next update as others have also face difficulty debugging it. In the mean time, start with a small graph (two nodes) and make sure it works. If it doesn’t, increase your overlap threshold till it works. Then add more nodes from there. Once these basics are solved, it should work properly
You don’t need the Level Bounds actor in the module file. You can however use it to make sure your bounds are correctly packed
So the level bounds actor (which I placed and scaled manunally to fit the correct module size …) is never used by the snap builder itself or in the level streaming process for visibility?
i tried your suggestion (copying over the plugin etc) but sadly it isn’t working.
On a new empty project, it still errors out with the duplicate class names errors.
Steps to reproduce:
create a new c++ project
create a plugin folder
copy over DA folder
generate project files
compile -> errors
I didn’t add any classes or BP’s yet.
At least i get some additional error msgs:
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectRuntime/Public/Frameworks/GraphGrammar/Graph/EdGraph_Grammar.h(12) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraphNode_GrammarNode or Class /Script/DungeonArchitectEditor.EdGraphNode_GrammarNode
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectRuntime/Public/Frameworks/GraphGrammar/Graph/EdGraph_Grammar.h(17) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraph_Grammar or Class /Script/DungeonArchitectEditor.EdGraph_Grammar
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectRuntime/Public/Frameworks/GraphGrammar/Graph/EdGraphSchema_Grammar.h(12) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraph_Grammar or Class /Script/DungeonArchitectEditor.EdGraph_Grammar
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectRuntime/Public/Frameworks/GraphGrammar/Graph/EdGraphSchema_Grammar.h(13) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraphNode_GrammarNode or Class /Script/DungeonArchitectEditor.EdGraphNode_GrammarNode
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectRuntime/Public/Frameworks/GraphGrammar/Graph/EdGraphSchema_Grammar.h(25) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraphSchema_Grammar or Class /Script/DungeonArchitectEditor.EdGraphSchema_Grammar
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectRuntime/Public/Frameworks/GraphGrammar/Graph/Nodes/EdGraphNode_GrammarBase.h(9) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraphNode_GrammarBase or Class /Script/DungeonArchitectEditor.EdGraphNode_GrammarBase
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectRuntime/Public/Frameworks/GraphGrammar/Graph/Nodes/EdGraphNode_GrammarNode.h(12) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraphNode_GrammarNode or Class /Script/DungeonArchitectEditor.EdGraphNode_GrammarNode
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectRuntime/Public/Frameworks/GraphGrammar/Graph/Nodes/EdGraphNode_GrammarNode.h(12) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraphNode_GrammarBase or Class /Script/DungeonArchitectEditor.EdGraphNode_GrammarBase
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectEditor/Private/Frameworks/GraphGrammar/RuleGraph/EdGraph_Grammar.h(14) : LogUObjectHash: Error: Ambiguous search, could be Class /Script/DungeonArchitectRuntime.EdGraph_Grammar or Class /Script/DungeonArchitectEditor.EdGraph_Grammar
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectEditor/Private/Frameworks/GraphGrammar/RuleGraph/EdGraph_Grammar.h(14) : LogWindows: Error: === Critical error: ===
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectEditor/Private/Frameworks/GraphGrammar/RuleGraph/EdGraph_Grammar.h(14) : LogWindows: Error:
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectEditor/Private/Frameworks/GraphGrammar/RuleGraph/EdGraph_Grammar.h(14) : LogWindows: Error: Assertion failed: Class->Children == NULL [File:D:\Build\++UE4\Sync\Engine\Source\Programs\UnrealHeaderTool\Private\HeaderParser.cpp] [Line: 5685]
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectEditor/Private/Frameworks/GraphGrammar/RuleGraph/EdGraph_Grammar.h(14) : LogWindows: Error:
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectEditor/Private/Frameworks/GraphGrammar/RuleGraph/EdGraph_Grammar.h(14) : LogWindows: Error:
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectEditor/Private/Frameworks/GraphGrammar/RuleGraph/EdGraph_Grammar.h(14) : LogWindows: Error:
1>C:/Git/MSD2/Plugins/DungeonArchitect/Source/DungeonArchitectEditor/Private/Frameworks/GraphGrammar/RuleGraph/EdGraph_Grammar.h(14) : LogWindows: Error:
1>EXEC : error : UnrealHeaderTool failed for target 'MSD2Editor' (platform: Win64, module info: C:\Git\MSD2\Intermediate\Build\Win64\MSD2Editor\Development\MSD2Editor.uhtmanifest, exit code: CrashOrAssert (3)).
Seems UHT cannot decide which to use. I personally never had anything like this, so i don’t know how to resolve it.
Heya [USER=“28980”][/USER] and [USER=“59677”]J.C. Smith[/USER]
Thank you very much for your help, I’ve been able to make it work. I can’t tell exaclty why but I’ve redone everything outside of my project on something completely blank and it worked fine now I’ll figure out why it’s not working with my project.
I really wanted to mention that the tool is amazing and well done, I’m a professional level designer and I’m having so much fun with such a tool. Thank you so much for the support!
I have some other questions related to snap map builder:
-Is it possible to make actual procedural generated corridors between my hand-made rooms? So when I build the rooms will be placed randomly in the world and corridors will be procedural to join them.
Seems Epic Launcher isn’t clearing out the plugins folder completely while updating to a newer version, so there were remnants of an older DA version still present which lead to these errors.
I’ll file a bug report with epic so they can improve it.
The Level Bounds actor is used if available when you are baking the module cache in the module db asset. If it is not there, it calculate the bounds manually. So, it might slightly decrease the time it takes to rebuild the module cache in the editor. You don’t really need to add it if you don’t want to.
I usually drop one in my module level file to test if the bounds fit tightly and not increased due to some misplaced actor somewhere far away
I’m glad you like it [USER=“222363”]Llama Del Rey[/USER]
I’ve been experimenting with a procedural room designer a while ago which will be useful for snap and other types of builders (like grid, bsp etc). Given a bounds and possible door connection points (at different Z levels) it will create good looking room interior geometries based on some existing models. I’ll have more info later
Did you have a look at Prefabricator? It will help with creating lots of variations with simple building blocks
I did have a look at it, watched few videos, it’s an amazing tool, close to what was used to make the city of Assassins Creed Unity.
Designing around procedural is extremely tricky and demand a different way to approach the design constraints. In my case I made the choice to have handmade rooms to make sure I have control over the flow, the fun and make sure each room has a different flavor that players will remember. I wish there was a way to use the dungeon flow tool that will spread my rooms among the map and then have pure procedural generated corridors to join them. If you have an idea or want to talk about designing with procedural I’m open to give all the advices that I can.
We have the tool working for our team, and we really like it. We’re looking to add another artist to our team – an experienced Sci-Fi environmental artist who is quite familiar with this tool. Must have a significant portfolio of Sci-Fi work. If interested, please send a PM to me. This is paid contract work.
Silly me, i’ve got my answer in the quick start guide^^watch?v=Xor9nxeNoO4
Then, do you know what i should save/replicate to remember/share the manual layout ?
I going to look through your code in search for an array to save, but if you have the answer it’ll spare me some time
In the theme editor the dungeon is actually not fully rebuild, only markers seem to be re-emitted but in case of more complex custom markers this causes an annoying error since the rebuild in the theme editor does NOT equal the dungeon in the “real world” (scene).
So it seems that some old data remains which causes the theme editor preview to be wrong/different then when making a full dungeon rebuild by pressing “Build Dungeon” on the Dungeon actor in the world level.
This is very annoying since you cannot be sure that the new custom Selector you enabled actually worked as intented.
The hacky solution is to close the theme editor and re-open it.
Better solution: add this code to the top of the function SDungeonEditorViewport::PerformMeshRebuild:
DungeonBuilder->GetModel()->Reset();
if (DungeonBuilder->SupportsTheming())
{
DungeonBuilder->BuildDungeon(DungeonModel, ObjectToEdit->PreviewViewportProperties->DungeonConfig, DungeonQuery, GetWorld());
}
Edit: forgot this also:
And at the very bottom of the function SDungeonEditorViewport::PerformMeshRebuild I also added this so that it better matched the code in the build task:
Having a problem when trying to package any project with DA i get this
Module.DungeonArchitectRuntime.cpp.obj : error LNK2001: unresolved external symbol _libm_sse2_sincosf
any ideas whats going on?
Which is great.
The rest is just a matter of using arrays, looping, making a UI and so on.
By the way, there is a small bug in the GameState BP of the DA starter pack, surely due to using old code. The AddPaintedCell and RemovePaintedCell don’t take a location as an input, instead they take a CellData which has to be built from the location like this:
So after fixing this i just had to find the static AddPaintCell and everything was all right, i’m going to have to save and replicate the PaintedCells array.
Now i have a last question.
The UGridDungeonToolData also contains 2 others arrays that are used in the Editor Paint Mode: Rectangles and Borders.
But i don’t see any way to use them in the UGridDungeonModelHelper.
Did you put any AddPaintedRectangle, RemovePaintedRectangle, AddPaintedBorder and RemovePaintedBorder functions somewhere else, or do i have to write my own functions and loop over the rectangles/borders to call the AddPaintedCell/RemovePaintedCell for each cell in the rectangle/border ?
I got everything working fine, UI, replication, saving and all and i’m very happy with it For the moment i only use the PaintedCells array, Rectangles and Borders are not necessary at the moment.
I still have one problem though. Marker Emitters don’t seem to work identically on painted cells and on “regular cells” (generated randomly).
, on the left is a room generated randomly and on the right a manually painted room.
Both use the same CornerEmitter and RoomCenterEmitter, but as you can see, on the left the objects are correctly grounded while on the right the objects are levitating.
The table at the center is exactly 1/2 GridCellSize above the ground, and the objects are corners are 1 GriCellSize above the ground.
It might be a problem in my code, i’ll continue to search/test, but apart from that my painted cells are perfectly placed horizontally and vertically.
If you have any idea…
I finally used some ugly workaround in my various emitters, like flooring the Z value of the cell rectangle if the cell is used defined. Not pretty but it works well given that i don’t understand where is the difference between generated and painted cells.
So now my players can create/delete room and corridors cells (using the CellType EGridPaintToolCellType::Room or EGridPaintToolCellType::Corridor). Great ! The more i use DA the more i’m amazed by what can be done with it !
Now i’d like to give the possibility to forbid the filling of a cell (like in negation volumes) at runtime.
I saw there is an enum EGridSpatialCellOccupation which proposes exactly that.
But it’s not part of the PaintedCells properties, is it possible to use it at runtime anyway ?
It would be nice to have a third Cell property in FGridToolPaintStrokeData, something like CellOccupation with this EGridSpatialCellOccupation enum.
Or maybe at least add EGridPaintToolCellType::Empty to the EGridPaintToolCellType enum ?