Dungeon Architect

[USER=“28980”][/USER] I have a couple of custom algorithms working in the plugin now and I’m incredibly happy with it. I do have some questions though. I’m attempting to use the plugin to generate maps at runtime for a multiplayer (listen server) game. I see there is a way to replicate the dungeon (in the advanced section in the details panel) but it doesn’t seem to do anything. When the host generates a level it doesn’t generate on the client. Just curious as to what specifically is being replicated if anything.

I have a few ideas about replicating the dungeon and was just curious what your thoughts are:

  1. use only actor nodes in the theme: Every spawned actor is replicated on it’s own, this is useful as I will have tiles change as the game progresses but it seems like a lot of info across the network (at least in the initial replication.

  2. pass the pertinent config over the network and let the clients generate them. This is nice as it uses less bandwidth than option 1 but makes progressive dungeon changes more work to implement.

Anyway, thanks again for your work on this plugin. I’m really enjoying using it.

Hello there, I bought this a while back when it was 50% off and haven’t been able to work on the project I bought it for due to illness. Well now I’m back to things! :smiley:

I’ve just got a few questions if you have time to answer them please?

  1. I have corridor modules (corner, straight, dead end, t-junction and crossroads and straight with door, t-junction with door middle) that have the geometry for the shape of each corridor piece and various other parts as separate models such as doors, engineering panels, light fittings, light panels. I’ve done these as separate models altogether so that the texel density will be higher on these smaller pieces so that I can add text, handles, air vents etc without any pixelation. Will the plugin be able to handle adding these extra pieces when it’s building a level?

  2. If yes, how would I go about sorting this out in Dungeon Architect so that it places the corridor module and the door in the same place for example? Or putting a corridor and light fittings, engineering panels etc?

I haven’t looked at the tutorials or anything yet because I want to build and texture my modules first before I start messing about with it. If it says all this in the tutorials then that’s great, just tell me that my first two questions are a pile of old pants lol :smiley:

And a third question regarding lighting:

  1. Once the plugin has built the level how do you go about baking the lighting? I’m guessing this is going to be GPU and/or CPU intensive? Will this be unsuitable for using in a VR game in that case? I don’t want people losing their lunch because the frames drop to single digits lol

And a fourth question regarding forward rendering:

  1. Are there any problems with me running this plugin with the Unreal Engine’s forward renderer?

Thanks in advance for any help given, sorry if they’re stupid questions but I’m a bit new to all of this lark lol :smiley:

I can answer 3 and 4:

  1. If your game needs the levels to be built on-the-fly and at runtime, then you need to go with dynamic lighting (GPU intensive, worse the more lights you need, not as bad if you just need one sunlight / directional light), or make everything unlit (fast but you get no shadows, etc).

If your game will work with levels built ahead of time, then you build a dungeon in a level and can Build Lighting to bake lightmaps for that level, just as if you built the level by hand and used static lighting. Most VR games use baked static lighting for level geometry, so do that if you can!

In my game, I want dynamic randomized levels so I’m using dynamic lighting, but it all takes place outdoors so I only need a single light source.

  1. Yes, works fine with forward renderer.

Okay, thanks for that. I suspected that the lighting would be a problem with a VR game. ■■■■■■. I was hoping to give the game plenty of replay value but looks like that’s not an option now. I guess I could pre-build a few different versions of the same level and have a random one appear each time the player starts the game I suppose. Am going to have to think about that or maybe some other sort of workaround.

It’s just all about tradeoffs (like a lot of VR dev is!) - if you want fully randomized levels, you take a graphical hit or a performance hit. Or you generate a ton of levels and bake, giving you nice shadows and performance but at the cost of your time (baking lighting) and the file size of your game. The other benefit to baking levels is that you can vet each one and make sure its a good level for your game, or even hand tweak aspects that need some extra love. I may end up switching to that approach for my game too, but I’m hoping to do a daily challenge mode that relies on daily randomized levels, so cutting that possible option would be a trade off I’d have to make.

Paint tool is failing to create doors where rooms and corridors meet - instead, it’s forcefully creating lanes between rooms as they are painted in, despite corridors between always being painted in first. Any clues ?

[USER=“28980”][/USER] What is the best way to increase dungeon’s size? Simply Increasing Cell Size makes Dungeon very clustered and that is not what I am looking for.

Looking forward for your reply

P.S I am trying to achive dungeon 100000x100000 unit large, restricted by the negation volumes

@morphole I’m working on side scroller support for DA, I’ll update with more info in the near future.

You are correct, you can start with SimpleCity builder as an example and leave most of the stuff (query, tool data, selection / transform logic spatial constraints) and build them as needed. The config class will show all the properties in the dungeon actor when you select this builder from the dungeon actor

    virtual void BuildDungeonImpl(UWorld* World) override;
    virtual void EmitDungeonMarkers_Implementation() override;

Build your layout in the BuildDungeonImpl function and save the result in the model. Emit markers around your layout in the EmitDungeonMarkers_Implementation function. This makes the theme editor fast as it doesn’t have to rebuild the layout when you change the theme graph and just reuse prebuild model every time you change something in the theme graph

@Vormulac Please have a look at this multiplayer tutorial:

watch?v=RooAWh76Wro

In the above video, the server selects a seed and sends it over to the clients as a build request then waits for all the clients to finish building. When all clients finish building, the game starts (until which it stays in spectator mode)

While testing this I’ve tried replicating all the dungeon actors and the performance was not good. I’ll have a look at the replication graph introduced in 4.21

@thesnowdog Welcome back! There’s a generator called Snap builder that pieces together the modules you create and has level streaming support, although it is still a very early work in progress and I’ll be improving on it in the near future.

I’ll have a look

I had this in Unity for a while. I ported it over to UE4

Select the dungeon actor and go to the Experimental category and enable “Fast Cell Distribution” and specify the dungeon width and length in unreal units. This ignores the NumCells parameter and generates cells (rooms and corridors) inside this [width,length] range

[Edit: This will be available in the next update 2.10.0]

https://i.imgur.com/FW0HdZc.png

https://i.imgur.com/m1FgF7Ph.jpg

This also has better performance for larger dungeons. It works with negation volumes

https://i.imgur.com/MwGMFS2h.jpg

You can create narrower dungeons too

https://i.imgur.com/LRJRPWA.png

https://i.imgur.com/u9BbRK4h.jpg

Added 4.21 engine support. Also added a few usability improvements

Placement Mode Category:

Dungeon Architect has its own category in the Placement Modes section so don’t have to search for the dungeon actor before placing it on the scene

Theme Editor Marker Window Improvements

The markers window in the theme editor has a search filter box and scrollbar support

Fixed an issue with the grid builder while checking for loops. Improved the performance of the grid builder’s layout generation

Giant 1x1km dungeon using the new cell distribution mode (use instancing to keep things fast)

Good deal [USER=“28980”][/USER]

Any progress with improving Snap builder ?

Great thanks, good to hear!

With all the other work going on for the project hopefully the timing lines up :slight_smile:

Cheers

[USER=“28980”][/USER] Thanks for your reply. I got also another question. Is there a way to change clustered themes on the run time?

Hello,
I am having trouble building my game, I keep getting"

Can anyone help with that?

{SOLVED}