Dungeon Architect

This one is awesome:

However, last time I checked instanced static meshes were not culled per instance, but were culled per entire ISM actor. I don’t know if it’s true for any platform, but it’s certainly the way things are on mobile.

Maybe Hierarchically instanced meshes get culled differently.

[MENTION=28980]Ali Akbar[/MENTION], any ETA on the next version? We are starting to create our levels using the tool and could really use the fine customisation provided by the marker override volume.

Also, got a small feature request:

Can you add a floor index label to the cells when you enter manual paint mode? it would make painting on the same elevation or paining in different elevations a lot easier, is there a shortcut or trick to snap the paint cursor to the elevation of the cell bellow the cursor?

Thank you @MiDri

@motorsep you are correct. I quickly went through HISM code and it looks like it does cull and this feature would not be needed at all. DA uses HISM for instancing. I’ll check further on different platforms

I tested on mac and just sent a request to Epic to update in the marketplace.

I’ll add the updates to the paint tool in the next update. You can follow along here


If I was too use this for creating a space station would the created layout be able to rotate around a given point i.e. a planet? Or do you know of a way to do this?


Yes, I’m working on a game that has rotating space stations as well and you can do it. The easiest way to do it is to create the dungeon in an external level and load it in via level streaming so that you just rotate the streamed assets for your orbit. Orbits can get pretty complex depending on what you’re doing though, as you need to keep actors synced to what they’re gravitational partner is (actor in space station need to rotate at same rate as station, etc; it gets complex if you’re not rotating the scene around the dungeon.

Having a weird issue with the SnapDungeonBuilder

Modules, Start modules, and End Modules work fine. However; adding branch end modules results in being unable to save the current map (the one with the dungeon in it) with this error:

Can’t save F:/Projects/Unreal/M8/Content/M8/Levels/Ships/Cortex8.umap: Graph is linked to object(s) in external map.
External Object(s):

Try to find the chain of references to that object (may take some time)?

I’ve tried deleting and readding the snapdoor to the specific levels used for the branch end modules, but it does nothing but increase the _# appended to the error message…

Also, would it be possible to have the negative volume work for the SnapDungeonBuilder? I’m trying to build starship interiors with this plugin and it works well, other than the fact that some times halls wrap around the bridge of a ship and put a room infront of the window… which is kinda funny… but not practical.

Sounds perfect Thanks for the input. Might have to get some details of you later.

This is awesome! I just started creating a VERY basic producedural builder the other weekend and after seeing this yesterday I immediately bought this! No point in reinventing the wheel when you’ve already made such an awesome plugin! You’re youtube tutorials are great, though the volume is really low in quite a few of them. Just thought I’d mention that to you. But the tutorials themselves are really great for explaining how to do things and showing what’s possible. I can’t wait to learn more about how to use this plugin.


Not in my library… Could you check please? Thanks.


Hello Ali,

Do you know if it’s possible to access a marker emitter local variable from c++ code ?
EDIT: hmm, this formulation might be misleading, what i mean is “can the emitter BP see a variable from my code ?” (then i could “set” the local BP variable with my code variable in the event graph)

To take a concrete example, in your adjacent cell emitter, you have defined a “distance” variable to fill empty space more or less.

I’d like to drive this variable from my code (and other variables i have created in my own marker emitter BPs).

But the marker emitters are UObjects, so they do not have any access to their ADungeon owner, or UWorld, or the engine, or GameState, or any actor i could use as a proxy.

And as they are declared as a TArray in the ADungeon, creating a class inheriting from your emitter class would be useless as far as i can say (as it wouldn’t be used by your code).

So i’m a bit stuck here, the emitters BP seem to be inside an isolated bubble which i can’t enter.

I have pretty much no experience with BP so maybe i’m missing some big thing.

Any idea ?

Thanks a lot
And again, 1000 bravos for DA, a real piece of brillant work, i really hope one day we’ll see Terrain A. and City A. in UE4, you’ll have one enthusiastic customer for both of them !


Hey Ali I’m loving this plugin! I do have a couple questions.

In the tutorials you show that you can easily unconnect a marker and its mesh. I can’t for the life of me figure out how to do that. I didn’t see this explained in any of the documentation. Is there a keyboard shortcut or something that quickly allows you to disconnect the marker and mesh without deleting the mesh?

Is there a way to detect if the marker is a corner of room or hall? That seems like something lots of folks might want to know when customizing their themes.

And again thank you for this great tool!

Hey Ali,

I purchased the ultimate rock pack yesterday and get a crash when trying to use it on an instanced dungeon.

I could use their meshes to paint foliage on a landscape, so those meshes can be instanced in UE4.

Strangely enough, the instanciation works very well in DA preview windows, but crashes in UE4 preview windows (and in game).

Here a short video to show you how it goes.

Thanks !

OK, problem not understood but solved :slight_smile:

I blindly tested every options one by one, it was the collisions, when removing them and replacing them with another rule, it works fine.

So unless it’s important for you to understand what happened (in which case i remain available to give extra infos), don’t spend time on this, this experimental solution is enough for me.

Cheers !

Transformation section of SnapDoor:Closed Mesh is not working. Location, Rotation, and Scaling are not affecting the generated meshes… I understand why it would not make sense for it to work with the Open Mesh (as it’s placed in between 2 snap areas and which one it used as it’s relative location would be arbitrary.) I do think it should work for closed mesh though, as there’s no ambiguity when it comes to where it should be oriented and what it’s relative space should be associated with.

It would also be nice to be able to associate a closed mesh per door and not just per SnapDoorAsset as the door between the two locations can share a mesh/blueprint, but the closed mesh might need to be different for different rooms.

Example: I have a space station I generate where the doors are set back 20cm from the wall (helps prevent hallway/adjacent room meshes from bleeding through to current room) it looks fine for doors used in the open mesh, but the closed mesh are put 20cm back and look sunken in. Also most rooms do share the same closed mesh, but a few rooms have different themes and should have different closed mesh when no door is placed.

Hi Ali,
I just bought your plugin and I have some questions. My game should use DA to generate dungeons at runtime using the grid builder approach where the dungeon level has one entrance and one or no exit.

  1. How do I let DA place an entrance (e.g. a special wall) and an exit that are far away from each other?
  2. How do I player the PlayerStart location and orientation at the entrance (or exit if going upwards from a lower level) of the dungeon?
  3. Can I place special prefabricated rooms in the runtime dungeon? (like exit, entrance, jail etc.)

Maybe I miss something obvious as I’m new to Dungeon Architect?

Thanks for your great plugin,

Hi Lars,
I am working on this problem as well. One thing to try is to use a GridDungeonPlatform at the edge of the dungeon, set the cell type to “room” and then use a theme override volume with an empty theme along one of the walls of the platform. In the empty theme volume build the door into the dungeon.

The only problem I’m seeing with this is that if you’re building the dungeon at runtime and you have a height variation > 0, there’s a chance that the platform will not match the Z value of the door you built. I have contacted the author to see if there’s a workaround.

Dungeon Architect User Group

Hey fellow DA enthusiasts - does anyone want to share notes on what we’ve learned? I’ve gone through all the videos and done quite a bit of experimentation on my own. I have some learned some pretty neat tricks, but I’m also up against what seem to be some limitations. I plan to make some tutorial videos on some of the finer points I’ve learned. I’ll share those here when I finish them.

Has anyone gone advanced with building your own marker emitters? I built one to emit in the center of rooms which is working very well. However I’m very interested in going deeper as it seems the possibilities are powerful.

Specifically, when getting the bounds of rooms and corridors, does anyone understand that model very well? I’d love to chat.

If anyone’s interested, here’s a blueprint marker emitter I made for the center of the room. It is based on one of the DA author’s demo emitters with few a very minor tweaks. cbdb3fc36aea1978514a874b9df6ece466aa871a.png

Hi DrinkThisPotion!
Thanks for you suggestion - I have not thought about using GridDungenPlatform and ThemeOverideVolume for dungeons build at runtime … might get handy to add special rooms inside of the dungeon.
But I think there is no way to make sure that the runtime dungeon actually hits these volumes - but I’ll experiment with this to see what I can get from it.

But there must be an build in way for runtime dungeons - you have to max out the time a player searches through a dungeon level by separating entrance and exit (and some special goals/quest items) far away from each other.
… and what’s the purpose of a dungeon without an entrance … :wink:

Edit: just discovered that a GridDungeonPlatformer of type Room is always connected - great!