Godot GameDev QA: Answering YOUR Questions!

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

This has ended, but I will be slicing the video into chapters so you can see if there were any questions you might want to see how I answered and skip to them without watching 2 hours of stream haha.

👍︎︎ 1 👤︎︎ u/scrubswithnosleeves 📅︎︎ Aug 04 2021 🗫︎ replies
Captions
[Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] hey what's going on everybody i'm excited to be back i'm glad people are already watching this is really awesome sorry i apologize for the big laps i went back to la for a month and i was planning on bringing my computer um and then it just fell through because i couldn't do it and i had to pay like 50 for shipping and yeah it was kind of a mess but i published an app for the app store which is cool um and yeah anyway i moved if you notice this is a new space so there you go um let me know so it gets really hot in here i'm still trying to figure that one out but it's a little more soundproof i've got some soundproofing phone i don't know if you can see um and uh yeah it's cool it's cool it's my new office so i gotta get a fan in here but so if you can hear the background noise i apologize we are doing live qa again just toss out your questions um i'm trying to make a to-do list of some stuff that i've already seen in the questions tab of my uh if you go to my discord there should be a link on my channel and i'll post it later uh and then i have a questions channel and then i try and answer these questions when i can uh over the last month i was not that great at it but i want to go through and just kind of uh go over these ones that i thought were good obviously live questions are going to take present precedence then we default to these questions then i'll go to reddit and then i'll go to the godot qa um so yeah let's actually let's put this there there's to do until people ask live questions see anyone got something ah let me toss the discord link in here except let's see invite people and there we go let me know if that pops up yeah there should also be one on my channel but i don't know i just use that when that should work but yeah we've got questions announcements general um even if i don't answer your questions a lot of people we've also got aza yaga who's really really experienced and he'll answer your questions in here um and also run jen's i'm active in there too so if you're already in there i don't know let's exit out of that i don't know if you guys heard about this game sorry real quick before i start it's called tank tactics uh it never came out because it like crashed there's a video on it and it like crashed a a game company temporarily like everyone really hated each other by the end of it got super competitive uh and so i'm i was thinking that i do want to make a godot version of this game but little less like uh with a little less animosity so it's just fun but anyway um yeah okay so if no one's got any live questions we'll start moving on to the questions on my to-do list here um so getting into that let's see oh nice thanks for joining dj among us all right all right yeah it doesn't look like anyone's asked any questions yet again you guys will take precedence uh well once i start a question i'll try and finish it but yeah so the first one i want to do is by harp and he or she has asked several questions uh and here and i've done my best to answer and they're honestly like very good questions they're very uh they're questions that i stumbled on when i was starting out so this one is really great there's a limited number for health uh example and she's doing this right which is not a horrible way to do it honestly but there's a much easier way because godot knows you're trying to do this and that's using the clamp function um let me actually quickly do that okay um yeah and then look we're already on some nice people azayaga is probably even more experienced than me although we have a little bit different style but he used the clam function uh so anyway what i want to do is kind of uh probably go maybe to the first one and i'll copy and paste this file here so the colors final duplicate uh okay oopsies why would it not automatically go colors example [Music] oh yeah i think i spelled that right which is uh pretty impressive if i do say it on myself okay cool oh yeah by the way everything we're doing here actually i don't know where it is github should be open ah that's why uh is going to be on my github and i'll put that link that's also on my channel but i'll go ahead and post that link so everything we do here is going to be on github so you can go ahead and just use it yourself also all the past qas are also on github so you can go ahead and check out those live qa sessions and i've bookmarked them so you can if there's you can check through if there's anything of interest to you anything that you had your question if not you can skip it if if so you can skip to it um and uh yeah what have you so anyway that's all right here let me post that link in here all right yeah i would uh well i just started medical school so i think i'm gonna have to put those dreams on hold but uh i would like to keep up the youtube channel and probably there's a few games really quickly i'll i'll show you um so here are some of the games that i've made blackboard is the first game i made it's totally free and completely finished really fun lunar bastion is a little tower defense game that uh i it wasn't my favorite game to make but it got a very good reception it came in like 12th of the uh the github jam or whatever it was called or something like that submission for what did i get oh i got 17 and it was pretty good because i think there was like 500 yeah there's 500 people so that's a pretty good game people really like this game there's a lot i needed to fix and it looks really really cool but uh yeah again everything's free to play my most recent game was solenoid for the go go jam which i hosted really really cool and i think i do want to turn this into a full mobile game um because it would be as simple as i i made it so uh dynamically that it wouldn't be too hard to add new levels and new concepts and new stuff it would literally just be you know kind of copy and pasting stuff until i i find some more fun levels anyway yeah that link is also i should just again link you to it but uh the link for this is also in my description or i don't know if it's in the description but it is in my profile i should definitely put those all in the description but anyway all right let's head back to this so uh i did the colors let's do this and i'm gonna go ahead and open up the world scene here um broken dependencies that's weird i don't need a spawn area in here oh yes i do actually okay this is player oh that's weird it looks like the uh the screen size is notably smaller here i don't know why that happened we'll just fix that real quick or yeah we'll fix that okay project project settings if you don't know this is how you change your window size something really interesting i didn't know is that the test width and height they should really rename this because the test width and height does not have to do with like oh just the test window if you put the actual width and height to this and then you put the test width and height to double or something when you export your game it will go towards the test width and height which is actually more beneficial than it is confusing um i don't know if it's more beneficial it's confusing but it's very beneficial so uh what we can do it's already 1920 by 1080 interesting i think i'll just keep it at that then and then i guess i will shrink all this stuff um let's go to player and then uh oh i kind of forgot how to like scale things except for i mean this one don't forget but 0.5 by four five okay let's see what happens oh well that's got some bugs here errors interesting yeah so i guess because i copied and pasted this there's a bunch of issues huh okay ah a bunch of dependencies to fix that is super weird i guess we don't need the spline area yet okay maybe i should just crush it all from the start let's see any air still all right can't preload source at path okay let's do that sorry this is usually not that big of an issue because it usually fixes these um by themselves but uh it's not today not today not today okay so go we want this one okay let's run it see what else is broken cool okay so there's me and i'm changing color okay but it's not able to spawn enemies and that makes sense so because i'm trying to generate a random position within the spawn area well i kind of do want the spawn area now so if this is something pretty cool i came up with this thing i might put it on the um on the store here we should actually just do this oh how did i know this is actually not 1920 that's really weird that it's not doing that but okay divided by two there you go uh and then we'll put the x position at zero nope apparently not at zero that's what we'll do something's messed up here that's weird uh maybe it's because i updated goodell anyway how can we change the game engine logo i mean when i run the game it says made with godot i want to remove it and make it original that's actually my very first video on youtube is how to do that that's funny that you'd ask that so i'll quickly show you that so my very if you go on my channel um that's this video right here which is uh making a custom load screen and so you can see right here what the i mean i'll show you if you want you can just watch this video but this goes into more depth on like how you make a kind of cool load screen like here's here's an actual load screen that is in a lot of my games all right just like that anyway uh so the way you do it is you go to project project settings uh and then you go up to boot splash right here so right now if i go ahead and hit command r you'll see that the game doesn't work oh yeah because this is this is formed um that's so weird why is that not open anyway okay and then spawn area oh is that why that's super weird that that can't do that cool all right save that that was weird let's see if that breaks the game again or it works now should know pretty quickly because it should be spawning people there we go oh there's enemies okay anyway that's what we need to do but uh oh yeah just yeah just hit my channel and it's the first video there but uh again so you go to project project settings uh well here let's do that so you see now it'll say godot game engine if you want to change that go to project project settings bootsplash and then right here you can change the image and then you've got several other options here you can change the the default background color here so we can make this i think this might just make it a full color but i think it's going to keep the logo yeah so keep the logo but you can change the color um you can change the image so i'll just put some image here let's see do i have any interesting images i don't think so we'll just do that so just just as an example um we've got that right there uh and then yeah so it's that changes the image so obviously in your case you would want to change that image to look uh cool um or whatever but uh and then the other thing that i go into the video is like you can make the image match exactly the image after that so if i run this it will give you this uh and then that right but you would have like a title screen that has uh the exact same image as your boot splash so it looks really smooth and you really can't tell it kind of like changed it between which is nice but uh let me go ahead and get rid of that and then yeah i'll keep that color it's a nice color okay coco anyway so the point is right now and i think i what i want to do is go to the enemy scene and i'm seeing here i guess we're just copying well i can change the scene because it made a duplicate of the scene i think um and the idea is i just want to transform the scale okay save that and then again if you don't so the spawn area allows you to stick this here and they'll spawn within what that area um by the code i've made so the point of doing this was so that now we oh those enemies are moving really fast but the why does this look so laggy anyway uh you can only hit this was a game some guy come out came up with and asked me how to make and uh actually that was a pretty good idea and so the idea is that uh you can only kill the guys whose colors match your own but it looks like there are lots of problems with that anyway so they can kill you uh i guess i don't have any way for you to die right now which is actually perfect because that's what we are going to do um so they're essentially asking for something like uh he was asking for you know how would you do a death function right so what i have uh is this on area 2d body entered right and so all of these enemies have an area 2d here and it's important to go to the collisions and make sure that they are on the layer enemy and their mask to the layer player and now i named these by going up to project project settings physics layers should be down here 2d physics and i named these it's completely arbitrary though you don't even have to name them i just think it makes it easier and then in player if i go to my area 2d it's the reverse we are on the layer player and we are masking for layer enemy okay then i have the signal connected here if we go here body entered you just hit this hit enter and then you choose that and click connect okay and i've done that and so right here whenever one of the enemies hits us this function is run okay we have a variable called health for in this case it's it's out of three so you have uh three health rights and then you are subtracted a number of health by one if you hit the wrong color in this case okay and then we have if health is less than or equal to zero die and in this case we're just doing the function die is just if that if not dead that equals true and q free and this just makes sure one that you can't queue free multiple times which is good um and two is that it allows you to like once you start putting death animations and cool stuff in your game you can put all that in your death function so then you just call death or die and then everything like having to do with death happens you know what i mean you can have signals emitted whatever it just makes it a little cleaner so you don't have to have a bunch of code in this anyway uh that's so this is how i would actually do death you actually don't need to use the function clamp but i do want to cover the function clamp um because it's a really really helpful important function and i think i'll do that if uh well here i'll answer dj among this question after before i get the clamp but the way i will do that is like there's a really cool way that you can kind of make sounds appear farther or closer to using the doppler effect that we can simulate by the way yes you don't need you just say if health is less than or equal to zero then you call the die function uh and so the enemies right now don't have a way to say so this shouldn't that shouldn't break the game though because we should say it says if levels.player let's do this let's say if global.player and is underscore instance valid globals dot player okay i just want to see if oh why am i not able to move now what is happening dude what what the heck dude i i'm really confused so there's a bunch of weird stuff going on with the window size um because as you can see it's 1920 by 1080 but it's clearly not like if we go into the world here oh that was why okay cool yeah all right cool cool so now i'm gonna try and die and the idea being that yeah okay now it doesn't crash that's all i wanted to do real quick okay all right let's answer dj among us's question one more thing i want to ask that how to remove command prompt that opens with godot i want to hide it when i export it uh which command prompt are you talking about here let's let's open up one of my exported games here if you could uh expand upon that um we'll go here we'll go to i do it for i'll just do blackbody live by the exports mac blah blah blah coming also let me know if the uh the sound if you can hear too much background noise if the music's a little too loud i can change all that obviously if you can't hear me very well so yeah that's what happens when you open up this game black body that i've exported here uh so you know i definitely just go watch that video that's the first video on my channel um and you can see how i did that i see it looks really smooth there's no godot load image or anything like that um one thing i have found that works really well is actually just changing the image to be a blank image or and just changing the color and then i just have the color fade in from that color so like i'll show you an app i've got called fishbowl so this is actually i'll show you this so this is the app that i published the app store recently which was a pain in the butt oh wait this is uh yep icloud almost screwed me so hard you guys it syncs luckily i had just uploaded this to github and then icloud deleted all of it so i cloned the repository but that was really close that was so close to being so bad um right before i was about to publish it and there's no way to get that back i i i just ate it um okay so we'll go here and that should be project. so if i run this one you can see what i mean this is a really smooth uh intro it's like that it just fades in from white and you can see right here that i've got just a color rect that is blank there and then so the idea is that it fades in from that white and it looks really smooth upon load okay yo what's up tofu master i'm answering questions live so if you have any games or any problems bugs you can't solve or anything you're like i wonder how i would do that as long as it wouldn't take me an hour and a half i will absolutely hop into that and do that if you're live you have precedence over the other people right now what i'm doing exactly i don't know if that was not your question that was just like the dumbest thing ever um uh i am i was trying to answer the question of how to use the clamp function which is really really handy um so what when i run my game in windows a command prompt also opens which is important but it shows error that i want to hide oh i think what you're probably doing then if you go to the export menu here you need to export as a release version um because yeah that's what it is yeah it's because you're exporting yeah in mac it doesn't do that but here you want to make sure you export as release and i forgot exactly how to do that um honestly but that is the problem custom template location i think hmm yeah that is the problem though if you want to export as a release would you choose a template yep so i do export project here i don't think it'll let me but uh oh there you go you uncheck right here export with debug that's what you got to do um yeah because the debug is basically showing you all the air codes everything like that you shouldn't have errors it should run smoothly um but so yeah this is pretty handy and it doesn't do it in mac anyone who is interested who has a mac if you want it to show those things will on export you just have to open the uh open the app from the executive or the exec dot exec file so you go to the the actual export and then you hit um you click right click and go to show package contents then there should be a file that says dot exec open that and opens it in your terminal terminal opens up it shows you that have ever sold a godot game yeah godot is great for commercial use especially now i i so i just put a game on the app store i haven't sold it um because it's free with ads um but yeah it's great for commercial use um one of the guys who i really really enjoy uh who's making a game it's fantastic his name is john watson it's actually psych godot because john watson is also the name of sherlock holmes sidekick so it's kind of hard to find this guy but yeah i'll go ahead and link his channel and he's making a freaking sweet game um called gravity ace and he was actually godot actually featured him because he's just he's so great at it and so he's he's going to sell this game you can see what the process looks like for doing that also heartbeast has put several games out for sale uh he's how i learned how to code in godot he's just great really great guy but um yeah so yeah it's really great for making commercial games i think there's there's no problems and also so if you go to the asset lib here you can there's literally look at this it's the one of the first ones here godot admob and i mean it's just amazing you literally just click this download it um i'm actually i contributed it a little bit i think i want to do more because it's still a little weird you have to like download something and put it in your game file which is like you should be able to just get that automatically when you download this which i think i can help do but anyway the point oh that's interesting why would you want that um admob you and then you just put ads it's literally as easy as one line of code where you want the ads and they pop up in your game so that's pretty cool i'm interested in this so if you guys don't know sqlite is like a um data analysis language so i'm wondering why you would use that in godot making it possible to use sqlite databases as data storage oh that's interesting i still don't know why exactly you'd want that but uh that's cool discord interact with the discord bot api make discord bots and godot that's sick that's very cool you guys that is very cool i'm definitely gonna check that out i'll put that on my disc i'll make a little game you guys can play my discord if anyone's interested that is really cool okay but um yeah so i want to get to the clamp function really quickly and i think i'm actually using it yeah i'm using it right here so if you can see on my movement i'm saying basically if we have input so if i'm pressing any of the arrow keys we're going to start moving right our velocity is going to increase by some amount but then we're seeing a velocity equals the velocity dot clamped max val so my max val is a constant number it's a thousand and what this says is that my velocity in the x and the y cannot get larger than a thousand or lower than a thousand um there's also the function clamp and clamp is for single numbers so for instance uh i could do rather than in movement i'll just put this in the physics process if we had for instance a well i guess i need to make i'll just use the score variable so we'll say score uh plus equals one okay this is going to happen in physics process and we're going to say clamp okay and then we're going to say value right which value we're going to clamp our score with a minimum of zero and a maximum i'm sorry i mean maximum of we'll say let's do [Music] 69 690 that we'll get there pretty quick honestly but uh we'll go ahead and print that and then we'll print score actually let's not make that let's just make this 69. okay and we'll print our score okay uh and then so what we'll do here is if we go you can see that it counts up to oh it shouldn't ah i'm sorry you have to score equals or it equals clam score there we go all right then we'll get to 69 and then it just stays there um and that's great so it's essentially what that does and now if we set score for instance 269 um and then we set this to zero right i'm sorry minus equals one right i went ahead and did this you can see it counts down from 69 gets to zero and then stops so that's how you use the clamp and clamped functions um again you're just putting you have to and there's a problem i still make it a lot of people make is that you have to capture this value so the clamp is a clamp is a function that returns to you a number right it's like if we did print clamp um it would not get bigger than that but we're not actually changing the value score so you can kind of think about this as like this is evaluating to a number that's right here so if we get rid of this right it's the same thing as just writing a like five here right like score does not equal five we've just written five right um so in order to make score equal five we have to say score equals five um because clamp is evaluating to a whole number in this case right actually one thing i'm really interested in really quickly is to see if i modify this by a float um and we say plus equals just make this uh 50 okay what's going to happen oh did that not work clamp score 069 interesting what if we do 61.0 oh so that's good to know i've actually never done that but uh maybe it doesn't work with uh floats interesting okay so it doesn't work with floats that's cool that's very good to know oh nope i'm a dumbass you guys i did it again we need to write score equals that because we're not capturing i just went through all the struggle to tell you guys um okay good that makes a lot more sense okay cool so you can absolutely use it with i just you know failed my own lesson right horrible teacher and student but anyway that's how you do that so that's how i use the clamp function hopefully to have answered uh rupiah's question so for one thing let's go over here boom okay and then i want to go ahead and do what's the time what is the time here should have time recording live for 34 minutes so we'll go here i'll say at 34 minutes yeah well i think it's i think you put it like this you go 0 34 i think that's how yeah because if you've noticed all my other qa sessions are now bookmarked so you can go i think i've already said this but so you can go to any of the qa sessions and uh everything i cover in those qa sessions will be written down in the uh like like right and the uh well whatever in the uh the player window you'll see like oh he did uh how to make a health thing counter and how to use the clan function will be blocked out and you can just see if anything interests you and if it does you skip to it if not screw that video but maybe give it a like i don't know i mean that's i'm not saying you should do that i'm just saying do it you know what i mean um so yeah okay so what's next well so i have the blink effect on the hit um which i think will be cool and we can actually do that in this game too which will be nice um let's see i feel like there's something oh yeah i wanted to say at arubia just into health and plan functions okay cool just letting him know that i did that and now i'd like to make the blank effect so he actually has provided he or she actually don't know provided with a little gif here that we can see um so when he gets hit you can see that he blinks there you go and so sometimes they do this in white it's actually easier to make them do it like that because we don't actually have to use a shader um we can just use the modulate property so there's several ways to do that and so what i'll do here is we'll go into player and we'll go down to wherever we have this function and i'm going to make a new function here and you don't have to you could just write it in um oopsies what's wrong with me you could just write this right wherever so this is when we're hit right else health minus equals one that's when we're hit so what i'll do is i'll make a new function called hit okay and we don't need any parameters we're just going to make it like that and then what i'll do is actually just stick all this in there okay we'll say hit okay okay so that is kind of the bottom line and i'll do this move that back okay now what we want to do is go ahead and make it so our player actually blinks like that so there's a few ways you can do that i'm going to start with using a tween because i think it's the fastest way to do it but it might not look exactly how you want we don't give you quite as much control but there is quite a lot or quite a few tweens that i think would work well for this so we'll go right here and we'll say var or i'm sorry on ready bar on ready var between equals tween and so this just grabs this and stores it in its variable so we can use the functions of that tween there and now what i'll go ahead and do is go down to hit and i'm gonna set this up just like i actually already wrote it down here what how i would code that where are you there you are okay okay let's see if this messes up all the yeah i think it's using spaces cool and then we got to use that okay so what i did is i did tween dot interpolate properly interpolate property and what this does it takes one value and interpolates it to the next value by some time right here in this case 0.6 seconds and then you choose the type of tween you want to happen and the these are both relating to the type of tween and how that's going to look and so i'll go over that pretty quickly first off though you mix you choose the object so it's affecting the player node right is what i want it to do and then what property of that player node for me i'm going to do modulate so if you can see um let's uh let's go that's it yeah so if we go over to our player and we go here to the inspector and go down to the do visibility property and we go to modulate i can change the opacity here or opacity um and we can move that and that will make me invisible so the idea is to like kind of have this go like that so it looks like we blinked and took some damage in our health yeah so that's the idea there so what we're going to do here is go right here and yeah so what this will do is i want to go ahead and open this so this is easings so this is easings.net i use this all the time i'll link it if you want but it's literally just easings.net and what this has as you can see is all the different kinds of tweens available available to you and what they're going to do so we're going to be using the tween uh ease in bounce or ease and out bounce so an ease in tween starts slow then gets faster ease out starts fast then gets slower right um i use sine quite a bit you have ease in outside stuff like that and then we've got these bounce tweens and these are getting a little more funky here's uh elastic elastic sometimes also works but if you do it ease in out tween of a bounce really fast what it does is it shifts the modulated property so much that it looks like it's kind of blinking right so this is one way this is the quickest way that i think i could figure out how to make this oopsies supposed to go to the world notes sorry my dogs on my lap just kind of going crazy all right so we need to get we need an enemy to spawn here so yeah as you can see there it he hit me and then i blinked there you go so i think that i would like that to be a little bit faster though so we can set this like 0.4 see what that looks like uh anyone in the chat thing yes oopsies i did that again let's do that oh yeah so as you can see i blinked there oh but that is a problem for this game uh but that we can't actually change our entirety the entire modulate property we can only change our because it's important for us to be able to modulate that in the game so that's a fun little challenge isn't it i think you should be able to go to modulate dot a right i think so because modulate.a should grab if we go here just right here we should just be able to grab that uh and then we should be able to take it from zero to one like that okay but this might not work so let's see that would be the chicken no that was actually 100 the egg if you want to get serious there oh that didn't work okay yeah the egg came first because uh before it was technically a chicken it was some other species that species undoubtedly already had the ability to lay eggs plus it laid an egg containing what would be the first chicken so technically the chicken came first i'm sorry the egg egg came first and there is the literal answer to that question yo what's up dimitri how's it going man you got any questions fire them let's go i'm trying to solve this problem i've actually had this problem in the past as well and that is that uh it should has no property in modular.a this should work right so if i go up here to the ready function and i say print self dot modulate dot a right it's going to print our our modulate property but i think if i do also get get okay and then so get again is uh how you would you can get properties this way um so self i guess we actually don't need to do self but stop.get and we'll say if we to modulate here then that should print the entirety of the module 8 right there if we print modulate dot a and do this no interesting okay what about if we do x null okay let's do godot get get but oh dude i learned how to do this get the properties oh sub property there we go sub properties that's what it's called all right again anyone's got any questions feel free to shoot that in here i just i'm kind of interested to uh why would it no obviously i want sub properties get a property from a node path [Music] oh is it okay object.get indexed that that do we do this said that instead modulate the modular a nope that didn't work or if we do modulate dot x nope okay all right i see i see your challenge and i raise you one attempt to solve that challenge um that is quite older than a object.indexed oh gets the get the objects property indexed by the given notepad the notepad should be relative to the current object and use the colon character to access okay all right so there's a whole new function that's i think that's bad um let's do it oh that's why yes okay great success everybody um so i think we should be able if we go here i wonder if i just change this to this if it would work yay what's up oh no that did not work on nakosh i'm back man yeah oh it's working lit okay cool so that's how you do that i think i've solved this like three times on my own and then i just forget it because typically i think they should really use um this syntax instead but uh that's cool anyway and that's also interesting that you have to use this function get indexed so um yeah also say that that is a separate issue so let's see what time is it i forgot now i'm gonna have that okay so we have how long have we been recording 45 minutes okay so blink effect hit solid ants 45 at 0.45 cool yes anikos i am back man it's actually good to see you i you've been you joined my discord you've been in there uh oh let's go ahead and cue a sessions and let's go ahead and uh okay so hi okay push origin all right again uh that should be in the description um let me just check no it is not description because i am a fool okay let me actually drop all my links that are important in the description here uh so we'll say git hub okay github and then we'll do my discord link discord and then i'll do itch oh well i mean i can just do each side right there right nope i'm a why would i think i can do that obviously that's the main side right here we want to go to acv games coco all right there we go i'll hit save all right now that should all be in the description png to icon file yo what's up low tech linux nice thank you man i appreciate that that is very very cool i'm hoping to be at least active on these live streams i've just started medical school literally yesterday um so making videos takes a lot of time but these are nice you know i'll probably do this for two hours three hours and then i can just answer questions keep myself up and then maybe i'll live stream when i make some some games like i've got right there probably shouldn't have my email available but uh yeah please don't email me i have an email if you want to reach out to me on my channel obviously deleting it now is pointless but yeah yeah man i was also making a uh a calendar app here let me see if i can pull this up here but i gave up on it because i just started using um this other calendar app it's honestly not as good as what i wanted to do but it's just it's a lot of work and stuff like that um i do think i'm gonna make an add-on where you can send notifications from godot on mac os at least i don't i think you it's already built in for linux and for uh not android but pc but for mac you can't send notifications so here let's go to this and it should be calendar project organizer okay and so you can run this yeah and so if it makes events you can do this and then i think they make it a you should be able to add events but uh yeah so the events will stay there and like it's cool and it loads the different weeks and it calculates these are real time like correct dates and stuff like that so that's nice um yeah yeah yeah you okay anyway that's how you do that um but yeah so i was thinking about doing this make it a little prettier but uh yeah you can totally make apps like that which is cool but anyway so i'm going to make an add-on i don't i shouldn't say i'm going to i would like to and i know how in theory how i would do it to make an add-on where you can actually send like good push notifications that show up here in apple and stuff like that so yeah you basically make a python script that runs on the base python that comes with every mac computer so i don't have to package it in uh and then you could there's a python library that allows you to send notifications to the mac os so i would just make that make a script attach it to godot and then all you would have to do is say like mac notif dot notify and then you would say like you know title subtitle image blah blah blah blah blah anyway stuff like that how to make an add-on man you are asking all the right questions my friend because i have another video on that i'll go ahead and link that here um it's it's definitely more of an advanced thing to do but i've got a pretty solid tutorial on how you would do that it's actually i don't think it's like incredibly difficult hey everybody editor inspector plug-ins well actually so this is technically a plug-in this isn't just an add-on um and then i also have my very own add-on so if you go to the asset lib and i think it's yeah here it is so particles 2d plus which is just an easy way i have a video explaining what this does if you go here and look this up you can click this and it'll take you to my the video and anyway this is yeah i've got a nice description there on how to use it uh and what not but yeah so it's actually really easy to make an add-on you go to the asset lib godot asset loop just like that um and then you log in or register if you don't already have one and then you can submit uh and then it's right here so here's the entirety of the asset library pretty cool i only have one right now i'd like to make that one and then i want to contribute a little more i've already contributed to this one uh i've actually so i made a video on how to use admob the old school way we had to compile it yourself and it was a mess and the guy went ahead and the same guy who made that thing put it into this beautiful little add-on that you just can go to the asset lib and get right here it's on the front page right now because it's so awesome um you just download it and it's easy as crap to put ads on your game so that's nice um yeah i'm glad to hear it but yeah i definitely i mean it sounds like you've got a lot of questions that i had myself and uh thus made videos about so definitely you know scroll through to see if there's any cool stuff on my channel and then you know let me know if there's anything you really want to see and i'll try and do that but um yeah so very cool very cool let's see i've been sharing with you a weather app cool you could definitely make a weather app with godot i mean it's they've got a lot of cool stuff built in for http requests and stuff like that um so it's cool it's definitely a good learning project too uh i'm yeah i'm hoping to use guido to do stuff like that in the future okay so sorry about all that what i'd like to do now is kind of start unless anyone else has any questions here i'm going to start going through the reddit and good old qa and then well i guess i should probably actually look through my questions and see if there's any more that i think would look good so um there's the blink effect do to do okay oh yeah i didn't show how to do it with the animation player but it's very easy okay so i'm trying to spawn enemies on the screen and move them to a certain position but i cannot figure it out i'm sure it's easy um i forgot which q a i did but there's a lot of different ways you can do this um i did it in one of my games so you can go check out my live streaming of how to make missile command i do it there and then also i've got a live stream that shows and i've got it right here how i made this spawn area so again this is in my github so you can just go grab this but essentially the spawn area has functions in it that just generate a random position so here what i'll say is i'll do on the when the timer timeout i want to spawn an enemy at uh and put it its global position to spawn area dot gen random position and so again that's calling the spawn area which is this node here uh and then spawns a random position and so for instance if you wanted to put this around all the outsides you would have to make four of them as it is right now i still want to figure out how to make like a hollow one because obviously that would be the best that would be ideal you don't want to have four different shapes although it's it's really not that hard if you you did want to um and i could show you how to do that but um yeah actually you know let's do that real quick i think that would be fun and cool to do so i'll do that so the spawn area i'll quickly go over how this works and let me make note right here so i'm going to make random spawn areas okay and then we're starting that at 54 minutes okay if you can hear my pug snorting congratulations you've won okay so this is one spawn area and so again i'll really quickly go over how this works if we go into the scene here this is just an area or a shape 2d and i have not i have not assigned it to a collision shape or anything like that because that's not the point oh that is why yep that's why my friends that's why this was not working cool and then what if i do this now oh sorry not that i want to do this zero oh that's out let's do this okay let's do one area cool oh that's so weird dude so weird i cannot tell you why that is i literally can't tell you anyway yeah there's some weird stuff going on in this gadot project which is kind of a pain but anyway the point is that everything still works it's just a little more uh handcrafted we'll say it's a little more rustic so uh what i do is i have a colon shape 2d i have two on ready variables uh if you don't know what these are uh on ready variables go ahead and check out my uh godot gds for non-coders course and it'll show you but really quickly what they do is when the node is entered into the scene tree it then creates this variable so what it does here is the spawn area we're gonna get shape dot extents so that will grab right here our shape property and then it grabs this extents so it'll get the size of the rectangle essentially then we have henryvar origin right and this is going to go ahead and find the center of the uh yeah it signs the center of the entire thing or is it no it finds the top left top left by doing global position minus the spawn area because the global position is right here is it is this the goal position now this is the goal position i guess it's interesting shape time extents oh yes that's because this is already divided by two that's why okay cool cool just figuring that out so the reason is because so for instance the screen right now is 1920 but uh if you when you size this it sizes uh in both directions so thus it's already split in half if we go to the um the extents here in the x direction you can see that it's already half so that's why we only have to subtract our global position which is the center by our extents and that will put us right here in the left corner anyway so that's what that does then what we do is gen random position we say var x and y and then we're going to spawn our we're going to return an x and y value as a vector right our x value equals a rand rand range between our origin x meaning the farthest point left in the x direction and spawn area x the farthest point right in the x direction and then of course we do the same thing in y the farthest point upwards in the x direction or y direction the fire this point downwards in the y direction and then that gives you so that something will spawn somewhere within that spawn area i really should just put this on the store but i think i wanted to do more with it before i did that anyway the way i would do this if you wanted to make this around here is we go ahead and i'll add a node 2d okay i'm going to make the child a our make the spawn area a child of the node 2d okay and i'll name this spawn areas okay and then what i'm going to go ahead and do is duplicate this uh thrice and we'll go ahead and put this down here nice and we'll put one of these right here and one of these right here now there's ways to make this more perfect for sure but i'm just going to do it this way okay and then what we can do is go into these guys and just change their expense manually so i'll change the y to be nine so it's 1980 by 10 1080 by 19 points so 10 80 divided by two oh that's a problem okay we'll do this though right click this and we'll click make sub resources unique and that was happening because um this shape was the same shape used in all there we go so this will be 10 80 divided by 2 oh this should be 10 80 okay and then we can stick this right here um but i do think i want this to go a little bit so we can have corners so maybe i will just do something like that now we can duplicate this shape and then move it right over here okay so now we've got these four spawn areas okay and then what we'll go ahead and do here is in the world function so right here again once the timer times out it makes an instance of our enemy and then it spawns it somewhere in the spawn area but now we have to change this a little bit so i'm going to change this to spawn areas i'm going to go ahead and comment this out just for a second and then what we're going to do here is say spawn areas dot get underscore children so what this does is this returns a list of all the children of access to all of these nodes then what we're going to do here i think i'll make a function right here yeah we'll do it i'll do it here what i want to do is select a random position from or select one of these randomly so what i'll do is i'll say spawn areas spawn areas dot shuffle okay um and then what i'll do is right here i'll say var spawn spawn area equals spawn areas yeah spawn areas zero okay so essentially what i did here is this returns to us a list of all the children right here so i'll return all these four spawn areas all these four shapes then what i'm going to go ahead and do is right here we're going to shuffle that list okay we're going to shuffle the list of all those so that way we don't know which spinal area is which right so any of these spawn areas could be at the first position in the list in fact what i'll do here just to visualize this so say print spawn areas okay and then i'll print it again here after we do shuffle okay um and uh well now i have to wait for the timer to time out but the idea is that it shuffles the list so that way you're randomly selecting something from the list so as you can see right here at first before it was shuffled the first area was this one and then the second area was this one a different area one of the other ones um so the idea is now because all of them have that same function right this as gen random location we can just use that right here by saying now that new spawn area is that and we say spawn area.gen random position and then we add child so here we're setting the enemy instance below position equal to whatever that generated so sorry if they got a little lost but yeah that's essentially how you do it uh if you guys have any questions about that or any other questions again feel free to drop them down below otherwise i am going to go ahead and move on to some other qa questions in here so let's go ahead and do the aunt so this was random spawners four uh and then we'll figure out what else we want to do okay so this is actually a really great tutorial it's by plug world cool guy okay i want to make it so that if is on wall an input dot well actually first let's go ahead tungsten tornado wow question what okay all right okay you go down below everyone say hi to beanie oh okay so i want to make it so that if is on wall and input that is action pressed move left um i forgot what those double lines there i think it means or yeah i mean or input that is action pressed move right um then is grounded equals true okay so that's weird so if is on wall this is a lot of code so if you're on the wall and we move that's weird move left or okay if you're on the wall and you move left or right and is grounded equals true okay i see that so i don't understand because it looks like that's exactly i'd have done it but let's see um feel free if you guys want to hop into my discord again the link is in the description and post some of your code uh like if you don't want to post that here it's too much uh again nothing has shown up after dj among us youtube doesn't really tell you when your um your comments don't really show up in here which is kind of annoying but uh yeah just so you guys know dj manga said thanks and that's the last thing i have seen um okay so hmm get h weight interesting this is a it looks like it's over complicated for what he's trying to do um where it goes it goes raycasts okay ready next time with the square root whoa yeah you should not be doing this yeah i mean this is this should work so if i don't know if you made the function is on wall let's let's find it is underscore on underscore wall all right dude that's annoying interesting so there's no function is on wall function because i don't think there's a let's go to our player here say is underscore on okay cool so there is is on wall built in there's is on wall it's on ceiling is on ground you have to give it the um the direction but okay and then he's doing this ground up but that should be true it is on wall and this or okay so the problem i don't know if someone already answered it yeah so the way the reason this is a problem and this is actually just not understanding if statements correctly is that this should be written so i'll go ahead and do this okay so i'll just do it in commented out code here ah i'll do this and then i'll use the ui underscore left do i write okay um and then i'll make this be a function or a variable here okay cool so we'll say that and then this should be like that okay so the problem for one thing just in case anyone's confused that is an or and that's because you need to do this you need to either write this twice or do this okay so what this will do essentially is because when you were doing it before what was happening is you're asking for two scenarios one is this and the other is this so the problem with that is that whenever you press right you're gonna be grounded by putting these parentheses here what we're saying is now there's now there's still two only two things we're evaluating but it is if you are on wall and either of these is true right and then the other way you could do this and this is something that confused me when i uh first started is to say in is on wall okay so that's how that's how those are the two ways you can write this i prefer the parentheses way uh although either are fine so that's how you would do that um so yeah i'll say that i answered that that's just a quick bit about if statements and that's something that might confuse anybody who followed some of my tutorials is that i try to go over that a little bit but getting into the nitpicky bits of if statements um i mean that's just something that takes a little bit of time and experience um but yeah cool cool um okay help this is like when you don't press space we'll fall on the platform then jump a mountain no go down but i want it to when you don't press facebook fall off a platform then jump them out not does not go down so i'm imagining just from looking this other code that he's saying that so should be if not is on floor then you apply gravity or you apply gravity at all times so motion dot y plus equals gravity okay motion equals move and slide motion up i don't see where he's actually applying the motion here i think he cut that out which is a problem um because he clearly he probably just doesn't think that that's part of the problem but you should definitely include everything because that's almost certainly the problem right um because right now you have motion oh no you're capturing the value so that should be fine motion equals i don't know why i would never do this i never captured it i would just say move and slide move inside motion up why did he make something called up okay i would just put that right here or make this a constant um okay vector two dot up you can always use vector two moving slide motion up where is this breaking so we should always have the gravity applied uh there's got to be somewhere where we're setting motion y elsewhere equals max jump height plus equals gravity gravity equals the quantity okay how to make a grid of texture buttons yeah great container there you go yeah i don't know um it's hard because i don't think he's giving me all the code but uh that should be working if you jump you increase your motion in the y to the max jump height imagine this these also should be constants by the way but these variables just helps negative 650 yeah so you'll jump up and then you should start coming back down if you fall off a platform you should keep falling so based on this code so i don't know um i don't want to stick it in because it seems like i love to do how can i create an eight facing directional movement okay yeah let's do that one so jc gamedev.ph um i have all doubts solved though okay so i have a question in 2d top down how to create an eight-facing directional movement um yeah so i mean we can just do it real quick in our player script right so right now if we run this our player does not face any direction what i could do here very simply is to just say right in our movement function um and i'll actually let me go ahead and get the time stamp so it is one hour and 11 minutes so uh eight facing movement at one oh okay so and then let me go ahead and post this in here so he knows at jc the jc oh i always do that jc yep answering is that right yeah that looks weird to me uh your movement um okay cool cool uh yeah so the easiest way to do this by far is to use the built-in goodo function called look at and look at essentially just makes uh whatever you you call it on rotate to face whatever direction you give it um so a lot of times people use this with mouse right so i'll show you how it's very commonly used and i think it makes it really obvious how it works once we do this so what we want to do is probably do something like well we'll do it right here i'll play i'll put it right here so i'll say look at and then we'll say get underscore global mouse position so get global mouse position right is going to get the position of your mouse in the game uh so if we call this right now on our player script uh you can see that my player now looks at my mouse okay just like that and um that's that's literally it uh but what this is doing is setting our rotation to um just equal whatever direction this is um now there's i've had to do it where the lookout function doesn't cut it so you might need to do other things but essentially the way you would do it here is we'd say equals look at input vector um wait no i don't think that i think i did it differently but i think so if you look at the input vector the problem is that i think it's going to be using look at might be looking at the global position i'm sorry yeah the global position yeah yeah okay so what we want this to do is look at the local position of the input vector um [Music] say plus global position that might work yep that works yep there you go i thought that would be way more difficult but yeah as you can see it now it whichever way you face it does that now what you also might want to do right is not have it so that when he goes this way he's upside down and all you would have to do there is then say if self dot so if rotation um is greater than so rotation should be or we could just use rotate now we'll use rotation if rotation is greater than oh we could say if rotation uh in range okay and then we'll say so we need 180 or 90 degrees i think though unit circle rotation is such a in guitar um it let's just say unit circle and then figure out how good those works because they don't use the traditional unit circle for rotation in godot i have no idea why but uh all right so pi over 2 is going to be typically this way but i don't think that's how it works i think it goes negative 180 and then positive 180 so if it's ah that's why i remember that being pretty irritating actually so if rotation in range uh pi over 2 to negative so pi divided by 2 to negative pi by 2. okay then print high and i just wanna see if this is doing what i expected to do it's not doing what i expected it to do so let's say getting a uh robocall okay so i'd like to do this oh that's odd what what if we make this 10 yeah so that's oh cause it only uses whole numbers yeah that's why okay fine we'll do it let's see range hmm this is not the right one we're going to use a base class for control knows yeah that's not what we want gdescript range okay that's what we want so i guess there's no huh weird there's no you can't do a range oh that's because you i'm so dumb obviously you can't do a range of decimal values because there's an infinite number of decimal values if you do range 0 to 1 there's an infinite number between those but maybe is there not a step you should be able to do step right oh jesus no no oh it's gg script okay you can do step okay cool so that might be it let's do print range 0 to 10 and then do 0.1 step argument is 0. okay so you can't do floats that's a bummer all right never mind that would make this easier apologies for that um let me see i need to do okay i have a doubt how to make ridgid move where it is facing rigid body 2d i want to learn steering function yo what's up harpuya um yeah i answered your question or two your questions are great um so yeah you can you can launch those if you please if you have any other questions toss them in here i'm going to go ahead and try and finish this one really quick and then i'll get to answering your question dj among us about how to move a rigid body um rigid body you really shouldn't be moving rigid bodies though but yeah i'm like am i thinking right rigid oopsies yeah oh no you can move right robotics yes i'm sorry about that um it's going to be exactly the same though you would do this you would just say the lookout function um or if you you actually have animation then you just have that animation code those are the two ways you can do that so we say if rotation in range this is going to change essentially when you say if rotation is greater than some amount so if rotation is greater than um uh pi over 2 i believe pi over 2 or rotation is less than pi or negative pi over 2. print hi cool all right that might be working okay i i but i really quickly do want to do this as a test else print okay so we're going this way so if we go this way it should say hi go this way i should say that okay cool so that's what we know so we go here what we're gonna do is we're gonna say um i don't know i think we should be able to do let's see sprite dot flip h equals true else sprite dot blue h oh i'm sorry this should be flip v there we go oh yeah that's why yeah because if you go horizontally obviously that's not going to change anything oh and that's because we're going straight up it's got it's a little confused about what our rotation is so i could set that a little bit better probably but as you can see there it looks pretty good and then you can kind of fine-tune that if you want because you see we go straight up it sometimes will flip right in between those values that was weird that it did actually oh because if you went like this and then went like that interesting that's really weird but uh it wouldn't be too hard to fix that we would just have to change these values a tiny bit that shouldn't be happening that's definitely a problem with godot um but anyway that's how you would do that so input vector classical position this is all good that's all good all right cool cool so we just finished that off um eight facing movement boom cool cool oh why thank you so much dj mangas i appreciate it man i'm glad i can help people that's that's all i'm trying to do okay movement movement and commit to me all right and now that's up on github as well nostalgic leaf what's going on maybe is greater than or equal to would do it uh okay cool yeah man if anyone's got any questions please you guys get priority i think that's actually all the questions in my discord yeah that's all the questions in my discord so um see anyone posted in general oh skill school why does it not give me the wave i use it all the time i don't get discord sometimes there you go i like the wave emoji okay okay coco there we go oh dev nugget and cutie okay um bro i want the heart emoji okay this is too much work anyway um yeah they put all the emojis that you can't use first because they want you to buy their crap which is like just that's a bother to me but uh anyway so now we're gonna move on to again that the discord link is in my description um up to your eyeballs and work well that sucks i'm about to be there myself my friend i mean just let's go ahead maybe i could show my schedule it actually does not look that awful this week because that's hence why i'm making this but like okay so also i guess it's not doing that i should not be also learning spanish while i'm in medical school but uh i am so go over here that doesn't even look that bad either but i do have to do um 12 hours i think worth of lectures this week so i have to find out how to spend 12 hours and stick that in here also this where is it that night anyway yeah this is an app called click up uh it's free but i'm thinking about buying the full version it already is screwing up it looks like though because there should be something oh no this is yeah okay this is right this will be on both days so that's i mean honestly it doesn't look that bad to me but uh everyone tells me that it's hard so yeah cutie okay let me put this back over here i'm my second display now oh dude i really wish i could show you guys somehow my new uh my new setup because it's pretty nice i like this place a lot i've got also it's so quiet it's amazing except it gets hot as hell in here so i bought a fan but then that kind of almost ruins the point because then you can do it but for recording videos it's nice um okay let's read this and you know how to use godot in med school i actually have a lot um because i want to make like programs that will make stuff easier also i'm thinking about making programs um like for patients that people can like for instance get information people can like communicate with their doctors there's a lot of different applications i have like ideas for using godot but i think honestly the best way will be for researchers because researchers are like hysterically one-minded like medical researchers they know so much about what they specialize in and then everything else it's like you literally would think you're talking to somebody with an iq of four like it's just it's unbelievable so like to make a really dumbed-down thing that would like do things for them i was thinking about using godot to make an inverse uh like interface to search through previous research and make it really easy for them um maybe use ai in some way i really have always wanted to learn how to do ai but i don't know if i'm going to do that while i'm in med school anyway yeah one thing i've wondered about is having light and shadows on multiple layers of 2d tile maps ooh interesting i actually have not used the lights with tile maps yet um but so multiple layers though i think it's as easy as if you go to tile map the the tile map thing we go let's just add this to the world here add a tile map uh and then show because like when you add these you can choose the light mask like what do you mean by that one thing i've wondered about is having light and shadows on multiple layers of 2d tile maps playing shadows on multiple layers of 2d timeline oh i see what you're saying you just need to make um yeah in order to do that you would just need to copy and paste like just make two tile maps and put one above the other um or you can use um you can put them on control nodes and then change the layers of them actually no i think you can change the layers you can change the z index so we'd put this one at one this one at zero and then the shadows from this one would then cast onto the other one just make sure you have your occluders set uh correctly yeah a natural work i remember almost getting into a stomach surgery simulator for learning that's crazy that's very cool stomach surgery um okay so i'm gonna hop into the reddit now again uh saying it again all the links are in the description for the github as well as my discord how to create the whole mechanic from donut country oh i read that as like like how to recreate the entire mechanic from this game and i'm like it's a it's a big ask but no hey i'm wondering on personal production look include a mechanic like the whole and donut country i'm quite new to i'm currently using tutorials to god i couldn't find any guys for this help okay you could try cg mesh what is donut country does anyone else know what this is because i had no idea um [Music] it's a cool game oh yeah this is like hold on io oh yeah dude this is a this is a very very done mechanic but um hmm trying to think about that i think it's actually not as easy as you would think i'm almost certain you need to use shaders to do this um well here let's open that back up again what's this i don't even know what a csg mesh is you could try load a csg mesh or simple csg box the foreign donut seems flat and then you use a csg cylinder in subtract mode of course use rigid bodies um i don't know what a csg masters oh it's a 3d thing that's why huh interesting yeah so in 2d i don't think there's a ton of great ways to really do that except for to potentially have a space um and then you would just color it as the background i know it's not easy to do something like that um i did something kind of like that in if we go to my h game so the way i immediately thought of is this it's kind of a cheat and it wouldn't work for everyone but uh let's go ahead and just run the game here oh i have no idea i've never used 3d or anything like that okay let me know if the volume's too loud so if you look at this drill right here this looks better than i thought you can see it looks like it's it's kind of going underneath this into the ground um and all it's actually so funny because the way i did that is i literally just this bar right here is a separate sprite and it has um it has like a a bit of the moon here so whatever is this surface just replicated right here so that way it looks like the drill is actually just behind that sprite um the graphics do look much better than i even remember on this maybe because i didn't have a 4k display before but uh yeah this is a cool game yeah definitely about to die but cool free to play of course that's another game i probably should have finished but i was just so over it by the end of that thing but um anyway okay so there's that yeah so i'm not going to answer this question particularly because it's 3d but the howard infrared edge gradient is a way to edit multiple spatial materials at once or to have inherents in spatial materials again that's 3d whoa that's cool that's very cool i haven't messed with random level generation at all but uh i would love to figure that out hey there guys i'm creating multimeter instance 3d what does poss mod do possible ed uh i've gotta understand what possible actually does i don't understand this question could you explain to me it's a variant of module operator that does what a lot of people need and sometimes expect from a normal module operator the normal module operator basically does the following it really equals a minus trunk has a counterintuitive behavior in negative numbers instead of wrapping back the values below yeah i'm not going to get in that uh it's a handy function uh i think i used it in like one of my time things it was really handy problem with rotation i'm developing a third it's 3d i should really learn 3d but i just don't want to i never i didn't get into this to learn 3d okay thinking about a way to show animations in rich text label okay helping improve shader blah blah blah not great at shaders a sort of command line that shows the user's background input text and when specific strings are written places a string with its specific animation shows the user's keyboard input uh text and what specific strings are written replace the string with its specific animation cool yeah your writes fire a fire animation replaces the text fire in the rich text label that's very cool that's very very cool uh as explained the docs for six those views it allows to insert an image using that uh loading images is very easy but things are more complicated if you want to insert animations after finding this that came with the following unsatisfying evolution you'll have to use a heritage label for text and a text direct with an animated texture for the image in the scene i have a rich text label displaying the user's keyboard input and a text direct node the text rig node has an animation texture animated texture with the fire animation hide the text direct i have a rich text label displaying under the user's keyboard input and a texture wreck node the texturic node has an animated texture with the fire animation the texturex node has an animated texture with the fire animation okay i hide the end the texture egg node so that is not visible in the scene tree uh when i save the scene in this dot tscn file i see the texture like the resource with the fire animation i see from the above that this sub resource has id5 therefore i use bbc code interesting to show the animation there is a little fire when it's tight but it looks very stupid to me on so many levels if i could not find a better solution a better solution could be obvious i'm not that experienced with godot oh i've just found a better solution i have i saved the text direct with the animation as a scene i added a scene as a child of the main scene and used the following strength to load it oh that's sick okay since there is only one sub-resource in that scene the animation i don't need to check which id is the correct one for that particular animation it's always going to be one i think that's pretty good because my solution was literally to have saved like for instance like so he was having image path of the image right was to have like if you have a fire animation and you've got three images so it's just one two three right um then what you would do is you would have like your your your text right uh and you'd have it you'd put it in physics process and every physics frame we'd have like some kind of stack responsible for knowing which um which uh what's called which frame each image was supposed to be on so every physics frame it would replace all of the text including the new images and it would just change the path to the images in each one of those frames horrible but i think it would work just fine but this is definitely a better way i actually think this is almost certainly the best way i'm honestly pretty surprised they don't have that added though like it makes sense that you should be able to do that um but you can put animated textures you can make animated textures and i'm surprised that if you just put the path to i think i i think he's actually making this more complicated so i forgot it was a tutorial i did let me figure it out actually i'm really interested now do you have experience with the many texture types half of them i have no idea when to use stream external large and mass textures so i don't know anything about mesh i've actually never heard the other ones um but i like i don't know i i've i've really only needed to use the like i usually drag and drop so i think this is a stream texture right so i've used uh animated textures i've used uh i haven't used large texture that's interesting no i have no idea definitely use mesh yeah i've really only used animated texture and then whatever this is that is the stream texture yeah stream texture and anime texture that's really all i've used oh and viewport texture um when you do a viewport texture it's literally just another viewport in the scene and then yeah it so it knows what's on the people i have used that one that's how i did let's do this so if you go to godot code and then we go to gokudo jam project files and let's open it up so it should open the 3d scene i think yeah okay so um you actually can't see it right now but there is a viewport here and then here we have a mesh instance and the mesh instance is using um oh i guess it's using a quad mesh and then this is this doing it one of them is using the viewport texture here so it's projecting the viewport whatever is on the viewport that's what's considered the viewport texture um skeleton huh weird that just looks like someone missed out load to me but that's weird i i forgot exactly how i did this but you can see the point of doing this um because if we go into the 2d world here uh and then just run i don't think this will work okay no but so this is basically like a flat 2d world and then what i have here um is oh i never turn this on okay yeah so this is a this is a mesh that's tilted at this angle as you can see so it makes it look like 3d but anyway that's why i that's how i achieve like this kind of cool um it's 2d here but when you play you can see that the whole thing looks because the whole thing is tilted so it looks like it's almost suited through so that plus these occlusion masks this is entirely in 2d and it really gives it a little bit of a 3d feel with those lights and stuff whoa oh yeah i forgot you can that's how anyway lots of stuff i still want to do this game but yeah that was a cool game i think that's the game i'm trying to turn into a mobile game hey corman yeah it's it's really uh simple to do honestly once you i mean it was a little bit complicated but once you figure it out you just leave it alone and then you just make the whole game in 2d essentially so it's really chill um okay but yeah that's crappy but yeah so that's that's really all i have experience with oh yes this is what i wanted to look up so if we go here and go into godot code i think oh no i think it's actually in this project because this is my testing grounds for other stuff as well so shader practice add-on for the mpc platforms nope um mecca yep okay yeah so it's very similar though so i have all of the different animation files for some docs and so we can go here uh and you can see that the docs are rising like this and so i made a tile set with these animating and so the way i did this and i forgot exactly how but i made this that tres file and this dot tres file is that's where they want there we go is an animated texture so i think i clicked i think you click all three of these and you right click it nope that's weird i totally forgot how i did this um but essentially you take these the separate images of some like pile sheet like that um our animation set and then what you would do this was this is the art that i was considering for mecca if anyone has been around long enough to like know mecca that game i was starting to work on that i still think it's a really cool game but it's just it's too big of a project especially now um anyway so you take all three of these and you cut you create oh i think you do this that's what you do i think you so you right click i think you can do like new new resource yep that's what you do and then you click animated texture um and then that creates this texture and then you come to the frames and you increase the frames you can change the fps and then you bring these and click and drag these into those frames just like that you can change the delay and all that stuff like that then what i think you can do um well here let's try it let's try it okay i'm enough talking time for action okay okay all right cool so let's go qa session let's go here um i'm gonna go ahead and add a new i don't need to add a new folder quite yet but i think we're done with this for right now at least okay user interface and then i guess i'll drop the stream oh i don't have the stream link i guess nope that's not it question there it is i can just do this copy okay trying out a live on my qa okay why is that happening okay dude okay whoa guys whoa whoa okay trying to solve this on my q a here dude i'm so confused what is happening right now did reddit like just update their and it up like i don't understand okay here we'll do it this way nope that way okay comment make sure that worked and it did okay all right sorry about that okay um so it is so we want to add a rich text label okay and then i'll go ahead and just make this like a little bigger here something like that and we'll go to rect we'll say 9 60 over 180 okay and then we'll just center it so we'll put the whole i'm gonna put the pivot offset in 1920 divided by four and uh okay and then we'll put the position here uh at 1920 and the 270. cool okay and then well we actually definitely should have just done this centered okay cool so there's our rich text label um i don't think i'm gonna add anything special to it because the point is not that so we'll add some text now oh we need to go to bb code okay hello this is okay and then we'll i actually i've never seen this before but that's how you add an image okay like that okay and well i don't want to enable it quite yet this is fire sandwich okay um and then obviously i would like to change because you can't see the text right now obviously even there it's like pretty terrible so i'm just i have oh interesting monofont uh new dynamic font here i should have a font there we go jetbrains mono a great font by any other name just as sweet okay and we'll set this to times three why is it not working oh that's why why is it clipping it ah okay okay pump i give up i don't know why that's happening oh okay cool it was just a bug okay times three and again it's so weird that that's happening though okay so image path there okay cool now what we need to do is then generate the file here so i'm going to go ahead and make a new let's go new folder and we'll say yeah rich text test test or text okay and then in here what i'd like to do is say new resource and we'll go animated texture and we'll say fire i was not expecting i for totally forgot that i don't have a fire texture so it's a fire animation that's right sheet i want like a simple one but it doesn't really matter i really should play some rock i dig i'd beg it let's do simple i want like a 3 animation i really should not be spending too much time on this but uh [Music] oh dude yeah that's awesome yo what's up sunset uh uh on it goes yeah dude they need one they need a better default font or at least some options with two i think it's weird to me that you can't um well that looks really nice you can't change the uh the size of the default font that's all i really care about i don't care how ugly it is i just hate that you have to add a font to change the size of it that's insane to me um do i have to make my own fire animation so i really don't want to i really don't want to except a gift might be the best thing fire animation gif simple we need it transparent though so we want to go to tools color transparent it's not really are these actually gifts like why aren't these working there we go that's what we need right there okay so i'm gonna click save image as fire save it to my desktop grab it stick it right in here what what why that not work should be able to do that cannot do oh okay so we need to say this is a set of pngs don't we [Music] saving is tiffs that's not what i want why would it do that changing these to png's is not super duper easy either um okay nope why would you think i have a i literally have an app called oh that's why because it's not called vs code i just call it vs code um it should theoretically work this is something i made oh this is ffmpeg yeah it should work okay yeah let's do it so um if i run this this is a program i made um enter the file type why is it not asking for where okay okay so we want to convert from dot tiff convert to dot png enter path the director of files i don't know is it just it's ninja cd that's not [Music] there okay oh of course but these all have spaces and the names which breaks breaks this program there's a space there oh we can do that okay okay so yeah i've already lost half my audience trying to do this but uh i'm pretty determined at this point would you like to delete the original files after let's not hey all right i'm a millionaire anyway yeah so that's how that typically works now i can delete them i just want to make sure that that worked but yeah so that's uh that's a little python program i made very proud of that and essentially just converts all of one file type to another file type in some directory you give it here in case of course we've got these so i'm going to go ahead and click new folder sick fire and ms should get rid of the space there oh yeah i bought so i guess i'm kind of dumb but i didn't know that people made fake these fake uh flash drives and uh i bought one thinking it was real i thought about a real terabyte flash drive it's not uh and it corrupted a bunch i actually had mostly been done making some videos for the uh uh my my godot course for non-coders and um yeah here are the videos the raw i just have to edit them i recorded them already it's in here and i guess we don't need that okay so what i'm going to do now we got fire texture right here i'm going to open that up so this is going to be four frames okay and then we'll open up these frames just like that uh fps is four currently and then we'll go into these uh and what i can do is then go five frame one five frame two fireframe three oh nope why would you do this five frame three and the way i'm doing is just double clicking on these okay all right so cool now we have a a fire texture that works uh oh that's cool we can do pawns or one shot okay so the idea here would be that we would then put the path to this file in our rich text bb code and it might work let's see okay so rather than path right we put the path to this oh it's not going to let me do that okay can i do copy path yep copy path paste right there okay then if we do enabled no so close resource not found at file okay qa sessions creation 07 uh rich text test fire texture dot tres oh because that's not oh dang it because that's not an image okay let's go bv code okay all right here we go so we've got code makes text use the code font typically monospace oh that's cool uh center url image font color table no okay so this whole idea doesn't work because it's about transpile i can try doing tres and then uh why can i not scroll okay so i guess tres isn't a thing that's a bummer it's a big old bum air hmm wow well i'm glad we spent that time doing that okay how did he say he did it hmm i saved the text reaction with the animation as a scene i don't need to check which id is the correct complete elimination interesting yeah so curly braces big oh is that what does that would be nice um okay so that's a bummer and that i can't just drag that in anywhere right drag hmm i don't know why it says a file not found it should give me an error that that's not an image file right because if i if i give it this one copy path and then let me delete this there right yep and then i do this wait what what he has not found it's right there you okay well that gives me hope then reason found not found this okay so it's right there right i don't understand why that would not work [Music] does this have to be in a text direct resource is that it interesting okay so what if we do adding images bb code button controller does real quick nope it's not helping me oh because we need loaded here can i add an icon to a label or rich text label add image would do the jobs remember that it requires a texture and not a picture ah okay well that's good to know let's go ahead and try that so first off let's save this and we'll save it up one and so this will be our bridge text why why okay uh let's just do that okay and then i want to add a texture act right there and then we'll see if i go into this can i put this as the texture cool okay so that much works now we need to do okay i do definitely wish it was centered i bet you could do that but abort stream such good oh much wow but yeah so this is crazy because like i'm glad you brought this up because i'm sure there's some more magic with these other type i don't know what a large texture does i would love to just kind of get in these i think i can imagine what a gradient texture does and stuff like that but uh a curved texture so i yeah i'd love to figure those out but anyway this one this one is actually you can imagine where this would be useful and it's particularly useful making those tile maps because you make animated tile maps like the water um doing doing it this way which is really cool and it's super duper easy obviously okay so we've got this texture wrecked and uh i want this to go a little faster but i'm not going to focus on that right now so if we save this i'm sorry i want to say this is a new scene so file save branch is scene and i'll save this in uh same place here so save this as a fire extract like that now if i go here and then go to bb okay code be a curly bracket and then now can i do this paste it what do you mean it's not found dude okay hold on hold the phone cause that's weird tiny terny testing grounds why is this thing it's not found like that doesn't make sense to me uh okay open up this one so it's still seeing is not found i don't understand why is it saying it's not found resource file not found they should say like that's not a resource right as an images opening and closing tags to the tag stack option growing in width and height resize that seems like super weird does it not like it's saying it right there it's there's the path it clearly exists right there and saying that file not resource file not found huh well i would maybe wait why is that one all the fun don't tell me wait a second why isn't only doing that so that's not found either dude what what if we literally just do qa sessions well here maybe the problem was actually um that this could have worked with this one nope wait this one oh these should be in there but uh any loser so here this could have worked yo this doesn't this makes no sense to me right now oh oh is it because why is it putting the curly brackets it should include those curly brackets does it not should it not do a little dance make a little love get down tonight get down tonight okay so that's dope as hell as dub as hell okay so yeah so obviously we need to do some stuff in terms of resizing that but uh yeah okay so let me just go back to this guys right here let's go edit oh crap i don't remember what time what time in the stream it was well i can do this okay so it was 208 hours oh one okay anyway i i guess when i started okay okay so i think that's better than what he was doing but not by a tremendous amount but uh i do think that is better um and yeah that works he's got an animated texture now in there but there's got to be a way i think you can yeah okay so let's go i don't know no no no it is image resize oh no let's actually get this or it needs to be oh yeah so you can change the width height so image okay and then we can change the width and height here so the width can be like 10 by 10. what if we only give one i do that nice there you go there you go ladies and gentlemen i mean obviously there's some more work to be done with uh but i think that would have to do with the actual texture very cool do you respond nope that's my dentist um i thought maybe he responded and hit me up on my uh thing there but yeah there we go okay so that's what you were saying nostalgic that's but look it says right there you should be putting like if you do image there's the path should be in between the curly brackets at resource path using with keeps ratio so that's i so you're right but you shouldn't have been right i think that's a bug in godot and unless you maybe you know something i don't i don't use bb code that much but that doesn't make sense to me yeah it's not like it's confusing or anything it's not like a you know but anyway that's cool that's pretty cool um except obviously you'd need to then replace that text which i don't know exactly how he was doing but i do think that's pretty cool um first of all if yours writes fire i find it replaces the text file and respects the label i explained the docs uh sorry and certain image using that it's very easily but more complicated if you want to insert animations after finding this hint i can with the font so if i do this can i just write in this first text label right oh no i see what's happening so he's got for instance like wait can you not edit this uh oh is it wouldn't it be is it line edit text edit there we go so we put like a text edit theoretically and we would uh actually i'll put this in the right text rich text label and i'll say go full rect okay and then what i'll do is i'll put the modulate this is cool now now i'm really interested in making this unless if anyone else has a question um yeah so he's right but he's wrong i know but yeah so i'm actually gonna go ahead and make this so that if i type fire replaces it with fire i've got an idea for how to do this um but yeah because unless anyone else has a question if you do please go ahead and toss it and i'll i'll dump this but i think this is a cool idea so if we go here and then i just make it i just modulate it so it's not visible uh you should still be able to use it oh except that could be a problem huh the problem with this is that uh you have no cursor but this would still work uh so i'm just gonna do it that way because yeah so the idea is that we will give this a script okay and then what i'll do is it'll connect the signal text edit text changed and i'll connect that right there on text edit text change and then i'll say on ready var text edit equals text edit okay and then here we'll say text equals text oopsies text edit dot text okay so this will get us the text here and then all we need to do is search well first off we should say down here we'll say um cell we'll do so but vb code text equals text i think there was like so if we go to bridge text label it is advised to use the plus equals operator with bb code text plus equal sum string as it replaces the whole text and can cause slowdowns use append vb code for adding text is it unadvised to use that okay that's fine for adding text unless you absolutely need to close a tag that was opened in an earlier method call okay fine so anytime we change this essentially what we're going to do hmm yeah i think we can fix the other part too but we're going to say the bb code text to equal our text right um so just to get a proof of concept here so if i click this and i write so it looks like so i can say hello cool so that looks that's that's working wonderfully so far um so essentially what's happening is we're writing in in this text edit but it looks like we're writing in this rich text label yeah um and so now what we can do is set like a filter we can see if um what we're doing is writing if we write the word fire we can then replace that um part in the text with that so i think we can go text dot find can you like replace yeah you'd you do this better once would say fire and then we would say with we go here the bb code right there with that okay and then now if i run this i should be able to say hi this food is fire no it didn't work why didn't it work does replace not work in uh okay f uh isn't string okay replace replaces occurrence of a k sub string with the given one oh does it return a string do i have to do let's do print yes because is it returning the whole thing here oh okay yeah so then all we need to do is just say that text equals that that's weird you'd think this would do it in place but i guess not okay yay there we go okay this foot is fire okay that's pretty cool man that's pretty cool so shout out to uh this dude uh matt martha for putting this one out there [Music] very cool so i'm super down for that um and then in case i asked the question a while back for example for a for loop but no hurry oh what's your is it in the um yeah let's get to that dude let's do that right now let's actually let's do that so that way it looks like that's where you'd start writing um oh we could also do that uh attack's equal to object plus uh space okay okay all right that's cool so anyway that makes it almost doesn't quite work right but uh that allows us to kind of have like a little uh what you wanna call it here i don't know anyway cool all right so anyway that's that i think that's really cool and again i'm gonna go ahead and push that to github um that's cool that shows the gif in github um and this is murder okay come to me all right so uh uh harpoon i hope i'm saying that correctly let's say okay so we're going to do for loop and then this is at 2 hours 19 minutes 2 okay cool so we're starting the for loop let me go see so uh harpuya did you ask that oh you so right dog you are so right i could just make that like that would be a really easy thing to do the other thing i was just thinking about was putting a physics process but that is much better because if you had to replace the bb code text every physics process well one that would ruin this actually but uh yeah any loser um cool there's lots of ways to do that but the way you just said i think is the easiest um or at least almost certainly the most performant probably one of the easiest ones okay so um yeah so you said it was in here so way back oh okay no no this is your first question i don't know where's the for loop can you link me to that question the question is in the chat oh okay all right can you do something in a for loop and maybe get an example of what it can be used for aha nice question man um i'll definitely answer that um so let me actually so i'm going to be releasing an episode of the non-coders guide for gd script that is going to go over for loops um so this will be a nice little i haven't even like recorded it yet but i record lists and dictionaries so if you understand how those work that's one of the like most probably important ways that you can use a for loop um let's see i was about to use it somewhere so i'm trying to think about giving you a real example before i just like kind of go into hypotheticals but um like well one way you could use it for instance let's go to what do i have here can i put this in there is that going to break anything okay that's cool that should fix itself soon okay what do i have in here was it an enemy it was in player oh you know what i have an example here but uh we'll get into that one after it's a little more complicated but somewhere here where i was thinking about using a for loop anyway so a for loop what it does right and the reason it's called a loop um is because it rip it goes through something entirely so we say for let's do this so we'll say var and i'll make a list so i have any kind of list and let's say that you've got um well actually what's called let's say var uh list equals players i'm sorry for players um underscore in underscore score and underscore game uh and let's say this equals like i don't know so we have joe well we gotta make these strings right uh joe schmoe is one player and we have jonah hill okay john hill's playing with us and then we have um smack 69 okay so these are the three players in our multiplayer lobby let's say all right um so then what we might want to do uh is and for any reason we might want to go through and and check on every single thing in this list so with a for loop we can say for x in players uh in game and then we can say print first i'll do this first i'll say print high right and then what we can do is so if i run this what will happen is you'll see it prints high three times because there's three uh people in this list and it's actually going for each list and so what you're doing right here is the reason you're saying x is what x is is you're basically declaring a variable called x that is only going to exist in here in this case x so we can actually print x and what x is what x is is it's actually going into each one of these so it's going through each player in this list each item in this list and what it's doing uh is doing one thing for that player so for instance we can run this and you can see that it prints each layer on the list in its own line so we essentially did this it's the same thing as saying print joe schmo or print um we'd say print players in game players in game zero uh and then we did this two more times right except this said one and then this said two so that's essentially what this for loop is doing it's the exact same thing but this is really handy because you can do like a lot of things with this uh that you couldn't otherwise do so for instance like if i had um like let's say these were scenes right and these were scenes of enemies right let's say these were so these don't have to be strings these can literally be anything in a list right you can put if i got a world here and we've got um these enemies here let's say i have like three different types of enemies what i could do is spawn them in that for loop so i can do here for instance is i can do print i'm sorry function unscore ready okay uh what i want to do so here's another handy thing you can do versus you can say 4 x in range uh five right uh and what this will do and we can actually go print uh here if we print x it's gonna do each number so range gives us a list which is one two three four five so if we do this um i'm sorry zero zero through four right so it does that but then what you can do is like if you wanna do something five times or ten times uh you can do it this way by doing that you can say like okay for this i want you to um let's just run this function actually because what this will do is spawn an enemy so this will spawn five players right when the game starts oopsies there you go now we've got five players right so that is just an example of uh some of the stuff you can do why is it not giving me any colors i can use this is a game is a cool idea but it does not work very well in reality anyway that'd be cool when the enemies hit each other they then took on the colors of the other enemy but anyway that's not the point the point of this was to show what you would do with the for loops right um and yeah so there's there's one thing you can do if you use ranges you can do something a certain number of times if you want to do something for every member of a list you can do that um and then what i want to do now is actually show you a real example of how i used it and i think it might have been even the last one signals from code state machine timer physical oscillation no no no and i should play examples of all the leader where did i do this ah okay right in there okay so if we go to here i've got this kinematic body and you can see that when i run around i have a trail and then if you've seen me playing my uh my game solenoid it has the same trail similar trail like this and so this is utilizing a for loop so if we go into the scene here and then i go into this trail line 2d script what's happening is this oh actually in this one i don't have to use a for loop i forgot most people do use a for loop um when you do that because you have a list of points and then you loop over the list of points and you move those points to that position but i'm actually cheating here i forgot this was like my way my cheating way of doing it but what other people would do is you would get points and then go four point in points uh point dot position uh equals global position or something so you can loop over every single point in the list and change every single point in the list in a single you know bit of code [Music] yeah you can totally use a random range too that's also a really good thing that nostalgically just said you don't want to modify the list or dictionary whatever you're using while you're in the for loop uh and this is because well i mean it's kind of hard to explain you kind of just need to like do it and then be like oh i screwed up there actually i mean we can do it right now but it like so like for instance if you have five things and for instance if i'm in a list and i remove one of those things from the list while i'm iterating it's called when you're you're going using a for loop it's called iterating right you're iterating over each item in the list and i remove one of those it won't even get to the fourth item on the list because it like it like subtracts two from the amount of items to iterate over it's really weird but yeah so that's definitely don't do that but okay i actually have i've got one that i definitely use a for loop for and this is my hex code jam which i ended up not even publishing because i hated this game so much but the way i spawn enemies is actually pretty cool so if we go to the main in this game level yep level okay now imagine we're spawning enemies right here what do i just want enemies or is it hud no i'm enemies okay where are we there's spawn enemies okay so okay so this might be a little so you can see i'm using two for loops here for enemy and enemy stack so before using x again you can call this whatever you want but just know that now we've basically declared this variable um enemy and then this represents one item in a stack for each time so for each enemy and stack enemy equals the first enemy enemy equals enemy zero enemy one enemy two and so on through the list and then so you want to do if you're repeating a same a similar action with multiple different items of the list you can just do that in a for loop and it does it in in a single line of code rather than having to write something multiple times so for instance here what i'm doing is uh so if we have this thing called enemy stack right so for me i have each level each level uh i create how many enemies i want to spawn so let's say i want to spawn 25 different enemies and they all have different types in this game there's like three different types you have like your big heavy guys with tons of um health on them and then you have smaller enemies with less health they move faster stuff like that um and so randomly at the start of each level based upon based upon the the level that you're on um we generate like a difficulty number and based upon that difficulty number um essentially it makes a list of the number of enemies like for instance if you're on a high level you'll have a lot of like more enemies and you'll have a higher number of tougher enemies like the big enemies where on a lower level you'll have less enemies and less um of the less of the hard enemies and more of the easy enemies right and so it does that like kind of uh dynamically so you can theoretically go up to level a million on this game and sort of does it that creates a list called enemy stack and this just has a list of all the enemies that i want to spawn and so what we do is we say essentially just you can ignore this this is like if yeah you can ignore that so here's the else here's what we're doing so for each enemy in that list of enemies to spawn we create an instance um so this is this is basically just getting the scene information right we create an instance of that enemy that's in there uh then we put its goal position at a random place basically we spawn an enemy for each enemy in that list right we're doing something very similar and we did something very similar um in that example with the colors right um yeah sorry sorry if this was like kind of if i'm not doing the script that's why i need to like kind of when i do the tutorials what i typically do is i like i record the video like three times and then i like sit on it and then i'm like i could have done this better and then i record the final version so yeah it's it's it's handy um also for loops are really handy for i'm sorry like when you're using them with dictionaries and stuff you can cycle through an entire dictionary there's a lot of i just can't believe there's not more times i use it i think they're really really handy um maybe let me open up good old code uh go gamepad said no plugin i think i'm using it a lot here let's just open up this project [Music] so if we go to the script here for our for loop nope is there really no for loop in here there we go okay so yeah so for instance right here i've got a dictionary that contains in this dictionary right i've got each part of the controller we've got the left side of the controller we've got the right side of the controller and for instance if i have three or four buttons on the left side i would have here i would have the access to a list of buttons so we'd have the a button b button and c button let's say our a a b y buttons right and you go this for loop and we basically iterate over each button in that loop um and then we get information about each button in that here what we're doing is uh oh here's another really handy thing this is actually code that you can use directly in your game is like if i want to clear something i'll say for child in like some get children right get children returns a list of references to all the nodes uh of some children of some node i mean and so for child in layout dot get children child dot free what this does is it removes every single uh child of that note so it clears all of its children without deleting the note itself so that's another really handy way you can use for loops um yeah and this one what it does is it goes through four button and leotec that get buttons right and each one returns a dictionary uh then we check like i can check the button type if the button type is an action button then we spawn an action button if the button type is you know something else a different type of button then we spawn that type of button so there's like you know tons of different ways you can do that and uh yeah really really handy to understand those and i think it really takes your programming up considerably all right uh if anyone else has any live questions please submit them i'm going to take another few looks um around here but i'm starting to get a little hungry my dogs need to go out and uh just tired in general so let's go ahead and take a look okay but that was very cool i'm really glad i did this one because that was really really cool i'm gonna vote this up um i think it's a cool question okay so sort by help why it don't working oh i don't i don't even want to mess with the platforms okay our timer targeting using messages error with timer targeting using mass solution i have a method that fires a ray when that ray intersects the correct collider it'll do something interesting rays are expensive i don't think they are uh and so i only want to fire one right every few seconds so i'm using a tire to fire that array of signals if timer is on is true this works as intended when i press the debug select button it selects the correct position i want it to select it therefore now i don't want to do all that make a cylinder grid how do we create the whole mechanic from donut country okay we'll go back to this actually let's let's drop reddit let's go to this everything moves and modify the window okay all these have answers blur effect predation what does this error mean okay uh error when game is exported air condition if true can and instant script get the current scene name see if someone already posted this yep that's the answer let's write flip horizontally i am potato with programming um i could add the code to current demo project yeah i don't want to i don't want to help people just copy and paste other people's code until you need to learn how to code if you want to make games it's it's you know it's a waste of your time and mine to just copy and paste other people's code um not like not if you code and then you copy and paste some bit into your code that's one thing but if you like don't know how to code at all and your entire game is just taking other people's work and sticking it together until it looks something like a game i i don't think so um can the main viewport be disabled in gd script that's an interesting question get the world coordinates of get used wreck for isometric tile map this is an age-old question um basically how do you use how do you get yeah it's like impossible but how do you get the the the location of a tile on a time-lapse specifically um but yeah how can i make a mobile game 3d spawn players on coordinates how to use a star without tile map add a position bone spray put horizontally get the world coordinates get the main viewports in jail why is this area signal not detecting my mouse events um closing shape and area to boxes view i create an area would generate faces and create a signal attack amounts area i mean yeah let's not show the godot me how to make asset flips yeah man yep why mesh dot create time machine i'll say not purchasing oh wait what there's in-app purchasing now uh with a new ios plug-in for in-app purchasing previously in good old 3.3 2.3 everything worked perfectly now the plug-in if i call purchase it returns an error that is sick i did not know that dude purchased wait this is in this kiddo offers a first party godot google play is this new oh android plugin only the new plugin uses the google play button so that's cool that is good to know i should probably figure that out but i just don't really see a point if not for ios but anyway all right well you know what i'm not finding anything i feel like i need to do one more let's let's go to the questions let's just scroll a little longer let's go a little longer okay how do i get the shape index how do you get the shape index in the area 2d from the shape rit i know that there isn't a way to get shape index indices from an area 2d even using the physics server is there any way to figure out which index a shape is assigned to i figured out that using area get shape i can loop through the indices ah i think that's 3d who writes this can you load an external jpeg or png file oh yeah that's super easy okay line edit question this is not a question i think a hotline may only get in through the retro threes they're gonna want to add a similar am losses they hear a noise they see the player they run towards him uh nine or shoot if ranged or if they lose track of players they go yeah this is a hello good day i am trying to insert characters in spanish for returning the hip yeah i'm trying to insert characters in spanish for returning to return them in a hip of text is the hip oh it's the chain yeah that's it okay uh of text but i can't find the form of oh i don't know that i'm going to insert characters in spanish to return them to the chain it can be more specific like includes in the clone of the problem i can't find the form in g script interesting anyway i'm making a google maps kind of app in godot do you know if text direct except float in requisition or that just hint seems like i can't quite match the tiles in hmm interesting have you tried just using no i guess you couldn't use a tile map i've actually there was something i was considering making something like that so let's see um okay so you know if tax direct accepts floats and requisition i mean we could figure that out pretty quick right but uh i think it does correct position i'm pretty sure it does i'm pretty sure it accepts floats um yeah because i do know that um like for instance if you have it in like a grid container or something like that i think he's talking about so yeah i know what you're about to allude to which is like there's something in project settings that you can turn on that's supposed to fix like small one pixel gaps that happen but i think what he's probably talking about is like if you put a any kind of container node like for instance let's just add a control here and then we add a uh oh we can't make full rex though so just delete that so if you add a hbox container here uh and then we go like this and then we add to this a color rect and then let's make this red correct i'm gonna go min size and the x is 200 okay and then if we add several of these it even if we have the separation at zero i don't think you can put this at negative one oh you can well that works what if you do negative point five is that gonna work no that keeps a negative one so that works pretty well actually um that's good to know interesting well now it works perfectly if i went back down and up to zero in the zoomed out sometimes there are one pixel gap yes when zoomed in the texture rex size becomes huge but the position needs to be precise to properly match the tiles oh yeah i don't know if that's what you're doing i'm sorry um this is for the separation i don't know if you're using like some kind of grid container or something like that the other thing that he might be talking about which uh i forgot exactly where it is but if you go to your project project settings oh god there's like some setting that's made for that that's made because sometimes if you zoom out too much it starts revealing like one pixel gaps uh in the tiles uh dude also definitely link me to that in your or i mean maybe if you want to do it privately because you don't trust people i would really be interested to see that project i think that's so cool but oh i think okay so it's in rendering maybe might be in rendering as environment no batching options parameters lights debug quality shadows atlas shadows reflections shading maybe it was forced vertex shading filters use nearest mipmap filter maybe i i'm thinking it's gonna come to me when i see it but i haven't it totally could not it might no use nvidia rect flicker workaround there we go that's it use gpu pixel snap that's what it is oh awesome oh yeah all right so i think this you should try this first so go to well i don't know maybe this does it too but this is what people suggest use the gpu pixel snap uh and that is specifically for when it's not a problem with the cpu so it's not a problem actually spacing it but when you zoom out if there is like some some gaps that you see this will fix that so try that too you might actually just want that want to have that on just for funsies and yeah you also probably want to enable low processor usage mode if you haven't already just uh based on like what kind of app you're talking about okay but that's about it you guys um i'm going to do my best to well here let's do this so qa wait why is this oh okay cool all right so i'm going to do my best to go ahead and get this labeled here so if anybody is watching this post hence or if you want to come back and and look at something that you'll be able to just skip to that right away because otherwise these aren't really useful after publishing but that being said thank you guys so much for watching thank you guys for participating making this enjoyable for me and hopefully this was helpful for you so with that you know code on and have a great day [Music] [Music] you
Info
Channel: ACB_Gamez
Views: 178
Rating: undefined out of 5
Keywords:
Id: n_TCylf82IU
Channel Id: undefined
Length: 169min 32sec (10172 seconds)
Published: Wed Aug 04 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.