Dungeon Architect

FloorPlanBuilder is a work in progress and the query system is not implemented yet. I’ll add it in the future updates

Sure, there are examples in the quick start guide that show you how: Build a Dungeon (Runtime)

On the BeginPlay event, we grab the Dungeon Configuration and set the seed (to some random value) then build. The level blueprint in that example shows you how

The MaxStairHeight constraint sometimes makes the platform volume move a step up or down (to make sure all the stairs heights in the dungeon are within the acceptable range). It should be possible to clamp it, but it would not guarantee that the dungeon is valid and reachable (imagine having two platform volumes and moving one of them way up)

Marker replacement volumes are placed next to the artist created static content, so manual placement is fine. How is it tricky in your case?

I’ve tried something similar to @Wisdom-'s approach. Replicate the dungeon configuration and everyone sets that config and builds the dungeon locally. If anyone has a better approach, please let me know

@AngeIV Have you tried the 2x2 spatial constraint? I’ll make a demo tomorrow

@CyberKatana I created a event listener BP to remove duplicate nearby markers but something broke in 4.15 and the marker list modifications are not being reflected (got a blue NOTE bar). There are some open issues on this. I’ll implement it in C++ in the next build

Landscape - I was planning on just using a textured spline-plane for roads, or painting onto the terrain.

Got fence corner detection working by using spartial constraint 2x2 for 2 objects. first goes:
empty empty
empty ocupied
second goes:
ocupied ocupied
ocupied empty

first one detects sharp angles, second wide angles. works like a charm. anyway - that was a problem with badprops that had “corner” fence as a 90 degree railing piece. horror.

Digging into the documentation. Cant wait the FloorPlan Builder :smiley: Hopefully it will allow making floor not having the same floor plan. As I am using DA for multi story building creating via grid layered on top of each other.

For multiplayer - In one project I am using replicated blueprints that are child to static mesh blueprint (stiull can have normal actor logic). They can be replcaterd. I fured it out because I needed wall pieces that can be replicated and swaped for destructible wall piece of same looks runtime. As destructible have terrible geometry and are gpu killers if not used properly.

Updated the quick start guide for 2.6

  • Landscape Transformer
  • Multi Dungeon Custom Layout Example
  • Custom Grid Builder Example
  • Query Nearby Markers
  • Snap Modules Demo

Uploaded 2.6.0 to the website (Windows). I’ll test on mac and publish to the Marketplace. The User Guide and Quick Start Guide have been updated for 2.6

Version 2.6.0

  • Landscape Transformation: Landscapes can now be automatically modified (height and paint data) when the dungeon is built. Since the engine supports only landscape modification from within the editor, this works only at design time and not runtime
  • Added a content browser to the theme editor window
  • Theme asset files now show a thumbnail, captured from the preview viewport.
  • Added drag drop support on the theme editor. You can now drag and drop meshes, blueprints, particle systems etc to the theme editor and a node will automatically be created
  • Added more parameters to the Grid Transform Logic, similar to the parameters in the Grid Selector Logic
  • City Builder: Added spatial constraint on the simple city builder
  • Selectors can now query nearby markers. These are great for not spawning blocking items near doors and stairways
  • Custom Builder: Added a custom grid builder that makes it easier to create your own dungeon layouts using high level blueprint functions
  • Snap Builder: Fixed Snap door state issues on level reload
  • Increased the default value of grid config’s Door Proximity Steps from 2 to 6 for better quality door removal by default on dungeons
  • Added a new snap demo level in the quick start guide

In the floor plan, the direction toward the building wall is only in the 0 direction and the y direction and 90 degrees in both directions.
How do I get it to be made in 4 directions?

Current (0,90) Wall direction you want to change (0,90,180, -360)

Simple question: how do you properly typecast to FloorPlanConfig? Every time I cast my dungeon’s config, it fails. I’ve wasted a weekend on looking for this, but the documentation doesn’t describe it. Also, I would have searched on for the answer, but search within this forum is worthless.

waiting for marketplace update… :frowning:

In Runtime/SceneProviderCommand.cpp at line 59 (before the SetMeshComponentAttributes call) just put this setting, which will enable for the non-instanced meshes to copy and use the collision settings from the Theme editor:



 MeshComponent->bUseDefaultCollision = false;


This actually is a pretty cool feature, however the Instanced meshes will not follow this unfortunately. In the Runtime/DungeonInstancedMeshActor.cpp at around the line 58 (just after the SetStaticMesh() call) you can put these lines:



 Component->bUseDefaultCollision = false;
 UEngine::CopyPropertiesForUnrelatedObjects(Mesh->Template, Component);


This will enable for the instanced mesh components, that the collision profile (along with the rest of the mesh settings) to be inherited from the Template asset.

One note tho, that these mesh template settings you set up in the dungeon theme will not gets populated until you open up the theme asset in the editor before spawning the dungeon. This apparently is because the Runtime/DungeonMesh.cpp will initialize a default StaticMeshComponent for the Template property, and that will erase these settings. This only happens until you open the Theme Asset in the editor, when the proper Template settings gets populated, and from that point it will be accessible for the Dungeon to build the mesh with the chosen properties.

To overcome this issue; i have removed the initializations from the Runtime/DungeonMesh.cpp (just empty the constructor block). I have yet to found any problems with this modification. It makes me wonder why was the initialization neccessary for the DungeonMesh to create a new StaticMeshComponent in the first place?

Hi Mr. ! Firstly, your creation is incredible. It has inspired me very much! However, I have a question. How did you manage to create the Theme Editor for your project? You don’t have to tell me the exact secrets, I’m just looking for somewhere to start. Thank you!

You can have more than that, since you are a customer of the entire source code that you are allowed to read, (and modify for your own use) which should reveal much about the answers. The DungeonArchitectEditor/ folder will hold everything that is editor ui related, but obviously the runtime folder will also contain the classes for the individual asset types. The Graph editor (Ed Graph) related classes can be found in the Core/ folder.

Dungeon Architect is not the only plugin that utilize the editor ui in unique ways, the Able plugin is also a very interesting addition. The rest you should be able to figure out by learning the engine source code which is filled with examples to all sorts of ui panels (that is the editor is currently using).

@simpple, I just checked, it emits only on 0, 90. It requires changes to the C++ builder code. I’ll added proper wall orientations in the future update

@u4yk it will typecast correctly if your dungeon actor uses the Floor Plan builder

@AngeIV I’ve submitted to Epic yesterday. I’ll keep you posted on the status

@Konflict Thank you for the tips. I’ll have a closer look at the collision flags