 Welcome everybody. Thanks so much for joining me today I want to talk about procedural workflows in Houdini the Houdini engine and Unity 2017 for game content My name is Kenny Lambers, and I am a freelance technical artist these days But you can find me on IndiePixel.com or GameTutor.com. I produce a lot of training material and Blog articles, you know the usual internet stuff So I've been working in the game industry now for just about 20 years It's almost 20 years. I rounded it up a little bit. I'm not sure if that makes it more cool or if it just makes me look old But I've been working in the game industry for almost 20 years now and I've worked at Microsoft Game Studios Activision and Serial Software I've been using Houdini and Unity and Substance now for quite some time and have been following the evolution of proceduralism over the last I don't know. I would say six seven years something like that And I really started picking up Houdini when I was back at Microsoft You know doing a lot of procedural track development stuff like that And then from there I decided to create GameTutor.com and it was quite successful And what I did is I you know really started teaching the basics of Houdini and Houdini engine And just how do you start to get into the world of generating procedural content for your games? And it went really well So I definitely encourage you to check out GameTutor.com and IndiePixel.com That's where you can find most of my stuff and see what I'm up to I worked on Call of Duty 3, cracked down 2, Alan Wake, Connectimals Connect Star Wars and a lot of others. My situation when I was working at Microsoft and Activision Was a little different. I was working in the central technology teams And so instead of you know working on one game for the whole duration like two three years, you know in the whole production I would basically be the technical artist that would be dropped into teams take care of a couple You know issues or some pipeline issues I would also present, you know new ideas for pipeline type of technologies new software I would give little demos and you know try to get the studios up to speed I did a lot of shader work on some of these games on Call of Duty 3 I actually Got the opportunities to start working with 3d scanning so and photogrammetry and stuff like that So did a lot of that on on that project So my situation was a little different I would I would you know be with the team for maybe like a month or two and then I would go over to another team You know so, you know, I've worked on a lot of games, but I did spend a large majority of my time on Call of Duty 3 and I did a lot on crackdown 2 and Alan Wake and Connectimals and Connect Star Wars, especially I cut Connect Star Wars. We did all the procedural tracks with Houdini and I really sped up the production process for us. We were working with it was Terminal Reality Anyways, so that's a little bit about me in my background I'm currently, you know working As IndiePixel producing training content and you know doing a lot of client work and stuff like that All right, so moving on so what is proceduralism if you're not familiar with proceduralism even though We're starting to see it more and more these days Proceduralism the actual definition. I always wanted to do this from a presentation Just because it's fun to you know, see what the actual definition is So proceduralism is a belief in the importance of using agreed procedures a rigid adherence to established procedures It might not give you a lot of information about how you use proceduralism in games But at the core of it at the heart of proceduralism, it's it's a set of procedures You agree to a set of procedures and the output from those procedures is a prop or it's a terrain or it's a road Right or in this case a guard tower and a ladder Some barrels and stuff like that everything see here is all procedural none of that was hand modeled or anything like that it's all generated from nodes and It's all generated using the Houdini engine for unity All right, so that's proceduralism in a you know very high-level standpoint so what we're seeing today is An explosion of proceduralism in terms of you know textures with like substance designer and substance painter Terrain generation. There's tons of different types of terrain generators out there nowadays and they're starting to get quite advanced and Houdini has quite a nice suite of terrain tools inside of it and Really speeds up the process of generating large trains You see it for city generation, you know anytime you have Situations in the game where you have to generate a ton of content the city is a great example because there are So many buildings and street signs and streets and you know garbage on the sidewalks and trees and then there's people and There's a ton of content that needs to be generated for all that stuff and having a team of artists Just you know kind of work on that stuff for months and months and months is you know It's hard and it's expensive So what you can do is you utilize Houdini and the Houdini engine to really reduce costs speed up production and maintain the visual quality You can even use it in animation though. It's still a little rough I've seen lots of procedural animation out there and it's still in its early phases But it's you know coming along and obviously shaders and materials a lot of our shader Editors are now node-based and makes it a lot easier and a lot faster So my point is you know there the proceduralism is really starting to get a foothold in the game industry and the Houdini and the Houdini engine itself is are really at the core of all of this and It's a great segue into the next slide here because you know I've done a little bit of web development in the past And I always like the way that web developers explain the technologies that they use as a stack of technologies, right? And in the game industry we just call them DCC packages, you know digital content creation packages So use my or use photoshop, but you are using a stack And so the current procedural stack at least for my standpoint in my perspective The current procedural stack is Houdini 16.5 Houdini engine 2.0 substance designer and unity 3d And I'm very biased towards unity. I love unity. You can do this all you could replace this whole portion of the stack with unreal and It would be pretty much the same so That's the procedural stack And I really just wanted to put this slide in here because I really feel like this is a whole workflow right here You know you generate your your or your you author your digital assets inside of Houdini You import them into the Houdini engine for unity and then design procedural textures using substance designer Now you can do it in in Houdini as well It's just that substance designer so focused on Textures itself whereas Houdini is trying to do a lot of things You know they use it for the movie industry and also the game industry and you know It's largely been used as an effects package But more and more we're starting to use it for games And so it it does a lot of things where a substance itself is focused on textures And so the tools and the the nodes they're really focused on that and so it just speeds it up But I just wanted to say that you can't do it inside of Houdini. It's just it's not a streamlined yet I know they're working on it, but It's just still not as as streamlined but the other advantages of Houdini far outweighed the fact that you know The texture creations inside of Houdini Isn't as powerful as substance the modeling and the effects and just the amount of stuff you can do with Houdini is incredible Okay, so that's the procedural stack All right, so moving on so what we're going to do is we're going to take a look at a few Different workflows inside of Houdini engine 2.0. So this is actually new. It's it's in beta now. So What we have it is a completely new version of the engine. It's been rewritten. It's a lot more organized. It's more optimized it it's actually Way better than the original versions and it takes time, you know to evolve this stuff and you got to get people using it So the Houdini engine itself. So what is the Houdini engine the Houdini engine allows us to take our digital assets from Houdini And import them into Unity or Unreal or Maya Or max all those 3d packages and stuff like that and it it's super powerful. We're gonna get a little bit more Examples here in a little bit, but the Houdini engine allows us to fully fully utilize that power inside of Houdini inside of our game engines and the awesome part about it The one thing that really drew me to it initially because I I wasn't a programmer, you know when I first started out in the game industry It was largely just an artist a character artist not just in terms, but I was a character artist, but You know, and I slowly moved into technical art and then I started picking up programming and Programming while I've done it before the programming of procedural geometry system. I've Program my own inside of inside of Unity It just takes a lot of time to do that it could be months to create something that is as powerful as You know a lot of the procedural systems Like for example Procore inside of Unity. I mean that took years to make Using Houdini and the Houdini engine you don't have to be a programmer You don't need to have a PhD in mathematics to start building your own geometry tools Or your own level layout tools You just need to know how to use the nodes and that it does take time to do that But you can actually get started really fast. I would say You know, you could probably learn the basics in about two hours inside of Houdini To generate a really basic digital asset But it really doesn't take that long and then from there you just kind of start building up your knowledge about what all the nodes do and You know, you learn about attributes and grouping and vex and stuff like that. So You can get into this really quick and that's why I really wanted to mention that you don't have to be a programmer to do this It they took a very technical and a very complex Problem right and just made it really simple. We just use the nodes inside of Houdini to create our own digital assets All right So that's the Houdini engine. That's what it does. It allows us to import digital assets procedural content into Unity and unreal All right, so let's take a couple. Let's take a little break here and let's look at a few examples I built a nice little demo that kind of explores every feature of the Houdini engine except for the painting portion that's still being worked on but Let's let me play the video here for you guys So you guys can see it In a nutshell is what we can do with the Houdini engine in 2017 and for unreal as well It allows us to take those our digital assets and import them into the engine and we still have the procedural power So we can go and change all over our models and we can add more, you know detail to it or rough it up There's just an unlimited amount of things you can do. It's really up to your imagination. So Let's move forward then and Go on to the next step Excuse me. So where do we get the Houdini engine? All right, so first off, it's part of the Houdini 16.5 installer it's labeled as the beta package So this is the new package so the original version of the or the current I would I should say the current official version of the Houdini engine is still included with the installer of Houdini But that's where you get it. So Let me go up there. So I had these guys ready here So if you go up to Houdini, you can get the free learning edition called Houdini apprentice and You just download it and install it and what's gonna happen is when the installer runs it's gonna ask you if you want to install the packages for The Houdini engine for Unity or Unreal and you just hit the little checkbox and continue and What it does is it creates the Unity package. So I have it open here So once it's installed in your program files and side effects software you get the installation folder And then inside of there you have the engine folder right here So this is where you can go and get the Unity package and it's actually recommended to Just import the Houdini engine script dot Unity package and just pull that in Into your current Unity project and it'll go and install everything get it all set up. So the New version of the Houdini engine will be in a folder called labeled beta So I just wanted to mention that so that's where you get all that stuff And if if you you know really enjoy the workflows and you know, I highly recommend it I would then you know move up to Indy if your revenue is under a hundred thousand dollars It's pretty cheap compared to the amount of stuff that you can do There are limits inside of the learning edition. So moving up to Indy allows you to Get the full effect of Houdini. So, you know, you have effects stuff and you can do FBX Imports and exports Render out higher res stuff like that And if you're at a studio, then you're probably going you're going to want to get the Houdini core or Houdini effects so I Would start with the free, you know, versions just get used to if you haven't done this before just get used to using Houdini using the apprentice version and then move on up from there, so Let's move on to the next slide here All right So the full release is going to come out later this year. They're still working on a few features and Things are still going. They're still testing it with the users and stuff like that. So The the older version still does work So if you do our current only working on a project where you're using the Houdini engine All of your stuff will still work I highly recommend checking out the beta version because it's so much better You know, I've been using the Houdini engine for a couple years now and This version too is great. It's really it's really coming along. So Again the installation details just import the unity package. It'll just save you a lot of headaches It'll install everything for you. So But there's a plug-in cache folder inside of Your project so if I come over here to unity There's there's a plug-in cache folder So here's the asset cache folder This is where basically all the the baked files go and the working files go over here. You can see All right, and I just really wanted to point that out because when you when you start working with it You know these assets here And you start baking prefabs if you if you actually end up baking stuff They all go here first and then from here you can go and move them around as you see fit Okay, so that is that Alright, so let's go on to the next slide here Alright, so let's talk a little bit about digital assets Let's get a better understanding about what this process is like. What's the workflow inside of Houdini and unity with the Houdini engine. So I'm gonna play this video guys for you guys So you can get a better idea The core of the Houdini engine workflow Starts with the digital asset here and a digital asset is a collection of nodes that basically assembles our procedural content here Basically what it does is we start with a bunch of primitives Here we have a grid. We apply some expressions to it a little bit of noise Do some grouping And basically just run it through a bunch of procedures To end up with our final look So you basically go through and compose all these nodes together To develop your procedural assets so that they end result is A component here or what we like to call the digital asset That allows you to go and change Your content and this digital asset can be imported into Unity so that we actually have that power inside of the engine so we don't have to flip back and forth between our Vcc content packages So once you're done here, we flip over back to Unity we import the hda And here we have the same result. You can go and change the parameters on this guy and it all updates appropriately like so And all you need to do is just go and drag out another hda if you want another Version just like any other game object, but this is a game object that has a bunch of parameters So we can provide it a different type of mesh. It doesn't have to be a oil barrel There can be some other type of mesh. I'm just going to add another oil barrel here And do a transform override There we go. Now we have another set of barrels that we can place somewhere else in our levels And it always stays active and procedural until you hit the big prefab. So once you hit the big prefab You then get Prefab that you can use over and over again Let me reset that here And there we go So now we have a clean prefab that is just the geometry All right So that is the digital asset and it really is the start of the whole workflow Really is the core component to everything that Builds up your procedural content with the dng engine for unity 2017 All right, very cool. So that hopefully gives you a better idea about The process. I know it's you know relatively brief, but you know, we go and create the the digital assets inside of Houdini and We really just start to connect all the notes together to create procedures that then output You know something like a stack of barrels, right? Or like the guard tower or the the wood wall or the sandbags or the ground Even the ground here is a procedural or digital asset so I can change the noise on it or the size or the resolution Stuff like that. So Hopefully that helped give you a little bit more insight. So What's the workflow? Like inside of unity now with houdini engine 2.0 All right, so I'm going to jump back over here into unity over here and let's take a look here first And let's see what the first what was the first topic. Oh, so we have the re cook and the reload So that's a little different now So Let me drag out. Let's start at the beginning here. So I'm going to go to the guard tower here and pull out Uh an asset the the oil barrel asset over here And what I want to do is assign a barrel But the the process here is once you're done with your digital asset you import it into Unity to here and obviously you have to make sure you have the houdini engine installed all right Once you do that you can start importing the hdas And then all you need to do is just literally Drag it into the hierarchy here and I have a procedural asset So what I can do now is I can provide this uh an object, right? So if I come in here and actually Give it the barrel and it doesn't need to be the barrel you could do anything Any object it'll take anything and try to stack them Together I just don't have any other assets here that I can use Um, so the the oil barrel Is now stacked and you can see I can go and change this however I need so I can come in here and Make it bigger I can bring this down to something like two by two if you want just the single there we go All right, we'll do three by three there you go, so You can imagine the amount of things that you can actually do with this instead of having to come in here and just Constantly drag and drop out you know prefabs inside of the scene we can go and Drop these digital assets and create a bunch of different variations of these Stacked oil barrels Okay So that's that basic process so Anytime that you go and make a change to any of these digital assets You overwrite this particular asset asset because you've made a change inside of Houdini You can come in here and you can either reload the asset or you re you can re cook it So if I reload it it's going to completely reset everything So you can see that the oil barrel got removed and that's just because it completely reset the whole asset in here And it removed the input mesh that I gave it So let's just re-add it here I'm gonna do the barrel There we go All right So if you don't need to necessarily reload it completely I would then opt for using the re cook asset re cook will just update the parameters over here And push it into the actual digital asset So if we just hit re cook you can see that I kept The oil barrel this time it didn't remove any of this it didn't reset anything in here But it updated and looked for any changes that I might have made to this hda All right, so hopefully that makes sense there Let's go to the next one So let's take a look at the structure of the or the new structure inside of Houdini Engine 2.0 All right, so I'm going to go back over here. So let's take a look at this if you if you are familiar with the Houdini engine You'll remember that or you still know. I mean because if you're still using the current version That the Structure in here was quite large And navigating it was quite difficult and whenever you selected a particular object it would Open up or expand the hierarchy here and select one of the Inside game objects that had the scripts for Houdini Engine and everything like that So this has all been changed and cleaned up and I love it because it's a lot cleaner It's just a lot simpler and it makes a lot more sense So what we have here is the root object here. Okay, and this root object is where the Houdini asset root script goes and this contains all of the parameters and the different types of Tools that you can perform on this particular digital asset. So like reloading Re-cooking just keep only the output. So just give me just the geometry and get rid of everything else Or bake the game object or make a prefab out of it And the events which I don't really use that often yet. I'm sure I'll get into it here pretty soon You have all the asset options All right, just like before And then out we have all of our parameters just like before but the the editor has been cleaned up. It's way more pretty I love it. It's super awesome All right, so that's the root and then we have this hd a data game object and this data game object contains this Houdini asset script and this basically is the definition or the Um, yeah, no the definition. That's a good word. We'll stick with that It's the definition of the entire asset And it's good really for just debugging or just seeing what's going on Inside of the actual asset itself I wouldn't go through and actually change any of these materials these parameters. Um, because You really just want to stick with this root object and just change things here This is really just taking care of stuff in the background So but it's good to know that this is there and if anything goes wrong You can always come in here and debug stuff or Maybe you know, someone did actually mess with something. Um, and it screwed up the digital assets most likely Something that was changed in here and not at the root level. So that's what the hd a Game object is it just houses the this controller script really All right, and then below there, um, it's just a bunch of nodes that Are housing the copied geometry And then finally we have, you know, all the other actual geometry that's being created All right, so you can see I can click through each one of these individual barrels that Were copied Okay, so that's the basic structure now of A digital asset instead of the houdini engine weight cleaner. I love the new ui much better So there's that all right, so let's move on so baking and updating All right, so one of the really cool things that we have here I we we had baking before it, but it's a lot better. So you can you have two options here You also have this new bake update All right, which I'm not going to really cover it here in this Talk because I'm kind of running out of time and I do have some more stuff to get through But what we can do is we can now select the objects and just say a big game objects And what happens is now we have just A regular game object For everything so it removes all the houdini engine stuff. So I know I in the past I wanted to do that where it just Removes all the actual scripts. I just want the geometry and maybe the you know, the collision meshes and stuff like that So now that's what that button does and then we have a bake to prefab and now this is where the cache folder comes into play so if I were to Hit bake prefab What's going to happen is it's going to put it into that cache folder that baked folder all right, and so Now if I were to drag this out I have a nice prefab Again all the houdini engine stuff has been stripped out and now it's just a everyday game object that we're all used to All right, so that's baking and stuff like that. That's how much That's changed materials are pretty much the same. So inside of houdini You can do a create attribute node and assign the unity material Attribute to it and then give it the path to the material. So it's basically the same as it. It currently is in the official build There's not much that really needs to be changed But one thing I should mention is that the game developer tools for houdini now has a really tiny node that just Goes and allows you to set up the unity material So it's just faster instead of you know Creating your own create attribute node and then you know writing out the attribute name and then doing all the path assignment stuff so All right, so moving on. So let's talk about the Instancing feature inside of the houdini engine. So what is the instancing and how does it work? Stuff like that. So instancing, you know itself makes your geometry lighter It's it's also less resource intensive for things like the gpu When it's trying to render everything because what it's doing is it's just making a copy off of one actual object So a really good visual representation is on the side effects Help for houdini. So trying to understand packed primitives here What it does is it takes an original Version of the mesh and basically locks it up right and it just references You know the geometry that is inside of that packed primitive And rather than making just full-on copies of all that which takes up more memory All right, what it does is it references that back to that same original piece of geometry and saves quite a bit of memory And so really at at the core of it. That's what the pack primitives is And there are a couple of example assets that come with the houdini engine that you can check out and It'll help you get started with pack primitives. It's relatively easy to set up But the concept is that it just saves you memory when creating these particular types of procedural geometries inside of Unity because you can imagine that let's say for instance, you know something like this if I were to type in, you know 10 by 10 for this we're going to have a ton of barrels and if They weren't incensed or packed or anything like that It would take quite a lot of time to Generate all these particular barrels here so by leveraging the instancing and the Pack primitives inside of the houdini engine or inside of houdini the houdini engine really just kind of reads it if you set it up inside of houdini and then It adheres to those rules to those procedures Instancing is awesome because inside of unity here when you go and create An object like these barrels here what it'll do if you have instancing on it'll actually set the instancing parameter on a material so Let's go and you know get into one of the materials here So what it'll do is it'll turn on the gpu instancing for you automatically So in this case it doesn't look like I actually set it up But what it'll do is it'll automatically set this to An instanced object, so it'll share all the geometry and just make it lighter overall for the gpu to render it to screen Okay, and that's really the the core of it the example assets obviously I don't have enough time here to walk through how to do that. It's not really a tutorial type of setting here But there's a lot of example assets that come with the houdini engine that will show you how to set all that stuff up all right, so Moving on let's go and so houdini engine inputs. We already kind of saw This with the oil barrels again. I know I'm using the oil barrels quite often here And I I should just drag out some other assets so you guys can get an idea of it but when we went and added Our own custom mesh to this we were using the houdini engine input and there's two types of inputs that you can Accept with the houdini engine here We have the unity mesh and the hda now the unity mesh is just your everyday generic game objects You know some sort of static object that you imported as an fbx here inside of unity and then you just assign it here If it's an hda, that's just another digital asset. So if we take another digital asset provide this To the input here what it'll do is it'll process all the information that's in that hda So it'll it'll take all the attributes and the material ids and the assignments and stuff like that and it'll pass it through to this particular Digital assets so you can use them So you can start chained together your digital assets to create even more complex procedural Assets and I did that with the guard tower here. So the guard tower itself Here if we Select just the tower house. What it's doing is it's taking in the guard tower. So I have two components here Let's rebuild it here. So you guys can see it really quick and I'm going to try to make it quick I know I'm running out of time here. So let's just Rebuild this guy here really quick. So I'm going to go to guard tower hda And what I want to do is just first drag out a tower object Like so and I'm going to place it over here And let's just play around with some of the parameters so I can adjust the height of this guy. Oh, I just need to Turn this off here Like so there we go Just make it easier for us to see so I can change the height of this guy here And you'll notice that all the collision meshes are being adjusted all the uvs are being created for this. I'm even baking aiming inclusion into the vertices with this particular Mesh so everything's being generated everything here is being generated procedurally I'm not using any sort of static meshes to build the wood planks all the the posts and the wood planks are built procedurally as well Uh, then we have the bottom offset so I can move The guys from the bottom there and we have the top offset Right because why just do the bottom Then you can change the amount of those guys. I'm going to make this really tall There you go. So now we have even taller tower. So we'll just leave that like that And then I'm going to drag out a guard tower house now the tower house is the top piece and this particular asset is going to take An hd a so I'm going to switch it over to hd a So unlike the barrel, which is taking just a unity mesh. I'm going to provide this the guard tower hd a and Well, this is all good to go. It's going to think about it. So it's processing all the information there Now we have a new guard tower here. So let's just hide this guy So now I have a fully built guard tower over here. That's even taller And you can see now with this particular asset what it did is it actually went and assigned textures materials to it And the cool thing about this particular asset is it takes both hd a and a unity mesh so I can provide this a Sandbag Whoops. I just need assets actually So we'll do that And you can see it went and it placed sandbags on the top So this particular asset is utilizing both the inputs and hd a so the bottom portion and a unity mesh So a lot of flexibility and all of that and so right off the bat I now have two versions of this guard tower And it only took me a minute or two to set up and I can go to the tower And change the height to something like five. Let's say it's too tall. I didn't like that, you know So I just make it smaller Segments. I want five I'll change all that so Super powerful Very useful and when you're done, just bake it out to a prefab and there you go So now you have another version of a tower or you can keep it Like this cool thing about the Houdini engine now in version two Is that all these particular Scripts and stuff like that that are attached to these components. So this hd a data This Houdini asset script and this root script right here are all stripped out They're all set to editor only in the editor here inside of unity So you can actually keep all this stuff Live even in your final build because when you go to make your build it'll strip out all these particular Assets and really the at the end of the day just becomes a static piece of geometry Right, and that's when you start to take advantage of insensing so that all your meshes are instance as well. So Uh, you can have more performance levels and stuff like that All right, so that is pretty much that let's go back Let's see what we've got left here. So those are inputs. We also have the curve editor So let's take a look at the new curve editor inside of the Houdini engine And I'm kind of running out of space here, but we'll keep this relatively small All right, so what I'm going to do is I'm going to go up here to the Houdini engine unity And I'm going to just say create new curve asset And right off the bat what it does is it gives me The new curve editor like so Let me just enter to finish And you can see that the UI has been cleaned up. It's a lot easier to edit these guys now All right, and what we can do is we can now use these in our particular Okay, uh digital assets. So if I take something like the sandbag wall Here and give it the Curve object here, so I'm going to give it an hda so Houdini curve and then I need to give it the mesh so what I want to do is Give it that sandbag again Because we're going to make a sandbag wall here And there we go. We now have a sandbag wall And of course these all have parameters so we can go and change the the noise parameters and stuff like that But I'm Again, I'm running out of time. So I'm going to keep it short All these assets are actually going to be available for free I did record a an entire course on how I made all of these assets. So They are available to you. So you can go and learn how to use the new version of the Houdini engine Pretty cool stuff All right, so that's the new curve editor We can go back and we can change a particular Shape of it. So if I go to edit Over here, I can just move this guy over And what will happen is the asset itself will update Super cool Makes it really easy to lay stuff out really fast And again, once you're happy with it, just you know, bake it to prefab or keep it live Because all this stuff gets stripped out All right, let's go and see what we have all right, so Obviously a lot of people know that you know learning Houdini can be you know quite a steep There's quite a steep learning curve to it But there really doesn't have to be if you focus on certain areas You don't need to get into all the effect stuff right away. You don't need to get into the compositing stuff or Fluids or dynamics or anything like that. You could actually be very productive with Houdini and the Houdini engine Um, literally within a day, I'd say a couple hours to a day, you know And these are some great learning resources side effects has a ton of videos now Up on their website. So I highly recommend checking those out plural site, you know, they're always a good go to for these types of training Material and tag my my some of my favorite those guys are awesome. I love those guys They're they're training is amazing. It's all free and like those guys are so smart I don't even know how they got so smart anyways And then obviously you can go to my youtube channel. Um, I have tons of videos up there and I'm constantly updating it. So Um Go and check it out. And if you have any requests, definitely drop me a line, you know on youtube Or you know sign up for indypixel on the website or game tutor and just shoot me an email from there And I do my best to try to get to all of it too So anyways, those are some great re learning resources All right, so thanks so much for listening to me. I know we went on there for a little bit, but Um, definitely let me know if you guys have any questions and I'll try to come up with answers for you. All right. Thanks so much