Hi Guys! Please let me know if this Tutorial was useful to You. I want to know. And please share if you make anything cool with this, I also want to see that 🙂 If you have better ways of doing some of these things I do in the video. Please let me know.. I'm always ready to learn 🙂 - Have a Nice Day 🙂
Hello, I have an idea for a tutorial much like the one in this video. But for interiors of buildings. For example a suburb house. Say I purchased a house model thats only the exterior model off marketplace. I add a Volume(s)? inside the house model and place Doors and Window markers that line up to the exterior building model / texture. And the interior of the house will procedural generate. 1 Hallway. 1 or more rooms, each room must have a door an window. 1 lounge room 1 kitchen 1 Dining room 1 laundry 1 bathroom 1 toilet room 1 Front door "room" < No walls 1 Back door "room" < No walls That Suburb house actor BP etc. I then copy an paste it around in the level. The interior will always be slightly random an different to the other one. Maybe same layout but the room objects can also be placed randomly. Bed against the wall. or in the center?
@@v8matey you should be able to do something like that with the spawn system I did in part 2 Make spawn point for walls, spawn points for furniture against the wall. But you will have to make a lot of specific spawn points, because a table can’t be placed anywhere right..
I've been building dungeons like this for a while (albeit in Unity). I believe elevation is built-in since the exits line up. If you make a room with stairs and put the exit at the top or bottom, the generator should place the next room at the correct place. Another addition is to add rules to the rooms and exits that specify what types of rooms can connect to what exit. So, you randomly pick an exit and then filter the list of available rooms based on the allowed types of the chosen exit. Then pick a room from the filtered list
@@reeanimationgaming1034 Vazgriz has an interesting video on procedural 3D dungeons. I'm not a programmer, so not sure if the language is the same as ue5, but he does define the steps and logic for his code. There could be an analogue in ue5 that you could create.
I just wanted to let you know how amazing you are at conveying what you're doing, very easy to understand and very well executed, thank you for sharing all your hard work. :)
@@reeanimationgaming1034 Mine throws errors. Though getting it completed is great. Although mine is not on a single level, and the final Sealing Wall is repeated multiple times. When finished it does works. Thanks for the tutorial! It was great way to start learning properly creating blueprint use correctly.
Throw this into the description of the video if you think these are OK chapters. Chapters: 00:00:00 Preview 00:00:58 Scene Cleanup 00:02:15 Actor Creation 00:03:33 Room Setup 00:10:48 Room Explanation 00:11:42 Sorting The Room 00:13:46 Testing The Room 00:14:06 Making a Dungeon Material 00:15:02 Setting Up Room Exits 00:18:50 Generator Spawn Room 00:20:50 Storing Exits in a List 00:25:31 Setting it up as an event 00:27:03 Spawn NextRoom Event 00:42:13 Spawn More Rooms 00:49:00 Fixing Overlapping 01:04:06 Collision Fix 01:10:42 BP Cleanup 01:12:30 Adding More Rooms 01:18:22 Closing Unused Exits 01:26:11 DUNGEON COMPLETE 01:30:00 More Rooms! 01:36:53 Generation Failsafe 01:47:33 Outro
Dude, ai have been looking for something like this. I am just starting your tutorial but seeing where it is going it definitely seems to be what I am needing to get started. I look forward to watching all your tutorials on this. Thank you!
Tried out many different methods of procedural generation before and I have to say this is the simplest guide to follow, everything is so easy to understand! There's a lot of freedom in this system also, you can make tiles of any shape or size, including ramps that lead to other floors (as long as the exits are marked)
Thanks. Yes exactly, your creativity with the room designs is what will make this dungeon really come to life.. We just have to make sure there’re enough exits to select from
Not gonna lie I love this style of tutorial. After a few weeks botting around on my own its nice to see how someone else tackles those problems who has some more base knowledge. Thanks, I needed this, gave me a ton of ideas :D
I really enjoy the raw take on the tutorial, not scripted, just flying by the seat of your pants. If "mistakes" or changes were made it was awesome seeing the process on identifying the issue and changing it. All very helpful, well explained and a great tutorial. I learned a lot from this video alone versus the others I have seen. I look forward to more of your tutorials!
just finished this part worked great, not sure if you are into multiplayer stuff but tried to ran it with 2 players and each one creates its own dungeon
IF every Dev tutorial explained the process like you, there would be less confusion for new aspiring devs. I was able to use your information and rewrite it in CPP. Thank you for the great tutorial. Just a side note. When you cast to box component, that is the cube you are choosing. To cast to the Box Collision (OverlapBox), you need to select your Box Collison (OverlapBox) in the Components Panel, then search for it in the Event Graph.
Yes, saying that though, I haven't tested what your new Collision setting is doing in the Collision presets. I'm still learning myself. And I'm doing this the same way you are at the moment. But, by the way it's set up as is seems to work fine.
I will try to remember to test and comment here later when I have time. After thinking about it, I maybe mistaken that you are casting to the cube component. Either way, it works!
This is amazing! About a month ago I was trying to figure out how to do this and i just couldn't understand and get the tutorials I followed to work! I tried making it myself but got very overwhelmed and lost motivation, so I gave up! Thank you so much for uploading this man, super super helpful!
even tho you had to figure things out on the fly and you were a little self conscious about it hurting your tutorial --it totally didnt! this was really a great explanation with a cool result! thanks for sharing this solution and your process!
Also, it is easier to select your Box Collision (OverlapBox) in your master room, create an event in the Event Graph, then go the the Dungeon Generator Event Graph, you can then cast to the Box Collision (OverlapBix).
Good suggestion and something I had been playing with but haven't figured out - can you clarify a little? In Master are you creating a custom event, or using the On Component Begin Overlap (Overlap Box) event? I find that overlap doesn't trigger if an actor is spawned on top of another one, only if one of the objects moves. Are you adding any additional code here (like destroy actor?) Thanks!
@@collider4378 I never trust begin overlap, as you say, when it spawn inside it doesn’t trigger overlap.. That is why check for overlap is much more solid
Amazing tutorial. As somebody who doesn’t yet have experience with unreal engine, this is an absolute gem. I’m going to try to do something similar for generating the rest of the dungeon around a few key rooms, such as the ending, starting, and special rooms.
Just picked up a course to learn unreal engine 5 and I had procedural dungeons in mind for my first game, so thanks mate! You're a lifesaver, I cannot thank you enough, really! Love your vids, watched a few of them, definitely inspiring and encouraging. Keep on good work and thanks again!
You are THE GOAT, I've been trying to do this for 2 months straight and you are the only one on this platform who made a good and actually enjoyable tutorial to watch and follow, huge W man keep it up 🔥🔥
@@reeanimationgaming1034 Just finished my dungeon, just got 1 question, is there a way to block off the master room entrance without messing up the other rooms? Or, if that isn't possible, a way to check if the player went through that idk.
@@reeanimationgaming1034 You know, the master room as 3 exits and 1 entrance, since only the unused exits are sealed the entrance will not be sealed by a wall so the player can go through it and fall out of the map. But I fixed it, just put a wall (in the world map not the blueprint) where the master room spawns (since it always spawns in the same direction I can put a wall where I know the entrance will spawn) and now it works fine
Man, i can't thank you enough, i was looking for something like this for months, im studying Digital Games in my College and i was looking for a way to do procedural dungeons/labyrinth, thank you : D
Thank you very much for that tutotrial, i never find a tutorial for that and i really appreciate as a beginner in unreal engine. Also your "mistakes" help me to understand better some functionnalities, so a chance we make mistakes.
I don't ever comment on youtube videos but I have to on this one. This is an amazing tutorial and I greatly appreciate the time and effort that you put into making the video.
Bro in the beginning you said you dont know how to do tutorials but for real with no fake talk or anything your tutorial style is entertaing and its just _AWESOME_😂😊 and knowledgeable i learned alot from you not only about building a room generator but in general using ue blueprints. Thank you and please keep it that way it is better to watch something not "perfect" than perfect "with no mistakes".
@@Micaniker Thanks man! I really appreciate the kind words 🙏 It encourages me to make more tutorials 🙂 Thanks for the feedback, I’m happy you like it ❤️✊
Thanks.. I find it a little odd that people are requesting multiple levels. As you can basically just make a room with two floors, and then just set the new exit point on the second floor. And it should just work 🙂 But.. It’s on my part 2 to-do-list 👍
@@reeanimationgaming1034 I was actually just thinking that as I was falling asleep. I'm going to experiment with it today. It should work perfectly fine as you've suggested
Hi! Cool tutorial! It is no needed to Spawn-Destroy every time on checking on overlap, I think that is expensive. Instead Arrows you can use a Struct of a little coliision boxs and respective arrows, and after spawning an every next room you could check on overlap of littile box collision with adjacent room and remove that Struct from Exit List. Regards, Andrew!
This is awesome. I know you find tutorials hard, but the way you do them 'warts n all' is the besy way. Kinda shows that it's okay to make mistakes and this is how you then fix them :) Keep up the good work.
Great video! I would love to see this things if you plan to expand on this tutorial: - A Boss Room that spawns at the end (like before the closing walls Event) - Some way to avoid the same room spawn 2 o 3 times in a row (I mean 2 its fine, but 3 feels more repetitive) - Maybe an Event for "Unique Rooms" so it spawns one of them always in a Dungeon (Like a Chest Room, Healing Room or a Secret Room) Also Changes I made: - A Custom Start Room: Just made a smaller room similiar to the first one and replaced it in the Start Event. - Rooms with multiple floors: Just Made the walls higher, duplicated the floor (plus added some ramps) and moved the arrows to the elevated exits. Also made the Overlap box height like the height of the walls minus 1.
Well I solved the Boss Room, heres how: - Made a Spawn Boss Room Event - This works similar to Spawn Room Event (the first nodes until "Set Latest Spawned Room" and the Object Class is the Boss Room instead of Random) but with a "Check Boss Overlap Event at the end" - Check Boss Overlap works like the Normal Overlap but replacing the Spawn Next Room with Spawn Boss Room and deleting the Room Amount stuff - In the end of this Event i put the Holes Event and the Dungeon Completed Stuff - Finally in the Check for Overlap Event, after Room Amount > 0, I put the Spawn Boss Room Event This might work for Unique Rooms aswell
Your changes are great 🙂👍 the multi floor solution is exactly how I would do it too.. Special rooms I have put on my part 2 to-do-list 👍 Same rooms spawning is something I’m not sure I can find a solution for. Other than removing used rooms from the list.. But I’m not sure that is the best solution, because some room would be fine to spawn multiple times.
@@reeanimationgaming1034 Yeah its a bit complex but I thought something like: - A variable of Room that stores the Type of room spawned - A boolean that checks if Last Room Spawned is equal to the Room Type stored - An Int that increments when the same room spawns - If Int > 2 remove the room and try again - If the´re not the same, spawn that room and reset the variables I have to try it, so I´ll update this comment if succedeed
i did a similar thing with branching paths to look like slay the spire maps and it was a real pain the butt but i got it to work. your use of arrows is super clever and i wish i had thought of that. i'm definitely going to use this tutorial for a new little dungeon looting game. thank you! :D
Thanks for this, great to see the thought process. I had been working on exactly this, just a nice simple room based implementation that I can build on. Some of the tile based versions out there are cool, but too much for my needs. Like you, I prefer understanding the code I'm working on and experimenting to see what works. Btw, this is the first I've heard of your channel and game, glad I found it. Gorm looks absolutely beautiful, you've put your heart into it. I'll be following along, looking forward to seeing how it ends up!
I don't sub. to any channel but, this time I was so freaking happy to sub to anyone. If I could, i'd sub more times, but won't allow it. Thanks a ton for this tutorial. It's perfect.
I just finished following your tutorial, thank you again, it's really great that you took the time to explain in detail and show how you solve the different problems, I appreciated your calm and ingenuity! Almost everything works, just the part to close the holes I had a little problem, the walls are never placed as they should, but I'm going to find out why
@@Tata-v4n Thanks man. Yeah, some people have problems with the hole part 😔 I hope you figure it out, and cross my fingers that it’s not a mistake in the tutorial 🤞
The only thing I would change is rather than having the reset be based on time, I would have it get the number of rooms and check if the number of rooms created is greater than last time (set to zero at the first time the timer runs.).If it is greater than the last timer run then store the current number. If it isn't greater and dungeon complete is false then call the restart level.
This was a very clear, very well done Tutorial, great for beginners that want to do stuff. 10/10 would definitly reccomend! (als the fact you left your mistakes in, and showed how you solved them is very very usefull for people, so double bonus points on that! ). Most tutorials on this subject use very complicated stuff, and you just Kept it simple.
Very nice totorial, I´ve found it very useful! I wouldn´t use timers to check for a closed dungeon but eliminating exits after an overlap and checking for exits > 0 before placing the next room. Also, overlapping seems not as the best way to make this, as it is easy for begginers to understand, but it´s really resourse inneficcient, I would use some logic check with a 2 dimension array (or 3 for a pro dungeon with different levels) to check for overlapping without generating anything so it doesn´t take so many resourses generating, colliding, eliminating.
Thanks. Yes agree with the overlap thing.. Should perhaps just spawn the overlap box alone to check, and not the entire room.. Or something completely different..
37:30 my room keeps growing to twice the size of my other room But other than that witch i fixed by only putting in world location and rotation. AWESOME Video. Taught me everything i wanted to know cant wait to start part 2. Hopping in part 2 that he tells me how to Always have rooms at the end of hallways.
I was doing something like this for my game, but problem from design perspective is that you still want some control over your layout especially if you need certain things to actually appear, not too far not to close from spawn point so I decided to keep layout mostly the same but randomly generate things inside the room. But I believe you can create some integer to count the amount of rooms that spawned and after that to spawn the specific room you need. Also look into hiding rooms(actors) that are for example of 20k units from the player so it doesn't lag the game. Those additions could make for a good part 2 for people using your system.
@@reeanimationgaming1034 I believe it does (not sure for nanite meshes), though I'm not sure if said actors stay in memory, if you were for example to generate to infinity (in the direction that player is moving).
@@reeanimationgaming1034 Personally, I actually prefer your natural approach to the subject ! You don't go too fast, and we can follow the tutorial without going back many times 😆
@@reeanimationgaming1034 Well we can also see the potential errors and how correct them, which helps us understand the code, whereas in an edited tutorial, of course the video is shorter, but the errors are not shown, so we copy the code without understanding how it works
@@reeanimationgaming1034 right,i forgot they adjust their loc and rotation dynamically in relation to the exit point so it could work.Just need them to have flat roof each.Having angled roof would be tricky though and might be too complicated for me atm.Anyway,thanks and Id look into integrating this into my randomized level system.
That is gold right there, at the very begining you already went over most questions I had, I was wondering if you were going to make the second part, like having door lockeds, some kind of path tracing, and most important, how to preserve it in the save game, so you can load it back. I mean, like any basic dungeon game where you can't continuing without a key or press a button, those logics are quite hard to prevent a dead lock or impossible to complete dungeon And it is nice to see the strugle as we usually end up in similar places ourselvs
Thing is. I’m still learning all this myself. And I’m still fumbling around and doing things wrong all the time. It was only because I got this to work so well that I decided to make a video on it. Some thing I can’t do is like making sure that we have a “main path” through the dungeon, or divide it up in sections for example.. I mean, it could be nice to have the dungeon in 3 parts with a locked door in between each section right.. Haven’t tried that out yet. In my own dungeon I’m using stream (seed), so you can get the same dungeon everytime. Which you need for save game and things like that. But I cut that part out to keep it more simple for the viewers here. I could add that in part 2, so you can set a seed for the dungeon. Thanks for watching 🙂❤️
@@reeanimationgaming1034 yah please do, like seeding it and some how persisting it, that already inspired me to try some stuff now. Also if you make a video about what you are trying to do now even though it doesn't work yet, I am sure we will find more people with ideas to make it work
@@reeanimationgaming1034 looking forward to part two,that seed system would be very helpful when you want to try out the same layout.Also just an idea,can you have like collision boxes in the master around the main room.Like a perimeter to direct where the next rooms can be spawned,basically they cant spawn outside that perimeter,would something like that work?
@@reeanimationgaming1034 we have the starting room,and the next rooms are spawned in random directions in the orientation of the exit points.Since its random,they spawn whichever way and you have collision check so they dont spawn on top of each other.Imagine a fence built around the starting room,basically collision boxes around it,if we do collision check against those so the next rooms cant spawn outside it.Basically I want a controlled way to determine the area the rooms can only be spawned at.
perhaps instead of a timer or in addition - you could make an event that detects overlaps on the exit arrows - if they are colliding with something new - the removed themselves from the list of exits. this would prevent it from looping over a bunch of exits that dont exist. and then eventualy the exit list will reflect the real amount of exits and if you detect the list is 0 length you can declare the dungeon failed and regenerate a new one
@@reeanimationgaming1034 i demoed a little of the version i created based on your video on my channel this morning ruclips.net/video/a7WokutF7YU/видео.html
Omfg, for so long I was wondering how they get those soft ambient lighting in interiors! It just felt like UE isn’t built for that! All I needed was to turn off Realtime Capture. Ffs.
Yeah, I don’t understand why the start templates are not better than this.. they could easily spend just a little more time and make them look awesome.. oh well 🤷
This tutorial is amazing! I didnt follow along step by step but I sampled your solution for the exits by making a list of all available options and its working great for me. I have a question though, would it be possible to have a set seed to re-produce specific dungeons? thank you!
BROOoo! Great tutorial!!!! What a topic too and you explain it so well. im dling UE right now, never used it b4, but saw your vid come up just had to check it. it reminded me of diablo 2. random maps is why people are still playing it now maybe 20 years later even on single player. id def like a way to put in special rooms and unique rooms thrown in at random too and how to maybe make the rooms more of an organic shape coz out door above dungeons would be cool like in n64 where rthe edge of the map is just mounds with plants on them. Super keen for pt 2 3 4 5 6... etc lol. i want to see what else we can do with this. thanks a lot for making this im glad i came across it and will be looking out for more of your videos. ty again for all the time u took to make this for us, it will save a lot of people a lot of hours especially noobs like me btw is there a way to copy and share these little nodes in your workspace to save even more time? beginning with the barebones would be great and then we can spend more time on making it look pretty
@@reeanimationgaming1034to clarify, i meant you took an hour or so to make all those blueprints do the cool randomiser thing, then if all your fans started where u left off they could spend more time adding advanced features or stylization built on the pillars of what uve left them. Is that possible to do, share the blueprints? Unreal engine open source could or would lead to some much beastier game builds if people can skip steps and build off impressively done foundations
@@badashphilosophy9533 Well, that is two different things, right? Tutorials are for people who want to learn. Giving stuff away is for the marked place. Spending time on making things to give them away for free, does not sound very appealing to me 🤷
@@reeanimationgaming1034 i hear you. so it is possible to for those who want to? thats what i was curious about, i am brand new to all of this your video was the first or second video ive watched on unreal engine and am just glad i came across it
That was a good tutorial. You've given me a great starting point for my own project's dungeon. One thing, the timer at the end didn't help me deal with UE5's infinite loop detection. No matter how I tweak the values, and even if I change the project settings, it will still occasionally throw errors.
@@groadybones thanks man 🙂 That is odd with the timer thing. It also might not be the best solution in the world. Are you sure the timer is running at all?
@@reeanimationgaming1034 Wow! You're even responsive in the comments! I'm certain that the timer is running. What version of UE5 did you make this tutorial with?
@@reeanimationgaming1034 I'm curious if you help me with an adaptation to this procedural dungeon. I would like to make it so that the room list is specific to the room that was previously placed. So when a large room is placed, I want the subsequent room to be one of my hallways, but after a hallway is placed, I want the subsequent room to be a large room. I just don't have the background knowledge to decide on a proper approach beforehand, but here's what I'm thinking to start: In the blueprint of each room, I add a component that is a list of viable rooms after that room is placed. Then, in the dungeon gen blueprint, instead of just pulling a random room from the giant list of rooms, I would get the component that contains the list of room options, pass that into the blueprint and randomly select from that instead. But I think if I take this approach, I would either need to tweak the way we're choosing which exit we're placing the next room on, or I would need to add steps to figure out what type of room the exit we've selected belongs to. What do you think?
@@reeanimationgaming1034 I've figured out that by setting a counter for the number of room placement attempts, and having that be what triggers the new dungeon generation attempt makes it so that an infinite loop is entirely impossible, so there's no way to trigger the infinite loop detected error. This can be done very similar to the way we have a counter set up to count the number of rooms. I did all the work for this in the CheckForOverlaps event. Decrement when we fail a placement and have to delete the actor, and reset whenever we successfully place a room.
4:40 Set the OverlapBox to have an extent of 50,50,50 versus the default of 32,32,32 and they will match. EDIT: Best to set it a hair smaller actually. Like 49,49,49. Otherwise you will get an infinite loop because the valid next room will count as overlapping.
@@reeanimationgaming1034 Completely understandable. I feel like my brain turns off when I go to record tutorials. Loving what I have seen so far as I follow along.
1:37:50 I would not use a timer for this. On older or slower systems, this timer might cause an infinite loop or creating and destroying dungeons because the host computer is slow. If it were me, if there were no more room exits in the array, I'd have the script exit and call the dungeon complete...or, select the last room placed, delete it and place another that has more exits. Any sort of timer in procedural generation is a REALLY BAD IDEA from a host hardware pov. Especially when you start adding lots of meshes and the vertex count rapidly increases.
@@TheJMBon Alright, didn’t know that 😮 I honestly don’t know a lot about good practices in Unreal, and I probably shouldn’t be teaching anyone anything.. But most people are learning something from this, so I consider that a win. Despite the issues the system have 🙂
@@reeanimationgaming1034 No, you're doing great. Your video is really the first one that I've seen do proc dungeon generation from end to end. It's really good and don't let anyone tell you otherwise. I've been making games for just 2 years in UE (but have done c++ software dev controlling hardware for 16 years) and you're doing fine. I'd have no issues teaming up with you to make a game.
I like this a lot, it's so logical and makes so much sense. I have no use for it, but my mind is racing to come up with ideas to distract me from the two projects I'm already distracted enough from lol I just gotta ask, why would you need to clear the overlapped rooms array on the false side of the branch? That makes the logic say "if the array is not empty, clear it. Otherwise, the array is empty, so clear it." It's already empty, I can't imagine a reason you would need to clear an array you have already established is definitely empty.
I don’t know 😁 Just to make sure? This is not a perfect solution at all, I’m well aware of that. But it’s a great start to get people started, and improve things on their own 🙂
I have a question, when I duplicate DungeonRoom 1 to create another room I can't delete the arrows (point 01:12:35). This is because it is related to the Master Room. What can I do? Great video anyway really excellent work, thank you so much my friend
I have another problem. although I put more rooms in the list of rooms, only 2 or 4 appear (I set the amount of rooms equal to 30) ps: I apologize but your tutorial is the only one that seems to work and you explain each step very well, so I want to ask you how to do it
@@reeanimationgaming1034 Thank you very much, I managed to solve the problem I made the changes to Dungeon Room 1 by eliminating the arrows from the Master Room and at that point everything worked correctly. Thanks again and great work, I signed up and will gladly follow other tutorials if you want to publish them
For anyone here who may know, do the room sizes have to be the same size or can you use different room sizes based on room selection? E.g. master room collision is 30x30, can you create rooms with collision size 50x50?
Hi Guys! Please let me know if this Tutorial was useful to You. I want to know. And please share if you make anything cool with this, I also want to see that 🙂
If you have better ways of doing some of these things I do in the video. Please let me know.. I'm always ready to learn 🙂
- Have a Nice Day 🙂
Hello, I have an idea for a tutorial much like the one in this video.
But for interiors of buildings.
For example a suburb house.
Say I purchased a house model thats only the exterior model off marketplace.
I add a Volume(s)? inside the house model and place Doors and Window markers that line up to the exterior building model / texture.
And the interior of the house will procedural generate.
1 Hallway.
1 or more rooms, each room must have a door an window.
1 lounge room
1 kitchen
1 Dining room
1 laundry
1 bathroom
1 toilet room
1 Front door "room" < No walls
1 Back door "room" < No walls
That Suburb house actor BP etc.
I then copy an paste it around in the level. The interior will always be slightly random an different to the other one.
Maybe same layout but the room objects can also be placed randomly. Bed against the wall. or in the center?
@@v8matey you should be able to do something like that with the spawn system I did in part 2
Make spawn point for walls, spawn points for furniture against the wall. But you will have to make a lot of specific spawn points, because a table can’t be placed anywhere right..
Very usefull ! it's holydays and i need to learn well and fast for fun ! Perfect tutorial ! very well detailled and handable for a noob like me !
@@megaamiga3169 Nice. Thanks 🙂✊
You can bet I will share you what I make from your tutorial. This is what I need to for the core of my game.
Part 2 would be awesome! It would be cool to have something that adds elevation changes like stairs or elevators.
You are not the first one suggesting that 🙂
I second this
I've been building dungeons like this for a while (albeit in Unity). I believe elevation is built-in since the exits line up. If you make a room with stairs and put the exit at the top or bottom, the generator should place the next room at the correct place. Another addition is to add rules to the rooms and exits that specify what types of rooms can connect to what exit. So, you randomly pick an exit and then filter the list of available rooms based on the allowed types of the chosen exit. Then pick a room from the filtered list
@@bixarrio5251 yes.. It just works 🙂
Part 2 is up btw
@@reeanimationgaming1034 Vazgriz has an interesting video on procedural 3D dungeons. I'm not a programmer, so not sure if the language is the same as ue5, but he does define the steps and logic for his code. There could be an analogue in ue5 that you could create.
I just wanted to let you know how amazing you are at conveying what you're doing, very easy to understand and very well executed, thank you for sharing all your hard work. :)
@@alexh2548 Thanks man. I appreciate the kind words 🙏❤️
And thank YOU for watching 🙂✊
Having done thousands of tutorials. I have to say this one is an absolute gem. The way you make errors disappear is unparalleled.
Haha.. Thanks. I am very surprised myself that this has no errors.. 🙂
@@reeanimationgaming1034 Mine throws errors. Though getting it completed is great. Although mine is not on a single level, and the final Sealing Wall is repeated multiple times. When finished it does works. Thanks for the tutorial! It was great way to start learning properly creating blueprint use correctly.
Throw this into the description of the video if you think these are OK chapters.
Chapters:
00:00:00 Preview
00:00:58 Scene Cleanup
00:02:15 Actor Creation
00:03:33 Room Setup
00:10:48 Room Explanation
00:11:42 Sorting The Room
00:13:46 Testing The Room
00:14:06 Making a Dungeon Material
00:15:02 Setting Up Room Exits
00:18:50 Generator Spawn Room
00:20:50 Storing Exits in a List
00:25:31 Setting it up as an event
00:27:03 Spawn NextRoom Event
00:42:13 Spawn More Rooms
00:49:00 Fixing Overlapping
01:04:06 Collision Fix
01:10:42 BP Cleanup
01:12:30 Adding More Rooms
01:18:22 Closing Unused Exits
01:26:11 DUNGEON COMPLETE
01:30:00 More Rooms!
01:36:53 Generation Failsafe
01:47:33 Outro
I'm sorry, forgot to do this.. Thank you so much.. I have pasted it in now 🙂
Learnt more QOL tidbits from the first 20 minutes of this video than I have over the past 50 tutorial videos I've seen - good stuff 👍
@@SoggySocksGames Nice. Thanks 🙂🙏
Dude, ai have been looking for something like this. I am just starting your tutorial but seeing where it is going it definitely seems to be what I am needing to get started. I look forward to watching all your tutorials on this. Thank you!
@@docendgame Nice! Thank you for the kind words, and thanks for dropping by my channel ❤️🙏
Tried out many different methods of procedural generation before and I have to say this is the simplest guide to follow, everything is so easy to understand!
There's a lot of freedom in this system also, you can make tiles of any shape or size, including ramps that lead to other floors (as long as the exits are marked)
Thanks. Yes exactly, your creativity with the room designs is what will make this dungeon really come to life..
We just have to make sure there’re enough exits to select from
Not gonna lie I love this style of tutorial. After a few weeks botting around on my own its nice to see how someone else tackles those problems who has some more base knowledge. Thanks, I needed this, gave me a ton of ideas :D
Awesome. Thanks 🙂
Please do share if you have improvements to this video ✊
music was a good touch as well
@@eliottsmallwood2140 Hehe, ok. First time I hear that 🙂
I actually made the music myself ✊
I really enjoy the raw take on the tutorial, not scripted, just flying by the seat of your pants. If "mistakes" or changes were made it was awesome seeing the process on identifying the issue and changing it. All very helpful, well explained and a great tutorial. I learned a lot from this video alone versus the others I have seen. I look forward to more of your tutorials!
@@TheDanimaul Thanks man. I appreciate the nice feedback ❤️🙏
It encourages me to make more 🙂
just finished this part worked great, not sure if you are into multiplayer stuff but tried to ran it with 2 players and each one creates its own dungeon
@@hernangomar5445 I haven’t touched multiplayer at all.. It scares the shit out of me 😬
IF every Dev tutorial explained the process like you, there would be less confusion for new aspiring devs. I was able to use your information and rewrite it in CPP. Thank you for the great tutorial. Just a side note. When you cast to box component, that is the cube you are choosing. To cast to the Box Collision (OverlapBox), you need to select your Box Collison (OverlapBox) in the Components Panel, then search for it in the Event Graph.
Thanks for the kind words ❤️
Are you saying that I’m casting to the geometry box and not the overlap box?
But how is it still working then?
Yes, saying that though, I haven't tested what your new Collision setting is doing in the Collision presets. I'm still learning myself. And I'm doing this the same way you are at the moment. But, by the way it's set up as is seems to work fine.
I will try to remember to test and comment here later when I have time. After thinking about it, I maybe mistaken that you are casting to the cube component. Either way, it works!
Это просто невероятно круто!!! Спасибо тебе огромное, ты восхитительный человек!
This is amazing! About a month ago I was trying to figure out how to do this and i just couldn't understand and get the tutorials I followed to work! I tried making it myself but got very overwhelmed and lost motivation, so I gave up! Thank you so much for uploading this man, super super helpful!
Thanks for watching man 🙏
even tho you had to figure things out on the fly and you were a little self conscious about it hurting your tutorial --it totally didnt! this was really a great explanation with a cool result! thanks for sharing this solution and your process!
Thanks for the kind words 🙂🙏
Perfect timing, I searched for exactly this type of tutorial not too long ago, thanks!
Thank you too. I hope it will be useful to you 🙏
Also, it is easier to select your Box Collision (OverlapBox) in your master room, create an event in the Event Graph, then go the the Dungeon Generator Event Graph, you can then cast to the Box Collision (OverlapBix).
Oh.. That is actually a good idea, and much simpler I think. Thank 🙂
Good suggestion and something I had been playing with but haven't figured out - can you clarify a little? In Master are you creating a custom event, or using the On Component Begin Overlap (Overlap Box) event? I find that overlap doesn't trigger if an actor is spawned on top of another one, only if one of the objects moves. Are you adding any additional code here (like destroy actor?) Thanks!
@@collider4378 I never trust begin overlap, as you say, when it spawn inside it doesn’t trigger overlap.. That is why check for overlap is much more solid
Amazing tutorial. As somebody who doesn’t yet have experience with unreal engine, this is an absolute gem. I’m going to try to do something similar for generating the rest of the dungeon around a few key rooms, such as the ending, starting, and special rooms.
@@darion7224 Nice. I’m happy you found it useful 🙂
Keep going ✊
Just picked up a course to learn unreal engine 5 and I had procedural dungeons in mind for my first game, so thanks mate! You're a lifesaver, I cannot thank you enough, really! Love your vids, watched a few of them, definitely inspiring and encouraging. Keep on good work and thanks again!
@@Velgan83 Thanks man. Appreciate the kind words 🙂❤️
@@reeanimationgaming1034 You're welcome bro! That's the least I can do🙂🖤
hello, thank you, it’s really great! I'm French, but the tutorial is so good that I prefer this one with the subtitles than another 👍
@@Tata-v5n Thanks man. I appreciate the kind words ❤️🙏
Jesus, I was literally on a hunt for this topic for a few weeks now! Can’t believe this came out at such a perfect time! ❤
Hehe. Awesome 🙂✊
Ive been researching different methods of procedural generation and find this video very helpful. Thank you!
Cool 🙂
You are THE GOAT, I've been trying to do this for 2 months straight and you are the only one on this platform who made a good and actually enjoyable tutorial to watch and follow, huge W man keep it up 🔥🔥
@@itztomioka_ Thanks for the kind words man. I really appreciate it 🙂❤️
@@reeanimationgaming1034 Just finished my dungeon, just got 1 question, is there a way to block off the master room entrance without messing up the other rooms? Or, if that isn't possible, a way to check if the player went through that idk.
@@itztomioka_ not sure what you mean by block off
@@reeanimationgaming1034 You know, the master room as 3 exits and 1 entrance, since only the unused exits are sealed the entrance will not be sealed by a wall so the player can go through it and fall out of the map. But I fixed it, just put a wall (in the world map not the blueprint) where the master room spawns (since it always spawns in the same direction I can put a wall where I know the entrance will spawn) and now it works fine
@@itztomioka_ I would make a “start room” and spawn that as the first room, and not the master room itself.
Man, i can't thank you enough, i was looking for something like this for months, im studying Digital Games in my College and i was looking for a way to do procedural dungeons/labyrinth, thank you : D
🙂🙏
This is probably the most useful tutorial I have seen on RUclips. Thank you!
Awesome! Thanks 🙂❤️
Thank you very much for that tutotrial, i never find a tutorial for that and i really appreciate as a beginner in unreal engine. Also your "mistakes" help me to understand better some functionnalities, so a chance we make mistakes.
Nice, Thanks for the kind words 🙂
Part 2, yes please =D
Fantastic! Thanks for putting in the work to share this with us
🙂✊
Awesome! Would love to see more stuff like that
Noted 🙂
This was exactly what I needed and the pacing was perfect for a beginner like me. Thank you for this!
Thanks man, I’m happy you liked it 🙂❤️
Great tutorial, helped a lot, it was also nice how you actually explained what was going on unlike most tutorials.
@@HmmIndeedQuite Thanks 🙂
Smashed that subscribe & like button faster than the speed of light.
Just in time I needed a tutorial for my game. Thank you.
Thanks 🙂✊
I don't ever comment on youtube videos but I have to on this one. This is an amazing tutorial and I greatly appreciate the time and effort that you put into making the video.
Thanks man 🙏
I also appreciate your kind words 🙂❤️
insanely good video
@@eliottsmallwood2140 Thanks man! It means a lot 🙂❤️
Bro in the beginning you said you dont know how to do tutorials but for real with no fake talk or anything your tutorial style is entertaing and its just _AWESOME_😂😊 and knowledgeable i learned alot from you not only about building a room generator but in general using ue blueprints. Thank you and please keep it that way it is better to watch something not "perfect" than perfect "with no mistakes".
@@Micaniker Thanks man! I really appreciate the kind words 🙏
It encourages me to make more tutorials 🙂
Thanks for the feedback, I’m happy you like it ❤️✊
Finally! i was looking for something like this for ages
Me too ✊
super clear and concise! I followed this pretty easily and I don't know UE that well. looking forward to pt.2 with multi-levels
Thanks.. I find it a little odd that people are requesting multiple levels. As you can basically just make a room with two floors, and then just set the new exit point on the second floor. And it should just work 🙂
But.. It’s on my part 2 to-do-list 👍
@@reeanimationgaming1034 I was actually just thinking that as I was falling asleep. I'm going to experiment with it today. It should work perfectly fine as you've suggested
Hi! Cool tutorial! It is no needed to Spawn-Destroy every time on checking on overlap, I think that is expensive. Instead Arrows you can use a Struct of a little coliision boxs and respective arrows, and after spawning an every next room you could check on overlap of littile box collision with adjacent room and remove that Struct from Exit List. Regards, Andrew!
I think I know what you mean. And I DO need to find a better solution to this problem, thanks 🙂
Ideally it can be made from math of graphs, but I'm very lazy for learn it 😆
@@andy0x58 😁 Join the club
This is awesome. I know you find tutorials hard, but the way you do them 'warts n all' is the besy way. Kinda shows that it's okay to make mistakes and this is how you then fix them :) Keep up the good work.
Thanks man. It means a lot 🙏❤️
loved watching you figure out how to do it as you made the tutorial, lol. Your tutorial was awesome, and got me right where I need to be!
@@BoodleBops Nice. Thanks 🙂
Great video!
I would love to see this things if you plan to expand on this tutorial:
- A Boss Room that spawns at the end (like before the closing walls Event)
- Some way to avoid the same room spawn 2 o 3 times in a row (I mean 2 its fine, but 3 feels more repetitive)
- Maybe an Event for "Unique Rooms" so it spawns one of them always in a Dungeon (Like a Chest Room, Healing Room or a Secret Room)
Also Changes I made:
- A Custom Start Room: Just made a smaller room similiar to the first one and replaced it in the Start Event.
- Rooms with multiple floors: Just Made the walls higher, duplicated the floor (plus added some ramps) and moved the arrows to the elevated exits. Also made the Overlap box height like the height of the walls minus 1.
Well I solved the Boss Room, heres how:
- Made a Spawn Boss Room Event
- This works similar to Spawn Room Event (the first nodes until "Set Latest Spawned Room" and the Object Class is the Boss Room instead of Random) but with a "Check Boss Overlap Event at the end"
- Check Boss Overlap works like the Normal Overlap but replacing the Spawn Next Room with Spawn Boss Room and deleting the Room Amount stuff
- In the end of this Event i put the Holes Event and the Dungeon Completed Stuff
- Finally in the Check for Overlap Event, after Room Amount > 0, I put the Spawn Boss Room Event
This might work for Unique Rooms aswell
Your changes are great 🙂👍 the multi floor solution is exactly how I would do it too..
Special rooms I have put on my part 2 to-do-list 👍
Same rooms spawning is something I’m not sure I can find a solution for. Other than removing used rooms from the list.. But I’m not sure that is the best solution, because some room would be fine to spawn multiple times.
@@reeanimationgaming1034 Yeah its a bit complex but I thought something like:
- A variable of Room that stores the Type of room spawned
- A boolean that checks if Last Room Spawned is equal to the Room Type stored
- An Int that increments when the same room spawns
- If Int > 2 remove the room and try again
- If the´re not the same, spawn that room and reset the variables
I have to try it, so I´ll update this comment if succedeed
@@CrimsongCatDev Yeah, it does require some more stuff in the rooms them selves if you want to categorize them in some way
@@CrimsongCatDev Did it succeed?
big help, couldn't find any tutorial that actually helped
🙂🙏
Cup of coffee and some popcorn?! 😂
@@_NoxStrix_ Good time right 🙂
i did a similar thing with branching paths to look like slay the spire maps and it was a real pain the butt but i got it to work. your use of arrows is super clever and i wish i had thought of that. i'm definitely going to use this tutorial for a new little dungeon looting game. thank you! :D
Cool man. Thanks 🙂
Loved it, thank you!
Thank YOU 🙂✊
Nice and informative video, was very helpful for me.
@@vadymrekun4574 Thanks 🙂❤️
Thank you so much for this tutorial, It is very useful and I can't wait for the second part!!
Thanks.. 🙂
Amazing tutorial !
Thanks man, part 2 would be cool.
Thanks.. I’m thinking about it 🙂
Was also looking for this like others, thank you
🙏
That is exactly what I wanted, Great work, and Thank you!
Thanks, no problem 🙂❤️
Thanks for this because i was following some outdated tutorials
🤜🤛
This was so useful. Thanks for the effort. I think you really explained everything you did very well. ❤
Thank you very much for the kind words ❤
Thanks for this, great to see the thought process. I had been working on exactly this, just a nice simple room based implementation that I can build on. Some of the tile based versions out there are cool, but too much for my needs. Like you, I prefer understanding the code I'm working on and experimenting to see what works. Btw, this is the first I've heard of your channel and game, glad I found it. Gorm looks absolutely beautiful, you've put your heart into it. I'll be following along, looking forward to seeing how it ends up!
Thanks man! Appreciate you dropping by and staying around 🙂🙏❤️
Really Excellent tutorial, really helped seeing all the steps.
🙂❤️
I don't sub. to any channel but, this time I was so freaking happy to sub to anyone. If I could, i'd sub more times, but won't allow it. Thanks a ton for this tutorial. It's perfect.
Thanks man 🙂🙏
Simply Amazing my Guy!!! More like this!!
@@khrissxander Thanks you 🫵🏻🙂
I just finished following your tutorial, thank you again, it's really great that you took the time to explain in detail and show how you solve the different problems, I appreciated your calm and ingenuity! Almost everything works, just the part to close the holes I had a little problem, the walls are never placed as they should, but I'm going to find out why
@@Tata-v4n Thanks man. Yeah, some people have problems with the hole part 😔
I hope you figure it out, and cross my fingers that it’s not a mistake in the tutorial 🤞
Thank you so much, the video is super helpful !
@@Mathieu-ov6li 🙂🙏
I love you for making this! I have been looking for sooo long!
🙂🙏
The only thing I would change is rather than having the reset be based on time, I would have it get the number of rooms and check if the number of rooms created is greater than last time (set to zero at the first time the timer runs.).If it is greater than the last timer run then store the current number. If it isn't greater and dungeon complete is false then call the restart level.
But that would mean that it would reset every time a room fails… Right?
Great Video! Thank you for creating this. Very easy to follow even for noobs.
Thanks for the kind words 🙏❤️
Awesome content, already subscribed! 😄
Thanks for being here. I means a lot to me 🙏❤️
This was a very clear, very well done Tutorial, great for beginners that want to do stuff. 10/10 would definitly reccomend! (als the fact you left your mistakes in, and showed how you solved them is very very usefull for people, so double bonus points on that! ). Most tutorials on this subject use very complicated stuff, and you just Kept it simple.
Thanks. Appreciate the kind words 🙂🙏
31:28 perhaps before the split, the transform input is taken as null and after the split, it is defaulted to...default values
Thanks for this tutorial. Keep going you do it well ! Best
Thanks 🙂
I like what you i've done. i've never touch unreal untill today. i had a lot of fun following along
Nice! 🙂 Keep going, and thanks for watching ❤️
Insane work my man, keep it up
Thanks 🙏
Very nice totorial, I´ve found it very useful!
I wouldn´t use timers to check for a closed dungeon but eliminating exits after an overlap and checking for exits > 0 before placing the next room.
Also, overlapping seems not as the best way to make this, as it is easy for begginers to understand, but it´s really resourse inneficcient, I would use some logic check with a 2 dimension array (or 3 for a pro dungeon with different levels) to check for overlapping without generating anything so it doesn´t take so many resourses generating, colliding, eliminating.
Thanks. Yes agree with the overlap thing.. Should perhaps just spawn the overlap box alone to check, and not the entire room.. Or something completely different..
Thank you for this guide. I plan to enhance these dungeons a bit by adding additional layers :>
Awesome ✊🙂
Thanks!
Wow man!! Thanks! My first super thanks donation. This is epic dude. I appreciate it SO much 🙏❤️
What a great day thanks to you 🙂✊
Great as Always Ronnie.
🙂✊
37:30 my room keeps growing to twice the size of my other room
But other than that witch i fixed by only putting in world location and rotation. AWESOME Video.
Taught me everything i wanted to know cant wait to start part 2.
Hopping in part 2 that he tells me how to Always have rooms at the end of hallways.
It’s because your exit arrows are scaled up
@@reeanimationgaming1034 thank you man. ima go fix it now.
Does part 2 cover how to always add rooms to hallways?
@@lazarobenitez4206 no, unfortunately not.
So cool and thanks so much for!
Thanks YOU for watching 🙂❤️
Amazing tutorial
Thanks 🙂🙏
Great video!
🙂🙏
I was doing something like this for my game, but problem from design perspective is that you still want some control over your layout especially if you need certain things to actually appear, not too far not to close from spawn point so I decided to keep layout mostly the same but randomly generate things inside the room. But I believe you can create some integer to count the amount of rooms that spawned and after that to spawn the specific room you need. Also look into hiding rooms(actors) that are for example of 20k units from the player so it doesn't lag the game. Those additions could make for a good part 2 for people using your system.
Good suggestions.. But doesn’t unreal hide geometry outside of the camera view automatically?
@@reeanimationgaming1034 I believe it does (not sure for nanite meshes), though I'm not sure if said actors stay in memory, if you were for example to generate to infinity (in the direction that player is moving).
This is fantastic. Subbed and looking forward to more for sure. Great work man! :)
Thanks 🙂🙏
This is fantastic!!!
Thanks 🙂🙏
Thank you soooo much ! I'm waiting for a part 2 ;)
Oh man.. It feels like I have to do a part 2 now 😁 Tutorials are hard. I envy those people who make these fancy nicely edited tutorials
@@reeanimationgaming1034 Personally, I actually prefer your natural approach to the subject ! You don't go too fast, and we can follow the tutorial without going back many times 😆
@@Monokirb even though the tutorial is 10 times longer than a good produced one?
@@reeanimationgaming1034 Well we can also see the potential errors and how correct them, which helps us understand the code, whereas in an edited tutorial, of course the video is shorter, but the errors are not shown, so we copy the code without understanding how it works
@@Monokirb makes sense 🙂👍
would be cool to expand it to like multistory,in part 2 maybe?great video
Thanks 🙂
Would be fairly easy to do. Just make a room with stairs and make sure that room has exits to spawn new rooms from 🙂
@@reeanimationgaming1034 right,i forgot they adjust their loc and rotation dynamically in relation to the exit point so it could work.Just need them to have flat roof each.Having angled roof would be tricky though and might be too complicated for me atm.Anyway,thanks and Id look into integrating this into my randomized level system.
@@MrPangahas yeah, you can’t really have taller rooms then. Unless you make the stair go up a few extra room hights
That is gold right there, at the very begining you already went over most questions I had, I was wondering if you were going to make the second part, like having door lockeds, some kind of path tracing, and most important, how to preserve it in the save game, so you can load it back.
I mean, like any basic dungeon game where you can't continuing without a key or press a button, those logics are quite hard to prevent a dead lock or impossible to complete dungeon
And it is nice to see the strugle as we usually end up in similar places ourselvs
Thing is. I’m still learning all this myself. And I’m still fumbling around and doing things wrong all the time. It was only because I got this to work so well that I decided to make a video on it.
Some thing I can’t do is like making sure that we have a “main path” through the dungeon, or divide it up in sections for example.. I mean, it could be nice to have the dungeon in 3 parts with a locked door in between each section right.. Haven’t tried that out yet.
In my own dungeon I’m using stream (seed), so you can get the same dungeon everytime. Which you need for save game and things like that. But I cut that part out to keep it more simple for the viewers here.
I could add that in part 2, so you can set a seed for the dungeon.
Thanks for watching 🙂❤️
@@reeanimationgaming1034 yah please do, like seeding it and some how persisting it, that already inspired me to try some stuff now.
Also if you make a video about what you are trying to do now even though it doesn't work yet, I am sure we will find more people with ideas to make it work
@@reeanimationgaming1034 looking forward to part two,that seed system would be very helpful when you want to try out the same layout.Also just an idea,can you have like collision boxes in the master around the main room.Like a perimeter to direct where the next rooms can be spawned,basically they cant spawn outside that perimeter,would something like that work?
@@MrPangahas I am not sure what you mean here 😬
@@reeanimationgaming1034 we have the starting room,and the next rooms are spawned in random directions in the orientation of the exit points.Since its random,they spawn whichever way and you have collision check so they dont spawn on top of each other.Imagine a fence built around the starting room,basically collision boxes around it,if we do collision check against those so the next rooms cant spawn outside it.Basically I want a controlled way to determine the area the rooms can only be spawned at.
perhaps instead of a timer or in addition - you could make an event that detects overlaps on the exit arrows - if they are colliding with something new - the removed themselves from the list of exits. this would prevent it from looping over a bunch of exits that dont exist. and then eventualy the exit list will reflect the real amount of exits and if you detect the list is 0 length you can declare the dungeon failed and regenerate a new one
Yeah. There’re probably many ways to solve this. It’s hard stuff for my brain to understand
@@reeanimationgaming1034 i demoed a little of the version i created based on your video on my channel this morning ruclips.net/video/a7WokutF7YU/видео.html
Great tutorial! Thanks for sharing
Thanks for watching 🙂🙏
Thank you for the tutorial
Thanks for being here 🙏
I made something similar to this in the past then accidentally deleted it... Good to have some reference if I needed to remake it.
🙂
Incredible, thx a lot
Thank YOU 🙂🙏
Omfg, for so long I was wondering how they get those soft ambient lighting in interiors! It just felt like UE isn’t built for that! All I needed was to turn off Realtime Capture. Ffs.
Yeah, I don’t understand why the start templates are not better than this.. they could easily spend just a little more time and make them look awesome.. oh well 🤷
Same here! After 5 minutes I already opened an other project to fix this 🙂
@@deliciousagony Hehe. Great 🙂✊
2.6k views in 1 day.
its safe to say this video is a hit!
It’s mind blowingly good for my small channel here 🙏
This tutorial is amazing! I didnt follow along step by step but I sampled your solution for the exits by making a list of all available options and its working great for me. I have a question though, would it be possible to have a set seed to re-produce specific dungeons? thank you!
@@Finneganmac Thanks for the kind words 🙂
Yes, I go over seeds in part 1 or 2 🙂
BROOoo! Great tutorial!!!!
What a topic too and you explain it so well. im dling UE right now, never used it b4, but saw your vid come up just had to check it. it reminded me of diablo 2. random maps is why people are still playing it now maybe 20 years later even on single player. id def like a way to put in special rooms and unique rooms thrown in at random too and how to maybe make the rooms more of an organic shape coz out door above dungeons would be cool like in n64 where rthe edge of the map is just mounds with plants on them. Super keen for pt 2 3 4 5 6... etc lol. i want to see what else we can do with this. thanks a lot for making this im glad i came across it and will be looking out for more of your videos. ty again for all the time u took to make this for us, it will save a lot of people a lot of hours especially noobs like me
btw is there a way to copy and share these little nodes in your workspace to save even more time? beginning with the barebones would be great and then we can spend more time on making it look pretty
Thanks for the kind words. I really appreciate it 🙏❤️
Copy and share notes in the workspace? I don’t know what you mean by that. Sorry 😬
@@reeanimationgaming1034to clarify, i meant you took an hour or so to make all those blueprints do the cool randomiser thing, then if all your fans started where u left off they could spend more time adding advanced features or stylization built on the pillars of what uve left them. Is that possible to do, share the blueprints? Unreal engine open source could or would lead to some much beastier game builds if people can skip steps and build off impressively done foundations
@@badashphilosophy9533 Well, that is two different things, right?
Tutorials are for people who want to learn. Giving stuff away is for the marked place.
Spending time on making things to give them away for free, does not sound very appealing to me 🤷
@@reeanimationgaming1034 i hear you. so it is possible to for those who want to? thats what i was curious about, i am brand new to all of this your video was the first or second video ive watched on unreal engine and am just glad i came across it
@@badashphilosophy9533 🙂
That was a good tutorial. You've given me a great starting point for my own project's dungeon. One thing, the timer at the end didn't help me deal with UE5's infinite loop detection. No matter how I tweak the values, and even if I change the project settings, it will still occasionally throw errors.
@@groadybones thanks man 🙂
That is odd with the timer thing. It also might not be the best solution in the world. Are you sure the timer is running at all?
@@reeanimationgaming1034 Wow! You're even responsive in the comments!
I'm certain that the timer is running. What version of UE5 did you make this tutorial with?
@@groadybones Not sure. 5.1 or 5.2 I think.
As long as my channel is not bigger, and can still keep up with the comments 🙂
@@reeanimationgaming1034 I'm curious if you help me with an adaptation to this procedural dungeon.
I would like to make it so that the room list is specific to the room that was previously placed. So when a large room is placed, I want the subsequent room to be one of my hallways, but after a hallway is placed, I want the subsequent room to be a large room. I just don't have the background knowledge to decide on a proper approach beforehand, but here's what I'm thinking to start:
In the blueprint of each room, I add a component that is a list of viable rooms after that room is placed. Then, in the dungeon gen blueprint, instead of just pulling a random room from the giant list of rooms, I would get the component that contains the list of room options, pass that into the blueprint and randomly select from that instead. But I think if I take this approach, I would either need to tweak the way we're choosing which exit we're placing the next room on, or I would need to add steps to figure out what type of room the exit we've selected belongs to.
What do you think?
@@reeanimationgaming1034 I've figured out that by setting a counter for the number of room placement attempts, and having that be what triggers the new dungeon generation attempt makes it so that an infinite loop is entirely impossible, so there's no way to trigger the infinite loop detected error. This can be done very similar to the way we have a counter set up to count the number of rooms. I did all the work for this in the CheckForOverlaps event. Decrement when we fail a placement and have to delete the actor, and reset whenever we successfully place a room.
I need something like this that works with the voxel plugin in an open world. (Seed based random world like minecraft)
@@GES1985 Ok 🙂 Good luck on your journey ✊
4:40 Set the OverlapBox to have an extent of 50,50,50 versus the default of 32,32,32 and they will match.
EDIT: Best to set it a hair smaller actually. Like 49,49,49. Otherwise you will get an infinite loop because the valid next room will count as overlapping.
Haha. Thanks 🙂 I’m an idiot at things like that.. Just doesn’t make a lot of sense to me 😬
@@reeanimationgaming1034 Completely understandable. I feel like my brain turns off when I go to record tutorials.
Loving what I have seen so far as I follow along.
I'm glad you said it I was going to. Collision boxes/spheres go by radius not diameter so yeah I had the same solution.
@@EagleTopGaming thanks 🙂
Yeah, I feel the same, brain turns off 😁
1:37:50 I would not use a timer for this. On older or slower systems, this timer might cause an infinite loop or creating and destroying dungeons because the host computer is slow. If it were me, if there were no more room exits in the array, I'd have the script exit and call the dungeon complete...or, select the last room placed, delete it and place another that has more exits. Any sort of timer in procedural generation is a REALLY BAD IDEA from a host hardware pov. Especially when you start adding lots of meshes and the vertex count rapidly increases.
@@TheJMBon Alright, didn’t know that 😮
I honestly don’t know a lot about good practices in Unreal, and I probably shouldn’t be teaching anyone anything.. But most people are learning something from this, so I consider that a win. Despite the issues the system have 🙂
@@reeanimationgaming1034 No, you're doing great. Your video is really the first one that I've seen do proc dungeon generation from end to end. It's really good and don't let anyone tell you otherwise. I've been making games for just 2 years in UE (but have done c++ software dev controlling hardware for 16 years) and you're doing fine. I'd have no issues teaming up with you to make a game.
@@TheJMBon interesting 🙂
Please join my discord.. I might be asking for a programmer in the future ✊
I like this a lot, it's so logical and makes so much sense. I have no use for it, but my mind is racing to come up with ideas to distract me from the two projects I'm already distracted enough from lol
I just gotta ask, why would you need to clear the overlapped rooms array on the false side of the branch? That makes the logic say "if the array is not empty, clear it. Otherwise, the array is empty, so clear it." It's already empty, I can't imagine a reason you would need to clear an array you have already established is definitely empty.
I don’t know 😁 Just to make sure?
This is not a perfect solution at all, I’m well aware of that. But it’s a great start to get people started, and improve things on their own 🙂
bro holy sh* thank you!
🤜🤛
I have a question, when I duplicate DungeonRoom 1 to create another room I can't delete the arrows (point 01:12:35). This is because it is related to the Master Room. What can I do?
Great video anyway really excellent work, thank you so much my friend
I have another problem. although I put more rooms in the list of rooms, only 2 or 4 appear (I set the amount of rooms equal to 30)
ps: I apologize but your tutorial is the only one that seems to work and you explain each step very well, so I want to ask you how to do it
@@CoopTv_RUclips don’t put any exit arrow in the master room. Put them in the child instead
@@CoopTv_RUclips not sure about this problem.. You sure you have done the same as I do in the video?
@@reeanimationgaming1034 Thank you very much, I managed to solve the problem I made the changes to Dungeon Room 1 by eliminating the arrows from the Master Room and at that point everything worked correctly. Thanks again and great work, I signed up and will gladly follow other tutorials if you want to publish them
@@CoopTv_RUclips That is great 🙂
I will try and do more tutorials. 🙂
For anyone here who may know, do the room sizes have to be the same size or can you use different room sizes based on room selection? E.g. master room collision is 30x30, can you create rooms with collision size 50x50?
@@md_dorion you can make rooms exacly how you want. I go into that in later videos.
Just make sure the collision is covering the whole room
i spent a good 30 minutes trying to fix that collision bug. turns out for me it was that the selected exit was uneditable by default🤦♂
What do you mean uneditable?
@@reeanimationgaming1034 there is a checkbox for variable whether they can be changed or not