Procedural dungeon generation systems. Roblox studio Tutorial.

Поділитися
Вставка
  • Опубліковано 16 гру 2024

КОМЕНТАРІ • 436

  • @TextChange
    @TextChange  11 місяців тому +22

    Model link :- drive.google.com/file/d/1uaZZTuW1vrR6kcmrKNPkPLxEUbhVvkUP/view?usp=drive_link

    • @Nemazares
      @Nemazares 9 місяців тому +5

      Can you update it so it infinitely load, like Chunks in Minecraft

    • @indominusvoids8798
      @indominusvoids8798 9 місяців тому +1

      @@Nemazares Just go down to the last line and replace 500 with math.huge

    • @Nemazares
      @Nemazares 9 місяців тому +1

      @@indominusvoids8798 math.huge ? Alr ig thx

    • @TextChange
      @TextChange  8 місяців тому +5

      @@indominusvoids8798 No it's a bad idea because it will cause the game to crash.

    • @the_jmaster1
      @the_jmaster1 7 місяців тому +1

      e

  • @OLDACCOUNT_notfireman
    @OLDACCOUNT_notfireman 11 місяців тому +30

    thank you for this godsend of a tutorial and algorithm. its still procedural and yet im still able to build preset rooms, easy to adapt, and your tutorial is informative. definitely using this for my own roguelite, and ill recommend this to others if needed. you earned yourself a subscriber

  • @kif-zallrhat1870
    @kif-zallrhat1870 11 місяців тому +9

    Working on something similar, except I plan to have the rooms connect each other instead of using hallways. Did not expect to find a roblox tutorial, great job! :D

    • @The_Spirit4595
      @The_Spirit4595 8 місяців тому

      im trying to make just rooms aswell but nothing is really happening

    • @Airsickword
      @Airsickword Місяць тому

      @@The_Spirit4595 Why not use this script but make the hallways as rooms?

  • @Windlepop
    @Windlepop 10 годин тому

    this is actually concise and profound, good tutorial man (loved the explanations, thats something i dont see in formats like this, and theyre pretty comprehensive too!!!) -- love what im seeing here

  • @ransomha
    @ransomha 9 місяців тому +1

    It was beatiful watching that map generate in such a clean way

  • @BRACERFENIX
    @BRACERFENIX 6 місяців тому +6

    Thank you. This was fun to follow along and procedural generation has so many possibilities.

  • @windy_zeph
    @windy_zeph Рік тому +6

    We want more videos like this, keep up the amazing work. Hats off this guy!

  • @EggsToMe
    @EggsToMe 4 місяці тому +1

    This is so well explained, but at the same time you make sure to not overly exlapain it, please make more tutorials i loved this

  • @gokkertje1682
    @gokkertje1682 9 місяців тому +3

    this guy is a chad, i love how he explains it keep it up!

  • @TextChange
    @TextChange  Рік тому +24

    Script :-
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local AssetFolder = ReplicatedStorage:WaitForChild("Asset")
    local function Generate(StartingPosition,Maxrooms)

    local CurrentRoomGenerated = 0

    local function Branchout(Model:Model)
    wait()
    if Model:GetAttribute("Room") == false then

    for i,v in pairs(Model:GetChildren()) do
    if v:IsA("BasePart") and v.Name == "Waypoints" then
    local NewPosition = v.Position + v.CFrame.LookVector * 4.25
    local CheckBox = Instance.new("Part", game.Workspace.Debris)
    CheckBox.Anchored = true
    CheckBox.Size = Vector3.new(7.5,4,7.5)
    CheckBox.Position = NewPosition
    local partsInCheckBox = game.Workspace:GetPartsInPart(CheckBox)
    CheckBox:Destroy()
    if #partsInCheckBox > 0 or CurrentRoomGenerated >= Maxrooms then
    v.Transparency = 0
    v.Material = Enum.Material.WoodPlanks
    v.Color = Color3.new(0.588235, 0.403922, 0.4)
    else
    local NewTilePiece = AssetFolder:GetChildren()[math.random(1, #AssetFolder:GetChildren())]:Clone()
    NewTilePiece.Parent = game.Workspace.Dungeon
    local cf = CFrame.new(Vector3.new(NewPosition.X, StartingPosition.Y, NewPosition.Z), v.Position)
    NewTilePiece:SetPrimaryPartCFrame(cf)
    cf = CFrame.new(NewTilePiece.PrimaryPart.Position) * CFrame.Angles(math.rad(0), math.rad(NewTilePiece.PrimaryPart.Orientation.Y), math.rad(NewTilePiece.PrimaryPart.Orientation.Z))
    NewTilePiece:SetPrimaryPartCFrame(cf)
    if NewTilePiece:GetAttribute("Room") == true then
    CurrentRoomGenerated += 1
    end
    coroutine.wrap(Branchout)(NewTilePiece)
    v:Destroy()

    end
    end
    end

    else

    local possibleHallways = {

    AssetFolder:WaitForChild("Hallway1");
    AssetFolder:WaitForChild("Hallway2");
    AssetFolder:WaitForChild("Hallway3");
    AssetFolder:WaitForChild("Hallway4");
    AssetFolder:WaitForChild("Hallway5");

    }

    for i,v in pairs(Model:GetChildren()) do
    if v:IsA("BasePart") and v.Name == "Waypoints" then
    local NewPosition = v.Position + v.CFrame.LookVector * 4.25
    local CheckBox = Instance.new("Part", game.Workspace.Debris)
    CheckBox.Anchored = true
    CheckBox.Size = Vector3.new(7.5,4,7.5)
    CheckBox.Position = NewPosition
    local partsInCheckBox = game.Workspace:GetPartsInPart(CheckBox)
    CheckBox:Destroy()
    if #partsInCheckBox > 0 or CurrentRoomGenerated >= Maxrooms then
    v.Transparency = 0
    v.Material = Enum.Material.WoodPlanks
    v.Color = Color3.new(0.588235, 0.403922, 0.4)
    else
    local NewTilePiece = possibleHallways[math.random(1,#possibleHallways)]:Clone()
    NewTilePiece.Parent = game.Workspace.Dungeon
    local cf = CFrame.new(Vector3.new(NewPosition.X, StartingPosition.Y, NewPosition.Z), v.Position)
    NewTilePiece:SetPrimaryPartCFrame(cf)
    cf = CFrame.new(NewTilePiece.PrimaryPart.Position) * CFrame.Angles(math.rad(0), math.rad(NewTilePiece.PrimaryPart.Orientation.Y), math.rad(NewTilePiece.PrimaryPart.Orientation.Z))
    NewTilePiece:SetPrimaryPartCFrame(cf)
    if NewTilePiece:GetAttribute("Room") == true then
    CurrentRoomGenerated += 1
    end
    coroutine.wrap(Branchout)(NewTilePiece)
    v:Destroy()

    end
    end
    end


    end




    end

    local StartingRoom = ReplicatedStorage:WaitForChild("StartingRoom"):Clone()
    StartingRoom.Parent = game.Workspace.Dungeon
    StartingRoom:SetPrimaryPartCFrame(CFrame.new(StartingPosition))
    CurrentRoomGenerated +=1
    Branchout(StartingRoom)

    end
    Generate(Vector3.new(0,10,0),500)

    • @____________________________x
      @____________________________x 11 місяців тому

      you couldve published this and made the game uncopylock

    • @tuhin4502
      @tuhin4502 11 місяців тому +1

      you should at least give some effort and follow the tutorial. It would only take 30 minutes to make anyway.

    • @doinic09
      @doinic09 11 місяців тому +2

      @@____________________________x Or you could've just followed the tutorial and taken only 30 minutes. Hate to say it but actually good games come from effort.

    • @_Sickk
      @_Sickk 11 місяців тому

      Why did you use "SetPrimaryCFrame" Instead of "SetPivot"?

    • @MGGSpicey
      @MGGSpicey 11 місяців тому

      @@____________________________xyou could've just copied a 10 minute tutorial WITH the script published in the comments

  • @swordlegend3256
    @swordlegend3256 10 місяців тому +2

    3:07 you can do fn + left click or alt+ left click to select a single part from a model

    • @TextChange
      @TextChange  10 місяців тому +1

      Good to know. Thank you

    • @swordlegend3256
      @swordlegend3256 10 місяців тому

      also you coud use random:NextInteger instead of math.random if you want pesudorandom generation@@TextChange

    • @swordlegend3256
      @swordlegend3256 10 місяців тому

      btw you didnt have to make 11 presets you coudve gone with 2. with the same result@@TextChange

  • @--Brick--
    @--Brick-- 5 місяців тому +1

    I haven't finished the tutorial yet but it says SetPrimaryPartCFrame() is deprecated
    6:05
    so instead I'm using Model:Pivot() which is the same thing. Also from what I've seen you can put most of this in a module script

    • @TextChange
      @TextChange  5 місяців тому +1

      Yeah SetPrimaryPartCFrame() and Model:Pivot() is the same thing. It Just that I'm Used to using SetPrimaryPartCFrame(). And yeah you can use module script but i didn't wanted to make this more complicated.

  • @SlateAlloy
    @SlateAlloy 11 місяців тому +2

    Hey y'all, if you're having trouble with generating rooms and it tends to bug out having weird rotations, make sure to make all the primary parts of every room ( except the starting room ) face the direction of the empty waypoint direction ( starting room just faces the direction of the waypoint )

    • @SlateAlloy
      @SlateAlloy 11 місяців тому

      @c00lbaconn what controls the empty spaces is the courotine.wrap(branchout) function, if all of the preset rooms are in the right order it should work as intended because it still generates them all the exact same way, aligning to the orientation of the openings in the hallways

  • @groovyball
    @groovyball Рік тому +5

    i was stuck at figuring how to do pikmin2-like dungeon generation and this helps a ton thanks!!

  • @tijgerman1312
    @tijgerman1312 Місяць тому +1

    bro actulyl deserves way more views for this

    • @TextChange
      @TextChange  Місяць тому

      Thank you for your appreciation.

  • @Naz-tj2hv
    @Naz-tj2hv 22 дні тому

    such a good tutorial that explains how it works and why u did what u did, was sad when i saw u only had 2 vids :(

    • @TextChange
      @TextChange  21 день тому

      Thank you for your appreciation. I just don’t have anymore ideas. If you want to see anything specific then tell me and i will try my best.

  • @aeea3306
    @aeea3306 Місяць тому

    Ngl this was actually simpler than making an inventory script, or maybe its just because you explain it well

  • @YorktownClass
    @YorktownClass 8 місяців тому +2

    Once i heard AI voice I was gonna switch to another video, but you explained this perfectly and in a clean way, I got so fed up of those AI content creators that spread pure bullshit. But you're far from that, you earned a subscriber.

    • @TextChange
      @TextChange  8 місяців тому +1

      Highly appreciate your support. 🖤

  • @Fynixx
    @Fynixx 5 місяців тому

    Thank you for the tutorial, was able to change things where i needed to change them and ultimately got exactly the type of dungeon generator i needed, god bless your soul 🙏

  • @ProtoSquam
    @ProtoSquam 4 місяці тому

    I actually love this video, everything was just perfectly crafted 🤩

  • @Tybeef
    @Tybeef 11 місяців тому

    Underrated video, TTS with well typed explanation was great

  • @arobloxmirror5570
    @arobloxmirror5570 11 місяців тому

    this is perfect tutorial for people who starting off scripting but have only learnt the basics, hope you make more videos

  • @Unknown-ym3ds
    @Unknown-ym3ds 9 місяців тому +1

    Hey I have a request for you, can you explain wave function collapse algorithm to make random generation of a map? You do a lot of effort on your videos, thanks for making these videos.

    • @TextChange
      @TextChange  9 місяців тому +1

      I would try my best. Thank you

    • @Unknown-ym3ds
      @Unknown-ym3ds 9 місяців тому +1

      ​@@TextChange Thank you for accepting my request, it will do a lot of help, I can't thank you enough, you made my day.
      It would be appreciated if you make the terrain like this ua-cam.com/video/PTwqUfjFsac/v-deo.htmlsi=gpckP_Rwxp5XTUJ- . If you don't know about it or have no idea then you can get an idea with this ua-cam.com/video/MyMbbmWVCDw/v-deo.htmlsi=1aoECPQRC0nua9E0 . Please help me if you could, my clueless brain can't figure out how to start.

    • @Unknown-ym3ds
      @Unknown-ym3ds 9 місяців тому +1

      @@TextChange Thank you for accepting my request, it will do a lot of help, I can't thank you enough, you made my day.
      It would be appreciated if you make the terrain like this ua-cam.com/video/PTwqUfjFsac/v-deo.htmlsi=gpckP_Rwxp5XTUJ- . If you don't know about it or have no idea then you can get an idea with this ua-cam.com/video/MyMbbmWVCDw/v-deo.htmlsi=1aoECPQRC0nua9E0 . Please help me if you could, my clueless brain can't figure out how to start.

  • @BasilLikesScripting
    @BasilLikesScripting 11 місяців тому +1

    thanks for the tutorial! gonna make some little guys and enemies to go through a mini dungeon and have them make their way to the end randomly

  • @oofytoty
    @oofytoty 11 місяців тому

    Roblox tutorials are underrated in general but this tutorial is VERY underrated.

  • @multistronomy
    @multistronomy 10 місяців тому +1

    oh my god dude you won't believe how long i've been looking for a tutorial like this. similar to how lethal company generates it's rooms. thank you so much dude lmao

  • @The_Takeout_Samurai
    @The_Takeout_Samurai 2 місяці тому

    underrated AF, this is exactly what I needed and more

  • @tuhin4502
    @tuhin4502 Рік тому +6

    Thank you man ! Great tutorial

  • @Zik_isi
    @Zik_isi 10 місяців тому

    Although it relies on some krutches, this is an interesting concept of generating!

  • @samuelwhite7030
    @samuelwhite7030 8 місяців тому

    its a great heavily customizable inexpensive system really cool man

    • @TextChange
      @TextChange  8 місяців тому

      Thank you. Consider subscribing

  • @fish_alt
    @fish_alt 11 місяців тому +2

    Great tutorial, and I've been looking for this for so long! I would just recommend a different voice...

    • @suupe4453
      @suupe4453 10 місяців тому +1

      i like your pfp

    • @fish_alt
      @fish_alt 10 місяців тому

      @@suupe4453 thanks! i love yours, it’s very original

  • @Wendy-ib4sp
    @Wendy-ib4sp 11 місяців тому

    HOLY COW YOU ARE SO UNDERATED! 100% Subbing.

  • @tifiyn
    @tifiyn 2 місяці тому +2

    Hey, quick question... What addon do you use to make the roblox build tools like that?

    • @TextChange
      @TextChange  23 дні тому

      I'm not sure what plugin/addon is doing that i have many

  • @EliAnimation-p3g
    @EliAnimation-p3g 3 місяці тому

    Now this is a respectful tutorial ,even you ve put the kit of it

    • @TextChange
      @TextChange  3 місяці тому

      @@EliAnimation-p3g thank you. A sub would be appreciated

  • @TheBloodThirstyvamp
    @TheBloodThirstyvamp 5 місяців тому +2

    It seems the code breaks when I apply it to my own rooms with bigger and more complex sizes. Any fix for this?

    • @TextChange
      @TextChange  5 місяців тому +1

      Well, without any information it is really hard to tell what is wrong with your model. But i assume you have different size rooms. This is a problem because this system wasn’t created to handle room with different size. You have to make sure that your all rooms are same size

  • @midoriiiii34
    @midoriiiii34 5 місяців тому +1

    An issue is you never put where to specify Maxrooms. Now infinite rooms are generating and I can't cap it.

    • @TextChange
      @TextChange  5 місяців тому +2

      8:41 at the bottom, when calling the generate function, the second parameter is the maxrooms. As this was a kind of advance tutorial, i assumed people would get it easily

  • @Microbex
    @Microbex 11 місяців тому +1

    Man, you are the best! Subbed. Happy New Year Mate. 🎉☺️

  • @hufgerbad6021
    @hufgerbad6021 7 місяців тому +1

    I wish there was a video like this but for just normal unity

  • @ThatBeenuxGuy
    @ThatBeenuxGuy 6 місяців тому +1

    Hallways are overlapping with the rooms and becoming quite messy. There are also times they spawn under the map and rotated. do you have an idea on what the problem is?

    • @TextChange
      @TextChange  6 місяців тому

      What did you do? 😂 the overlapping is happening because you scaled up asset. After scaling you need to follow this part 6:35. And i don't know why they are spawning under the map and rotated

    • @ThatBeenuxGuy
      @ThatBeenuxGuy 6 місяців тому +2

      ​​@@TextChangets no longer overlapping, I put the primary part to the floor instead of the actual middle of the room so my bad. I'll try to experiment around in the angles to fix it. Thanks for the tutorial

  • @Owen69
    @Owen69 20 днів тому

    very beautiful video nice work pal

    • @TextChange
      @TextChange  19 днів тому

      Thank you for your appreciation

  • @Eldamian0
    @Eldamian0 6 місяців тому +1

    Could you make a V2 of this tutorial that explains how to make a procedurally generated dungeon or city (whatever) with rooms of varying scales and roads of different sizes? Like you could have a room of 12x18 or 6x8 and roads of 8x3 or 15x3

    • @the_actual_alex
      @the_actual_alex 4 місяці тому

      he said in another reply you can achieve this by making the tile as big as your biggest room size, then make a bunch of halls that look like multiple smaller halls combined

    • @TextChange
      @TextChange  4 місяці тому

      Ah thank you for doing my job 😅. I really appreciate that

  • @furiousgoober
    @furiousgoober 9 місяців тому +1

    is there a way to make it choose through different types of dungeons? like different colors of walls and floors, and maybe like make the rooms and hallways be restricted to a big box like zone?

    • @TextChange
      @TextChange  9 місяців тому +2

      Of course, after all possibilities are endless! it may not completely satisfy your needs, here are some ideas to consider.
      To confine dungeon generation within a specific area, you can implement a check during room spawning to ensure the chosen coordinates fall within the designated zone. For instance, let's designate an area within 200 studs from the origin (0,0) in each direction. When spawning a room, verify if the selected coordinate satisfies the conditions: (Vector3.X = -200) and (Vector3.Z = -200). If these conditions are met, proceed with generating the room; otherwise, transform the waypoint segment into a wall.
      (Assuming you're referring to themed dungeons like jungle or desert)
      Now, for different types of dungeons, organize themed rooms and hallways into separate asset folders. For instance, create a folder named 'Jungle' containing jungle-themed assets exclusively. Then, introduce a string value (let's name it "themevalue") to determine the appropriate asset folder dynamically. Here's an example:
      local assetFolder = ReplicatedStorage:FindFirstChild(themevalue.Value)
      I hope this guidance proves helpful! If you found it useful, consider showing support by liking the video and subscribing to my channel-it truly motivates me.

  • @Rexexcraft
    @Rexexcraft 11 місяців тому

    only 21 subscribers? you deserve way more

  • @Ninjalordsalt
    @Ninjalordsalt 5 місяців тому +1

    for some reason when mine runs it generates the start room and a part that is put in the debris folder and i think its supposed to be the checkpart but it appears under my starting room and like close to the primary part's x & z coords. im getting no errors and idk what i did wrong. ive set all my primary parts and waypoints to the correct direction and made sure they have the right names. Ive called all the functions and done basically everything said in any other reply under this video. is there something i missed with the checkbox part of the video or is it something else?

    • @TextChange
      @TextChange  5 місяців тому

      Maybe you messed up the coordinates. It is really hard to say what is wrong with your code. Maybe you should try the model i have provided in the description.

  • @Puppeette
    @Puppeette 11 місяців тому

    0:44 hallways and rooms look a little small... I'm assuming from that time mark I commented, that the space is 4 blocks wide?

    • @Puppeette
      @Puppeette 11 місяців тому

      Well 1 stud is roughly 1 foot lol

    • @TextChange
      @TextChange  11 місяців тому

      Yes I already said it in the video, it is even smaller then a player

  • @PoppinCorn
    @PoppinCorn 5 місяців тому

    Now you have to do another one where it’s a chunk loader that saves and unrenders/renders chunks!

    • @TextChange
      @TextChange  5 місяців тому +1

      @@PoppinCorn That's a great Idea.

    • @PoppinCorn
      @PoppinCorn 5 місяців тому

      @@TextChange would love to learn how to do this for procedural dungeons. even a dungeon series tutorial would be awesome since there aren’t any on youtube.

  • @theresmorepancakes
    @theresmorepancakes 16 днів тому

    Didn't work for me. My rooms were much larger (had ceilings and such too), but I wasn't even able to get past the first room

    • @TextChange
      @TextChange  16 днів тому

      Make sure all of your rooms have waypoint parts and they are facing the right way. Make sure to follow this step properly and more carefully since it is really crucial 6:40 .
      Try to find any errors in your code. I have provided a model in the description. Try it out and see what is wrong with your model

    • @theresmorepancakes
      @theresmorepancakes 16 днів тому

      @@TextChange All of the waypoints are now facing the right direction, but now the first waypoint (in the starting room) is being replaced with a wall and no other rooms generate. My waypoint is clipping with the wall it is in currently, should it only cover the doorway instead?
      Edit: nevermind, waypoint changes didn't change the outcome

  • @Waffle0000
    @Waffle0000 8 місяців тому +2

    So is this how poeple make there doors game random?

    • @colin_the_protogen
      @colin_the_protogen 2 місяці тому

      as far as i know doors doesn't use this form of dungeon gen with multiple branching paths and is usually just one path with side rooms (minus.. like 1 room in the mines and maybe something with the mines seek chase)

    • @rxdact
      @rxdact 2 місяці тому

      @@colin_the_protogen Doors uses a similar system probably but it has more straightforward rooms. The difference is in random events and itemspawns, which also happen on their own thread isntead of being predetermined in the room itself.

  • @didist9065
    @didist9065 4 місяці тому +1

    hey i know this video is old, but how do i get that thing where your mouse tells you where on a part you are.

    • @TextChange
      @TextChange  4 місяці тому

      @@didist9065 I actually don't know. It was there by default.

  • @DEZERKER63
    @DEZERKER63 10 місяців тому

    i love this tutorial, please keep making more of these, using and explianing the terms was also very nice, also how do you add Z levels to a system like this?

    • @TextChange
      @TextChange  10 місяців тому

      Maybe make diagonal hallway that will work as a staircase. That should do it

  • @fearlesswee5036
    @fearlesswee5036 3 місяці тому

    Pretty nice, and very fast. Btw, how could I go about having "specialty" rooms, ensuring that they are always placed somewhere in each dungeon? Like if I were to have say, a shop, and I wanted to make sure each dungeon has a shop.
    Of course I could just make it so the generation will check if it has placed a "shop" room already or not, and if yes, then exclude the shop from the usable tile pool, but otherwise it's entirely up to the mercy of RNG if a shop room is chosen. Then at the end of generation, if it sees that no shop room was placed, it'll regenerate the dungeon, repeating until it successfully places a shop.
    Now this will "work", but it's definitely not ideal, and becomes an exponentially bigger problem the more "special" rooms that are desired. Since if there's only 1 specialty tile, chances are the dungeon will end up having it. But if there's say, 5 specialty rooms I want each dungeon to always have somewhere in their layout, there's a much bigger chance one of them gets missed and the entire dungeon will need to regenerate. And it may be possible the dungeon will need to regenerate a dozen times, leading to a long wait time for players.

    • @TextChange
      @TextChange  3 місяці тому

      @@fearlesswee5036 here what you could try.
      Once all rooms are generated, list all rooms that have the same number of waypoints as your shop room. For example, if your shop room has 4 waypoints, find all rooms with 4 waypoints. Randomly pick one from this list and replace it with your shop room. If you want to have more then one shop room then repeat these steps in a for loop.
      It is still not ideal, because it is still dependent on RNG. Lets say you want 3 shop room (shop room has 4 doorways) But there are only 2 rooms with 4 doorways. You see the problem now? How to fix it?
      Instead of making special rooms, you should have your shop as a separate model. Now you can just select a random room from the dungeon and position your shop in that room.
      It is fast and easy method

    • @fearlesswee5036
      @fearlesswee5036 3 місяці тому

      @@TextChange Well the "shop" would be a defined room, for a special layout + set dressing. I plan to use large 100 stud tiles to have a lot of room for the room/hallway layout to deviate. So like a 4-way intersection might not be a straight path, but have more twists/turns.
      I didn't even think of placing them *after* the dungeon generates; finding a random 4-way room for example and replacing it with the special room. That's very smart. I could also probably use this to put an "exit" or "end room" for the dungeon, using a basic magnitude check to exclude room tiles too close to the start.
      Thanks for taking the time to respond and the tutorial!

  • @ROBERTNGUYEN-t7x
    @ROBERTNGUYEN-t7x 8 місяців тому +1

    do you know of a way to create unique rooms? (like have only one boss room in the entire dungeon)

  • @ThatBeenuxGuy
    @ThatBeenuxGuy 6 місяців тому +1

    Hey what should I do if there are two empty spaces with no waypoints? Also sometimes the rooms aren't on the same y level

  • @chargemannyn2918
    @chargemannyn2918 4 місяці тому

    Very clean and simple system for dungeon generation, though I have to ask, what's plug-in you use for tracking how many studs you scale/move a part with in the video?
    Appreciate you sharing your work, and am looking forward to future videos!

    • @TextChange
      @TextChange  4 місяці тому

      I Didn't use any plugin, it was there by default.

  • @Ankibank2000
    @Ankibank2000 6 місяців тому

    is there a work around for the room amount becoming too low? I've once gotten rooms in a 2x2 because they ended up connecting that way even though the max amount of rooms was around 1000 and I really would like for this not to happen.

    • @TextChange
      @TextChange  6 місяців тому

      Try the model i have provided in the description. I had solved that problem after the video was released. And i didnt bother mentioning. Sorry about that

  • @mysteriousdust6914
    @mysteriousdust6914 22 дні тому

    Hey so I was wondering, do you know any way that you can make different rooms with different sizes? like lets say in lethal company how you can go from a small basic room to a huge room the next and the map generation still works, I have been trying different ways to do it but still cant seem to figure out how. if you dont I can always just do more trial and error so no worry. thanks for the tutorial it explained A LOT

    • @TextChange
      @TextChange  21 день тому

      It will be hard to explain but really easy to do. So bare with me.
      You have make the room size same as the biggest room in your asset. And for your room which are smaller the biggest room, you have to include additional hallways within the room's model. So that when placed beside any other asset(rooms/hallways). It will fit perfectly.
      I hope you understood what i mean.
      Feel free to ask any question.

    • @mysteriousdust6914
      @mysteriousdust6914 21 день тому

      @@TextChange OH THAT MAKES IT WAY MORE EASY. thank you so much!

  • @eggtart2gud
    @eggtart2gud 4 місяці тому

    why does the first local cf changes at 8:13???

    • @TextChange
      @TextChange  4 місяці тому

      @@eggtart2gud first one positions rooms, and 2nd one makes sure rooms are not tilting

  • @fakeorfeus
    @fakeorfeus 11 місяців тому +1

    good tutorial! but i have a problem, the starting room is generating but not the rest of the room's how can i fix this?

    • @fakeorfeus
      @fakeorfeus 11 місяців тому

      i forgot to say that there's no errors

    • @TextChange
      @TextChange  11 місяців тому

      Make sure you rotated the waypoint and primarypart to face the correct direction. Also check if you called the branchout function

  • @the_actual_alex
    @the_actual_alex 4 місяці тому

    this is so good! just one question, is it possible to add other rooms that also spawn just one time in random positions?

    • @TextChange
      @TextChange  4 місяці тому +1

      @@the_actual_alex yeah it it possible. It will be a little hard work, so bare with me.
      First thing you need to do to make your room. And place it somewhere else. And then after generation process is complete, you have to make a table/array of all the room with the same amount of doorways as your intended room. For example, Let's say your intended room has 2 door ways. So you will make a table of all the room with 2 doorways that were generated. Now choose a random room from that array and replace it with your intended room.
      There are many other ways to do it. But this was the first thing thar came in my mind

    • @the_actual_alex
      @the_actual_alex 4 місяці тому

      @@TextChange 🙏

  • @Balth9
    @Balth9 11 місяців тому

    Very good tutorial, Subbed!

  • @The_Spirit4595
    @The_Spirit4595 7 місяців тому +1

    Could someone help me with making certain waypoints connect the map into a loop

  • @pixerking
    @pixerking 11 місяців тому +1

    Cool, but how to make spots in rooms with random objects spawn there like paintings on walls and otheres

    • @pixerking
      @pixerking 2 місяці тому

      Just make the same rooms with different decos and place in folder

  • @LowQualityEntertainment-qy4ff
    @LowQualityEntertainment-qy4ff Місяць тому

    This could help but i was working on a project that randomly generates a map not procedural generation, similar to games such as Boris and the Dark Survival! That game makes a randomly generated layout and doesn’t use procedural generation. Do you know how to do that?

    • @TextChange
      @TextChange  23 дні тому

      I don’t even know what are you even talking about. Sorry mate 😅.
      I also apologize for the super late response.

    • @LowQualityEntertainment-qy4ff
      @LowQualityEntertainment-qy4ff 22 дні тому

      @ I’m basically asking is there a way I can make randomly generated maps that doesn’t generate new rooms the further you go through the maps!

  • @Furry_XChara
    @Furry_XChara 8 місяців тому

    WE'RE CREATING THE BINDING OF ISAAC IN ROBLOX WITH THIS ONE

  • @reduvicemaster
    @reduvicemaster 6 місяців тому +1

    what real chads do is learn

    • @TextChange
      @TextChange  6 місяців тому

      That's true

    • @reduvicemaster
      @reduvicemaster 6 місяців тому

      @@TextChange then why did you say "be a chad and copy & paste the script" in the video

    • @TextChange
      @TextChange  6 місяців тому

      @@reduvicemaster 😅 People often use the code without understanding it, then mess it up and complain that it doesn't work. It's a sarcastic way of saying, 'Just take the code and get out'. If you take a look at the comments on this video, you will understand what i mean.

    • @reduvicemaster
      @reduvicemaster 6 місяців тому

      @@TextChange but it's good to learn. I'm not talking further anymore now

    • @ProSureString
      @ProSureString 4 місяці тому

      I had this same question. Chads are people that understand what they do fully.

  • @gaminwbd
    @gaminwbd 11 місяців тому +1

    I got the starting room to spawn but nothing else spawned around it. I saw that there were two scripts, one in workspace called, "Script" and one in Replicated First called "Nothing is here" which do I put the code in? Is anything supposed to be unanchored?

    • @TextChange
      @TextChange  11 місяців тому +1

      You might have forgot to call the branchout function. Replicated storage's script is the previous script that i tested and its disabled.

    • @gaminwbd
      @gaminwbd 11 місяців тому +1

      @@TextChange how would i call out that function? What code at what line

    • @TextChange
      @TextChange  11 місяців тому

      ​@@gaminwbdcheck description or new pin comment😊

  • @GWDGV
    @GWDGV 10 місяців тому +1

    hey can you tell my why when i create my own rooms with the exact same scripts and everything it says "attempted to index nil with Position"

    • @GWDGV
      @GWDGV 10 місяців тому +1

      when i try to find the distance

    • @TextChange
      @TextChange  10 місяців тому

      maybe you forgot to set the room's "PrimartPart" property. Make your you have the primarypart and waypoint part where they need to be.

    • @GWDGV
      @GWDGV 10 місяців тому

      @@TextChangeI just resized, remodeled, and retextured your builds and adjusted the distance manually between them so W

  • @pianoman5259
    @pianoman5259 7 місяців тому

    man i even copied the exact code from the comments after typing it all out myself and it still didn't work for me, only generated the starting room and then gave nothing in the output console

    • @TextChange
      @TextChange  7 місяців тому

      Try the model provided in the description and in the pin comment.

    • @pianoman5259
      @pianoman5259 7 місяців тому

      @@TextChange alright I will, hopefully it works because I love the idea

  • @How2MagicMan101
    @How2MagicMan101 10 місяців тому

    I’m very confused on how to scale up these rooms and hallways, because every time I do, it breaks the generation.

    • @TextChange
      @TextChange  10 місяців тому

      When you scale up make sure to you calculated the distance of the waypoint and primarypart

    • @How2MagicMan101
      @How2MagicMan101 10 місяців тому

      @@TextChange so sorry for asking but is it possible to add custom textures/decals to the walls and floors? The script breaks easily whenever I try to

  • @bangbashtoday
    @bangbashtoday 5 місяців тому

    could this theoretically be repurposed for a constant generation of tiles infront os something like a vehicle that move backwards

    • @TextChange
      @TextChange  5 місяців тому

      Sorry, Didn't understand what you meant

  • @imButterGuy
    @imButterGuy 3 місяці тому

    Hi i just remodeled the models and when they generate the room without a waypoint (Room1) keeps it from finishing and it resets Can you help?

    • @TextChange
      @TextChange  3 місяці тому

      @@imButterGuy In our generation process, waypoints are crucial. If there are no waypoints in the workspace, the generation of rooms or hallways can’t continue. Waypoints help us know where to place new rooms and keep the generation going. So make sure all the room in your asset folder has at least one waypoint.

  • @Airsickword
    @Airsickword Місяць тому

    So I'm new to making things on roblox, if the Room/hallway has script based items(ex: doors) would I have to keep the scripts in the Room/Hallway to be replicated or would it be kept seperated

    • @aeea3306
      @aeea3306 Місяць тому

      You could make a script that checks if the part you clicked is a door using instead of just making a script for a door every time
      Id recommend searching on google how to check what you clicked

    • @TextChange
      @TextChange  23 дні тому

      I think you wanted to know, if your door has a script, and you replicated a copy, will it still contain the script or not.
      The answer is yes.
      When cloning something in roblox with :Clone() function, the item's every descendents get cloned with and and stays same as in the main item.

    • @Airsickword
      @Airsickword 23 дні тому

      Thank you both for the help

  • @drlssteam
    @drlssteam Місяць тому

    is it possible to make 1 time generated rooms like in Lethal Company (aparatus room)? a room that must be in the map but not more or less than 1

    • @TextChange
      @TextChange  23 дні тому

      Of course. There might be many other different ways to do so, Here is what i came up with.
      So make your Special room the way you like. After that place you room anywhere you like except the asset folder. Now you need to note how many doorways you have in your Special room. Lets say your special room has 3 doorways. Now we have to wait until the generation process is fully complete. Then we make a table/array for all the rooms with 3 doorways in the dungeon that just generated. After that we will pick a random room from that table/array, we will delete that room, and place your special room in that room's position. Since both room have exact number of doorways, your special room will fit in perfectly. Think it of as a puzzle pieces.

  • @uru4123
    @uru4123 3 місяці тому

    for some reason it wont continue past one, and the checkbox generates not infront of the room. can you please help?

    • @TextChange
      @TextChange  3 місяці тому

      Make sure your waypoint parts are facing the right way. Try to find any errors in the checkbox generation code.

    • @uru4123
      @uru4123 2 місяці тому

      @@TextChange hey uh i remade this script, do you want it?

  • @Connor_McBride
    @Connor_McBride 3 місяці тому

    I found this video really informative and helpful! I'm new to Lua and Roblox Studio, and I was testing your script with some custom rooms I built, and I'm getting an error I don't know how to fix. Upon running the game only the starting room generates, and I get this error message: Model:SetPrimaryPartCFrame() failed because no PrimaryPart has been set, or the PrimaryPart no longer exists. Please set Model.PrimaryPart before using this.
    I will note that I trimmed your code to remove all the mentions of the 'room' boolean attribute because my game is trying to generate only rooms, no halls. Is there something obvious I'm likely missing or is there something I could try?

    • @TextChange
      @TextChange  3 місяці тому

      you forgot to set the "Primarypart" property of you rooms. make sure to follow these steps 1:10

    • @Connor_McBride
      @Connor_McBride 3 місяці тому

      @@TextChange Thank You! That fixed one of the many bugs lol. I just assumed the part had to be named PrimaryPart and I didn't see that you had changed the property in the video. Again, thanks for this amazing tutorial!

  • @0MNIKAT
    @0MNIKAT 4 місяці тому

    I'm a bit late to this as well as new to coding. This tutorial is fire and easy to follow, however I am having trouble with the StartingPosition in which I'm getting an error message "Model:SetPrimaryPartCFrame() failed because no PrimaryPart has been set, or the PrimaryPart no longer exists. Please set Model.PrimaryPart before using this." Anyone know what could be up?

    • @TextChange
      @TextChange  4 місяці тому

      you forgot to set the 'PrimaryPart' property for your starting room. here, follow this 1:49

    • @0MNIKAT
      @0MNIKAT 4 місяці тому

      @@TextChange Oh my god thank you so much I get it now!! Your a genius with setting that to the pivot and thank you for pointing that out as I completly missed that part.

  • @imButterGuy
    @imButterGuy 3 місяці тому

    hey How would you to go about making the rooms load and unload depending where the player is since resizing it causes lag and this is to reduce it

    • @TextChange
      @TextChange  3 місяці тому

      @@imButterGuy that's a whole new system. You have to make that dungeon in clients side. Since dungeon generation is random, different clients will have different dungeon layout. It will cause desynchronized game play. Example one player can seemingly walk through wall because they have a doorway when another player just sees a solid wall.

  • @itzskyylark
    @itzskyylark 11 місяців тому

    What if I use different size rooms? Like instead of only 8,4,8.... I also have 16,8,16 stud rooms? Have been trying to see how to do this but I keep having rooms overlap

    • @TextChange
      @TextChange  10 місяців тому

      Check 6:31 here i showed how to calculate the distance between room. And make sure your checkbox size is same or slightly smaller then the room size.

  • @Mr.Konstig
    @Mr.Konstig 11 місяців тому

    I got the script to work now. But for some reason, nearly all waypoints are turned into dead ends. Even if it isn't a dead end. Is anyone else experiencing the same issue?

    • @TextChange
      @TextChange  11 місяців тому

      If you still have that problem then you can get the model now. Link is in the description and in the pin comment

  • @SerialdesignationNreal
    @SerialdesignationNreal Місяць тому

    Hello there I’ve tried to scale up the rooms from your dungeon download thing and the gen broke

    • @TextChange
      @TextChange  23 дні тому

      Yes i will break. It's my fault not including it in the video. 6:40 You have to follow these steps and replace that (4.25) with the new value you get.

  • @thecheeseclanwastaken
    @thecheeseclanwastaken 11 місяців тому +1

    How would i be able to script it so it would connect to a part already in the map like a checkpoint to the next area?

    • @TextChange
      @TextChange  8 місяців тому

      Sorry man. This dungeon is designed to be random. I don't know how to do that

  • @thatgmoddude3916
    @thatgmoddude3916 9 місяців тому

    i keep getting starting room errors. my primarypart is in the middle of the room. I tried taking yours and upscaling it and yet it still does not work. Any fix?

    • @TextChange
      @TextChange  9 місяців тому

      Maybe starting room Isn't in the replicated Storage.
      Without the error massage i can't understand what might be the problem

    • @thatgmoddude3916
      @thatgmoddude3916 9 місяців тому

      @@TextChange sorry i forgot to give it you the error message is just running(x4)
      retrying and the door will just be blocked

  • @krimdoff5956
    @krimdoff5956 10 місяців тому

    Hello, I noticed a slight difference between the video and the Place that you left under the video. In this place, your PrimaryPart is invisible and does not exist as a child object in the room. Do I have to do this in my Place? I just don’t know how, because you didn’t specify this in the video

    • @TextChange
      @TextChange  10 місяців тому

      Is the generation broken in the model that i provided? Anyway if there aren’t any PrimaryPart in any of the room and hallway the kindly make one as shown in the video. Being invisible or not does not matter

    • @krimdoff5956
      @krimdoff5956 10 місяців тому

      @@TextChange Actually no, everything works as expected, I just noticed this little thing, I thought it affects something

  • @collossuss96
    @collossuss96 7 місяців тому

    Hey do you have a discord or something? This tutorial is so cool but it's hard to make my own world generation based off this because I'm not sure how to limit it's reach or anything... would love to speak to you about it

    • @TextChange
      @TextChange  7 місяців тому +1

      My channel isn’t so big, so i never considered about discord or anything. Maybe in the future.

  • @glitch8442
    @glitch8442 3 місяці тому

    How would I make it possible to put a set amount of rooms in the dungeon whilst also having specific rooms limited to another set number?

    • @TextChange
      @TextChange  3 місяці тому

      @@glitch8442 I already have a max room limit on my system. (Please watch the full video. I worked hard on it man 😭😭)
      And for your second request. here is what you could do.
      Once all rooms are generated, list all rooms that have the same number of waypoints as your special room. For example, if your special room has 4 waypoints, find all rooms with 4 waypoints. Randomly pick one from this list and replace it with your special room. Repeat this until you have the desired number of special rooms in the dungeon.

    • @glitch8442
      @glitch8442 3 місяці тому

      @@TextChange ty

  • @uhm....
    @uhm.... 3 місяці тому

    hey i know this tutorial is old but i want to know how to make it only generate once because its kind of annoying

    • @TextChange
      @TextChange  3 місяці тому

      Can you explain further? I didn’t get what you want

  • @OProvedorDeServiços
    @OProvedorDeServiços 8 місяців тому

    I think I got a jumpscare from the captions

  • @OLDACCOUNT_notfireman
    @OLDACCOUNT_notfireman 11 місяців тому

    what if in a scenario one of the hallways have a waypoint that directly points towards the starting room, and as it already reached a max rooms limit it would try to generate a shop room INSIDE the starting room. is there a way to prevent this?

    • @TextChange
      @TextChange  11 місяців тому

      What? I don’t know what are you talking about. But if you are concerned about room overlapping then don't worry. This system will not overlap rooms.

  • @tearer.
    @tearer. 11 місяців тому +1

    How long did it take you to learn from scratch to this level of advanced lua scripting? It’s honestly amazing, I’m currently learning lua and I started a week ago, for now I only know the keywords, I have no idea how I can use this stuff I’m learning 💀

    • @TextChange
      @TextChange  11 місяців тому +1

      Im actually script for some years, keep it up and you will be a advance scripter in no time

  • @yumaa4612
    @yumaa4612 11 місяців тому

    Yo great video man this really helped me out, how would i go about adding varying room sizes for example a big hall room (For players to fight in) and multiple starting rooms that connect to each other with in the dungeon?

    • @TextChange
      @TextChange  11 місяців тому +1

      Heres some idea! Your tile size and checkbox size should be same as the biggest room. Now make smaller room and in the doorway try adding some parts so that the doorways match when rooms and hallways are placed side by side.

    • @yumaa4612
      @yumaa4612 11 місяців тому

      @@TextChange thank you for the help ill try implement that now!

  • @oleNikolic
    @oleNikolic 4 місяці тому

    Thanks for trying to respond to everyones comments, thats really nice! I wanted to ask you how much did you practice to get to this level of scripting?😅

    • @TextChange
      @TextChange  4 місяці тому

      @@oleNikolic I'm doing script for 3 years now. Just take easy and slow, you will reach my place in no time.

    • @oleNikolic
      @oleNikolic 4 місяці тому

      @@TextChange How old are you, im asking because im curious about if school stopped you from learning scripting sometimes, because of homework study or other things😅

    • @TextChange
      @TextChange  4 місяці тому

      @@oleNikolic I recently graduated from college. you don't need to script 24 hours a day. usually I scripted only for 2~3 hour a day. just think it as playing game.

  • @the5thber
    @the5thber 7 місяців тому

    Nice Tutorial! I was just wondering if you know how to make a limit on how many rooms are generated. Please & thank you.

    • @TextChange
      @TextChange  7 місяців тому +1

      There is already a limit to how many rooms will be generated. At the very bottom of the script where the generate function is being called. The 2nd parameters is the number of rooms you want to be generated.
      Liking and subscribing is highly appreciated

  • @Nemazares
    @Nemazares 9 місяців тому +1

    How can i modify the corridoor and room safely

    • @TextChange
      @TextChange  9 місяців тому +1

      You can edit anyway how ever you want. Just make the entry points lineup when placed side by side. Also they can not exceed the average room size ( in this case 8 studs by 8 studs

    • @Nemazares
      @Nemazares 9 місяців тому

      ​@@TextChange Ur the best

  • @GlassianVoids
    @GlassianVoids 28 днів тому

    I have no idea if you still see comments on this video but is there a way to make walls not clip through each other?

    • @TextChange
      @TextChange  23 дні тому +1

      If you follow me through everything, walls won't clip through each other. Unless you have rescaled the model. Then you have to follow this again 6:40. Because everytime you rescale 4.25 chances.
      And I still do reply to comments when I get time.

  • @Fickil1i
    @Fickil1i 7 місяців тому

    how do i fix where the rooms do not generate at all (except starting room)

    • @TextChange
      @TextChange  7 місяців тому

      Well there are many ways this can be done. But the simplest way is to place something(like a part) Where you don't want to generate the rooms. Because when the algorithm check for occupancy it will detect the part and will not generate there anymore. But this can be really annoying because its has to done manually.

  • @ziplocksadventures2321
    @ziplocksadventures2321 11 місяців тому

    its a good tutorial but i think its a little to fast because sometimes i have to slow down the video to 0.25 a second for some parts

    • @TextChange
      @TextChange  11 місяців тому

      Im really sorry about that. I had to speed up the video because it was getting too long

  • @HexProIDontKnow
    @HexProIDontKnow 7 місяців тому

    i dont know what i did wrong, every thing is done as said, but it dosnt work, can somebody help?

    • @TextChange
      @TextChange  7 місяців тому

      What is the problem?

    • @HexProIDontKnow
      @HexProIDontKnow 7 місяців тому

      @@TextChange i fixed it, the waypoint werent facing in the correct direction.

    • @TextChange
      @TextChange  7 місяців тому

      @@HexProIDontKnow apparently that is the step almost everyone messed up. 😅 i think i should have put more effort about messing up that step.

  • @kafurnakis1389
    @kafurnakis1389 5 місяців тому

    Hey is there a way to make certain rooms generate less frequently?

    • @TextChange
      @TextChange  5 місяців тому

      Yes you can! But this would need you to learn 'weighted selection'. It is too complicated to explain in a comment. But this is how you have to do it.
      When choosing a random room, instead of doing what i did. You would use weighted selection to choose a room based on percentage.

  • @niyu11val
    @niyu11val 8 місяців тому

    How do i make it so that there is an end goal, and how would i be able to just put one hallway between two rooms?

    • @TextChange
      @TextChange  8 місяців тому

      As the generation is total random, it is really tough to put a end (Like a boss room or something). But you can still try this method, after the dungeon generation is complete, choose a random room and replace it with your boss room (according to the number of doorways. Example if a room with a 3 doorways was chosen then replace it with 3 doorway variant of the boss room. Meaning you have to have all the variants of the boss room.)
      Now for your second question. You just have to replace the branchout functions loop where if statement's room == false with if statement's room == true. And edit the possibleHallways table to contain only rooms and not hallways.
      I haven’t tested any of this but it should be easy to do as long as you have strong scripting knowledge.
      Consider liking and subscribing 😅

    • @niyu11val
      @niyu11val 8 місяців тому

      Thank you, I appreciate the feedback, you have earned a subscriber!

  • @MartianLeo_T
    @MartianLeo_T 9 місяців тому

    im just trying to use this for a never ending road with occasoinal burger kings lol

    • @TextChange
      @TextChange  9 місяців тому

      😆 good luck with that