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..
@@REE-Animation 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 I’m about to cry I’ve been looking for this tutorial since 2019 and have left my project behind because of the lack of informations. God bless you man, I hope this series of tutorial about dungeon generation will last forever it is so important for me. Big support from Switzerland ! 🙏🏼
4:45 Collision and box did not overlap because collision also has box extend values. Technically you should use those instead of scale. At least that was the deal for better performance a few years back. I dunno if it matters anymore.
Thanks for this tutorial, the level of detail you go into is perfect for someone like me.. technical background but entirely new to Unreal. I was trying to workout a plan for procedural generation when I found your video. Kudos to your good work, sir!
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
@@REE-Animation 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.
thanks so much for doing this tutorial. One thing I noticed at 24:44 you dont need the append operation, you can set directly from the get Children Components Call straight into Exits Lists, and it takes care of the array to list conversion (5.4.1)
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
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!
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
@@REE-Animation I finally, got it working, I'm still having trouble with the walls, once i get more floors made i will test it again. Also, probably should have added a start and finish level so we can just create from beginning to end in one video, I got frustrated trying to add single levels outside of the dungeon list; and ultimately had to start the project over again because unreal deleted my master dungeon spawn. In any case i will watch your other videos to see if i can fix these issues.
As a new user, this was a very helpful tutorial. I have been watching a lot of "get started" videos and this was by far my favorite. Even answered questions and things I had had issues with from other videos. 10/10
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!
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 🙂
@@REE-Animation 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 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. :)
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!
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.
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!
Hey man, I just wanted to give you some tips; Creating and Destroying actors has a memory cost, so I would suggest making sure you can spawn an actor instead of destroying incorrect ones, so before you create a next room, you could do a trace (sphere, box) and check if there is anything already there, if yes, remove the random exit from the exits and reroll a random exit, it will eventually find one. Second, for procedural content in general, you want to work from streams (it will allow you to replicate behavior and bugs and fix them), so when using random nodes, try and use one with a stream (stream could be generated before you start creating the dungeon).
@@REE-Animation is it the one in this video? I was more so trying to do the one that didn’t created memory inefficiencies? No offense to your tutorial, its a fantastic one!
@ Hehe.. I honestly don’t know anything about memory efficiency or anything like that. You probably know more about it than I do. If you can check for overlap before actually spawning the room, then that would be a good solution I think. I just don’t know how to do that 🤷
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 👍
@@REE-Animation 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
36:30 Following along, I seem to have an issue when connecting "selected Exit Point" to "get World Transform" It stretches out all room besides the starting room, I am fairly new to all this, and felt I did something wrong, restarting, it turns out this was the point that kind of broke everything for me.
@@realmofgaming7734 sound like the scale in the transform is wrong. You can right click the transform pins, and then only connect up location and rotation. Then leave scale alone
@@REE-Animation So, Running a sim, the scaling changes whenever I press play. Scaling is all fine up until the point of loading in the next room, I split the transform but am unable to connect both location and rotation, specifically the x=2.75 from 1, and Y=36 from one, lol. I have been messing with it, but trying not to break anything else
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.
Loving this Tutorial so far! I do have one question though… I can’t seem to get my room to spawn with a different rotation. It’s about 36:32 when you showed us how to do it. I did exactly what you did and my dungeon room seems to just scale up to a very large size and separate.😵💫 Everything has worked fine up to this point!
@@costnerbrock4902 I think you split the pins and then only plug in the location and rotation.. There are a few issues with some of the things if the unreal version is not the same
@@REE-Animation It worked! Thanks so much for the quick response! I've been stumped on this for a while and that made so much sense! Looking forward to the rest of this tutorial and I'm glad to see you added a part 4!
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
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!
So the reason why the Floor and the OverLapBox did not align is the dimensions are off. To fix this (with the OverLapBox selected) Go to the details panel and in the category Shape > Box Extent set the dimensions to 50,50,50. This will match your default cube dimensions which are 100x100x100.
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 🔥🔥
@@REE-Animation 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.
@@REE-Animation 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
I haven’t tried that. But I would probably after 10 rooms or so change the room list to another list with special rooms, and when that is placed, go back to the normal room list again..
@ 00:35:00 Right when I add the selected Exit point > Get world location and connect it to the spawn transform location It over laps the dungeon room but doesn't randomize the location of it. On top of that when I go to close the simulation, it gives me and error "Accessed None trying to read property selected exit point". Any help is so much appreciated.
@@papajohntv3560 it sounds like the exit point are not getting added correctly to the list/array.. Access none means there’re no exit arrows in the list, and that is why they are added at 0.0.0 on top of each other
What fixed it for me was: The Collision Box was larger than the actual floor Making the Exit Arrows invisible for the list. I rearranged the Collision Box to be smaller (Both Horizontally and Vertically, so X,Y and Z Axis) than the Floor and Roof (My Room has a roof) Should Fix the None Error
@@woolvie9008 I reduced my box and lowered it so it touches nothing but floor and still get the errors. im using 5.3 and not having any luck getting this error to go away
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
@@REE-Animation 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
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 for the tutorial ! But around the time mark at 30:00 where I have to to change the variable type from actor to array, Unreal just crashes every time.
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!
Hi I'm stuck at 1:18:00 "Closing unused Exits". For some reason All exit points spawn end walls which result is boxed rooms without doors at all. Please help
I bet this can be used to make towns/cities too. You ought to give that a shot, and make a video tutorial. That would be awesome to use this for both things!
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.
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.
@@REE-Animation 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).
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
Man this is an awesome tutorial. You are really good at explaining things in a simple way. Thanks for sharing this stuff and for making me laugh a bunch! P.S. if anyone is having trouble with CLOSE HOLES, rewatch 1:10:00
Hello, can you help, in 24:54 you see how many arrows come to Exits List after append. I make step buy step with you but my xits List is 0.. I have Exits folder in BP Room, add this room in SpawnActor take return var and make get children components this var.. step buy step with you, but my Exits list is empty .. ;'(
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 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!
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!
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.
@@REE-Animation 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
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
This was an amazing tutorial but I have a slight error which I am wondering how to fix. My blocks to patch the holes in the walls won't recognize to patch up a hole if it is connected to a hallway sideways. I don't know if I missed a step or if a made a mistake along the way.
ive used a counter rather than a timer for detecting when the dungeon is infinitely looping. i was also having trouble with an infinite loop when deleting overlapping rooms but found a 0.001 delay after 'is array not empty - true' solved that.
Yeah, sometimes a delay can solve errors, oddly enough.. But I’m not getting any errors, so I wonder what the difference is between your dungeon and mine 🤷
@@REE-Animation Sorry, i just just meant i would count the amount of times the dungeon failed as an integer. then stop if is is about 4x more then the room amount (since mOsT rooms have 4 sides max).
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
On “Infinity Loop” or “Call Stack” error you guys can use “Delay Until Next Tick”, this delay will wait till next tick to fire off the spawn function again
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 ❤️✊
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 🤞
Im making a random-seed based voxel world, like a smooth minecraft. Can you see this integrating with that framework? I'm still in the process of figuring out all of the specifics for dungeons, and subterranean features, and this looks right up my alley. :)
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?
@@REE-Animation so would i drag the remove and exits list into like the spawn room section and have it be removed once the room is spawned? Edit: jk i figured it out. thank you for the 10/10 tutorial. otw to watch part 2 now that i have that fixed :D
@@REE-Animation i was trying my best lol. ngl i had to rewind multiple times bc i was fascinated watching the different layouts spawn so that’s probably what happened
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.
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..
Great Tutorial!, but i have a issues where my block holes event will block areas inside the map not just outside and causing the play to be stuck any ideas ? why this is happening
Hey, so far this is a great tutorial but I encountered a problem ... when I play my rooms dont multiple or create new ones ... im currently on the delay part
@@REE-Animation to stop it from creating infinite rooms, after creating the custom collision setting and adding the delay, I tried to play test it and only one room wasngenersted with the starter room
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.
@@milkystuff4045 I did this for my game. You can add an overlap box in the end cap blueprint, if it overlaps with another of the same kind, delete actor
Great video my man. Sometimes it looks like you are stumbeling on purpose, and sometimes it think there must be a better way for things. Good content for learners Isnt there a way to use the green arrows to check for overlap AFTER a room has been placed. Then add those to a close wall list. Should be possible with less casting no? Interface maybe
@@Timre23.1 I think the best way is to spawn a simple room actor with only a collision box it in.. And if that is not overlapping, then destroy it and spawn the room. But that means you will have a simple room actor for each room
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!
@@REE-Animation I think the dungeon generator is having a hard time detecting my exit arrows because i had to move them all the way into the center of the room to get the rooms to even touch
@ you know. You have the 3 exit arrows, and then you have the entrance. The hole without an arrow, that is the entrance. And that needs to be in 0.0.0 The center of the room should not be in 0.0.0
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.
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.. 🙂
@@REE-Animation 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 🙂
Dude I’m about to cry I’ve been looking for this tutorial since 2019 and have left my project behind because of the lack of informations. God bless you man, I hope this series of tutorial about dungeon generation will last forever it is so important for me.
Big support from Switzerland ! 🙏🏼
@@raza901 Thanks man 🙂
I hope it will help you with your game ✊
4:45 Collision and box did not overlap because collision also has box extend values. Technically you should use those instead of scale. At least that was the deal for better performance a few years back. I dunno if it matters anymore.
@@freedomofspeech2100 Thanks.. Noted
Not only I learned how to make dungeons, I also learned some really useful editor tricks, thank you so much continue making these awesome videos!
Thanks for this tutorial, the level of detail you go into is perfect for someone like me.. technical background but entirely new to Unreal. I was trying to workout a plan for procedural generation when I found your video. Kudos to your good work, sir!
@@JerryRiggle Thanks man 🙂🙏
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
@@REE-Animation 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.
thanks so much for doing this tutorial. One thing I noticed at 24:44 you dont need the append operation, you can set directly from the get Children Components Call straight into Exits Lists, and it takes care of the array to list conversion (5.4.1)
@@full_afterburner Thanks 🙂 still much to learn
Fantastic tutorial. Despite almost being 2 hours long, every single thing in it works. Hats off.
@@MeowMasterZombo Thank you sir 🙂❤️
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
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 🙂
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 ✊
This has breathed life into trying to make a simple game, thanks for making this video.
@@alexlangrell4540 That is great to hear, thanks 🙂
@@REE-Animation I finally, got it working, I'm still having trouble with the walls, once i get more floors made i will test it again. Also, probably should have added a start and finish level so we can just create from beginning to end in one video, I got frustrated trying to add single levels outside of the dungeon list; and ultimately had to start the project over again because unreal deleted my master dungeon spawn. In any case i will watch your other videos to see if i can fix these issues.
@ I’m sorry for the problems you have. I know different versions of Unreal are giving different problems, that I don’t get in the video
It's when I come across channels like this that I think.. "Heroes of our times"
@@MA3DPOSSIBLE Thanks man ✊🙂
As a new user, this was a very helpful tutorial. I have been watching a lot of "get started" videos and this was by far my favorite. Even answered questions and things I had had issues with from other videos. 10/10
@@lycanthropaul Thanks man. I really 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
LETS GOOOOOOOOOOOOOOOOO
THIS IS AWESOME! THANK YOU FOR THE SERIES
@@POTATO-pl8kt Thanks for being here 🙂✊
@@REE-Animation Thank you for existing and sharing this. It truly is incredible and I really appreciate you!
@ Thanks man ❤️🙏🙂
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 🙂✊
Bro. This is exactly what I was looking for. Much love for this man!
@@therustedmonkie4787 🙂✊
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!
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 🙂
@@REE-Animation 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 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 🙂✊
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 🙂❤️
@@REE-Animation You're welcome bro! That's the least I can do🙂🖤
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.
@@smelly-onion4 Nice. I’m happy you found it useful 🙂
Keep going ✊
This tutorial is awesome! You did a great job for someone who is new to tutorials!
@@simday8653 Thanks man. Appreciate the kind words 🙏❤️
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 🙏
God sent. Nice workaround for not using complex generation using just vertices and polygons 🥰
This is really amazing tutorial video bro! Thx!
@@XD-iq1vr No problem 🙂✊
Hey man, I just wanted to give you some tips; Creating and Destroying actors has a memory cost, so I would suggest making sure you can spawn an actor instead of destroying incorrect ones, so before you create a next room, you could do a trace (sphere, box) and check if there is anything already there, if yes, remove the random exit from the exits and reroll a random exit, it will eventually find one. Second, for procedural content in general, you want to work from streams (it will allow you to replicate behavior and bugs and fix them), so when using random nodes, try and use one with a stream (stream could be generated before you start creating the dungeon).
@@bibilicious Thanks.. Didn’t think or know about create/destroy cost..
Streams are covered in part two I believe ✊
Hi there, could you explain a bit more on how to go about circumventing overlapping problems with the rooms?
@@Mr.dingles It’s explained in the videos
@@REE-Animation is it the one in this video? I was more so trying to do the one that didn’t created memory inefficiencies? No offense to your tutorial, its a fantastic one!
@ Hehe.. I honestly don’t know anything about memory efficiency or anything like that. You probably know more about it than I do.
If you can check for overlap before actually spawning the room, then that would be a good solution I think.
I just don’t know how to do that 🤷
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 🙏
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 👍
@@REE-Animation 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
36:30 Following along, I seem to have an issue when connecting "selected Exit Point" to "get World Transform" It stretches out all room besides the starting room, I am fairly new to all this, and felt I did something wrong, restarting, it turns out this was the point that kind of broke everything for me.
@@realmofgaming7734 sound like the scale in the transform is wrong. You can right click the transform pins, and then only connect up location and rotation. Then leave scale alone
@@REE-Animation So, Running a sim, the scaling changes whenever I press play. Scaling is all fine up until the point of loading in the next room, I split the transform but am unable to connect both location and rotation, specifically the x=2.75 from 1, and Y=36 from one, lol. I have been messing with it, but trying not to break anything else
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
@@REE-Animation thank you man. ima go fix it now.
Does part 2 cover how to always add rooms to hallways?
@@lazarobenitez4206 no, unfortunately not.
Loving this Tutorial so far! I do have one question though… I can’t seem to get my room to spawn with a different rotation. It’s about 36:32 when you showed us how to do it. I did exactly what you did and my dungeon room seems to just scale up to a very large size and separate.😵💫 Everything has worked fine up to this point!
@@costnerbrock4902 I think you split the pins and then only plug in the location and rotation..
There are a few issues with some of the things if the unreal version is not the same
@@REE-Animation It worked! Thanks so much for the quick response! I've been stumped on this for a while and that made so much sense! Looking forward to the rest of this tutorial and I'm glad to see you added a part 4!
@@costnerbrock4902 awesome 🙂
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 🙂
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 🙂🙏
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 🙂🙏
Fantastic! Thanks for putting in the work to share this with us
🙂✊
So the reason why the Floor and the OverLapBox did not align is the dimensions are off. To fix this (with the OverLapBox selected) Go to the details panel and in the category Shape > Box Extent set the dimensions to 50,50,50. This will match your default cube dimensions which are 100x100x100.
@@codyac5580 🙏 genius
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 🙂❤️
@@REE-Animation 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
@@REE-Animation 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.
Is there a way to "force" the generator to load special rooms, like 1 boss room every run or someting like that .
I haven’t tried that. But I would probably after 10 rooms or so change the room list to another list with special rooms, and when that is placed, go back to the normal room list again..
@ 00:35:00 Right when I add the selected Exit point > Get world location and connect it to the spawn transform location It over laps the dungeon room but doesn't randomize the location of it. On top of that when I go to close the simulation, it gives me and error "Accessed None trying to read property selected exit point". Any help is so much appreciated.
@@papajohntv3560 it sounds like the exit point are not getting added correctly to the list/array.. Access none means there’re no exit arrows in the list, and that is why they are added at 0.0.0 on top of each other
@@REE-Animation thanks a lot brother! I will check this out after i get home from work 😄
@@papajohntv3560 fingers crossed
What fixed it for me was:
The Collision Box was larger than the actual floor
Making the Exit Arrows invisible for the list.
I rearranged the Collision Box to be smaller (Both Horizontally and Vertically, so X,Y and Z Axis) than the Floor and Roof (My Room has a roof)
Should Fix the None Error
@@woolvie9008 I reduced my box and lowered it so it touches nothing but floor and still get the errors. im using 5.3 and not having any luck getting this error to go away
I can’t thank you enough!!! May everything you wish come true man❤
@@arcturus2685 🙂🙏❤️
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?
@@REE-Animation 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. 🙂
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
🙂🙏
Ive been researching different methods of procedural generation and find this video very helpful. Thank you!
Cool 🙂
Great tutorial, helped a lot, it was also nice how you actually explained what was going on unlike most tutorials.
@@HmmIndeedQuite Thanks 🙂
Thank you for the tutorial ! But around the time mark at 30:00 where I have to to change the variable type from actor to array, Unreal just crashes every time.
Hmm.. Very odd.. what if you disconnect it before changing it?
Perhaps try and make a new variable instead of “promote” to viable”?
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 ❤️🙏
Hi I'm stuck at 1:18:00 "Closing unused Exits". For some reason All exit points spawn end walls which result is boxed rooms without doors at all. Please help
@@LunarSlaughter double check that the exit points are getting removed when they get used by a room
I bet this can be used to make towns/cities too. You ought to give that a shot, and make a video tutorial. That would be awesome to use this for both things!
@@GES1985 Yeah, interesting. Towns could be a fun project.. I need to spit out more tutorials, it’s good for the channel 🙂
@reeanimationgaming1034 anything you can do to make this stuff compatible with a smooth voxel world will be greatly appreciated. :)
@@GES1985 I honestly no nothing about voxels, I don’t think I can help 😔
@@REE-Animation I'm just now learning game dev. So, I don't know much about voxels either.. i just know that I want to use them! ;)
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 🙏❤️
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?
@@REE-Animation 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 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 🙂❤️
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
@@REE-Animation i demoed a little of the version i created based on your video on my channel this morning ruclips.net/video/a7WokutF7YU/видео.html
This is probably the most useful tutorial I have seen on RUclips. Thank you!
Awesome! Thanks 🙂❤️
Man this is an awesome tutorial. You are really good at explaining things in a simple way. Thanks for sharing this stuff and for making me laugh a bunch! P.S. if anyone is having trouble with CLOSE HOLES, rewatch 1:10:00
@@PhillipHavin Thank you very much! I appreciate the kind words.. It encourages me to make more videos like this 🙂🙏
Thank you so much for your help, Super Easy to follow!
@@fishfryer87 🙂❤️
Это просто невероятно круто!!! Спасибо тебе огромное, ты восхитительный человек!
Hello, can you help, in 24:54 you see how many arrows come to Exits List after append.
I make step buy step with you but my xits List is 0.. I have Exits folder in BP Room, add this room in SpawnActor take return var and make get children components this var.. step buy step with you, but my Exits list is empty .. ;'(
@@dixie4007 I don’t know… Try and join the discord and post an image in there, so we can see your code.
@@REE-Animation thx i post msg in discord with screenshots
Great tutorial thanks very much for all of this!
@@xxfirehexx1632 Thanks for watching 🙂
Finally! i was looking for something like this for ages
Me too ✊
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 🙂❤️
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 🙂🙏❤️
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 🙂
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.
@@REE-Animation 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?
How did you get that "Constant" window in the material graph with the XYZ values?
-Nevermind, found it. Constant 3 vectors.
@@Bspired Yes, or hold down 3 and left click
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 😬
Try this, when you generate something random, use Random from Seed. If the seed is the same on Client and on Server, you will get equal results
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 🙂
Awesome! Would love to see more stuff like that
Noted 🙂
This was an amazing tutorial but I have a slight error which I am wondering how to fix. My blocks to patch the holes in the walls won't recognize to patch up a hole if it is connected to a hallway sideways. I don't know if I missed a step or if a made a mistake along the way.
@@ootscootscabob it is probably the transform in the spawn actor node.. make sure it also gets the rotation from the exit arrow
@@REE-Animation I found my issue, I put the remove exit lists in the wrong spot, thanks for your response.
@@ootscootscabob 🙂👍
Simply Amazing my Guy!!! More like this!!
@@Hyperdelica-Xander Thanks you 🫵🏻🙂
ive used a counter rather than a timer for detecting when the dungeon is infinitely looping. i was also having trouble with an infinite loop when deleting overlapping rooms but found a 0.001 delay after 'is array not empty - true' solved that.
Yeah, sometimes a delay can solve errors, oddly enough..
But I’m not getting any errors, so I wonder what the difference is between your dungeon and mine 🤷
I haven’t heard if counters before.. What’s that?
@@REE-Animation Sorry, i just just meant i would count the amount of times the dungeon failed as an integer. then stop if is is about 4x more then the room amount (since mOsT rooms have 4 sides max).
big help, couldn't find any tutorial that actually helped
🙂🙏
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
On “Infinity Loop” or “Call Stack” error you guys can use “Delay Until Next Tick”, this delay will wait till next tick to fire off the spawn function again
Greate video! Thanks! Have you found a way to generate more loops? I Mean multiple ways to go to the same room.
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 ❤️✊
Amazing tutorial !
Thanks man, part 2 would be cool.
Thanks.. I’m thinking about it 🙂
Was also looking for this like others, thank you
🙏
Thank you so much for this tutorial, It is very useful and I can't wait for the second part!!
Thanks.. 🙂
Thank you for this man!
@@Kyrillka-fu7cx 🤜🤛
That is exactly what I wanted, Great work, and Thank you!
Thanks, no problem 🙂❤️
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 🤞
Im making a random-seed based voxel world, like a smooth minecraft. Can you see this integrating with that framework? I'm still in the process of figuring out all of the specifics for dungeons, and subterranean features, and this looks right up my alley. :)
@@GES1985 I hope you can use it 🙂
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
all of my rooms are being closed off by the close gap wall for some reason. plz help :(
@@infiniteskies22 The used up arrows should be removed from the list, so they don’t spawn close gaps
@@REE-Animation so would i drag the remove and exits list into like the spawn room section and have it be removed once the room is spawned?
Edit: jk i figured it out. thank you for the 10/10 tutorial. otw to watch part 2 now that i have that fixed :D
@@infiniteskies22 nice 🙂 remember to pay attention 😁
@@REE-Animation i was trying my best lol. ngl i had to rewind multiple times bc i was fascinated watching the different layouts spawn so that’s probably what happened
@@infiniteskies22 procedural stuff is fascinating, I agree 🙂
Really Excellent tutorial, really helped seeing all the steps.
🙂❤️
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 🙂
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..
Great Tutorial!, but i have a issues where my block holes event will block areas inside the map not just outside and causing the play to be stuck any ideas ? why
this is happening
@@Soul-vt8lq the used exit arrows need to be removed before spawning the end holes thing
Great Tutorial it is!Thanks for sharing
My pleasure 🙂🙏
Hey, so far this is a great tutorial but I encountered a problem ... when I play my rooms dont multiple or create new ones ... im currently on the delay part
@@KaayJusChillin I don’t understand your question.. What do you mean?
@@REE-Animation to stop it from creating infinite rooms, after creating the custom collision setting and adding the delay, I tried to play test it and only one room wasngenersted with the starter room
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 🙂🙏
Any idea if this tutorial can work in a 2D Game? As i don't use boxes but tilemaps it doesnt appear in the simulations or in the DungeonRoom
@@sergiomonterox I have no idea how 2D games work. So, Sorry, I don’t think so
I'm trying to think of a way to have the dungeon generator not close the exit if it happens to line up with another room
@@milkystuff4045 I did this for my game. You can add an overlap box in the end cap blueprint, if it overlaps with another of the same kind, delete actor
Great video my man. Sometimes it looks like you are stumbeling on purpose, and sometimes it think there must be a better way for things. Good content for learners
Isnt there a way to use the green arrows to check for overlap AFTER a room has been placed. Then add those to a close wall list.
Should be possible with less casting no? Interface maybe
@@Timre23.1 I think the best way is to spawn a simple room actor with only a collision box it in.. And if that is not overlapping, then destroy it and spawn the room.
But that means you will have a simple room actor for each room
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
any idea why the dungeon generator is spawning rooms far apart and i have to move the exits around to get them to move closer?
@@Abc-tx4zr are you sure your rooms has the entry point at exactly 0.0.0 in the blueprint?
@@REE-Animation whats entry location?
@@REE-Animation I think the dungeon generator is having a hard time detecting my exit arrows because i had to move them all the way into the center of the room to get the rooms to even touch
@ you know. You have the 3 exit arrows, and then you have the entrance. The hole without an arrow, that is the entrance. And that needs to be in 0.0.0
The center of the room should not be in 0.0.0