Randomized Dungeon System

EDIT 2: Completely new version: https://.unrealengine.com/community/released-projects/1502969-dungeon-generator

DOWNLOAD](RandomizedDungeon4.5.rar - Google Drive)

EDIT: Link finally fixed, but some months after creating this, I noticed there are still some issues left that I can’t fix. I recommend not to use it!

Features:

  • Easy “Designer” included to turn your static meshes into tiles.
  • As many connection types between two tiles possible as enumerations allow (256 if I remember correctly).
  • As many blueprint types to spawn on your tiles (lights, pickups, chests, …) as enumerations allow.
  • Rarity from 1 to 20 assigned to your tiles to make some tiles appear less often.
  • The amount of tiles spawned is only limited by your hardware (tested with amounts from 100 to 10000 tiles).
  • Create as many different tiles as you want/need.
  • If “Calculate nav mesh at runtime” is enabled in the project settings, a working nav mesh is built.
  • The system allows a single exit to be spawned somewhere at the outside of the dungeon.

Limitations:

  • Singleplayer only
  • Generation at runtime only
  • No seeds for generation possible
  • Transform for tiles doesn’t include scale otherwise there will be problems with the collision

Pictures:
The designer and it’s settings:

http://i.imgur.com/aNjL53l.jpg

The blue and red spheres are markers to define blueprint points (lights and stuff) as well as connections to other tiles.

The settings of the “master” that defines the start location:

http://i.imgur.com/0IhFXTw.jpg

A small dungeon with 100 tiles:

http://i.imgur.com/dGT5Y1z.jpg

A huge dungeon with 2000 tiles:

http://i.imgur.com/d4f6exp.jpg

Of course the assets used above are just for testing/displaying the system. Here is a screenshot with more refined assets:

http://i.imgur.com/dbmWRTR.jpg

Feel free to post a link to your project in here, I’d really like to see this system in action!

wow, i need this!

Hi ,

Very Nice. I’m curious as to what algorithm you elected to use as I’ve written a few Dungeon Algos in UDK. There are few other Dungeon Generators in the works. I intend to create a Blueprints-based Labyrinth Generator with a custom occlusion system to support massive mazes.

I’d suggest offering the core BP Dungeon System for free (perhaps even open source it for continuous improvement) with a few Free Tiles to encourage its use. Then follow up with submissions of various polished Tile Assets & Accessories to the marketplace specifically for the system. Even if Game Devs don’t use the generator, dungeons can be assembled manually from assets.

It’s pretty straight forward and nothing fancy. It simply spawns a new tile at each tile’s connection point, places a dead end mesh when there is no possible tile, stops spawning tiles when the desired amount is met and deletes dead ends on the same spot to enable loops. But there was a lot of testing involved when it comes to bypassing the “infinte loope detected” message and setting up delays right.

Since I’m a horrible artist, I’d like to make a few bucks with this rather than with assets but I think I’m forced to give it away for free because I have no clue about the required tax information.

Looks good though - nice job.

Oh my god. I hate you. This brings back bad memories of The Elder Scrolls: Daggerfall. Very good work man :slight_smile:

Now with a video in the first post to show the setup process and the dungeon in action. I will soon submit this to the marketplace.

Impressive . I can definitely see the potential of your Dungeon Designer. The sky is the limit with additional tile styles/themes (sci-fi, sewer, catacombs) and interactive prefabs such as Doors, Booby-Trap. I’m personally interested in tiles with very tall walls/high ceilings, narrow corridors, using mirrored and glass materials. I desire to spawn massive dungeons (upto 1000000 tiles) that take several hours to solve. I assume a custom occlusion method would be necessary for maximum performance. A means to Export/Import these works of art would also be useful.

I hope this gets through the Marketplace soon, it’s perfect for the game I’m making.

I just did some more tests and further improvements and I’m afraid this is impossible … at least as long as there is the “infinite loop detected”-message. I made it possible for 4000 tiles but that’s the limit I suppose. So I suggest to make tiles really big and unique or split up the dungeon across multiple levels or both.

Nice work! Reminds me of Diablo n similar games.

You can change the max loop count (how many loops before it gives the infinite loop error) in the project or editor settings (I forget which). Increasing it should allow you to increase the amount of time it can loop, and thus the tile count.

Thanks, n00854180t! That of course changes a lot. Still I wouldn’t pick too high numbers for your dungeon as 10,000 tiles need about 1 to 2 minutes to be spawned … unless you want to wait more than 10 minutes.

10,000 tiles fill the whole screen by the way, even beyond the Far Z plane. But thanks to the engine’s culling system, there is no noticeable FPS loss.

I intend to offer the largest online dungeons in the world, I was being modest with 1000000 tiles :). Thus, I’m actively seeking solutions to achieve loading and rendering performance (ie: Level Streaming). Using larger tiles is feasible, in fact, tiles could be mini dungeons themselves. Import/export options would add value. Its obvious you have something great here. Keep up the awesome work!

My suggestion is to not hardcode a limit, and let the loop count fail (in cases where too many tiles are requested), so that individual users of the dungeon system can decide how long the maximum generation time they’re willing to have is going to be.

For my part, I’d probably just generate a lot of dungeons offline and then just package them up and choose one at runtime, so that I can have quick loading and huge dungeons.

By that I suppose you mean exporting tiles or dungeons to some sort of text file that can be shared? If there was a way to save something to a file (like savegames) while being in the editor, that would be an option. But unfortunately this is 100% blueprint and therefore not possible.

There is no limit hardcoded, there’s just the integer slider that goes up to 4000. If you want more, enter a higher number.

I’m afraid that’s impossible with this system, as there seems no way to spawn an object via construction script or blutility, unless I missed something again.

What are the limitations for replication over a network?

Unfortunately I haven’t touched replication yet so it’s made for singleplayer at the moment. I’m sorry that I can’t keep up with your expectations. :frowning: But if you want to make it work in MP yourself, there’s only one important (random) value that might need to be replicated.

I should add the limitations of this project to the information:

  • Singleplayer only
  • Generation at runtime only
  • No seeds for generation possible

[table]

No expectations, just a few considerations (the more feature filled the Dungeon Designer, the more $ value in the Marketplace). I’m certain there is a solution for each feature I’ve mentioned. Looking forward to your current version. Perhaps these features can make it in the second? I’m a code-centric dev, not so much an artist yet. So, I’m intrigued by all forms of procedural content generation (PCG) and seek implementation strategies for all my games. Blueprints-based Procedural Dungeons & Architecture are next on my to-do list, following current work on the GOLEM Construction System.
[https://arcadekomodo.com/home/wp-content/uploads/2014/11/gumballman_2_th.png

GOLEM(Click to Enlarge)](https://arcadekomodo.com/home/wp-content/uploads/2014/11/gumballman_2.png)

So cool dungeon dastmatze ! ^^ Techlord, i just did a blueprint based growing tree algorithm with perfect / braid mode set on recursive but can be set with all the three basic growing tree states. As i added exits it may be can be used to do your massive maze. If you want, i pm you give you that to not interfere with this potentially marketplace product.