Dungeon Architect

Yes, let me know if you find a way to deal with the elevation issue. (or if you even run into it)

Does anyone have a video or written tutorial for SnapDungeonBuilder functionality? I checked on Ali’s youtube page where he has a demo of it, but no explanation or set up. MTIA.

Hey Ali, I still don’t have the DA in my Vault.

@demonseedgfx, @MiDri suggestion is a nice workaround. Here’s another approach that lets you rotate your dungeon at runtime by attaching all the dungeon objects to a root actor:

  1. Generate your dungeon
  2. Grab all your generated dungeon actors and attach them to some root actor (which you will rotate around the orbit)
  3. Rotate the root actor to rotate your dungeon

@MiDri This should be fixed in the latest version. There was a build error in the version I submitted to epic on one of the platforms. I’ve resubmitted it yesterday and it should be available soon.

Adding negation volumes should be straight forward. I’ll add it in the next build

Thank you @sazigirl! I got a good quality microphone a while back and I’ll re-record the videos soon. Feel free to ask here if you need any help

I’ve sent a mail to Epic asking for the status. I’ll let you all know when I hear from them

Cedric, the emitter BP can see your variables from code. You need to add a reference to your C++ actor that drives this variable and read it from there

Here’s an example where from the BP, I’m grabbing the distance (random value between 1-6) from C++

C++ code that drives the distance variable:

#pragma once
#include "AMyDungeonController.generated.h"

class AMyDungeonController : public AActor


	UFUNCTION(BlueprintCallable, BlueprintPure, Category = MyDungeonController)
	int32 GetMountainDistance();



#include "DA413X.h"	// pch
#include "AMyDungeonController.h"

int32 AMyDungeonController::GetMountainDistance()
	return FMath::RandRange(1, 6);

Add a variable in the emitter BP that takes a references to your controller code and make it public

Grab the distance from your C++ code

Finally, set the reference of your C++ code in the marker emitter when you register it in the Dungeon actor. (The assumption is that you have it somewhere placed in the level, which you probably do)

Clicking build now randomly generates rocks that are 1-6 layers deep

@sazigirl, You can disconnect a link using Alt+Left click on the node’s pin. I’ll add this in the documentation

You can do that with spatial constraints. The tutorials for it are missing. I’ll add it soon. Here’s a quick overview:

Thank you for using it :slight_smile:

Cedric, Thanks for the video. I’ll have a look


All good, in my library now… Thanks.


@Laurentius,    @DrinkThisPotion
  1. The latest version 2.2.0 (soon to be updated in the marketplace) has an API and samples to find the furthest rooms in the dungeon

  2. You can use the Query API (in the examples) to orient the playerstart away from the entrance

  3. @DrinkThisPotion’s suggestion would work but it requires some work for properly wrapping theme override volumes around it. You can do that with a dungeon event listener (will work for dynamic runtime dungeons too) where you listen for dungeon layout build event (where the layout is built but the theme is not applied) and place the volume around it. I have a sample for this in Unity. I’ll add a demo soon

@DrinkThisPotion Great work! There’s a lot you can do with marker emitters. You can also use it to decorate the empty space around your dungeons (unity example but also applies to UE4)



@RedSaturnSix I’ll add detailed video tutorials soon. In the mean time, the snap builder section in the user guide has info to get you started

@MiDri please test with the new version (2.2.0) which will be updated in the marketplace in a day or two. I sent the request yesterday. As for removing the one of the two closed mesh between modules, I got this request from others as well. I’ll add a flag to remove or retain it

Is there documentation anywhere on the dungeon model and dungeon layout? A diagram showing how the XY grid works and how the rectangular bounds are formed and stored would be very helpful.

The new version (2.2.0) has a new query system that will hide the low level data structures in the model and give you a easier system to work with. Here are a list of functions in the query object of the grid builder which you can call from a blueprint

[FONT=Courier New]
GetCellDimension(int32 CellId, FVector& OutCenter, FVector& OutSize);
GetPathBetweenCells(int32 CellA, int32 CellB, TArray<int32>& OutResult, bool& bOutSuccess);
GetFurthestRooms(int32 &OutRoomA, int32 &OutRoomB);
GetCellAtLocation(const FVector& WorldLocation, int32& OutCellId, bool& bOutValid);
GetCellType(int32 CellId);
GetRandomCellOfType(FCellType CellType);
GetRandomCellFromStream(FRandomStream& RandomStream);
GetRandomCellOfTypeFromStream(FCellType CellType, FRandomStream& RandomStream);
ContainsStairBetween(int32 CellA, int32 CellB);
ContainsDoorBetween(int32 CellA, int32 CellB);
GetStairBetween(int32 CellA, int32 CellB);
GetDoorBetween(int32 CellA, int32 CellB);
GetOpeningPointBetweenAdjacentCells(int32 CellA, int32 CellB);

I’ll add more on request

As I bought DA from your website I already have version 2.2 - those Query API example blueprints look very promissing. I’ll have a look into those to learn from them. Very nice!

And I’m really looking forward for the dungeon event listener sample. It sound like the solution for getting control over prefab rooms.
A mix of the snap builder algorithm (creating the prefab room inside a separatly themed level with door indicators) and the grid builder algorithm to connect to the random level with those prefab parts would be more convenient, I think.
But maybe this workaround with the dungeon event listener is enough …

Thanks for your fast answers and this outstanding plugin - there are so many things hidden inside it and I really dig the samples and videos you provide!

These functions look great. I need some basic info before I can use some of them, though.

Some basic questions I couldn’t find docs on:
What do Grid X and Y refer to in terms of the grid structure? Would (0,0) be the bottom leftmost cell on the grid?
What does Grid Cell Size refer to?
How would I determine how many cells are in the entire grid?

Is there a function which tells which dungeon floor a cell belongs to? I could use that to adjust the positions of the door into a runtime dungeon. Not elegant but it would work.

Hi guys! started using DA on a small indie project with a few friends. Really impressed by it so far and looking forward to doing more projects with it.

As far as custom selectors - we’re really curious about trying to get some more variety on levels…

I haven’t messed with blueprint spawners much but somethings we are looking for would be things like:

Corners - convex or concave corners.
Cells that are not 1x1. So maybe being able to get room center and creating a cell that is a 2x2.
Also something to mix the snapping system with the grid builder. Not sure how feasible it is - but it would be nice to use the grid system and randomly be able to pull in a level like the snap system as a volume. Not sure if that makes sense.

Oh credit where it’s due - project using DA of course, Fantasy Dungeon Kit, Skeleton Character Pack, and

Sorry no info page yet - just the KS