UE4 - Procedural Level Generation

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ก.ย. 2024
  • Create dynamically generated levels in under 15 minutes! This technique is super easy to expand upon and I personally feel is a nice mix between 'true' procedural and allowing your artists to have some more control.
    For this tutorial I've made a short demonstration using the cave pack by Luos which is available here: forums.unreale...!
    If you like what we do hit me up on Twitter: @HighlySpammable & @PubGamesAU and let us know!

ความคิดเห็น • 304

  • @SinisterAion
    @SinisterAion 4 ปีที่แล้ว +40

    4 years later and you're helping me make my procedural space game

    • @Zathriscm
      @Zathriscm 3 ปีที่แล้ว

      Whats the game called?

  • @Ti133700N
    @Ti133700N 8 ปีที่แล้ว +71

    Great tutorial, I'm sure Bridget will like it too.

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +6

      Hahaha, I saw the pop up while filming but somehow couldn't find it when I was previewing it. Whoops! When is it!?

    • @mehblahwhatever
      @mehblahwhatever 8 ปีที่แล้ว +6

      7:47

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +14

      +mehblahwhatever good spotting! I'll let her know of her impending fame.

  • @drur6894
    @drur6894 4 ปีที่แล้ว +2

    I honestly love the simplicity of your teaching this methods here. You gave us all the basics and explained each step along the way. I cannot seem to figured out how to actually save the generated level as an actual level itself. Can anybody point me in the right direction?

  • @jeremyflusin1232
    @jeremyflusin1232 5 ปีที่แล้ว +1

    Awesome tutorial ! I'm an absolute begginer with UE & BP, but thanks to you, I managed to implement this with hex tiles. It allows more variability in the rotation (6 positions instead of 4) and makes it harder to discern generation patterns in my opinion. Great job, man !

    • @PubGamesAU
      @PubGamesAU  5 ปีที่แล้ว +1

      Great idea! I imagine the offsetting isn't difficult and there's a great pay off.

    • @jeremyflusin1232
      @jeremyflusin1232 5 ปีที่แล้ว

      ​@@PubGamesAU Indeed !

  • @noxabellus
    @noxabellus 8 ปีที่แล้ว +4

    Well that was cool. I didn't know you could do that with sublevels at all. My head is overflowing with ideas right now, thanks

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +2

      Glad I could be of use :)

  • @theecodedude
    @theecodedude ปีที่แล้ว +1

    Lifesaver, dude! Thank you forteaching the concepts :)

  • @drphdmd7064
    @drphdmd7064 3 ปีที่แล้ว +1

    I used to think I was at least mildly intelligent. Two months into beginner Unreal Engine 4 and I realize how horrifically stupid I really am. It's humbling to say the least.

  • @FtRHckR
    @FtRHckR 8 ปีที่แล้ว +6

    This tutorial made my day. You rock man, thanks a lot

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว

      Aww shucks. Thanks for that!

  • @paweszutkowski1539
    @paweszutkowski1539 8 ปีที่แล้ว +2

    Nice! Word from me: You can speed up loading significantly by typing full Level Package path: "/Game/Procedural/Procedural_01" instead just "Procedural_01".

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว

      Good catch!

    • @Shrooblord
      @Shrooblord 4 ปีที่แล้ว

      Wish I could pin / favourite comments for my personal use. x)

  • @MrPangahas
    @MrPangahas 8 ปีที่แล้ว +1

    Sweet tutorial ,clear and straight to the point.I hope to see an expanded version like the one where you said something about certain levels to be only connected to a certain level.

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว

      The easiest way to do it would be to add an extra loop to make it 3 dimensional (so the third loop is z axis) and then select a single cell each story to have as a connector piece.

    • @XistenceX1
      @XistenceX1 8 ปีที่แล้ว

      Problem then being to make stairs or more accurate (not 100% random) generation it'd be great, but the logic would then be per level wouldn't it?

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว

      Yep. Per floor with an intelligent gap left for stairs

  • @Compguy321
    @Compguy321 7 ปีที่แล้ว +1

    I plan to use this in my Planetary Settlers game to make random levels to explore! Thank you!

  • @The_Eno
    @The_Eno 5 ปีที่แล้ว +1

    I'm working on a new system thanks to this that will make dungeons never play the same, and also load really quickly. It's the best system you can make without paying multiple programmers to do something as complex as what Kings and heroes has done (if you are familiar with their system). I just want to thank you from the bottom of my heart for making such a great tutorial, stumbling on this 2 months ago has really opened up my mind to so many new possibilities. Are you on Ue4 forums btw?

    • @God-ch8lq
      @God-ch8lq 5 ปีที่แล้ว

      would you give us the link

    • @The_Eno
      @The_Eno 5 ปีที่แล้ว

      @@God-ch8lq To what? The blueprint I clearly said I'm still "working on"? What are you hoping to obtain from a link?

  • @Boomerkin
    @Boomerkin 8 ปีที่แล้ว +1

    Thanks! That's a lot more simple than I thought it was going to be.

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +2

      So I guess you could say you weren't overwhelmed? ;)

  • @KrugerFS
    @KrugerFS 3 ปีที่แล้ว

    Way simpler than another one I tried a few years back, a great video. will link to the project once it's done. Thank you for sharing your knowledge.

  • @petermendez9486
    @petermendez9486 5 ปีที่แล้ว

    I am trying my hand at making DnD game, trying to make it as close to real DnD as I can. So i will be using this method you have shown us and giving it to the DM Character as an input action so he can regenerate the world until he gets what he wants.
    (My original goal was a scultpable/destructable landscape but there isn't any tutorials and creating one off the top of my head is way above my skill level.)
    Thanks a lot for this, I really mean it

  • @unimpressedturtle2847
    @unimpressedturtle2847 3 ปีที่แล้ว

    I finally have a means of creating a procedural city block for my immersive sim project. Much obliged friend.

  • @seesharpist
    @seesharpist 7 ปีที่แล้ว +17

    Any chance you'd do an extended tutorial on selective connecting? Would love to see how you could pick from a subset of levels depending on what you wanted to line up with the neighboring tile. Great tutorial!

    • @The_Eno
      @The_Eno 5 ปีที่แล้ว

      I'm with Kyle on this. Would be great for an extended tutorial on selective connecting.

  • @KadeMarkoux
    @KadeMarkoux 6 ปีที่แล้ว +2

    This is really cool, I think I may possibly end up using it in two game projects. Been looking for a solution so this is definitely useful, thanks!!

  • @CosmicCarnage420
    @CosmicCarnage420 6 ปีที่แล้ว +2

    Holy crap, I've been using your Udemy guides! I just stumbled upon this video and immediately recognized your voice!

  • @CharlesButlerVIII
    @CharlesButlerVIII 6 ปีที่แล้ว +1

    Very informative, I tried it out by following along and this seems like a very useful starting point for procedural levels!

  • @dienand_
    @dienand_ 3 ปีที่แล้ว

    Thanks, I'm just getting into UE4 and this was really easy to follow and understand!

  • @thirdplanetman9468
    @thirdplanetman9468 4 ปีที่แล้ว

    This was exactly what I was looking for, I'm gonna try it soon, thank you very much ! I'll let you know what comes of it, this was a fantastic guide !! Please keep doing these videos !! You're the best !!

  • @Archonxtreme
    @Archonxtreme 3 ปีที่แล้ว

    You are an absolute legend! Hoping to use this in a future project!

  • @Betazeno
    @Betazeno 7 ปีที่แล้ว +1

    Wow you made this so easy and understandable. Great Tutorial!!!

  • @MarkBarnesVizion
    @MarkBarnesVizion 7 ปีที่แล้ว +1

    I'm using 4.16, and for some reason, I keep getting one level to pop up, in a random place... and an error message saying "Accessed None"..." and "Attempted None..." , when trying to call the Create Instance function. Is there something that I may be missing?

    • @KyleJohns
      @KyleJohns 6 ปีที่แล้ว +2

      this still happens in 4.19

  • @Martyr104
    @Martyr104 3 ปีที่แล้ว

    Way easier than i thought, thank you!

  • @RevansMinion
    @RevansMinion 6 ปีที่แล้ว +2

    Sadly I can only ever get one tile to load, however I really appreciate the information provided in this!

    • @user-lu6zz1hc8p
      @user-lu6zz1hc8p 6 ปีที่แล้ว +1

      Robin Renaud same

    • @Dankolicious
      @Dankolicious 6 ปีที่แล้ว +1

      Same here, you guys figure it out?

    • @drur6894
      @drur6894 4 ปีที่แล้ว +2

      Old post, but for anyone who sees this, when this happened to me it’s because I did not set the initial “Load Grid Size” variable time 9 when it’s default is 0. He mentioned it pretty quickly.

    • @MissingTexture
      @MissingTexture 2 ปีที่แล้ว

      @@drur6894 ty brother

  • @morbid1.
    @morbid1. 7 ปีที่แล้ว +2

    I don't know why but I got gaps between tiles, different size gaps.

  • @Shrooblord
    @Shrooblord 4 ปีที่แล้ว

    Excellent tutorial; thank you. Was just looking into how to do this.

  • @tiny_mage
    @tiny_mage 5 ปีที่แล้ว +1

    Thanks mate

  • @Shadowdawnz
    @Shadowdawnz 8 ปีที่แล้ว +2

    Great Tutorial! Thank you!

  • @mustangsally2048
    @mustangsally2048 6 ปีที่แล้ว +1

    If you create a multiple levels.. how do you combine each separate one into one map? Cause right now they are all different files I must open up separately. Please help. 🙏

  • @nilox4037
    @nilox4037 6 ปีที่แล้ว +1

    Thank you thats what i was looking for

  • @altarkan5027
    @altarkan5027 5 ปีที่แล้ว

    I started learning ue4 3 days ago and i did it! :D it was well explained thx for your tutorial! " i just needed to make an project environment to interact with my Ai pawn location system and it's perfect "

  • @amajesticmango
    @amajesticmango 4 ปีที่แล้ว +6

    The echo of his voice makes him sound like hes in a cave

    • @jansenhondo9372
      @jansenhondo9372 4 ปีที่แล้ว

      This is 4 years ago man, and hes a big help

  • @iangraham6730
    @iangraham6730 4 ปีที่แล้ว

    Great tutorial, thanks for sharing!

  • @gabrielepardi5178
    @gabrielepardi5178 6 ปีที่แล้ว

    Thanks. Very Interesting tutorial. Much appreciated!

  • @LEGIT134
    @LEGIT134 7 ปีที่แล้ว +1

    Awesome:). This is really cool. What you can make happen is Unreal:). I bet games like Final Fantasy XV use systems like this:)

  • @AidSta666
    @AidSta666 5 ปีที่แล้ว

    Very cool, and well explained. Thank you generously :)

  • @ARMORHOUS3weplay
    @ARMORHOUS3weplay 4 ปีที่แล้ว

    You're a God impersonating a human lolol wowowow I'm soooo happy this works!!!!!!!!

  • @clebo99
    @clebo99 4 ปีที่แล้ว

    I know I'm 3 years late but this is a FANTASTIC video. Dumb question, can I paint foliage like grass or trees onto the procedural levels? I don't seem to be able to do that.

  • @LEGIT134
    @LEGIT134 7 ปีที่แล้ว +2

    I have a great question. Today was my first day to experiment with different static mesh items in place of the simple blocks you set up in your video. I switched four different rocky surfaces in place of all your blocks. I also added different color lights to a few of them and got really cool results. I did notice a lot of lag when doing this. I got rid of the lights and saw a lot better results. Do you have any recommendations when doing this. What is the limit on how many items you can place in your self generated maps? 4, 6, 245?

    • @faisalchowdhury1688
      @faisalchowdhury1688 6 ปีที่แล้ว

      you might be able to do something interesting by having some conditions for generations what he teaches here is the foundation by you can build more on top of that . On the top of my head i would say create a random chance for a light to spawn on top of the already spawned game map

  • @codywohlers2059
    @codywohlers2059 7 ปีที่แล้ว +15

    why does everyone who makes an unreal tutorial leave the built-in tutorial icon flashing?? so distracting

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว +26

      codywohlers it's the coat of arms of tutorial club.

    • @Latvian3Dman
      @Latvian3Dman 6 ปีที่แล้ว +10

      That icon just serves purpose to show, is UE4 editor frozen or not :) And it is not completely a joke, it does.

    • @faisalchowdhury1688
      @faisalchowdhury1688 6 ปีที่แล้ว +1

      hey man great video i do have a question, why is the tile size 1000 instead of 100 i do believe we set all tiles x:10 y:10

    • @minosoft3471
      @minosoft3471 5 ปีที่แล้ว

      @@faisalchowdhury1688 100cm = 1 meter; 1000cm=10 meters

  • @AssassinGrudge
    @AssassinGrudge 5 ปีที่แล้ว +1

    can we use this to create minecraft

  • @TelemarketerOO7
    @TelemarketerOO7 6 ปีที่แล้ว

    Really nice tutorial

  • @chrisbalinario2969
    @chrisbalinario2969 8 ปีที่แล้ว +2

    Hi, great tutorial.
    Just wondering how do you check if the level stream has finished loading(spawning) the level then switching to the level?

  • @mrrich1375
    @mrrich1375 6 ปีที่แล้ว

    This video was more helpful then any other one.

    • @PubGamesAU
      @PubGamesAU  6 ปีที่แล้ว

      You say the sweetest things.

  • @J大侠
    @J大侠 6 ปีที่แล้ว

    Cool man! Nice tut

  • @notanagger4861
    @notanagger4861 7 ปีที่แล้ว +3

    this is such a fucking good tutorial man..... like holy shit i cant thank u enough man...... u, my friend , are the best!

  • @OPirataVham
    @OPirataVham 8 ปีที่แล้ว +2

    Cool work, It was a great lesson.

  • @mobilityrp3888
    @mobilityrp3888 3 ปีที่แล้ว +1

    9:21 When you explain that we need to divide by 2 and subtract that. Can you explain a little bit more on why that is the method, I'm not understanding that concept

    • @GameDevGary
      @GameDevGary 3 ปีที่แล้ว

      The center point on a line with a length of 4m is 2 m. To center the reference point of spawning, you do that for each axis. The reason you subtract by the index is because as the index increases, the new objects spawn transform will be further away from the center, giving you a grid with the tilesize spacing.

  • @diegofreire1966
    @diegofreire1966 5 ปีที่แล้ว

    oh shit, i just fixed, good tutorial.

  • @sahurows
    @sahurows 3 ปีที่แล้ว

    thank you!

  • @louiskaufman9721
    @louiskaufman9721 7 ปีที่แล้ว +1

    Hey great little tutorial! I have modified this to use one for loop to generate a straight line of tiles for a side scrolling platformer. In certain scenarios I want to add an end cap to my line of generated tiles. I was able to do it by creating a separate array with just the end cap in it. That seams inefficient. I'm wondering if there's a way to call, for example, randomly either Procedural01 or Procedural02 when I'm making my straight line, but later be able to only call Procedural03(pretend its the end cap).

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว

      Hmm.. You could make a struct with map references and certain attributes (like whether it can be used as an end cap) and populate a single array with that?

  • @Zarrar2802
    @Zarrar2802 2 ปีที่แล้ว

    hey great tutorial, just one question. Sorry if this is a stupid question, my maths is terrible, but if I'm getting the length of an array whose last index is 5, the length would be 6 right? cause arrays start at 0. So if I'm getting a random from length, my random integer would be between 1 and 6? in which case wouldn't it throw a null exception whenevr it calls the 6th index since there won't be anything at 6?

  • @sockMonster241
    @sockMonster241 4 ปีที่แล้ว +1

    Throwing all kinds of weird errors for me... not sure what I did wrong. Does this still work 4 years later?

  • @GarrettMcGrath815
    @GarrettMcGrath815 8 ปีที่แล้ว +1

    To clarify, wouldn't dividing the index in half and using that as a negative offset for x,y cause 0,0 to be the center of the map instead of being on a corner?

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว

      At the moment I'm offsetting it by half of its total width by multiplying max index by tile size and dividing by 2.

  • @jacklouismorgan
    @jacklouismorgan 8 ปีที่แล้ว +5

    Isn't this one of the kids from round the twist?

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +5

      have you heard the word about the bird and the spider?

  • @ayushagnihotri8600
    @ayushagnihotri8600 3 ปีที่แล้ว

    Great tut man, love it..😍😍

  • @sweety_sheep5090
    @sweety_sheep5090 5 ปีที่แล้ว +1

    hey, so it almost works for me, i have a small portion of the map where it does not generate, it's just blank but otherwise it works... Any idea?

    • @sweety_sheep5090
      @sweety_sheep5090 5 ปีที่แล้ว +1

      Blueprint Runtime Error: "Accessed None trying to read property CallFunc_CreateInstance_ReturnValue". Blueprint: persistent Function: Execute Ubergraph Persistent Graph: EventGraph Node: Set bShouldBeLoaded

    • @sweety_sheep5090
      @sweety_sheep5090 5 ปีที่แล้ว +1

      I am now messing around with the unique entity name and i believe it affects the problem. I tried to add a random integer to the name and now the issue is gone, i's like to understand what's the problem tho

    • @sweety_sheep5090
      @sweety_sheep5090 5 ปีที่แล้ว +2

      @Obi-wan Clintobi Yes I had that problem. fixed it by appending random numbers to the unique entity name. Seems weird, i have no clue why it worked for me...

    • @drur6894
      @drur6894 4 ปีที่แล้ว +1

      When this happened to me it’s because I had a total array size of 4 but I had 5 names in the StreamingLevelNames variable, so for the missing one it left a blank 10x10 square. I found this by using a “Print Text” node (print variable of current level name spawning) on the end of the last node, and noticed the was 1-3 but no fourth. Hope this helps anyone.

  • @SmarTechDev
    @SmarTechDev 6 ปีที่แล้ว

    Love It!

  • @CireprE
    @CireprE 8 ปีที่แล้ว +1

    Really liked your tutorial! But could you tell me what advantages there are to using level instances instead of just actor instances?

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว

      So there are a couple but most of them come down to design space. By doing them as level instances you have way tighter and cleaner control over the placement of assets within the sub maps. You could theoretically add blueprints that add a level of sub-randomisation too (so lamps change style randomly on streaming or a desk re-clutters itself).

  • @IzeIzeBaby
    @IzeIzeBaby 8 ปีที่แล้ว +1

    Really cool :D
    Will you make another part? Like different size tiles, rooms with doors / no doors depending on the tile next to the door etc.?

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +1

      Thinking about it. I've done it in the past but it requires a fair amount of work to do for a tutorial.

    • @IzeIzeBaby
      @IzeIzeBaby 8 ปีที่แล้ว +1

      Pub Games would be awesome to extend this :D

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +1

      I'll have to see if our contractor work dies off a bit or if our patreon gets some traction. If either of those happen you've got a chance at an extension!

  • @TheLegend-nx3mm
    @TheLegend-nx3mm 7 ปีที่แล้ว +1

    Hi Pub Games , This is excellent. Do you offer a service to build levels ? If all the props are supplied ?
    Kind regards
    Danny

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว

      Sorry but we're pretty loaded down with work right now. I can suggest some potential candidates that do paid level development work though.

  • @paoutooPREMIUM
    @paoutooPREMIUM 6 ปีที่แล้ว +1

    Great lesson! I'm looking for a way to randomly generate some preset/pre-built buildings in specific locations around my map, not an entire procedural map; could I use this method for that? Would I need to make a blueprint?

    • @TheAxebeard
      @TheAxebeard 6 ปีที่แล้ว

      Same here, but I'm generating city blocks procedurally as my level.

  • @NebosvodGonzalez
    @NebosvodGonzalez 2 ปีที่แล้ว

    im making intergalactica game with infinity planets and stuff. thx for the tips

  • @iangraham6730
    @iangraham6730 4 ปีที่แล้ว

    Wow, Bridget tho!

  • @glassramen
    @glassramen ปีที่แล้ว

    Edit: For some reason my comment didn't update. So if you follow along keep in mind you MUST use the append node or you will get errors and it wont work.
    Edit2: I'm sitting here trying to figure out why any value over 9 (for grid size) works, everything generates, but it produces the same errors as if you didn't append names to the instances.
    Old: Hmm I'm using 4.27 and for some reason the return value pin coming from create instance is returning nothing resulting in a mass of errors with the set transform/loaded/visible nodes.

  • @dachhh
    @dachhh 7 ปีที่แล้ว +1

    This is an interesting approach. What are the pro's and cons of this, compared to having a few static meshes and manually placing static mesh instances into the persistent level in a 10x10 grid?

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว

      This is way more customisable since you are building mini levels while still referencing the same meshes in different tiles. It cuts down on unique asset requirements and helps developers stay within their existing workflows.

    • @dachhh
      @dachhh 7 ปีที่แล้ว

      Pub Games and in terms of performance, culling geometry etc

  • @cmiscik
    @cmiscik 7 ปีที่แล้ว +3

    Great tutorial! I've been experimenting with this on my own, as well as giving it to my students so that they can get practice with making chunks of levels that repeat nicely. Unfortunately, we've run into a handful of problems. The main one being the placement of the meshes in the sub levels can sometimes come out different when you simulate or play. for instance, I made a simple cave from five or so rocks piled together. looks fine in the editor, hit simulate and they are all pushed in on top of each other. To get around this, I've parented them all to one rock and it works better, but it's still an annoying step. Any ideas? By far the worst one though is moving things up and down. I'm trying to make a sunken Atlantis type level with some sub levels higher up than others. I move the floor down, looks fine in editor, hit play and they are back to being zeroed out. Tried parenting them, tried closing the editor, nothing works. Please help!

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว

      That's bizarre, I haven't encountered that issue at all. Which version of the engine are you using?

    • @cmiscik
      @cmiscik 7 ปีที่แล้ว

      4.13

    • @MrTurkan26
      @MrTurkan26 7 ปีที่แล้ว

      I've had the same issue, particularly if there is any verticality to the level. I am trying to built a single story indoor environment of corridors and rooms but when I add walls to each procedural level, the simulation generates very bizarre placements of meshes.

  • @albertkam191
    @albertkam191 3 ปีที่แล้ว

    @Pub Games Any chance you can do an updated tutorial on a procedurally generated world kind of like in Valheim? Like, using perlin noise to generate the terrain, and then loading/unloading chunks (world composition)?

  • @angius
    @angius 7 ปีที่แล้ว +1

    Probably necroposting at this point, but how would one go about expanding this system, so that it can generate L-corridors, I-corridors and T-junctions coherently?

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว +4

      So there's a bunch of ways to go about doing this. First and foremost you're going to need to switch it to being a more intelligent placement system (I'd suggest using the A* algorithm) and then use a bit of pattern recognition to work out intelligent streaming based on the kind of element that's being placed. A good place to start would be the twitch stream Epic did a while back on Procedural Generation. The files for that are available in the Learn tab of your Unreal Engine Launcher. Good luck!

  • @LeeKao
    @LeeKao 3 ปีที่แล้ว

    This will work with cubes, but will it work with landscapes? how would you create something like a river in your world when you apply this method?

  • @liliansananikone3588
    @liliansananikone3588 ปีที่แล้ว

    Please, I need help. I followed this tutorial from the beginning to the end but I still have a issue : all my levels are instantiated in the same place. I don't know why.

  • @omkar422
    @omkar422 6 ปีที่แล้ว +6

    HOW CAN WE MAKE THIS INFINITE,
    GENERATE AUTOMATICALLY AROUND PLAYER .
    PLZ HELP .....

    • @elevatetechai2024
      @elevatetechai2024 6 ปีที่แล้ว +3

      n geometry, a torus world shape will be infinite

  • @SanderMFC872
    @SanderMFC872 8 ปีที่แล้ว

    I'm wondering if something like this can be used with a randomly generated heightmap algorithm for terrain to make caves. (which would otherwise not be possible). By sometimes placing square craters in the map and populating them the way you do here. Is that feesible do you think?

  • @KlngMandy
    @KlngMandy 8 ปีที่แล้ว

    Great tutorial please do more :)

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว

      Already recorded a new one!

  • @RossTownsend
    @RossTownsend 8 ปีที่แล้ว +1

    That looks allot better than what I have done!
    I have been working on procedural levels using instanced static meshes... how does using them in levels compare for performance?
    I'm doing an infinite terrain game, would this matter?

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว

      It's really a correct-tool-for-the-job kind of situation. If I had an infinite world I'd personally do bases and camps with level streaming and terrain generation as instanced meshing.

    • @RossTownsend
      @RossTownsend 8 ปีที่แล้ว

      +Pub Games Wait, so what? how you did it then?
      what I have done is endless Spline "main" roads, then fill in all the gaps with procedural tiles which create housing and side roads (distance from centre and random vectors define density and style)
      watching your tutorial, it looked cleaner... should I change?

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว

      It really depends on what you're trying to achieve in the long run. Without knowing the specifics I honestly couldn't tell you unfortunately!

  • @thestormfamilly4168
    @thestormfamilly4168 6 ปีที่แล้ว

    thanks you , i will use it ! :)

  • @alpakman2978
    @alpakman2978 ปีที่แล้ว

    it can be from 2016 but still saving the day 🤌🤌🤌

  • @diffraction163
    @diffraction163 5 ปีที่แล้ว

    this is really, REALLY cool. i wonder if(well, more like how to do it) there is a way to
    1) reconstruct a random generated level
    2) set up corridors and make them rotate to each other (im a friend of organic shapes, but having a door or a bridge and having those rotate to each other would greatly improve my game)

    • @diffraction163
      @diffraction163 5 ปีที่แล้ว

      oh and almost forogt: 3) having these be generated "real time", so when im almost done with the stuff in tile 1 and 2, tile 3 and 4 2 will get added

    • @PubGamesAU
      @PubGamesAU  5 ปีที่แล้ว +1

      @@diffraction163 1) Yep. Just use a seed number so that the randoms are the same. 2) Yep but it'll require more logic and actual pathfinding or a wave form collapse algorithm. 3) Yep. Just run it from a trigger of some sort. Good luck!

    • @diffraction163
      @diffraction163 5 ปีที่แล้ว

      nevermind! i used a geometry box at first (but this wont get generated) and set it to glass to align my other cubes... damn that thing is powerful

    • @diffraction163
      @diffraction163 5 ปีที่แล้ว

      so finally ima show you where your tutorial lead me: th-cam.com/video/i9OAeJfb4IQ/w-d-xo.html quick and dirty with starter content cubes only (therefore some ugly clipping but whatever)

  • @jordant3512
    @jordant3512 5 ปีที่แล้ว

    Any thoughts on adding a navmesh? Would I make a big one inside persistent level, or add one to each 10 x 10 cube (would AI be able to traverse individual navmeshes?)

  • @manonthedollar
    @manonthedollar 2 ปีที่แล้ว

    7:47 whatever happened between you and bridget

  • @nicolassanmartin4673
    @nicolassanmartin4673 8 ปีที่แล้ว

    Excellent tutorial, thank you!
    I have a question if you don't mind: Say I have modular assets that mostly can be used as described on the video (10x10 tiles that can be rotated to form different combinations), but a few of them (for example a river that covers 4 tiles in an L shape) would require other tiles in a particular position to be usable. How would you go about doing that?
    Thanks again!

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +1

      Hmm, it depends! Most methods are going to require you creating a 2D array that stores tile information and then using that information to intelligently set an applicable tile. Check out the Epic Twitch stream on the subject from a while back for more information!

    • @nicolassanmartin4673
      @nicolassanmartin4673 8 ปีที่แล้ว

      Thanks for the quick reply!
      I can't seem to find said stream. Twitch doesn't have the previous ones saved and it doesn't seem to be on TH-cam either. There's some documentation on Epic's website, but with my programming knowledge it's almost the same as reading chinese trying to figure out how to put it together to solve this problem. Any idea of other resources that might help me specifically for this issue?
      For a moment I thought about making larger prefabs that would use several tiles, but they'd probably overlap with this configuration and it'd end up being a huge mess.
      Thanks!

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว

      Okay so picture this: You need to get all of the information a tile is going to need for other tiles to process it correctly. So you're going to want to make a struct. This will likely include which directions that tile allows as "exit" tiles. After that you're going to want to make an array that is filled with every tiles information in the map, but it's going to need to be an array that's representative of a 2 dimensional grid of tiles so you'll need to make an array the size of your grid size in both directions (so X*Y). You're then going to need to step through all of this and work out what each tile is and whether it can have a certain tile there or not. Hit me up on Twitter (@HighlySpammable) if you're having trouble.
      Look at how he's doing it here: th-cam.com/video/mI7eYXMJ5eI/w-d-xo.html

  • @TheMrVerbal
    @TheMrVerbal 8 ปีที่แล้ว

    first off, great tut! Was the first one i was able to complete. paused it about 100 times, but i got most of it. one question i have is, i didnt notice you setting a value for the variable level grid size. If i dont enter a default value, i only get one grid. Also if i were to use a variation of this as a mob survival style shooter, how would place an extra tile at the end of the creation with a player start? not quite following the math, but i figure that there should be a way to calculate the coords. any help would be appreciated.

  • @diegofreire1966
    @diegofreire1966 5 ปีที่แล้ว

    I tried it and I have a problem, it wont do anything, exept when i change the value of the LevelGridSize variable, but there are 2 problems with it
    1. it will only generate in a straight line
    2.unreal crashes if i set the value to high

  • @bulatburato9088
    @bulatburato9088 5 ปีที่แล้ว

    great guide.
    I have with Cubes that the character can run anywhere. But if I use trees or other than cubes, I can not run between them!

  • @Restart-Gaming
    @Restart-Gaming 3 ปีที่แล้ว

    will this work for large open world landscape tiles that have animals trees lakes rocks etc let say 24 five or take a few if so would I do the same but with tiles are made with unreal tools?

  • @LEGIT134
    @LEGIT134 7 ปีที่แล้ว

    I had thoughts of creating many really low poly objects with high res textures. Is that not a good idea with this method?

  • @tradeandmagicofficial2563
    @tradeandmagicofficial2563 4 ปีที่แล้ว

    ehi thanks it worked really good, if i would desire to make room with different sizes and not only 10 x 10 rooms?

  • @hadihoseinzadehsalaleh269
    @hadihoseinzadehsalaleh269 8 ปีที่แล้ว

    great tutorial man, I was wondering if the level is pretty dense when you start the game will it load it first then play or it will load the level while playing?
    for example if it was the second case if the level start had a cinematic wouldn't it be weird since the start of the cinematic will be blank!
    (I'm saying this because I made a level using landscape grass tool to place assets on a terrain and I had a cinematic at the beginning when I tried to record the cinematic it was recording while placing the assets in the level and IT WAS WEIRD! and disappointing since I couldn't find any way around that but to delaying the cinematic!!! )

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +1

      So there are a couple of ways to get around this but the easiest is to make the screen black, check if each level is loaded and then only start the sequence/matinee once they're loaded.

    • @hadihoseinzadehsalaleh269
      @hadihoseinzadehsalaleh269 8 ปีที่แล้ว

      Thanks for the reply ,
      making the screen black! that's a nice trick!!! ;)

  • @Bredmirror
    @Bredmirror 8 ปีที่แล้ว

    Very nicee!

  • @scottlee38
    @scottlee38 8 ปีที่แล้ว

    This! This is impressive! Much Much better than any I've seen as far as random generation goes. Are you still working on this?

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +2

      Thanks! Kinda just threw it together on a whim. Want me to go more in depth in a particular area?

    • @scottlee38
      @scottlee38 8 ปีที่แล้ว

      Pub Games Yes! I will wamt to make my tile size bigger so that players have more activity when in each asset. I womder how much bigger things can go without too much delay?

    • @scottlee38
      @scottlee38 8 ปีที่แล้ว

      Pub Games I was gonna suggest runtime asset generation, having the game spawn assets randomly as the player continues to move but that might be overly complicated and this serves a good purpose enough xD

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +1

      scott lee I could probably do that. I'll put it on the list :) I basically just do these things whenever I find time but it's harder and harder to come by.

    • @scottlee38
      @scottlee38 8 ปีที่แล้ว

      Pub Games No problem! Im in the midst of working on my base characters for a project of my own anyway. XD

  • @mattcuco
    @mattcuco 6 ปีที่แล้ว

    Sorry to bother but I've got plenty of those errors and nothing is generated :/
    Blueprint Runtime Error: Attempted to assign to None from function: 'ExecuteUbergraph_Procedural_P' from node: Set LevelTransform in graph: EventGraph in object: Procedural_P with description: Attempted to assign to None
    Blueprint Runtime Error: Accessed None trying to read property CallFunc_CreateInstance_ReturnValue from function: 'ExecuteUbergraph_Procedural_P' from node: Set bShouldBeLoaded in graph: EventGraph in object: Procedural_P with description: Accessed None trying to read property CallFunc_CreateInstance_ReturnValue
    Blueprint Runtime Error: Accessed None trying to read property CallFunc_CreateInstance_ReturnValue from function: 'ExecuteUbergraph_Procedural_P' from node: Set bShouldBeVisible in graph: EventGraph in object: Procedural_P with description: Accessed None trying to read property CallFunc_CreateInstance_ReturnValue
    Blueprint Runtime Error: Accessed None trying to read property CallFunc_CreateInstance_ReturnValue from function: 'ExecuteUbergraph_Procedural_P' from node: Set LevelTransform in graph: EventGraph in object: Procedural_P with description: Accessed None trying to read property CallFunc_CreateInstance_ReturnValue

  • @Zephir62
    @Zephir62 8 ปีที่แล้ว

    A+ love it!

    • @PubGamesAU
      @PubGamesAU  8 ปีที่แล้ว +1

      Thanks! Much appreciated :)

  • @LEGIT134
    @LEGIT134 7 ปีที่แล้ว +2

    Wonderful:) I followed your every step even to the placement of each blueprint node:) I click generate and I get similar stuff to what you have:) Now you say I can exchange these pieces for whatever I want?:) That would be awesome:) I imagine I could make things bigger by adjusting the ForLoops:) Thank you for this great tutorial. I can't wait to really make great stuff using your system:) Hopefully even make money:)

    • @PubGamesAU
      @PubGamesAU  7 ปีที่แล้ว

      LEGIT134 Glad to hear it! Good luck!

    • @LEGIT134
      @LEGIT134 7 ปีที่แล้ว

      I used the tiles like you illustrate with that one light. When I build my scene are each piece being prelight by the light I placed previously when assembling each piece? It also looks like I could place my regular geometry and then build my map and the pieces would be built around my terrain that I built:). Awesome:). Have a wonderful day:)

  • @Velor5
    @Velor5 7 ปีที่แล้ว

    Thanks for this brillant tutorial, any hints about how to procedurally generate rooms?

  • @jacksonnexhip
    @jacksonnexhip 6 ปีที่แล้ว

    thank you ythis is awesome

  • @suri4Musiq
    @suri4Musiq 7 ปีที่แล้ว +4

    Hey, it was a wonderful tutorial. Can we request you a c++ version of this procedural content. I am assuming it will reduce the time to follow and create using this pipeline, if we use it.

    • @jessikanewman3015
      @jessikanewman3015 6 ปีที่แล้ว +1

      It's hard to convince someone that C ++ tutorials are the way to go, because most people who rock c++ on UE4 know enough to figure most of it out themselves. I'm in the same boat, though. Would love to see a c++, showing some of the nitty gritty of making the dependencies between pieces more intricate.

    • @KyleJohns
      @KyleJohns 6 ปีที่แล้ว +1

      I was able to replicate in C++ just dont know how to do the unique name for the instance :/

  • @SanjithJothiKanagavel
    @SanjithJothiKanagavel 7 ปีที่แล้ว

    Hey i tried the same thing without any change. I couldn't see any generation happening. My map is empty. What am i missing here ??
    Update : I have fixed it. I was using should block on lock instead of should be loaded :)