Handmade Hero Day 662 - Generating Entities from Layouts

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
all right hello everyone and welcome to handmade hero uh we are going to do a little survey here of where we are just for people who may not have been following for the past or well it's been a couple weeks so in general you would be forgiven for forgetting uh where where we are sometimes i wonder how i don't forget where we are uh because i don't seem to um hold on a second here while we set up the shell there we go um and i don't know i guess if you just program for long enough uh you keep it in your head i don't really know how that works it's just like lots of different program states in your head or something not sure uh but anyway if uh if you take a look at the procedural generation stuff was it in world gen or something like that yeah um we've we've sort of done some layout code that's designed to to make it so that we have an idea of where things go in the overworlds and if you run the game it'll show you those things in sort of like a structural view right so you know we we did some code it's probably not fantastic you know we're just kind of like making some some basic stuff here but basically the code is just something that produces these little connected islands of stuff and each of these different colors is a different type of thing like red is sort of like where monsters might be more populous right um oh wait i don't remember exactly which one the way we did this there [Music] there was dungeon color which i think was yellow but that might be a lie uh but i so i think it was like dungeon color was yellow red was monsters blue was items and green were just rooms that are for connecting uh things and so some of them like here may get removed entirely like the green rooms if they're not necessary anymore because you don't like green rooms are literally they're just there to make more interesting connectivity they don't they don't mean anything they're not real room well rooms areas of the overworld map um and so you know looking at it here you can kind of see like you want it to feel roughly like this and you can see that you know this map is probably you know maybe it's a bit large i don't know um i'm not sure how we want this to play that's really a game design uh question right so maybe it's too large i'm not sure but in general what i would say about it is like we're just going to start with this and see you know where we go with it and the idea would be that we want to fill in the world so that actually this whole like area around like within some distance uh of all of these rooms is like filled in and also all of the lines and so the ending in terms of like what actual like areas have data for them we want something that kind of would just look like a blobby version of this right where it's all filled in and what we care about we don't necessarily care if you can get between two rooms in some other way like this is not this connectivity graph is not necessarily doesn't have to be interpreted as a like mandatory like this has to be um a like this this has to be the only way you could get between these two things this is just what we would consider our mandatory minimum connectivity graph like we don't want to produce any resulting grid based layouts that would cause you to be able to get to rooms in any less than this way and the reasons for that are twofold one just so we can have a way of controlling that at a higher level but two we just have to make sure everything is reachable right like we need some way of guaranteeing and there's many ways we could do that but we need some way in general of guaranteeing that all of the stuff we put in the game in the procedural generation side when we generate stuff we have to know you can get there and so having like some idea of what the minimum connectivity graph is while the lower level stuff is generating is just kind of my way of saying well all right if i if i have something like that sorry i just exited here's another one if i have something like this and then i make sure that the lower level code that's going to actually put in the grid version if i make sure that that code always respects this connectivity graph in some way then i at least have some reasonable uh and you know uh i can i can make a reasonable assumption right that i'm not preventing the player from getting somewhere that they absolutely need to go so that's pretty much it now it's easier said than done because we don't really have any particular uh you know we don't really know how we would necessarily do that there's a couple ways you could imagine doing that and i'll talk about a little that a little bit right now but if you look at something like this connectivity graph here there are some straightforward but not particularly good ways we could go about doing it for example one way would be just to actually use this line literally and just say when we are putting down grid stuff right you could imagine just creating like a box here and going through it and putting down like uh you know forest tiles well we could literally put a thing that says if you're within a certain distance of this literal line don't put forest tiles right we could do that i mean there's nothing stopping us from doing that the problem with something like that is if we literally just do just that meaning we don't take any pains to do anything more careful the game will feel a bit weird because this you would literally walk like along like these lines exactly and it just wouldn't you know it wouldn't feel very much like a forest because forests don't have straight lines like that you know even when they're man-made lines in you know even if someone's cutting a line through a forest they don't tend to cut a straight line right it tends to be like more wiggly so my assumption here is that we might want to do something where before we actually start generating the actual tiles we like jankify the line more because you could imagine us taking this line and just making it like meander right and then if we did that then it might not be weird to do right at that point then maybe we could literally just say all right now we require that anything that does fall along this line can't have a tile on it and off we go um so you know that seems like a reasonable way to do this i mean it seems pretty straightforward eh so what i might recommend uh as a course of action here that we can start on you know something we can just start typing is if we go ahead and we you know make the we make something that starts to generate forest and forest tiles right if we did something like that then we could start by actually using this actual graph meaning we could do what i just said would not be good right like something that that will produce straight lines that you walk along we can start there and then when we have that working just assume that the next step is we then make the lines meander and do that and that seems pretty reasonable to me because this way it's easier to like program and debug the first time around because we know what we're expecting to see if we're not like making the lines all janky if it's literally just a straight line it'll be very easy to look and see like is the thing that's keeping us that line clear is it like really doing it right right whereas if we make this crazy line that goes all around then it's like oh is it you know is it really following it right or you know is it maybe maybe that's how close it should be or whatever you know it's probably just a little bit harder at that point to make sure that we don't have bugs in there so maybe you know just we start with straight line one and then assuming we have that it shouldn't be too hard to extend that into one that takes a more complex line that has several segments instead of just one um so if nobody has any objections i think that's probably what we'll start on uh and the other thing we can try to do here is start to look at if there's going to be like sort of too much cost so you know this may be a point when we have to start thinking about our entity structure being more sane because as we start to generate this many entities that's going to put a lot of stress on the actual entity system which is kind of just you know it's nothing special right now and there the entity system currently scales to basically infinitely sized worlds like because it's just caching based but that doesn't mean it still won't be kind of slow to create stuff so we may have to do some work there just to make sure we don't screw that up right so you know i don't really know what to expect there but there's going to be there's going to be some some stuff we probably have to look at there but that's about it and as you can see right now all we're doing is just generating one room for uh with no lights and it's just like the the little dude hops around right that's the entirety of it um and so now what we want to do is just you know generate basically a door out of here we'll worry about generating the rest of the orphanage later because we don't really care about that right now um but so we'll have to generate like a way for him to get out of here or we can just nerf this room entirely instead of generating this we just generate forest you start right in the forest um and then we want to see if we can start to encompass like at least some small segment of this world and prove that we can generate like some forest stuff in there that has these connections and we also will need to do a little bit of work um because in addition all that we want to sort of create something that says hey if you're too far from the actual level area just create like basically like wall right like so there should just be like trees that are impenetrable around the perimeter because we don't really want the player wandering off into areas of the world where we haven't put anything that's going to be like really boring and unfun for them if we just like create empty space that has nothing in it right that's that's not going to be good so we want to kind of say wall off these areas so that there's kind of a coherent boundary where the player will clearly know that like oh there's nothing there's nothing to do over there right um yeah okay so anyway that's the basics that's basically what we're doing and if we go down to how this stuff actually works in practice what you can see is that we have a thing here that will create individual locations um and what that is is that's how this orphanage is getting generated and in fact if we wanted to we could generate other stuff like at the other room so for example you know if you look at what happens in the create orphanage call you can see here that it like calls a generate room uh thing and then the other ones don't so like for example item rooms don't generate anything and so what i could do here is just say like well if i was to copy this stuff up so that item rooms now got generated then what would happen is when we look at the other things there would be rooms there now they're not going to be paged in so unless it's particularly close we wouldn't actually see anything there um and that's kind of a unfortunate downside of this like if we don't create a area big enough to actually get to something we won't actually be able to see that it's created but if i was to hack something in so let's say for example with this create orphanage thing um if i want to i think i could just push this so it's it's much bigger i don't actually know what this will do so you'll have to forgive me for for being ridiculous here but like let's say we change this to a massive room um so that maybe we would have a chance of getting out towards the place where uh well i guess there were no item rooms in that vicinity but you know maybe there's something else like um so there's a connection room so i don't know if those get called at all right now but let's take a look so those green rooms are connection rooms uh which which do we do anything with nav room that's what they're called yeah we do so if i went in here and added something to the nav room then like in theory we could now go see if that's actually being created but i think that's basically all that's happening right is that code is is getting called and so now like if we went over to this nav room we would expect to actually see there being nav room like there uh if this is working which it might not be right but you can see all i did is i told it to create like a massive room here that's just really really large for no reason and it looks like we are but it's offset for some reason so that's something to look at because that looks a little bit broken like that it looks like it's shifted um over and i don't know why that would be right so if we look at how this code is working like it's placing a debug marker at this lock p um and it looks like it's shifted and i'm not sure why so that's like a good thing we should probably debug because that's just some garbage that's happening probably because of the way that uh we're placing things down in the room or whatever so we want to probably fix that um and i guess i don't know what place debug marker actually does for the size of the marker it looks like it just adds this radius to the thing which should we know which should work just fine so this i would think should still place it at the center and the reason for that is you're taking the x y coordinates and you're doing a minus four plus four so you would think that that would basically place it in that um in that center region so i'm not sure why it wouldn't be doing that and i'm kind of interested to know so if i start again um are they consistently that way and this is just me trying to learn i mean i guess that doesn't have any unfortunately um so just have to kind of generate until i see another one that's very interesting so you can see it's shifted again um but it shifted inconsistently so it's shifted it's shifted up from the point by the opposite direction the other one was over here and this one is over there so that makes me wonder a couple things so the first thing that comes to mind is i'm kind of wondering does that mean there's some kind of a weird scale issue where when we draw the like debug markers the scale on the debug markers is wrong compared to the way that we use the way that we actually place entities or something right because that would be the obvious first guess is if everything's you know if things are further away from where they're supposed to be in the direction of the origin or i should say in out going outward from the origin which that clearly is like it's a line that basically goes right through the order i think this is that zero zero zero right um that is just very suspicious um so you know if the scaling on those was incorrect where for some reason it's scaling uh this differently than what it would do for the layout i mean would produce exactly that result so that's kind of confusing and i don't know um i don't know why that would occur but i wanted really quickly look to see if we did something stupid in in like the place we're drawing these for example um so here's where we're drawing the room information uh and when we do this we're drawing it in a render group so my question would be is this render group yeah so okay so that actually now that i think about it is probably what we should have expected to have happen it's just you know didn't quite think it through so this is shifted this is being drawn in the origin space of whatever the world coordinate system is right so basically like when we move this forwards and if we shift to a new simulation region we would then shift it by that much i think so right now we don't really have the simulation region shifting because uh i don't think there's another room like if there was another room it would in fact let's just let me just make another room because now i would like to know i want to know the answer to that question okay so in generate room um we need some way to uh in fact what i might do is just turn off the boundaries so this on boundary equals false part here so maybe the spec when we create the orphanage i'm going to say the room spec is outdoors uh to see if the on boundary thing goes away but we probably need one more thing other than that would be my guess um so it's still it still puts some trees around the outside though do they stop us they do so it still puts trees there so i might have to make this not create those trees so on edge equals false for example um and if i do on edge equals false then i think it will just not create any edges yeah so then what i should be able to do is create um multiples of these again that just is very suspicious though so i'm not even sure about what i was saying so i guess what i'm saying can't be true i was saying like you know it should shift the origin but look at what's happening here when we're looking at these two rooms this one is shifted differently than this one and they're both in the same origin system right now so again just something really weird happening there that i'm not sure about uh so we should go figure out why that's happening because i don't actually know um it seems to be creating the rooms just fine um but uh yeah but we're not actually able to oh and since i have on boundary set to false it's not creating the actual wall to stop me so i can actually enter the other rooms as well so there you go right um so that's all fine but again and i think we could start doing what i said we wanted to do today just right now but i just am not comfortable with that so i would rather just make sure um that that we actually get that sorted and there you could see changing the simulation center right between there and there so it changes the origin but it's still offset incorrectly so so what i was hypothesizing is not actually true it's something else so why is that happening why are we getting different positions for some things but but also not for others because if you go back to here um this one seems to be actually centered right so is this some kind of a thing that happens with scaling the way that we're scaling like our world coordinates or something i can't i can't off hand think of why that would be the case because like when we place the debug marker we're just doing this map in the trunk space thing here for world positions right and so i don't see why that would produce like any other well i guess maybe is generate room going to do something weird here so when we do begin grid like how is that working so it is using the minimum tile rate it's using the the part of the volume that's supposedly the minimum part um it's looking at the it's looking at the total dimension [Music] which is in tiles so hold on a second here like if we look at the nav room code that i just dropped in there this code right here oh okay so actually this is just because this isn't is in tiles so tiles are not so so it's just a different scale like that's all this is when we did create nav room like so when we place the debug markers the debug markers are being placed with actual coordinates right so like when we do place debug marker that's just making two world positions and saying off you go but here it's calling chunk position from tile position to make a grid edit so yeah these two things are in totally different spaces and i don't know that we care about that because like i said this i was just randomly spamming a room in there but that's not how we're normally going to do it so maybe that's fine it is a little weird though because like when we want we would want to be able to say we're gonna do the room where the room actually is right um so that's a bit strange so i don't really know what i want to do there but let's suppose we wanted these things to line up properly and i say begin grid edit when we look at this volume you can see that it's just being used to like um that's not an actual use of it that's just the word volume it's being used strictly for to fill out these two things the total tile count for where the grid goes and then where it goes and the chunk position from tile position which you can see here that's actually you can see where we're getting the scale problem right the tile dim here is not going to be the same as 1 it's not going to be 1 1 1. so that's where we were getting that scale difference i was 100 right that it was a scale of difference i just didn't guess where it came from so so hmm how do i want to do this i mean one thing we could do is just say no all of those things are going to be in tiles now and that seems fine because what i could do is just say chunk position from tile position so in other words like if i go let's just try this because maybe this is the more sensible thing especially because we know we're sort of doing more 2d stuff now than we were maybe when we do place debug marker we really don't want to be calling any of these things at all maybe where we actually want to do is is call chunk position from tile position so we want to do that right um and when we get back the world position we you know we just use them differently so in here we are trying to create there's no earlier part there so it's an abs tile for each of these so we'd literally just round the damn thing right uh we would literally just round the damn thing so a gen v3 is just a you know literally a bunch of those and so what we could do is we could say let's generate this this guy i by just passing in like the rounded versions of these and maybe this is dumb i don't know i'm just not saying this is good i'm just saying it seems like reasonable uh and then we put in the the two p values here now one assumes like in fact maybe we would back this out slightly and just do just the first transform and then let these two create the bounds so there's just like a center p uh [Music] or i should say uh there's just like a center p here and so the world position centerpiece just comes from the rounding uh so this would be chunk position from tile position and uh this would be like chunk tile x is the rounded version of px i don't like that damn it i want to be i don't like anything about that but all right uh so i want to round the two these two coordinates and there's no z anymore so z is always just zero and there's no additional offset so i guess we're just doing just that right and so that would create sort of something based around this position in tiles which means that if i now look at the map the map is is maybe too big like we may want to scale that back right like i said i think that's just probably too big so we can introduce the scaling factor here um like we can just have a scale uh and we can do whatever we want and this is actually kind of interesting because it also is like well okay uh if we if we want to scale these back i guess i would scale maybe i would scale them in the previous code uh so that it lines up again but you know that is probably more what we want excuse me all right so let's suppose we want a scale of about half on these things right and this is kind of annoying the way that's doing the indentation but oh well um i only have to use this particular thing once a week and that's fine so let's go ahead and assume we're going to do that and so when we do our uh actual location stuff and we're picking these like min and max distances if everything wants to be about half we can just bake that in to this stuff right and that seems like it should be okay um so maybe we do something like this in fact maybe i just do okay there's a scale of 1.0 and all this thing everything here gets multiplied by that for no real reason other than i'm lazy right um and then we can just kind of adjust that scale i don't know what the heck these values are even doing really these are for connectivity stuff but one assumes that if we just keep scaling everything by the exact same values then we should be able to just turn this over to this this single scale value uh and then if we set that down it'll just shrink how big the world is without really doing much else i think we'll find out in a second so there's the current size like i said which is going to be too big because now it's in you know it's in tiles um see if this is still generating i mean it still generates basically the same thing as far as i can tell for the most part right that's kind of crazy what is that so it looks like there's something kind of buggy there though so that didn't quite like is that is that something that is happening because of the tiling [Music] because that definitely seems wrong to me i don't see any obvious reasons why that would happen though just it should have been fairly scale invariant i think but it's hard to say so that that's looking a little janky there so i'm not sure about that um [Music] so we should probably look at that a little more carefully what the heck is generator ah that is not right all right but i don't know that that is since scale is 1.0 that wouldn't have changed anything yet like we didn't actually change those numbers so we it was kind of weird why were we seeing those weird really elongated connections because that doesn't seem like it should have been happening so that's a bit weird and probably bad um but we'll see sometimes it still seems to generate reasonable stuff but that seemed kind of weird for whatever reason maybe that was just a strange case that could have happened before and we just never encountered it so we didn't think it was there like what is happening like how is that happening that just seems total garbage right like there's no way it would ever have done those picks um so there's something wonky going on there that we have to look at because that's not like that's not plausible based on what the algorithm's supposed to do there's definitely a bug there it could be something like it gave up in one of these loops which you know we didn't really have a plan for because it's kind of doing some loose layout stuff there but you know something's busted so we know that there's something wrong we just don't know exactly what it is let me go ahead and shrink it by point five and see if that works at all uh for now because we maybe don't want to really do the debugging on that part of it at the immediate moment that looks fine that looks pretty good it's much tighter now which is kind of what i was hoping for but we still have these really weird behaviors with nav with nav boxes like something really messed up is going on with those nav boxes none of this none of what you see here should should be happening at all it's totally messed up so something broke i guess when we switched to doing those uh [Music] when we switched to using tiles for where the markers are but since that's just a scale i guess it's because there's an i mean i guess maybe it's because it's a non-us it wouldn't explain how how wrong it was though um i mean let's well okay here's the thing we could do we didn't really make any changes right so if i just undo them can we make this happen in the original version that looked like this right so here's just what we started with will it still occur and so let me just run it a few times and see if i can make it do that again yeah okay so this you know it's not us right this was just there's some kind of bug in here that somehow we didn't see the other day but like it's a very severe bug like extraordinarily severe because not only would this not be something we would expect to see locked in here but it should never have tried to connect these two rooms so it's just complete nonsense what's being shown here now what's interesting is it only seems to happen on generations where i am manually doing it here and so i'm wondering is this like an uninitialized variable kind of a thing where we're not setting something and so somebody gets there's like craft rooms in there um and that i don't know when we do create world you can see it doing this call to create world here uh and when we do that you can see it it does a begin world gen and then a layout over world um so we could look and see you know is there something funny going on here so we do have put a bootstrap push struct here for the world generator and is there probably this is just a case of like default arena prams not being for clearing now they are so it should have been cleared it should be clear to zero right bootstrap push size so if it calls bootstrap push size where is that where did i stick that function so that should be clearing right it should be doing a push size with those frames and clearing the value so when we come in here this should all be clear um [Music] you know we wouldn't expect there to be anything still lying around um so yeah that's a bit strange okay so let's take a look at what happens from there i guess it's layout over worlds so we create some random numbers uh for dungeons item monsters and navs right we do all that plus one we push an array on the temp memory and we try to make that many locations i mean it doesn't look particularly suspicious um it might be nice to assert so i assume when we do push location we assert that we don't uh overflow the limit right so we know we're pushing the right number on in theory so yeah i don't actually i don't really see i don't see what the big deal is i don't see what chunky's deal is so that's very suspicious and i don't know what to make of it and like i said i also don't know why i can't get one of those on the initial lie now part of it is it takes a long time right you have to get it takes for that time or whatever so maybe it just never happens as the first one but if it happens one in four times and it never happens on startup i mean [Music] is that one no i mean yes that is actually right like those two rooms should never have been connected so let's take a look what's going on because now i'm now i'm just scared of what is what may have gotten typed in here so let's take a look so we go through the locations and we look to see uh effectively all we're doing is saying if these two things are within 60 units of each other then we loop through all the all the other uh locations that aren't this one that aren't the two we're checking right in other words for every pair of locations we look to see um does this connection fall too close right by using distance between line segment and point now i suppose this could be a buggy routine right if this routine is messed up i that would do it right um it's returning the squared length which is what we expect um and we're checking to see so if the delta length is is whatever the length is of how far we're going the direction vector is then just they're just it's just normalizing going from l l zero to l one right so going from a to b um we're then looking at the inner product between the two right and saying we're just going to go we're going to clamp that at the original length because we can't we're not going to let ourselves go further than the original length along this vector to get to the closest point that's just how line segments work right so then we're going to go that far out the direction and look to see what the distance is from that point to the point in question that seems fine and this can only add purple lines so we would know like we would see if if it's a white line it means it got added by this piece of code this piece of code it would show up purple right hmm i say all right so under add world connection that just spams them in there yeah so i don't see i don't see why that's misbehaving it doesn't look that suspicious to me but it's fairly consistent like it's not that hard to make this happen and it kind of feels like it just all falls apart at once like you can see that it's just like this is all just messed up but why and is there any pattern to it like some of these like that goes from there all the way to there i think and so what's weird about that is that doesn't even feel that feels like more than 60 which means it doesn't even feel like that if it were working properly should have passed this check let alone this one so that's a bit of a puzzler it feels almost like those rooms got like moved or something like after they were connected or something like that which doesn't seem like it should really be possible but maybe there's some other bug that's going on in here so because like after so you know after we do layout over worlds we loop through these and we you know place each one of them down and we set some debug color stuff for rooms in the world thing but it doesn't really matter so yeah i don't you know so i'm interested to know now so like what could i do i'm trying to think of like what could i do to start to debug this particular piece of code like what's gonna tell me what can i data can i collect about how this is running um so i guess the first thing i would do um is turn this off so let me see what it looks like when we draw a bunch of red lines that connect everything together but are being rejected right so so now there should be like red lines between you know and you can see them here like these are ones that got rejected now let's let's actually go well no i suppose so that literally means they were they passed the 60 distance test and they and but they were passing too close to something else right so like when we look it's like okay this that you know i guess it passes too close to this guy which is a bit weird um but yeah so all of these are getting removed for violating that principle um which is what we want right so now let's find one of those ones that's all messed up and see what is marked red in that case um this i think is still fine um i'm not able to get it to do it right now that so now like if you look at this you can so plainly see that like how the heck is that to that which does not pass very close to this thing getting marked as red but that all the way to there like first of all that's clearly too far is it because of this thing getting removed okay so here's the question we did this weird removal thing did we screw up that is that what's causing this problem so like is this the problem so let's suppose we delete this code right it's gone this was the code that was there to like do some kind of weird stuff with nav rooms where we didn't want nav rooms that were unnecessary or whatever we would just got rid of it is this code buggy because if this code is buggy what could be happening is when we change like something about the room connections here we're screwing up like this code right here is making it connect back to something that it shouldn't connect back to it doesn't that doesn't seem plausible to me um but let's just find out so if if we should be able to make it still do the thing if that's not what the code what who is responsible we should be able to get this thing to do that again and it does not seem to be doing it okay so is the thing that we screwed up that there actually is a room zero can that really be it that shouldn't have caused this bug though we're gonna have to go see exactly why that's causing this bug does that make a lot of sense oops but i cannot seem to get it to do the buggy behavior without that like all of these are super nice so how would this if we believe that if we believed that why would setting the two rooms to be zero how could that possibly cause this problem so when we're drawing this this is the code and when we do a connection between the two worlds like you see here if they were both the same world if they were both world zero then what we would expect to see presumably is this line segment call not drawing a line segment because it's getting two points that are the same right this doesn't touch anything it just modifies the connection count this changes location a which is the one that we're looking at first um to be a world lock nun which is there something about that that we should be concerned about like i don't know why that would be if it's none it just gets skipped oh dude oh man that is just you know how i say i've said this on the stream so many times how many times have i said this on the stream for those of you that watched a lot of the stream what do i say every time whenever anyone asks me they're like oh uh yeah can you can you look at my new stupid language that i made and i go look and it's 50 000 new freaking features to do with like memory management or whatever which i don't give a crap about and would save me like no time right they just add all these features that i don't give a crap about what's the one thing that i say is always always always the source of like every single freaking bug indexes it's indexes it's like someone for the love of god making language that makes indexing work easier right that's what this is if we set this guy to none he will not create a room which means all of the connections their indexes are now off by one right you see what i'm saying like show me a language that catches that bug cleanly and then i will actually give a crap about your stupid language okay so anyway that is exactly what's happening when we turn on this piece of code what happens is when we set lock a type to world lock none then what's going to happen is the room's not going to be get created now this isn't a bug in any particular sense of the room of the word because we don't actually care about that right now but our debug display does so it's going to draw these lines to all the wrong indexes so it doesn't really affect our world generation our world generation would still actually probably work just fine because those indexes line up just fine but the other set of indexes does not makes sense so that's what that is that's what that is so there's a couple ways we could do that where we could uh you know fuss with it um i mean one way is just to leave this out because i'm not sure we really wanted it anyway um if we do want to leave it in then all we really need to do is actually keep track of the indexes so that they they go through the pipe so that instead of having just one index we've got two you know we do the index indexes of the generator stuff then we actually go to generate things if we want to still draw lines between them we make sure we track which indexes they actually are when they get created um i'm going to go ahead and say for now i'm just going to go turn this off because i don't know what i want to do but i'm going to leave a big old to-do here on it so that if i do come back to it i won't make that mistake all right all right so i'm glad we kind of got both of those things straightened away uh and so now in theory i should be able to do the scaling operation i want um just in general now there's a couple ways i could do that one is to introduce scale factor like i did before another is to just scale everything after the fact which i also could do and so like if for example we look at the layout well i guess this is the function here so if you look at this layout overworld thing all it does is just push locations on the thing right so what i could do is say screw it let's just do it after the fact um so in here where we have these world gen locations and they've got the p we can just shrink them when we want to shrink them so i could set world scale here i could go over all of the world locations that exist like this um and then i could just say like okay you know what you're gonna get scaled by the world scale so that now i can just like ignore all the rest of the fancy fufu and just have a value that i play with here so that normally i run it this is what it's actually doing inside but if i think that's too sparse i can say all right let's you know shrink that down by a half and now everything just gets closer together and and more smooshed right and so now things look like this and maybe that's what i want maybe it's not but now there's just a single value i can play with that just does that condense at the end and that's better now i also do want to do the thing that i was doing before when we were like what is this bug uh now that the bug is gone uh i do now want to make debug markers and tiles i guess i guess will be the same now there's a little bit of a weird thing that happens here which is that if i actually do that then we kind of have this weird situation so i i almost want to say i almost want to say maybe what we actually want to do there is just pre-adjust these to be tiles now like at this stage or or i should say pre-adjust them to be tiles when we go to do generate room you know what i mean um and so that's a bit that's a bit a bit hard to say but like in here so i want to start doing the nav rooms now we look at how we're doing this room involved thing maybe this is just the thing that i want to fix where i actually express the thing in tiles by dividing by the tile dim first like that's not very difficult right you could imagine just doing a thing where we get that back so we say something like hey uh now would be a good time to give me a gen v3 isn't that oops gen not capitalized so i want to do something like uh tile from point or something like that uh and we pass our actual you know our our actual world space point and we make the result be pre-rounded to the tile boundaries right so we re we round p x and p y like we're going before but instead we divide by the tile dim and so that just makes these two coordinate systems line up right so we would say okay tile from point we would now say when we're going to make one of these room vaults and i don't know we probably have a way of creating one of these do we not really oddly enough yeah i guess we don't really well all right so anyway if we want to create one of these room vols then we first we would get the tile from points so we'd say like okay what's the gen v3 um for the center point and we just say like tile from point uh this this p value right and then in here we would just say now we're going to use the center p it doesn't need to be rounded anymore or truncated or whatever else you want to do to it because it's already correctly in tile space and then in theory this thing lines up now now the orphanage because it happens to be at 0 0 would have lined up anyway but now let's go ahead and try it with some other rooms and see what happens so if i drop this garbage in to like the other things so here's like i don't know a bunch of me generating these rooms um i'm gonna need this tile from point to b up here somewhere probably along with that point it was like uh what was it like map it was it was like it wasn't mapping to chunk space but it was like tile it was like a chunk of tops with that so be like that right it's this basically um so now those should line up right um and they do right so you can see that all of that is now lining up kind of nicely and of course you it stops at a certain point because remember this is all like dynamically paged so we none of this part of the world is paged in but you can see that we successfully created it all uh as you would expect right um okay so now what we need like i said is we need to create something where we're going to be filling this data in in a more uh fancy way right something we need to fill this in in a fancier way because we need to fill in all the connective tissue in between rooms and so we need to kind of march through it creating you know pieces as we go and i don't have a particular idea about how that's going to work uh there's two parts of that one is that we kind of need some way of knowing that we have covered everything and that is probably going to be something where we just kind of march through space like adding stuff as necessary i guess something like that sorry for the mouth fart sometimes you just got a mouth fart when you're trying to think about things so uh you know that's all fine but uh but we would need some kind of an idea of how we're gonna like how we're going to rasterize you know we're going to want to march through these things and so like what we're doing here is not really what we want right what we're doing here is we're just saying well you know drop in here and create tiles around where the rooms are and that's fine but what we need to start doing is filling them in using a union of two rectangles would give us a way to fill that in right for each connection we could do that and maybe that is how we do that but then we start to have we're going to how we want to handle the overlapping regions um and it kind of seems like that's just what you would do i mean that's a pretty easy way to do it um and so maybe we just do that it does seem like probably it does seem like we could probably come with something a little bit better um like maybe we just take all of the first order connections of a thing and then do that and we're going to want to do some other stuff like we're going to want this to work where we uh because we want to move towards more of an actual grid system like we kind of did some of that we removed z from some of the stuff but we kind of want to do more of that as we go um and so we're probably going to want that to happen more too with the way that the like we probably want actual like an actual grid now so that we can work like not overall because we still want to be able to have very large worlds if we want to we don't want to break that functionality because that's kind of nice but we do want like to have it so that we can ask questions about what's at a particular grid square without it being a huge deal right so that part when we start to do [Music] we'll probably have to reckon with that pretty soon so i guess i don't have a good idea so i think i might just start by doing the unioned version of these things and just see what what happens man um and that's just gonna be like i mean okay so let's be clear one way of doing things which i suspect we don't really want to do but maybe we do one way of doing things is we literally just subdivide the entire region and then we we could literally just do like you know a course grid over it and if there's anything in a region we we just rasterize the region and that might actually be what we want it's gonna be like super slow until we have an acceleration structure but i'm just gonna all right i'm just gonna do that screw it um so i'm gonna say we're gonna we're just gonna go with that approach as dumb as that sounds uh and we're just gonna like see where that takes us because it just feels like the so sensible thing honestly so in here where i did that world scale thing there was like a scale thing um this piece of code i think all i'm gonna do is just store these boundaries uh so like i believe we have a rectangle three in here we even have a rectangle two apparently um so if i created a rectangle two uh i assume i've got a union function for my rectangle two i don't actually know and it's impossible to tell because that's the listing apparently um but yes we can do a union here and and i think that's good enough so so if i just said we're going to do a world bounds thing and this is going to be like an inverted infinity rectangle because nothing is in it at first right so it's just completely empty then for each location i do world bounds you know equals the union of uh the current world bounds and whatever this thing is and this thing is a wrecked center dim kind of a thing which uh this guy um so i just say like okay take that x y coordinate and whatever i want the like fluffy version of this thing to be i don't know what that should be but let's just pretend for sake of the quote-unquote argument um that that is going to be like i don't know 30 by 20. i actually don't want half dim but i guess i have to have it so center dimm that's it center them so if i want like 30 by 20 or something like that and we can adjust this to whatever we want but like you know let's suppose it's that then that will produce basically the complete like fillable region that you could potentially walk through i guess i can't do can we do can we make a v2 from from a v3 easily anyone oops anyone no so there is an x y there so what is is that a world is that actually because it's a world gene location using some other nonsense oh because it's already a v2 hi i'm an idiot we didn't actually use v3s for that making a mountain out of a mohill so this would be the world bounds and then in the world struck here i don't know like um this is not really a thing but we could put this in as a world room for no reason it's not a world room right it's not a world room at all but i could make it be as if it was a world room so like the place debug marker call excuse me i could add a room that's not a real room uh and i of course need to get this world bounds out here somewhere and i need to do it after we're done because otherwise the world indexes we now know don't screw with the world indexes right that's a bad don't screw up the room indexes i should say that's a very bad idea so yeah be careful but we can then go in here and say okay the world position uh from the world bounds assuming that we have them so assuming we know what the world bounds are it's just like the min and the max of that so like the rectangle two it's just this and this are the two points we're going to draw and that would just let us see what is the shape you know what does the world look like in terms of uh what its shape is for the rooms um and the debug color for that can just be i don't know that can probably be white it's just gonna be a big box around everything uh so the the world bounds have to come from somewhere and i think they're probably going to come from the world genstruct i think i'd want this to be in here somewhere so that there's just like i don't know just like a rectangle too that's like world bounds that's in there and that way when we actually generate when we do the layout thing or whatever we just store it in there and this can get it later but we're going to want that for various purp like there's multiple reasons why people are probably going to want to look at that so it should just be there after layout completes you can just look at that piece of information what are you complaining about hmm that seems kind of odd oh no it doesn't end world gen is going to get rid of the generator code isn't it yeah so probably don't want to do that don't know why i put it after the thing that frees the entire batch um so that produces the map for us right and there it is it looks like it's a little bit too snuggly so maybe we were a little bit aggressive with our scale right i don't know um but we might we might may well have been so if we take a look at that and we just bump it up a little so we say like okay it's actually going to be like .7 or something still got to fix that like we can't always lay out the world with the tolerances that we gave it that's kind of a bummer but that algorithm will improve over time anyway so that's the worlds and there's the like boundary that we picked which again is just basically the boundary of all of the things together plus a little bit of you know breathing room right and so now if we just march through here and actually create entities in places where we think we might need them um you know that would probably do it so i guess we could start with a few kind of simple things here which are not not too complicated so we could we could literally just do like march through all of these i mean it would take forever uh but we could literally march through every single one of these things and just rasterize it out um and like yeah it's gonna be super slow but it's okay because we're just just getting started we could obviously speed it up quite a bit and also skip areas where there's not much happening but so let's go ahead and do a pretty simple approach here so let's suppose in here we want to actually step through that entire thing then uh when we're so yeah so this wouldn't really do what it's doing here right like this this thing would not create any actual rooms so we would do [Music] and i'd even remove the one from the orphanage but we would do this and they would only place the debug markers wouldn't do anything else uh and then we would step through here creating those rooms based on you know and we could do a really simple one at first to show you what i mean but like so when we call generate room this nonsense here we wouldn't really be doing this anymore we would step through and we would do like uh room volume edits like blah blah blah blah blah blah right so to do that um in here we would just i mean i don't know generate chunk generate block there's i don't have a particularly good room for it there would a good name for there would be none of this um but there would be what volume right and it's really a rectangle it's not a volume uh because we don't actually care about doing it in um in 3d but you know we're kind of slowly working our way back to that right so if we want to in here uh do it as part of the volume it's it's going to be this this exact thing same same idea right and then this is going to be a thing that would tell us where we are in the actual world um from the local edits that we're making and then we would just see the simplest possible thing we could do is the very slow loop over everything and see where we are right so the way that would work is literally this code right here right um and i'm even gonna i'm even going to get rid of the one that generates the orphanage uh because we're gonna try and generate the orphanage as well as part of this pass so we would look through and we'd say you know are we in [Music] are we in one of these rooms that we're trying to to talk about right like are we in one and if we are we generate empty space and if we're not then we generate a like a tree wall right so that's all i'm going to do at the very outset here i'm just going to do a thing that's like open or not right like is walkable and that's all we're going to try and do and then we're going to come through here and like steal this uh code a little bit and just take a look at what's the simplest thing that we can do to place you know something down now there's other stuff here for like how the camera works and we're going to have to do something about that but i don't know what it's going to be right now so we're just going to use the debug camera in the meantime and then we'll figure out how we want to do cameras because in the over world map we may want to do a thing that's literally just like if there is no camera volume like if you're not doing if you're not if the player is not inside a camera control volume then it's just scroll right it's just free scroll uh because you know you're on the overworld map so there isn't there aren't like rooms you know um so here's some garbage code that we have uh that again most of the stuff should probably be like pretty heavily simplified at this part but you know we're simplifying different parts at different times so you just kind of have to roll with those punches so you can see here there's like basically a thing where we have our place tree um and so i think we're gonna have these on opposite sides of the branch of this probably so we would go here like okay there's gonna be a sim space traversible uh we probably have to add that and then either the trees on the traversal or not it looks like so it's probably just going to be like this right if it's not walkable we stick a tree on it and that's it at the moment so let's take a look at what the part is for making like an actual um an actual cube here so we're gonna need this we don't really care about this this code is so terrible all right so let's see spec outdoors is always true here so we're always going to cover it that way randomized top so that's how the piece that we actually add for this thing all right so here's the entity we always create one because there's going to be a floor or not right setting the position for it what is p set to initially it's just get min center p i don't know what edit tile contents we don't really care about that and so it's probably just this guy right here where we add this particular block is probably all we really need right so we would say like okay there's the color of the piece we need the volume [Music] and the wall height is 0.55 yeah this is so terrible i should probably just take a hatchet to literally all this stuff because now that we know what what we're actually doing we don't need 90 of this code which is usually the way i mean that's not that's why i always i'm like yeah most things can be rewritten in 1 100th of the code so i think it's just that right we make a volume from this thing uh we're gonna see whether or not this thing is walkable we create an entity for it we place the entity we need to set the entity position but it doesn't seem like we are doing that for some reason um so where does it set the entity position oh so it just does that just that i guess yeah so we set the parameters on the entity we add a piece for the cube block thingy we make sure we generate a random thing for a variant case there are artistic variants of them we set some of this stuff for like tile type and stuff here but we can just pass that directly so it's always a floor right now so is grass we always have ground cover we always randomize the top it's always traversable uh and i guess that's it but i mean i don't know why we would do this because isn't that value isn't that just this value right here so i think it's just this value so we place the tree i don't know what the ground p part is there in fact it doesn't seem to need that so yeah so let's start with that it's probably wrong because this is way too complicated but um yeah so for placing the entity on the traversable that should be sufficient so i think that's it i mean it's not good but i think that's basically it you know i think that's basically it all right um anyway so content structural id is that's from the tile contents thing i don't know what the heck that's even supposed to mean because the entity that's on here is just us like we just created it right so the entity that we're talking about is just this entity as far as i know so i'm not sure what the point any of that crap is either so i think it's just that and so that should create as we iterate over these things that should create just basically some grass and it's going to be all trees because it's not walkable so let's do the opposite of that for the moment and just set it to true and then let's swap out just to see if if we pass it the volume that we're currently passing it for the orphanage will it do anything um and that's just for us trying to figure out like whether this works at all right um so generate block there we go and we don't pass the spec anymore because we don't have that concept we gotta we gotta fix that unpack is open uh so right when we do generate block we have to close the grid because we start the grid but we never end the grid edit so that should be happening at the end at the very end so like right here okay oh dear that does not seem good at all so i think because the camera is not set to anything so yeah and i like i said i don't really know what we're going to do about that when we generate a room we were putting in these like things that let the camera know where they should be we don't have one of those right now that's gonna be a problem so if we look at this uh um like i guess we would just do something like this for now which is just garbage but it looks like look we're just gonna add a bunch of these random things that tell you where to place the camera right and that's just so it has somewhere to go so that's what happens if you pass one of these and you can see that just created like a little patch of grass and no lights right the light is just coming from the hero right now um and so now what happens is it is i want to see if we can just do a quick sort of implicit version of the scan out where we just say all right when we generate a block here let's go over all of the locations and if you're within some distance from a certain location we could even do this for the connections we just then we just don't add uh a tree and if you are then we do right so we could do just to make sure the tree thing is working properly we could do is on edge and say if you're not on the edge then it's not right and this is just to test to make sure that it does place trees properly because we don't actually know if it does so i'm going to try it just to see if it does before i do something more complicated so let's see if it placed the trees properly i mean there are some trees there and i can't walk through them so that means that as long as we produce that switch properly we should be able to get what we want okay so let's suppose that we're gonna do a is walkable and we assume that is walkable is false for now we loop over all of the locations uh and maybe even all of the connections so if we look at world gen here we say okay there's there's uh connections and there's uh other we should also probably switch for connections to be an actual thing instead of looking at the world they should be in the gen struck that's a different thing but we should do that as well and then we just say uh hey in fact what we could do is use this this uh [Music] code right here in fact so if we have the you know we have a room connection that goes between two things and we have a and b and i want to know if the distance between a and b if it's close to us so basically like the the position for our like like this abs index for example right so we want to ask what that abs index is in world units probably i mean i don't know that we actually do we might want to do it in tiled units i'm not sure um because we would like the world generation stuff to be more robust uh so it's hard to say how exactly we want to do that but so when we say get min z center p here this p value for the tile um that's all like relative so that's not really going to help us so what we actually want is this abs index here and we want the abs p which would just be the abs index we don't care about this in fact this is a v2 for all we care about right so the the abs and necks here right it's just the floating point versions of these two times the tile dim right that's going to be the ab speed and so if we look and we say well in absolute space like okay what is the distance for these things like how far is it and if the distance is less than i don't know five meters in either direction um then it's walkable right something like this similarly in here when we look at like the location a i just be like look uh we're you know maybe we'll do rectangles a little bit later but for right now we'll just say look if the length squared of the position minus the place where we are if that's less than 10 then then it's walkable as well and again just garbage total garbage here that i'm throwing in there which is just taking a look uh to say okay here's how oh we we call this a hadamard product in this code base don't we yeah um like look we're just going to do this and see what happens if we do scan out it's going to take forever because we're gonna have to now run it across the whole thing but maybe we can just even uh do it in less do less than that at first and just do a subset of it because so it doesn't take too long but anyway so okay we've got create orphanage this kind of nonsense doing the generate block let's move that down uh to like here or something and now we're gonna do is we're gonna loop over like the entire tile bounds of this thing like every last damn tile and we're gonna do it in like chunks so that we can do each individual part like so that we don't generate too many entities at once so that they can be processed by like the world system or whatever right um i love that people are still talking about pots and walks from the pre-stream i like that okay so okay fine we uh we now want to divide this up into some size chunks and so we want to take the actual tile information which is that like uh this stuff here right so if i ask tile from point and i say gen v3 min tile p uh or mintel index and max tile index or something and in here i just ask for the min and max of the world bounds so i get the two of these and then i just say look let's divide this up into some number on each dimension so i say i don't know maybe we want to um [Music] maybe we want to do like let's say um like the block dimension is just going to be like 32 by 32 or something right so then we would say okay like x count is going to be the min tile uh or sorry the max tile i um [Music] x minus the min tile i y oh sorry mintel i x uh plus the block dim minus 1 divided by the blocked in so this is just rounding up how many of these are we going to have to do and the y would be the same so this is just saying look this is how many of each of these we're gonna have to do so then we say okay like block x is zero to the x count and the same with block y so that goes from [Music] zero to the y count right and then when we want to produce the actual room locations uh we just pass those tiles in and that's it so here we would say all right this is the block dim times the x count right so that's how many uh blocks we've gone in in x this is times the the other y right and then the max is just the min plus that plus the dim that's it uh that's it and then we're gonna generate all of the blocks just one after the other after the other after the other um [Music] that is not being used anymore the dim is supposed to be blocked in and this is block vol now so let's call it what it actually is and go from there nope oh capslock so that seems better and i don't know what this will do no one does no one can possibly know what it does um i'm gonna probably set this to debug so i can see what it's complaining about so i'm not sure what actually might overflow when we do this uh like i said that probably isn't going to work because there's too many entities right now and we i don't really know what the status of the code base is for some of those things but we'll see all right so this should give us an assertion somewhere right so that's a little weird so do we just never repack the entities for some reason in this code path like what happens on the end grid edit thing like does this not get called so that should have happened though so that's a little bit weird let me see that again unpacked entity count is less than max unpacked entity account so we do end world change we re-pack that seems busted like why is that not doing anything hmm so what's the actual number just like curiosity how much is 32 times 3 times 2 so if it's only 248 entities yeah i don't understand why is it not repacking so it looks like when you come through here it goes through the unpacked entities like this should repack them right so in theory the reason this doesn't actually happen is just because it automatically happens on entry here and what it looks like is it says like okay if you're like are we actually blowing out the number of entities like within that range are we creating more than sixteen thousand i suppose it's possible because it's only thirty two by three if it's really a thousand and like what about this call right here where you look to see if the count is exceeded you i don't get it i really don't this code must be kind of broken and we just didn't notice i'm not sure exactly how right because this should take care of that by putting the entities like by putting the entities away as necessary does this never trigger wow am i doing something stupid like passing the same dimensions all the time or something or is this code just busted because there should be no entities in there when you actually go right so the second time through let's see what happens like the first time through so here's the values in question i'm back-end account should go up by like you know something like that number right so and it did now when we go in here when we reopen it now it should be is outside volume on all of these things right but it's not so why are they not outside the volume so that's just busted what are we passing for those values are we passing something bogus wow that's some this is some pretty sleepy coding yeah we just created the same square over and over and over again so it couldn't purge it couldn't purge any of them out wow just just bad just bad programming how did nobody see that what are you guys doing you're paying even less attention than i am to this code unbelievable everyone gets a demerit today all right um so now we don't really know what to expect here uh also it looks like we've got negative values so i probably have to change the way i'm doing this because i started at zero which is not what i was supposed to do so that that was a mistake this has to actually be plus the min tile so it's got to be min tile ix plus right min tile i y plus and then let's see what this does with an o2 switch all right yeah everyone is fired the sandwich maker is here talking about food meanwhile a glaringly obvious bug gets by everyone in the chat for the entire time like what the heck guys like seriously all right so i don't know what the heck this did um but like i like it looks like it worked right i mean here i am hopping along this path and uh like the problem we're having currently is the room like it won't stream in the next part because the room boundaries aren't set so it's never moving the simulation origin so that seems bad uh and i don't know hmm yeah like i don't really know what we want to do about that um probably have to just make that code be a little bit better so it doesn't care [Music] um i also might make the hero light a little bit brighter for now so i don't have to deal with it um so here's the current light and uh maybe i'll switch it up so that there's also this one i mean that yeah so you know it kind of looks like it worked exactly right i mean you can see that it created the paths exactly where the paths are so that was pretty straightforward um but yeah i don't think this is now paging in things anymore because the i don't think the room boundaries it was supposed to have room boundaries set but hey look right it's like you can't go outside of the regions that you're not supposed to go outside of um and along the paths there are paths and then in between there's uh there's trees so that all worked but yeah i don't know what to do about the whole like we go um so i don't really remember like what that code does but i think the way it works is it always sets the simulation center to be like where the room boundary was and i don't know how that would be what that is doing right now at all uh so um so like what did we do when we added that for the block so generate block was just like oh [Music] uh add the room here and make it relative and then make a camera offset so maybe if i just change the block dim to smaller i don't know if that actually helps us here it might um maybe just create a place where we can end for today but if this were going to be like 16 by 16 instead then maybe that would do it i'm not sure i we have to go look at how that paging code is working i guess is what we really need to do but like what i'm looking for is this should jump around as we move and it's not and it looks like when it does i don't know what this is broken here as well for some reason which i'm not sure why because i don't think it should be so we're still having some problem with it thinking that it thinking that it can't get rid of things i can try doing an od on this and just to see what we get but foreign super slow in debug mode so yeah it has that same problem where it didn't it did not like pack these entities back up again but why um [Music] so i'm not sure what time it is right now i don't know if this is a good stopping point how long have we been streaming for we've been going for two hours so i think what i'll probably do is end it there um [Music] and i guess what i'd say is that next week i think maybe we start to clean that stuff up we go figure out what's going on with that pack code maybe we want to do the pass where we take out the 3d part of everything as well um you know that might be the right time to do that this seems like it's going okay we are gonna need to have some way of putting lights around here like i'm not sure how to where we're gonna place lights we're gonna need little forest lights otherwise you wouldn't be able to see anything but so we are going to need a little bit extra apron here too right so probably we would also need um when we do the world bounds computation that probably needs to be a little bit stiffer right it needs to be like hey this is more like 40 by 30 or something alright so i think that's seems like it's about right so yeah i think that's really where we want to we want to start to take a look at the chunk thing again we want to pull z out completely but i think we'll start on that next week maybe instead all right so that's not bad actually and that runs totally fine oddly enough so the startup time is actually not that large for rasterizing the whole thing like that did this whole region um which is ridiculous right uh so so that's good too because it means we don't really have to worry about it too much because it's obviously something that could be pretty easily optimized if it's already that fast and we're doing the dumbest possible thing uh then we probably don't have to worry too much and like it i mean hey it actually creates the correct shapes right you can see that it's totally doing what we want so yeah we just need to kind of start cleaning that code up delete a bunch of code i think we can now most of the z handling stuff we just delete and then i think we're good to go it's going to be a stream next week probably all right so that's it um i did want to mention before i go uh so it's hard because we record ahead of time so i i may get this wrong but i want to say that not this coming friday but the friday after so the last friday in september uh we're doing on this channel we will be doing a molly movie club stream as well oops molly movie club um so if you happen to be a member of molly movie club as well and you're watching right now on this channel we are going to try to do a live stream of molly movie club as well so take a look for that there should be a notice that we're gonna post on the mali movie club um website and we're gonna try to watch a movie together on with the with the watch party thing on this channel so if you have a particular movie that you think might be good that supports watch party right so it's got to be an amazon prime like watch party a bull thing but if you've got one that you think you want to do uh if you're if you're a movie club member post about it when you see the thing come up because we're going to pick one to watch together and we've never done that before it's probably pretty fun so definitely check that out all right other than that i'll be here next week to play around with cleaning up the code for the streaming there because i think it's just it's overly complicated because it was doing like way more stuff than we needed and so if we just rip out the z and clean up how the blocks get paged in we can probably keep it pretty straightforward um and should be okay so that's it thanks for joining me i'll be back here next week until then everyone have fun programming and i will see you on the internet take it easy everybody
Info
Channel: Molly Rocket
Views: 4,155
Rating: undefined out of 5
Keywords: Handmade Hero
Id: F1b0daEyh2M
Channel Id: undefined
Length: 133min 51sec (8031 seconds)
Published: Sun Sep 18 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.