[User] Please transcribe this text

[Assistant] We know the last, well, you, we talking about Alante Taylor, obviously.


[User] Please transcribe this text

[Assistant] I'm looking past Allante Taylor, right? We talk about safeties, even though you can say, well Q, he does play the safety position.


[User] Please transcribe this text

[Assistant] But you go beyond Alante Taylor to the Peyton Turner draft. Boy, that was a crap.


[User] Please transcribe this text

[Assistant] Draft right there, wasn't it? Actually, Pete Werner's keeping the Peyton Turner draft. Well, Paul's in the Deebo. I redraw that. We still got a lot of players on here. Turner, Werner, a Deebo, Young and Baker are still on the team. Uh, anyway, you keep going past the 21 draft, the 20 draft. You go to the 2019 draft and then you see the last time the saints picked up a safety was Chauncey Gardner Johnson back in 2019, right?


[User] Please transcribe this text

[Assistant] Yes, Saquon Hampton fam. So it was, it's cool to be able to get these guys. And like I say, even though Chauncey Garner Johnson was listed, as you can see, he was listed as a safety.


[User] Please transcribe this text

[Assistant] You know, they had them playing in the corner, but they had Saquon Hampton. So in that year we had Eric McCoy.


[User] Please transcribe this text

[Assistant] The fourth and then in the fourth round, we got Chauncey going to Johnson and Saquon Hampton, the safety out of Rutgers.


[User] Please transcribe this text

[Assistant] And then Alizey Mack, who I think he just caught on with somebody, the tight end, remember Alizey Mack from Notre Dame? And then go your boy Kaden Ellis, bringing up the rear in the 2019 draft. But prior to that, we go back to this draft, fam.


[User] Please transcribe this text

[Assistant] This is what I was thinking about. The 2018 draft with Marcus Davenport, Trey Quan Smith still hanging in there.


[User] Please transcribe this text

[Assistant] Tre'Quan the only one from the 2018 draft hanging in there. Third round pick.


[User] Please transcribe this text

[Assistant] You see Nate Trail Jamerson and Kareem Moore. Put one in the chat if you guys remember that. Put one in the chat. You guys.


[User] Please transcribe this text

[Assistant] Remember that, and then the 2017 draft is Marcus Williams. As you can see, he was the second round draft pick right here. So.


[User] Please transcribe this text

[Assistant] Yes fam, y'all remember them? Y'all remember Natriel Jamerson and Kareem Moore? Y'all remember those guys? The Saints picked them up? That was pretty funny man, just a little trivia on that drop and if Saquon Hampton, Kareem Moore, Natriel Jamerson,


[User] Please transcribe this text

[Assistant] Matter of fact, Sean Payton brought Nathrell Jamerson back a couple of years ago.


[User] Please transcribe this text

[Assistant] They give him another shot and put him in the street. I remember him going over to, to Carolina playing with them. He just never developed into much. So they must've, they messed up on that one. That was a pretty ugly draft. That 2018 draft, wasn't it fam? And you know, both Scott, I think both Scott's still in the league.


[User] Please transcribe this text

[Assistant] But yea, fam, that was, that was the last time, man. I just wanted to sprinkle a little game on him. Nitro Jamerson. How about that stuff? How about that?


[User] Please transcribe this text

[Assistant] All right, so fam, listen, James, what's up, brother James? He says, uh, Q, they need to sign a dependable solid veteran linebacker LOL, but Jesse James, a good pickup though. But our linebacker room is thin. They're going to wait till, uh, they back out against the, they back up against the wall and we get great.


[User] Please transcribe this text

[Assistant] That he ain't signed the Kuala, Kuala Alexander is still available fam. He's still going to be out there. All right. He's still out there.


[User] Please transcribe this text

[Assistant] So, uh, yeah, James, I mean, we'll see what they do, man, but yeah, they got an extra tight end for the Roman and truth of the matter is they might still believe like one of these guys might be a serious con. They really do believe in Zach born, bro. Why else would you not?


[User] Please transcribe this text

[Assistant] You know, do it and he's a guy that Sanks put a third round draft pick on. So we'll see a lot. We'll see what happens with Zach Bowen.


[User] Please transcribe this text

[Assistant] They're thanking Kate Nellis for Zach Bourne perhaps. Zach Bourne was hanging out with the, with the, the Watts, TJ and JJ. Remember that?


[User] Please transcribe this text

[Assistant] So I don't know exactly what the philosophy on Zagbomb, we just got to keep an eye out on it.


[User] Please transcribe this text

[Assistant] But remember they did re-sign Andrew Dowell who was a guy that worked several years ago. He was a good special teams guy for him. Got some lob action, had some positive plays.


[User] Please transcribe this text

[Assistant] You know, and then in the end, they got these young guys like Nick Anderson and, uh, and, uh, Anthony Orji that they're happy about, but a veteran linebacker, there's still a lot of time left, bro. And I'm really pushing. Hopefully the Saints will add another interior defensive player.


[User] Please transcribe this text

[Assistant] Uh, nose tackle perhaps or a very girthy interior veteran defensive tackle or nose tackle to the mix before the mandatory camp start.


[User] Please transcribe this text

[Assistant] Perhaps they add another solid veteran to the mix of linebackers that we currently have. There's still a lot of time, uh, left to play as we get going. When the, the mandatory camps show up, then you might see something different. So still a lot going on, man. Still a lot going on.


[User] Please transcribe this text

[Assistant] Oh yeaah. Pekon says, unfortunately, yes I do. Yeaah, I know. It wasn't much. Bro, what's up General Gouda? Shout out to you, man. Appreciate you, fam.


[User] Please transcribe this text

[Assistant] What's up, Karrie. Shout out to you fam. Appreciate you. I'll see you man. Bobby Space Ghost Travis. I'll see you fam. Night war. Larry, what's poppin' baby?


[User] Please transcribe this text

[Assistant] Uh, Princess Louis, shout out to you as well. Good to see y'all in the building, man. Much love to everybody, man. Thank y'all. What's up, Brother Mario? Shout out to you, fam. Appreciate you as well. So I'ma get out on that, man. I'ma pop up and holla at y'all on the Thursday stream tomorrow, fam. Gonna do it again and have some fun.


[User] Please transcribe this text

[Assistant] With it, but once again, the saints make it pop. They had Jesse James and Jake Boggess, the fullback to the team, man.


[User] Please transcribe this text

[Assistant] Uh, to add some competition in them damn rooms. So I'm gonna get out on that. I appreciate y'all, man. Much love to the fam. Please feel free to hit the like button, hit the subscribe button.


[User] Please transcribe this text

[Assistant] And check out the link tree, join the Patreon man and help out the stream man.


[User] Please transcribe this text

[Assistant] And websites that constantly surveil you and harvest your data for their own agendas. ExpressVPN gives you unrestricted access to all parts of the internet so you can watch shows in other countries and even get certain discounts.


[User] Please transcribe this text

[Assistant] So, to get ExpressVPN, just click the link below. When you use the Pelican Post scan report, you get three, that's right, three months free of ExpressVPN.


[User] Please transcribe this text

[Assistant] So, what we're gonna do today is gonna continue, we're gonna continue our SFML series. Uh, we're gonna continue with our RPG game.


[User] Please transcribe this text

[Assistant] And I'm gonna go to the learn section and the tutorial section. And uh, we'll start with.


[User] Please transcribe this text

[Assistant] Alright, so, draw 2D stuff. Uhm, what I'm gonna do is put this code side by side with my project.


[User] Please transcribe this text

[Assistant] And I'm going to start typing up code and kind of explaining what's going on.


[User] Please transcribe this text

[Assistant] Now, like I mentioned before, SFML is a simple fast media library, allows us to render things on screen and essentially,


[User] Please transcribe this text

[Assistant] It's a framework that helps us make the game, right? And so to get started, the first thing we need to do is create a window, right? So what I'm gonna do is do hash includes, uh, SFML.


[User] Please transcribe this text

[Assistant] And so, uh, just to remind you again, this is just the preprocessor, and what this line does, it just copies all the content from this graphics.hpp file into our, uh, main.cpp file, right?


[User] Please transcribe this text

[Assistant] Alright, so in our main function, we're gonna start rendering a window. Now, uh, sf, colon, colon, this is your sf, uh, namespace, and we talked about namespaces before on what they do, right?


[User] Please transcribe this text

[Assistant] So that's your SF, uh, namespace. And inside it, there is a render window.


[User] Please transcribe this text

[Assistant] RenderWindow is a class which allows you, which allows us to just create a window to draw things on. So what I'm going to do, uh, I'm going to create an object of type window inside. Right? Uhm.


[User] Please transcribe this text

[Assistant] So sfWindow is the data type, it's the custom class data type, and the window is the actual object, or, uh, the variable. Alright, so next, uh, window, while it is an object,


[User] Please transcribe this text

[Assistant] Whenever we do open the brackets like that, we're calling the constructor, uhm, of render window. And I haven't talked about constructors at all, uhm,


[User] Please transcribe this text

[Assistant] All I can tell you for now, just to keep it brief, construct, a constructor essentially is a function. So this render window class has a function.


[User] Please transcribe this text

[Assistant] That is called when you create the objects for the first time.


[User] Please transcribe this text

[Assistant] So when I create the window object, like I'm doing right here, it calls a constructor function or it calls a function that initializes the window that sets some variables up to default values.


[User] Please transcribe this text

[Assistant] So uhm, I'm creating my window. I'll explain constructors in a lot more detail later on. But essentially all you need to know is the constructor is just a function that's created or it's a function that gets called when you create the window, uh, object. Right. So.


[User] Please transcribe this text

[Assistant] Inside this window, it's gonna take two arguments.


[User] Please transcribe this text

[Assistant] And the video, but basically again, it's a class and you can see there, uh, it takes


[User] Please transcribe this text

[Assistant] If you look here, it takes the width and the height of the window. So I'm going to create 800 by 600 window.


[User] Please transcribe this text

[Assistant] It has brackets, so it calls the constructor of the render window class.


[User] Please transcribe this text

[Assistant] This constructor is basically just a function that takes two arguments. The first argument is video mode, the second argument is the window title. This constructor will


[User] Please transcribe this text

[Assistant] It's a function that's gonna run, uhm, when you create this GameObject, or sorry, not GameObject, when you create this object, and it's gonna initialize the window, essentially.


[User] Please transcribe this text

[Assistant] Now SF, uh, video mode is a class, again, that takes two, uh, arguments. The first argument is the width and the height of the window. Uh, first and second arguments, width and height. And then the second argument for the window is the title.


[User] Please transcribe this text

[Assistant] Alright, so now that we have all that set up, if I press play, I should be able to see a window that's 800 by 600 with the title RPG game.


[User] Please transcribe this text

[Assistant] Uhm, so I don't know if you've picked that up, uhm, because when that happened, the window started and closed real quickly.


[User] Please transcribe this text

[Assistant] Uh, but I did see a window, right? But it started and closed. And the reason for that is we started our program, we created the window and then we were done creating the window. So the program was like, okay, cool. Nice job. And then it closed, right? So we want to keep that window running. To do that, we're going to create something called a loop. And I haven't talked about loops before.


[User] Please transcribe this text

[Assistant] In all applications, there is a loop that keeps the application running, right? Because if you execute some code and you finish, the application is going to exit and it's going to be done.


[User] Please transcribe this text

[Assistant] To demonstrate that a little bit, uh, better, I go here.


[User] Please transcribe this text

[Assistant] This is our application over here. And this is our game.


[User] Please transcribe this text

[Assistant] Uhm, if we, if we just tell it to draw the window, then it's going to draw the window and then it's going to exit and we're done here, right? What we want to do is we want to draw the window. Or we want to create the window.


[User] Please transcribe this text

[Assistant] And then there's going to be a loop here. And what we do is we call this a Y loop. Y loop. This Y loop is our game loop. So what is our game loop? What does it contain?


[User] Please transcribe this text

[Assistant] Well, our game loop contains two very important things. Update.


[User] Please transcribe this text

[Assistant] Those two functions are very, very important. So basically what happens, we create the window and then we put our application in a loop. This loop will update all


[User] Please transcribe this text

[Assistant] Uh, everything inside the game. So for example, if you have a character, it's gonna update that character. If you have an enemy, it's gonna update the enemy. Updating just basically means...


[User] Please transcribe this text

[Assistant] In the update function, what we basically do is uhm, it's gonna check if you press a key on your keyboard.


[User] Please transcribe this text

[Assistant] For example a W key. If I press the W key, I'll make my character move forward.


[User] Please transcribe this text

[Assistant] So that's handled in update. So any movement code, any animation code, uhm, anything that requires to be updated every single frame happens in update.


[User] Please transcribe this text

[Assistant] And we haven't talked about frames a lot, and we'll, we'll cover that in a second. That's essentially what the update does.


[User] Please transcribe this text

[Assistant] Draw, on the other hand, draws everything in the game. So your enemies, your players, your building, your environment, the trees, everything in the game happens in the draw function. And this entire thing is called a loop.


[User] Please transcribe this text

[Assistant] It's called the game loop, because it happens over and over and over.


[User] Please transcribe this text

[Assistant] Now, let me talk about frames. If you're not familiar with frames, and it's possible, for whatever reason, you don't know what frames are,


[User] Please transcribe this text

[Assistant] If you ever played a game, you might have seen a frame counter, like 30 FPS.


[User] Please transcribe this text

[Assistant] Or 60 FPS, or whatever your frame counter is at the time, right? So what does FPS stand for? Well, FPS stands for frames per second.


[User] Please transcribe this text

[Assistant] That means how many frames are we drawing on the screen for one second. Now to demonstrate this a little bit better. If I go here. When I open YouTube.


[User] Please transcribe this text

[Assistant] All our media consumption, like film and games, everything is made of images, still images, right? These still images, uh, are drawn


[User] Please transcribe this text

[Assistant] Many, many times in one frame to give you the illusion of motion. So for example, you can see here that what he does is essentially.


[User] Please transcribe this text

[Assistant] He draws every single, uh, frame by frame or every single image, uh, and he


[User] Please transcribe this text

[Assistant] He moves the images or he flips the images with his finger really quickly and that will give you the illusion, the illusion of motion. So you can see you have motion, which is super, super cool.


[User] Please transcribe this text

[Assistant] And that's the concept in film and the concept in video games, right? Essentially what we do in video games is we literally draw an image and then when we're done, we draw another image and then we're done with draw another image and so on and so forth. And we do that usually to have smooth motion.


[User] Please transcribe this text

[Assistant] And smooth gameplay, we do it 60 times in one second.


[User] Please transcribe this text

[Assistant] So we're drawing 60 different images in one second. And those images, obviously they're slightly different between each other. And that will give you the illusion of motion. And you can see it's being done here manually.


[User] Please transcribe this text

[Assistant] That's what happens in film, and that's what happens in video games. Now, in film, we run at 24 frames per second. In games, we want to run as high as possible. So, 30 frames is better than 24. 60 is way better than 30.


[User] Please transcribe this text

[Assistant] 120 is way better than 60, 144 is better than 120, 240 is better than 144, and so on and so forth. The higher the number, the better and the smoother the motion is. And that's our job. Our job is to update every single frame, update the game, and draw everything in the game. So going back to this,


[User] Please transcribe this text

[Assistant] Our loop, a single iteration of my loop, is drawing one image, or one frame.


[User] Please transcribe this text

[Assistant] So in a loop, in my update function, I check for all key inputs.


[User] Please transcribe this text

[Assistant] If the player has pressed the W key, the S key, any, anything on the keyboard. And we also check for mass movement, so we basically check for all inputs in the update.


[User] Please transcribe this text

[Assistant] We also check for animation, or we update the animation, or we update the UI, the user interface, or we update the AI, the enemy AI, or we do pathfinding, we find the shortest path between two points for our enemies.


[User] Please transcribe this text

[Assistant] Whatever we need to update in our game, in that frame, we do it in this function.


[User] Please transcribe this text

[Assistant] And then when we're done updating, we draw everything on the screen.


[User] Please transcribe this text

[Assistant] And this happens every single time. For every single frame, we draw, sorry, we update and draw, update and draw, and so on and so forth.


[User] Please transcribe this text

[Assistant] Now, whenever we're drawing stuff, when we draw stuff, on the screen,


[User] Please transcribe this text

[Assistant] What happens is when we start our drawing process, the first thing we do is we clear our screen. We make sure nothing is drawn on our screen.


[User] Please transcribe this text

[Assistant] We clear our screen and then we start, we start drawing stuff like our character. We start with our character and then we start with another character. Maybe you start with the tree, that's not a tree.


[User] Please transcribe this text

[Assistant] We start with a tree and maybe a house. I don't know why these guys are bigger than the house, uh, but whatever.


[User] Please transcribe this text

[Assistant] And we draw our clouds and we color everything up, right? So we drew this frame and the next frame, we clear the screen again.


[User] Please transcribe this text

[Assistant] We make sure there's nothing drawn on the screen and we draw everything again. Maybe this time the player have moved a little bit to the right. So now, he moved a little bit to the right.


[User] Please transcribe this text

[Assistant] Every frame and draw things on the screen every single frame. The screen draws from top to bottom. So top to bottom.


[User] Please transcribe this text

[Assistant] Right? So it draws every single pixel from top to bottom. If you don't know what a pixel, by the way,


[User] Please transcribe this text

[Assistant] Screen is made of pixels, just in case for those people who don't know. The screen is made of pixels, right, tiny little pixels, which have values that are called


[User] Please transcribe this text

[Assistant] They have, each single one of these pixels have R, G, B, A values. Actually, let me do this properly.


[User] Please transcribe this text

[Assistant] B stands for blue, alpha, and A stands for alpha. And alpha is your transparency. If you don't know what transparency are, we'll talk about it a little bit later. But essentially every single pixel you see on the screen


[User] Please transcribe this text

[Assistant] Is made of these three, four colors or actually three colors and an alpha or transparency.


[User] Please transcribe this text

[Assistant] So if you have a big image, right, whatever image it is, that image is made of, made of pixels. So, so for example, we can say that this image is 800 by 600 pixels.


[User] Please transcribe this text

[Assistant] Right? So, if I also, let's grab a random image.


[User] Please transcribe this text

[Assistant] So, this image, currently, you can see at the bottom here, it's made of 1440 pixels by 960 pixels. Meaning that the width of this entire image is 1440 and the height is 960. That's how many pixels are there. And if I zoom in, and really zoom in, you can see that every square of this image


[User] Please transcribe this text

[Assistant] This is not, uh, this is not quite demonstrating my point. Uhm, is this 16 by 16 image? No, it is, well, good enough. Alright, you can see this image, right? Every single square here is a pixel.


[User] Please transcribe this text

[Assistant] And a pixel essentially is the smallest unit that you can measure on your screen.


[User] Please transcribe this text

[Assistant] And every pixel can have the three colors on your alpha. So for example. And here you can see those.


[User] Please transcribe this text

[Assistant] On my screen, uhm, I have a large screen. So this is...


[User] Please transcribe this text

[Assistant] Is one pixel. Now if I make this image much bigger on my screen.


[User] Please transcribe this text

[Assistant] Right? So for example, right now, this image is occupying a much bigger space on my screen.


[User] Please transcribe this text

[Assistant] It's taking more than one pixel on my specific screen because it's so zoomed in. If I zoom it out and I'm on a.


[User] Please transcribe this text

[Assistant] Alright, you can see how tiny this image is. That's because


[User] Please transcribe this text

[Assistant] Right? So if it's actually at a hundred scale resolution, every single pixel is a single square. But if I zoom in a little bit more.


[User] Please transcribe this text

[Assistant] Right? That means that this image currently is occupying every single square, is occupying more pixels on my screen. Right? If you, but if it's a hundred percent, uh, zoom,


[User] Please transcribe this text

[Assistant] That's the normal resolution of the image, then that means every single pixel is taking every single pixel on my screen. I have more pixels on my screen.


[User] Please transcribe this text

[Assistant] Right? But in the context of this image, this image specifically.


[User] Please transcribe this text

[Assistant] Every single square, no matter whether you zoom in or zoom out, every single square is a single pixel. And it has all three values and an alpha.


[User] Please transcribe this text

[Assistant] I hope it didn't confuse you with the whole zooming thing. Uhm, if I did, you can just ignore that part. And all I want you to know is that this image is 16 by 16 pixels. A pixel is just a square with three different colors. RGBA.


[User] Please transcribe this text

[Assistant] So three colors and one alpha, an alpha channel. We'll talk about an alpha channel later or what transparency is. And every single square is a pixel with these three colors. And this is 16 by 16 pixel image.


[User] Please transcribe this text

[Assistant] Right? So what we've done here, what we've said,


[User] Please transcribe this text

[Assistant] Is that we want to create an 800 by 600 window.


[User] Please transcribe this text

[Assistant] That means this window has 800 by 600 pixels. There's 800 pixels on the width and 600 pixels on the height.


[User] Please transcribe this text

[Assistant] Right? And every one of these pixels has a color which is RGB and the alpha channel. Now going back to the drawing.


[User] Please transcribe this text

[Assistant] I was mentioning that we draw from top to bottom. We draw every single pixel from the very top to the very bottom. Right? And whenever, whenever we're drawing a new frame, we do that process from top to bottom. Now here's the thing.


[User] Please transcribe this text

[Assistant] If we just draw everything on the screen and show it to the player, there might be an issue when we start drawing the second frame. Because here's the thing.


[User] Please transcribe this text

[Assistant] I'm gonna draw, I'm gonna start drawing my frame, so I'm gonna draw my frame here.


[User] Please transcribe this text

[Assistant] Drawing my frame, drawing everything, right? I'm drawing all the pixels, I'm drawing them.


[User] Please transcribe this text

[Assistant] Now the next frame needs to start rendering, right? I would like to start drawing the next frame. Now,


[User] Please transcribe this text

[Assistant] I can't, if, if I start drawing the second frame, I'll draw it from the very top. I might have an issue that's called, um, where's the, where's the issue called? Not stuttering.


[User] Please transcribe this text

[Assistant] Uh, tearing. I might have tearing in my screen. Which is an issue. So if I google tearing.


[User] Please transcribe this text

[Assistant] Of you drawing, you starting to draw the second frame before the first frame ended or while the first frame is still on the screen.


[User] Please transcribe this text

[Assistant] So you can see the- I'm drawing- I started drawing the second part. So I get my epic pen.


[User] Please transcribe this text

[Assistant] I'm starting to draw the second frame of my image before the frame, the first frame ended or while the first frame is still there. And that is a problem.


[User] Please transcribe this text

[Assistant] Alright, so this is my second frame over here. So this is second frame. This was the old first frame, right? And that's an issue which can be fixed by creating multiple buffers. Now the question is, what's a buffer? Well, essentially a buffer.


[User] Please transcribe this text

[Assistant] Right? You can think of it just as a box with some data in it. Now in our case, this box


[User] Please transcribe this text

[Assistant] Or this data inside this, inside the box are just pixels. So I have just a bunch of pixels on my buffer.


[User] Please transcribe this text

[Assistant] These pixels are colors, uh, and these colors make up our image. Right? So what I can do here, I can have my screen over here. So this is my screen.


[User] Please transcribe this text

[Assistant] Well, the bank buffer is an area where we can draw stuff on it, just like our screen. So for example, I can draw something here on my screen. And I can draw something here on my screen.


[User] Please transcribe this text

[Assistant] On my back buffer. Sorry. I can draw something on my back buffer, and I can draw something on my screen. Now...


[User] Please transcribe this text

[Assistant] The disadvantage of drawing things on the screen immediately is that it will cause tearing to happen on your screen, like we saw here in the previous image before.


[User] Please transcribe this text

[Assistant] Right? You can see there's tearing between the two images.


[User] Please transcribe this text

[Assistant] So the solution to that is what we do is first we draw our image to a back buffer. The player doesn't see this. The player can only see our screen.


[User] Please transcribe this text

[Assistant] That you, as a user, can only see your screen. With this, you cannot see.


[User] Please transcribe this text

[Assistant] So I'm gonna render everything to a back buffer. I'm gonna draw my character, my lovely house, alright, and my tree.


[User] Please transcribe this text

[Assistant] I'm drawing all of this to a back buffer and when I'm done drawing everything, I will take this, copy the data and paste them here.


[User] Please transcribe this text

[Assistant] If I do that, I eliminate the problem of tearing, but that's not completely true because tearing can still happen even if you have a back buffer.


[User] Please transcribe this text

[Assistant] Right? There's still a possibility that you can have tearing. And I don't want to get into the whole complexity of that problem yet. Right? But...


[User] Please transcribe this text

[Assistant] And, and you can, you can reduce that problem by enabling something called triple, triple buffering.


[User] Please transcribe this text

[Assistant] Right? Triple buffering. Right now what we have is called double.


[User] Please transcribe this text

[Assistant] A double buffer basically means that we draw everything


[User] Please transcribe this text

[Assistant] Off screen. We don't draw it in on the screen, we draw it off screen. And then when we're done, we copy that data to the screen, we erase everything in here, and we draw the next frame. So I draw my next frame on the buffer.


[User] Please transcribe this text

[Assistant] Alright, and then when this is done, I erase everything on my screen.


[User] Please transcribe this text

[Assistant] And then I draw it. I copy it. I copy the data from here to here.


[User] Please transcribe this text

[Assistant] And then while the data is being copied or when the data was copied, I am now drawing the second buffer.


[User] Please transcribe this text

[Assistant] Or I'm drawing my second frame or third frame or fourth frame. Essentially, the idea is we don't want to draw directly on the screen. We want to draw it in an area where the player cannot see, which we call the back buffer. When we're done, we copy the back buffer to the screen.


[User] Please transcribe this text

[Assistant] And then we start drawing the next frame. When we're done, we copy the data again to the screen and we render our third frame and so on and so forth. So all of our frames are rendered first on the back buffer, then they're copied onto the screen. And this will reduce the issue of tearing. It will not eliminate it completely, but it will reduce it. It'll be much, much, much better.


[User] Please transcribe this text

[Assistant] And you can even reduce it even further by having triple buffering. So this idea here.


[User] Please transcribe this text

[Assistant] The back buffer on the screen is called double buffering. Triple buffering is when we have a third buffer. So third. Back.


[User] Please transcribe this text

[Assistant] Or actually, in this case it would be the second buffer. It has one buffer here, one buffer here, and the screen. So we draw something here, right? And then we copy it to the screen. And then something is being drawn over here, right? And then while stuff are being copied, when we're done,


[User] Please transcribe this text

[Assistant] We start copying this, then we go here, we render, we're drawing stuff, and then we even draw some more here stuff, and then when we're done copying, we move things on the screen. So this just allows us to, if the GPU or the graphics card is moving way too fast,


[User] Please transcribe this text

[Assistant] It has space to render things. The graphics card doesn't have to wait for it to render everything on the screen. We can draw something on the back buffer and then we can copy it to the screen later on.


[User] Please transcribe this text

[Assistant] Right? So that's the idea of double buffering and triple buffering and the idea of tearing and reducing tearing. And what pixels are.


[User] Please transcribe this text

[Assistant] So going back to our loop over here, we do this every frame. We have a loop called our main loop with our update function, our update function.


[User] Please transcribe this text

[Assistant] Use an update or movement or animation, whatever we have to update. We update it.


[User] Please transcribe this text

[Assistant] And then we start drawing stuff. We draw stuff on the back buffer.


[User] Please transcribe this text

[Assistant] When we're done drawing stuff on the back buffer, we copy it to the screen so the user can see it.


[User] Please transcribe this text

[Assistant] And then we erase the back buffer and we draw some more things.


[User] Please transcribe this text

[Assistant] When we're done, we erase the screen, we copy the stuff to the screen, and then we erase the back buffer. We draw some more stuff.


[User] Please transcribe this text

[Assistant] When we're done, we erase the screen and copy the things from the back buffer to the screen.


[User] Please transcribe this text

[Assistant] When we're done, we erase the back buffer and then we draw things on the back buffer.


[User] Please transcribe this text

[Assistant] Clear the back buffer, draw something on the back buffer. When you're done, clear the screen, copy it on the screen. When you're done, clear the buffer, draw something on the back buffer. When you're done, clear the screen, draw something on the screen, and so on and so forth. And that's back buffering. Right?


[User] Please transcribe this text

[Assistant] That's it, that's the entire idea of a game loop and what happens every single frame, uh, of your game.


[User] Please transcribe this text

[Assistant] Now, there are other reasons that screen tearing happens.


[User] Please transcribe this text

[Assistant] I would like to cover this, like, really briefly. It has nothing to do with, uhm,


[User] Please transcribe this text

[Assistant] SFML or the topic at hand, but that's kinda cool and I kinda wanna talk about it.


[User] Please transcribe this text

[Assistant] So remember how we said that the game, the game loop, this game loop, for example, it runs at 60 frames per second. Meaning that we update and draw.


[User] Please transcribe this text

[Assistant] 60 times in one second. We go through this loop 60 times. Over and over and over. Right? If our computer was much faster...


[User] Please transcribe this text

[Assistant] We can go through this loop maybe 120 times in one second. Or 200 times per second.


[User] Please transcribe this text

[Assistant] Right? So the faster our computer is, the faster we go, we get, we go through this loop. The faster we update, the faster we draw stuff. Now the problem with this, is that your display, your computer display, has something called a refresh rate.


[User] Please transcribe this text

[Assistant] In one second. It's only fast enough to display something 60 times in one second.


[User] Please transcribe this text

[Assistant] And it will not go above that. So this is my game. Let's say my game.


[User] Please transcribe this text

[Assistant] It's a super fast game. Even though the game is running at 200 FPS,


[User] Please transcribe this text

[Assistant] You physically are only seeing 60 images of those 200 images in one second. Right?


[User] Please transcribe this text

[Assistant] And that contributes to the phenomenon of tearing.


[User] Please transcribe this text

[Assistant] So if your game is running way, way higher than your refresh rate,


[User] Please transcribe this text

[Assistant] Then you have tearing issues because you're basically trying to draw things before they were done. It's so fast that


[User] Please transcribe this text

[Assistant] You already started drawing the second frame before the first frame was done drawing. Which is a problem. So, to eliminate...


[User] Please transcribe this text

[Assistant] To eliminate, eh, back, eh, to eliminate, eh, tearing all together, we need the combination of back buffers.


[User] Please transcribe this text

[Assistant] Right? Having a back buffer and locking the frame rate to the refresh rate of the monitor. So our monitor is running at 60 Hertz per second.


[User] Please transcribe this text

[Assistant] Then we want to lock our game to run at 60 frames per second or only display 60 frames per second. And that is what usually prefer to VSync. VSync, if you turn it on, it's an option.


[User] Please transcribe this text

[Assistant] If you turn it on, it will lock your game or your main loop speed to the speed of your refresh rate of your monitor.


[User] Please transcribe this text

[Assistant] So if your monitor can only do 60, you can only do 60. If your monitor can only do 30 Hz, you can only do 30 FPS.


[User] Please transcribe this text

[Assistant] If you have a really expensive monitor, and a gaming monitor, and a fast monitor, and you do 144Hz,


[User] Please transcribe this text

[Assistant] And it's really important to distinguish the difference between FPS and Hz. Because just because your game is running at 2000 FPS,


[User] Please transcribe this text

[Assistant] That doesn't mean you're actually seeing with your own eyes 2000 frames per second, because the monitor is only capable of drawing 144 of them.


[User] Please transcribe this text

[Assistant] Physically, you can only see 144 in the real world, but the game is running at 2000.


[User] Please transcribe this text

[Assistant] So that's why the higher the refresh rate of your monitor, the smoother the game experience is and the smoother everything is and the smoother your computer is. So I highly recommend if you, if you ever tried.


[User] Please transcribe this text

[Assistant] Going above 60 Hz, most monitors are 60 Hz.


[User] Please transcribe this text

[Assistant] I highly recommend trying or getting a monitor that's more than that, maybe 120Hz or 144Hz. That is life changing.


[User] Please transcribe this text

[Assistant] The difference between 60 and 120 and 144 is massive. It's, it's like visiting a whole new world.


[User] Please transcribe this text

[Assistant] Right? So that's the difference between Hertz and FPS and what Vsync does.


[User] Please transcribe this text

[Assistant] You turn on VSync, it will lock your framerate to your monitor refresh rate. If our refresh rate is 144, we only display 144, or our game only renders 144 frames per second, which...


[User] Please transcribe this text

[Assistant] It eliminates tearing altogether with the help of pack buffering.


[User] Please transcribe this text

[Assistant] Right? Which is super cool. Now, why did I talk about this now?


[User] Please transcribe this text

[Assistant] We're going to need it later on. We're going to, by default, I think by default SFML turns on v sync by default. I could be wrong. Uh, but we'll check in and make sure.


[User] Please transcribe this text

[Assistant] Uh, what you talked about is the main game loop. We talked about tearing, what vsync is, what backbuffering is, what refresh rate is.


[User] Please transcribe this text

[Assistant] What pixels are and how much, uh, how many pixels your monitor has. By the way, if you want to know how many, uh, pixels your monitor has and what your, the refresh rate of your monitor, you can do that easily. If you right click on your desktop and go to display settings,


[User] Please transcribe this text

[Assistant] You'll see that in display setting, for example, for me, I have 144, sorry, I have a 4K monitor, meaning that I have 3840 by 2160 pixels. So on the width, I have 3000, uh,


[User] Please transcribe this text

[Assistant] If you multiply those two numbers, you find out the total amount of pixels I have on my screen. So 3840 by 2160. That'll be around the 8 million pixel range. Yeaah. 8.2 million pixels I have on my screen. You could be writing a 1920 by 1080p monitor. So, 1920 by 1080. That's what the most common resolution is.


[User] Please transcribe this text

[Assistant] And that's around 2 million pixels on your monitor. So 1920 by 1080.


[User] Please transcribe this text

[Assistant] That means you have around, yeah, you have 2 million pixels on your monitor screen. Obviously the higher the pixel count.


[User] Please transcribe this text

[Assistant] The less jagged or jaggies you see on your screen.


[User] Please transcribe this text

[Assistant] The less jagged your models are. So for example,


[User] Please transcribe this text

[Assistant] Uh, first we're not gonna do 3D models, right? We're gonna do, uh, 2D game. So this won't affect us as much.


[User] Please transcribe this text

[Assistant] The less you have of this a staircase effect. We call this a staircase effect because it's not smooth. Pixels are inherently square. So, you can't have, it's harder to draw a circle, right, with a square.


[User] Please transcribe this text

[Assistant] So what we do is we have two methods to fix that.


[User] Please transcribe this text

[Assistant] We either add anti-aliasing which anti-aliasing basically smooth out the edges.


[User] Please transcribe this text

[Assistant] Without anti-aliasing, you can see how sharp the edge is. With anti-aliasing, the edge is much sharper.


[User] Please transcribe this text

[Assistant] And so the higher your pixel count on your monitor, the less reliant you are on anti-aliasing.


[User] Please transcribe this text

[Assistant] Alright, the less you need AA, we call it AA. Right? Because...


[User] Please transcribe this text

[Assistant] You have so many pixels on your screen and they're so, so very tiny that you won't notice them anymore.


[User] Please transcribe this text

[Assistant] Right? So on a 4k monitor you still notice them a little bit? A fair little?


[User] Please transcribe this text

[Assistant] On an 8K monitor, even less, even they're gone, completely gone. On a 16 monitor, 16K monitor, it's, it's...


[User] Please transcribe this text

[Assistant] It's ridiculous. Okay. So this is another example. If I'm drawing a line, you can see how jagged that line is. This is without anti aliasing. This is with aliasing. Now each one of these squares are pixels. And if you zoom out, if you have a lot of pixels, then you want, you will, you will not see this jagged line.


[User] Please transcribe this text

[Assistant] So if you want to see how many pixels your monitor has, you can just right click on your desktop, go to display settings, and you can see your resolution. If you want to check out your refresh rate, you can go to the graphics section. Sorry, not graphics.


[User] Please transcribe this text

[Assistant] You go to the advanced display section and you can see that my monitor is running at 60Hz per second. Sadly, I don't have a 144Hz monitor.


[User] Please transcribe this text

[Assistant] So that's just something to keep in mind if you want to check out your screen resolution, refresh rate and all that.


[User] Please transcribe this text

[Assistant] Alright, cool. So now that it's out of the way. Kind of explained that. Going back to SFML.


[User] Please transcribe this text

[Assistant] You can see here that I'm creating a window, right? So that's where we, we, we, we left off. I'm creating a window and what I would like to do is I would like to be able to create my game loop. My game loop, I can create it by making a while loop and a while loop, basically just the word while and two brackets here.


[User] Please transcribe this text

[Assistant] Now those two brackets before I mentioned that usually brackets are for functions. This is not a function. A while loop can have brackets. Sorry. So a while loop takes an input here and this input is my condition. So for example,


[User] Please transcribe this text

[Assistant] While loop looks like this. So this loop, code here, this loop will run for as long as our condition


[User] Please transcribe this text

[Assistant] As, sorry, as, as long as, as long our condition here is true, right? So as long as our condition here is true, the loop is going to run.


[User] Please transcribe this text

[Assistant] Now we know that window is an object, right? It's the object we created up here. This is our object.


[User] Please transcribe this text

[Assistant] And this window object has a function called isOpen.


[User] Please transcribe this text

[Assistant] IsOpen is a function that returns a boolean


[User] Please transcribe this text

[Assistant] And this boolean you can see here returns true if the window is open, false if the window has been closed.


[User] Please transcribe this text

[Assistant] So basically here, what I'm saying is while the window is open, execute code until we close the window. We don't exit this code. So we're going to, we're going to be stuck.


[User] Please transcribe this text

[Assistant] In these lines, from line 8 to line 12, eh, to line 11.


[User] Please transcribe this text

[Assistant] From line 8 to line 11, we're going to keep executing our code over and over and over until our loop is done.


[User] Please transcribe this text

[Assistant] When our loop closes or when our window is closed, we exit the loop and then we return zero and our application closes.


[User] Please transcribe this text

[Assistant] But before we close the window, we're stuck in here. And what we're doing is we're updating the screen and we're drawing onto the screen. And this is our main game loop. Main game loop.


[User] Please transcribe this text

[Assistant] So now if I press play, you will see that the window is going to appear and it's not going to disappear. This is my window.


[User] Please transcribe this text

[Assistant] I can't move my window, I can't interact with my window at all, but that is completely fine.


[User] Please transcribe this text

[Assistant] So this is my game window. It's 800 by 600.


[User] Please transcribe this text

[Assistant] And it's running forever because we're stuck in this loop forever. Now, if I want to close my window.


[User] Please transcribe this text

[Assistant] Because right now I can't close my window at all. The way I can close it is by closing the terminal or our command line. If I close my command line, the window will close or application will close. So if I press play again.


[User] Please transcribe this text

[Assistant] You see, I can't interact with the window at all. I can't even close it. I'm trying to close it and I can't. So if I want to close it, I just close the terminal over here. Right? So why can't we interact with the window? Well, we'll talk about, we'll talk about that in a second. Again, real quick, this is our main game loop.


[User] Please transcribe this text

[Assistant] Uh, a loop that continues on happening over and over and over. We're stuck between line nine and line 10. This is the scope of my loop.


[User] Please transcribe this text

[Assistant] And basically it's saying, Hey, this is the condition. As long as this condition is true, the loop is running. When the condition becomes false, we're done.


[User] Please transcribe this text

[Assistant] Alright, cool. So why can't we interact through the window? What is going on?


[User] Please transcribe this text

[Assistant] Well, here's the thing. In SFML, after we create our while loop, we have to create a second loop inside it. And this second loop is called the event loop. The event loop is a loop that checks for events from the window system. What are events?


[User] Please transcribe this text

[Assistant] Well, when you click with your mouse button, that's an event. When you click on your keyboard, that's an event. When you, when you want to try to move the window, and if I try to move the window, that's an event.


[User] Please transcribe this text

[Assistant] When I minimize the window, that's an event. Maximize the window, that's an event. Close the window, that's an event.


[User] Please transcribe this text

[Assistant] If I press anything on my keyboard, or my mouse, or I move my mouse, all of these are events. So Windows, the operating system Windows, has an event loop. A loop, right? Uh, that's, or, the operating system Windows has


[User] Please transcribe this text

[Assistant] Uh, events. And what we need to do is go through this, go, go through all these events and check.


[User] Please transcribe this text

[Assistant] If there is an event that occurred. So you can think of the event loop as this.


[User] Please transcribe this text

[Assistant] So think of it as a queue, right? The offering system is here and your game is over here.


[User] Please transcribe this text

[Assistant] If I move the window, for example, or I close the window, let's say I close the window.


[User] Please transcribe this text

[Assistant] If I close the window, the operating system will add an event to this queue or list.


[User] Please transcribe this text

[Assistant] Right? We usually, it's usually a Q. Right? Imagine you're, I don't know.


[User] Please transcribe this text

[Assistant] You're at the ATM, right, you're at the ATM over here, at a bank, and there's a queue of people that are trying to get money from the ATM, right? So essentially, what you're trying to do is, uh, well essentially that's a queue, right?


[User] Please transcribe this text

[Assistant] So, whenever you close the window, the operating system will add an event to this queue. This event will be called closed. So what we do in our game, we check this queue.


[User] Please transcribe this text

[Assistant] And we loop through this queue and check. Are there any events? Oh, there is an event. Cool. Let me handle that event. According to the event code, every event has a specific code. In this case, the code of my event is close. That will close the window.


[User] Please transcribe this text

[Assistant] So I check the event code and according to the event code I execute or I do something.


[User] Please transcribe this text

[Assistant] So in our case, if someone clicks on the X screen or the X button on the window,


[User] Please transcribe this text

[Assistant] Our game will check for it, and accordingly it will handle, uh, and do whatever it needs to do. In that case, you just close the window.


[User] Please transcribe this text

[Assistant] So those are events. And same thing happens with the keyboard. If I click a key on my keyboard, that will register as an event. So the operating system, which is Windows, will add this event that I press the W key. W.


[User] Please transcribe this text

[Assistant] Execute an event, it will clear that, so it will remove it from the queue.


[User] Please transcribe this text

[Assistant] Right? So let's say in this case I pressed A. So I pressed the A key. I am done. I removed the A key. And then now there's only one event, which is W. When I'm done with W, I delete it. Now there are no events in here. So I'm looping through this, this queue or this list, but there's nothing here. So I don't have to worry about anything.


[User] Please transcribe this text

[Assistant] But the important part is our game has to talk with the operating system. It has to check for all the events. If any events has occurred.


[User] Please transcribe this text

[Assistant] W S A D. So all these are all keys on your keyboard. Right?


[User] Please transcribe this text

[Assistant] So that's what we're doing in this section. We have a while loop. We're saying while window dot pull event. Pull event is a function that basically checks for events for all events. And this check will be saved, right? This is a function called pull event.


[User] Please transcribe this text

[Assistant] So sfEvent is a class and this is an object out of this class.


[User] Please transcribe this text

[Assistant] And so whatever I do while window pull event, when I check for the event.


[User] Please transcribe this text

[Assistant] If there's an event, I save it in this variable and then I check with an if statement. Now we haven't talked about if statements before. So let's talk about if statements. What are if statements? Well, essentially an if statement is a check. It check if something is true or false. So for example, I say if h is bigger or equal to 13.


[User] Please transcribe this text

[Assistant] If age is bigger than 13, then I will execute this code. I'm going to say print happy birthday. However, if my age is less than 13, then I'm not going to execute this code. You can see that this statement has a scope again.


[User] Please transcribe this text

[Assistant] The scope is this curly brace and this curly brace. So any code.


[User] Please transcribe this text

[Assistant] That is written between those two curly braces belong to the if statement and will only be executed if this condition is true. So hold on.


[User] Please transcribe this text

[Assistant] What's the difference between an F statement and a while loop? They look very similar, similar. So with a while loop, you have while, a condition, let's say age is bigger than 13.


[User] Please transcribe this text

[Assistant] So these look very similar. What's the difference? This is a while loop. This is an F statement. There's a condition here. There's also a condition here. If the condition is true, I'm going to execute this code.


[User] Please transcribe this text

[Assistant] The condition is true. I'm going to execute this code. What's the difference? Well, with a while loop, it's in the name. It's a loop. So a loop happens more than once. So as long as this condition is true.


[User] Please transcribe this text

[Assistant] The loop will happen over and over and over, and it's going to print happy birthday over and over and over and over as long as your age is 13. If your age goes below 13, it will stop printing happy birthday. So that's a while loop. However, with an if statement.


[User] Please transcribe this text

[Assistant] It checks if the age is bigger than 13, and if it is, it will only print happy birthday once.


[User] Please transcribe this text

[Assistant] So an if statement is only for something that happens only once.


[User] Please transcribe this text

[Assistant] A while loop happens over and over and over and if segment only checks and happens once.


[User] Please transcribe this text

[Assistant] But they both have conditions. So there's a condition here and they both have these conditions. They both have to be true for the code inside these color braces to be executed. That's important.


[User] Please transcribe this text

[Assistant] Right, so going back to my code here, I have a while loop.


[User] Please transcribe this text

[Assistant] I go inside my while loop. I pull for events. I look for events in our list of events or queue of events. And I save the event in this variable, which is event. And then I check if the event has a type of SF event close.


[User] Please transcribe this text

[Assistant] SF is a namespace because it has two columns.


[User] Please transcribe this text

[Assistant] And it checks if the event is closed. If it is, then I do window.close. So the window object has a function called close. Alright, so let's write up the script.


[User] Please transcribe this text

[Assistant] I'm gonna say, if, so I'm gonna, uh, first I need to create my event. So, event.


[User] Please transcribe this text

[Assistant] This is my variable, this is my object, and this is the class. So in here, I do a while.


[User] Please transcribe this text

[Assistant] Now something you might look at and you might be wondering why is that happening? Why is there a double equal here? Why not just equal?


[User] Please transcribe this text

[Assistant] Well, a double equal means that I want to check for equality. I'm checking if this is equal to this.


[User] Please transcribe this text

[Assistant] If I do a single equal, I am basically saying that this is equal to this.


[User] Please transcribe this text

[Assistant] So this is assignment. I am assigning. So this is a variable, right? This is my variable. I am assigning my variable a value of SF event closed.


[User] Please transcribe this text

[Assistant] In here, I am checking if this has the value closed. So double equal is for checking. Single equal is for assignment. To give you another example, if I do int health equal to a hundred and I check if health equal to five. So in here,


[User] Please transcribe this text

[Assistant] I'm just checking the value of health. I'm asking, is the value of health equal to five or not? If I do a single equal, I am saying health is five.


[User] Please transcribe this text

[Assistant] I'm changing the value of health to five, even though if it's in an if statement, it doesn't matter. It's going to execute this code and health will become five.


[User] Please transcribe this text

[Assistant] Which is not good. We want to check if the health is 5.


[User] Please transcribe this text

[Assistant] Right? So double equal is for equality check. Single equal is for assignment. So let's go over this one more time.


[User] Please transcribe this text

[Assistant] I'm creating an object called event. This object has a data type of events. I am looping through the queue of events for my operating system. And I do that from my window.


[User] Please transcribe this text

[Assistant] So in window, I pull for all the events, I loop through all the events. And if there's any event, it will be saved in this variable, which I created at the top here. Now inside this loop, I check what the, what's the type of my event? Is the type of my event close? If it is, then I'm going to close my window with that code written here. If I press play now.


[User] Please transcribe this text

[Assistant] Now here's the thing, I can now move my window, which is super cool. I can minimize my window. Right?


[User] Please transcribe this text

[Assistant] Maximize it, right? And I can interact with it. And now I can close it. If I close it, it closes. Now notice if I remove these two lines, right? I'm only pulling for event. I'm only checking for events. And if I run my application now, I can still move my window. I can still minimize my window.


[User] Please transcribe this text

[Assistant] Right? But if I click on close, nothing happens.


[User] Please transcribe this text

[Assistant] Because I'm never checking for that event. I'm never checking if the window close button was pressed, which we do previously. If we press it, then we close the window. I think that's important.


[User] Please transcribe this text

[Assistant] So now I have to save my code and restart again.


[User] Please transcribe this text

[Assistant] Well, the last two lines that I would like to talk about is window clear and window.display. So let's write these lines up first. So I'm going to do window.clear.


[User] Please transcribe this text

[Assistant] And clear, if you look at the function here, it returns nothing. Clear returns a void. It's not going to return anything. However, the input here, you can see that it takes a color. What's a color?


[User] Please transcribe this text

[Assistant] Well, SFML has a class called color and this color class


[User] Please transcribe this text

[Assistant] As a default color or some default colors that exist, for example, black or white or red or whatever you want. We're going to do red. So essentially here, what we're doing is we're clearing the window.


[User] Please transcribe this text

[Assistant] Remember when we talked about double buffering and rendering things on the screen? Over here. Remember what we said?


[User] Please transcribe this text

[Assistant] Before we draw something on the screen, we first have to clear it. We first have to clear it. We have to remove everything from the screen. That's what we do on this line of code. We clear the window so we can draw the frame. So we can draw our stuff. Next is window, the display.


[User] Please transcribe this text

[Assistant] What is window that display does? Well, if you hover over it and look at it, it returns nothing, it returns void, which is nothing, and takes no inputs. So what is display?


[User] Please transcribe this text

[Assistant] Remember the back buffer that I talked about this back buffer, whenever you call display, you're basically copying the data from the back buffer to the screen. So notice what's happening here now. Let's look at this step by step. When you call clear, I'm clearing my screen. So let's do that. Let's clear our screen.


[User] Please transcribe this text

[Assistant] On display on this line, line 19, when I do window display, what I'm doing is I'm copying the data from the back buffer.


[User] Please transcribe this text

[Assistant] Anything that I drew on the back buffer, I'm copying it to the screen now. So now I'm drawing stuff on the screen. All this data, I'm gonna draw it on the screen.


[User] Please transcribe this text

[Assistant] So by default SFML allows us or enables back buffering, right? Or double buffering, right? We have a back buffer on the screen.


[User] Please transcribe this text

[Assistant] And when we want to display something on the screen, we do window that's play. So now if I press play, all I'm going to see is a red window, which is cool.


[User] Please transcribe this text

[Assistant] You can see I have a red window and I can close my red window. And if I want, I can make a yellow window by changing the clear color and say yellow, which is super, super cool. Like this. Right now.


[User] Please transcribe this text

[Assistant] This line right now doesn't do much. Like window display, it's kind of useless because we're never drawing anything on the screen. Right? But next time, when we draw stuff, we draw it between clear and update.


[User] Please transcribe this text

[Assistant] So we drew our drawing here. So we clear the screen.


[User] Please transcribe this text

[Assistant] Draw stuff on the back buffer and then copy the stuff from the back buffer to the screen. So if I want to draw a circle, I do it between line 17 and line, uh, uh, line 19.


[User] Please transcribe this text

[Assistant] So a draw circle happens here. If I want to draw a triangle, draw triangle. If I want to draw a character, draw player. I do it here. If I want to draw my enemy, draw enemy. So look at this now. I am clearing the screen to a color.


[User] Please transcribe this text

[Assistant] I'm drawing a triangle on the back buffer, I'm drawing a player on the back buffer and I'm drawing an enemy on the back buffer. When I'm done drawing stuff on the back buffer,


[User] Please transcribe this text

[Assistant] I call window.display to copy stuff from the back buffer to the screen. Right? And so we do that every single frame. So here's the thing. Now I'm going to section off my loop into two places, into two sections. This section will be the draw section. Right? All my drawing is going to be between this and this.


[User] Please transcribe this text

[Assistant] All my updating is going to be between this.


[User] Please transcribe this text

[Assistant] And this, remember when we said we have two functions in our main loop. If I go back to my main loop.


[User] Please transcribe this text

[Assistant] We said we have two functions. We have the update function and we have our draw function. The update function or we're not making it a function right as of yet. We're just starting code.


[User] Please transcribe this text

[Assistant] So this is the update section of my main loop or my game loop. And this is the draw section of my game loop. Right?


[User] Please transcribe this text

[Assistant] And I section off, I section it off like this, just to make things a little bit clearer.


[User] Please transcribe this text

[Assistant] It's not very good to update stuff between


[User] Please transcribe this text

[Assistant] Window unclear. Like I could, if I want to, I can do


[User] Please transcribe this text

[Assistant] Update code over here. For example, I can check for the movement of my player. I can update the animation in here. But it's not, it's not good. It's better off to section off my code.


[User] Please transcribe this text

[Assistant] To a section where it only does update and a section that only does drawing.


[User] Please transcribe this text

[Assistant] Don't be messy. Don't mix things up together. Keep update alone, keep draw alone. Right? So let's look at our code a little bit. If I zoom out a little bit here, let's do a final review.


[User] Please transcribe this text

[Assistant] I'm including my SFML graphics header file. I have a main function which the operating system


[User] Please transcribe this text

[Assistant] Uh, invokes or enters when you open your application for the first time.


[User] Please transcribe this text

[Assistant] In here, I'm creating an object that's called window.


[User] Please transcribe this text

[Assistant] This window object has a data type of SF, uh, of data type of render window. SF is a user, is a namespace.


[User] Please transcribe this text

[Assistant] Right. SF is a namespace, render window is a class, window is an object of type render window.


[User] Please transcribe this text

[Assistant] Whenever we're creating our window object, we are.


[User] Please transcribe this text

[Assistant] Also calling a constructor. A constructor is a function that is executed whenever you create an object. In this case, my object is a window. So I'm calling a function.


[User] Please transcribe this text

[Assistant] This function takes two parameters or it takes two input. The first parameter or the first input is SF window mode. The second input is my game title.


[User] Please transcribe this text

[Assistant] SF video mode itself is a class which takes also two parameters. The first parameter is the width of my window and the height of my window.


[User] Please transcribe this text

[Assistant] Once we created our screen, we need to create our main game loop. Our main game loop is created by making a while loop. This, all of this is the main game loop.


[User] Please transcribe this text

[Assistant] A while loop is just a loop that happens over and over and over. It executes code over and over and over as long as this condition is true. In our case, the condition is while window is open.


[User] Please transcribe this text

[Assistant] Window is our game, eh, not game objects, sorry. Window is our object that we created at the top. And this object has a function that's called isOpen. isOpen is a function that takes no input. However, it does return a boolean.


[User] Please transcribe this text

[Assistant] So while the windows open, we update our code and we render our.


[User] Please transcribe this text

[Assistant] Well, we draw whatever, we render whatever we need to render or we draw whatever we need to draw.


[User] Please transcribe this text

[Assistant] Every time we go through this loop, we draw a single frame. One frame.


[User] Please transcribe this text

[Assistant] So if we need to draw 60 frames per second, this loop has to execute and run 60 times in one second.


[User] Please transcribe this text

[Assistant] All right, let's go to the update section. The update section, what we do is we create an object called event. This object has a data type of event. Event is a class created by SFML with the namespace of SF.


[User] Please transcribe this text

[Assistant] After we create this object, we have a secondary loop. This second loop


[User] Please transcribe this text

[Assistant] We checks, we check and we pull for window events. What are window events? Window events are like.


[User] Please transcribe this text

[Assistant] Clicking on your keyboard, clicking on your mouse, moving your mouse, closing the window, maximizing the window, moving the window, minimizing the window. All of these are different events that happen when you interact with the game window.


[User] Please transcribe this text

[Assistant] So in here, we're pulling for all the events from the operating system. We're checking the queue of events.


[User] Please transcribe this text

[Assistant] If there's an event, it will be saved inside this event variable. Inside this inner loop.


[User] Please transcribe this text

[Assistant] I have an if statement that checks the type of event, because there could be many types. There could be a type that you're moving the window, there's a type that you're closing the window, a type that you're maximizing the window.


[User] Please transcribe this text

[Assistant] In this case, I'm checking if the type is equal to


[User] Please transcribe this text

[Assistant] So here we're saying if the type of event is closed, which means if we close the window, then I should go ahead and close the window. Windows, the object that we created above here, and it has a function that's called closed.


[User] Please transcribe this text

[Assistant] This function returns nothing and it takes nothing. And so whenever we click on the close button, we close the window. If I want, I can see this STDC out. Ha ha.


[User] Please transcribe this text

[Assistant] Uh, SCL cannot be found because I need to include iostream.


[User] Please transcribe this text

[Assistant] Remember, iStream is for input and output stuff. But we need it.


[User] Please transcribe this text

[Assistant] So now, when we click on close, when we close the window, when we click on that close button, instead of the game closing the window,


[User] Please transcribe this text

[Assistant] That controls that a little bit more. This function here close, basically it's just a function that closes the window.


[User] Please transcribe this text

[Assistant] And we execute this when we click on the X button on the window. Alright, so this is our event section. What about our draw section? Well, our draw section has a function called clear. The clear function exists inside our window object.


[User] Please transcribe this text

[Assistant] The clear function returns nothing. However, it does take one input. That input is a color. Color is a class inside SFML.


[User] Please transcribe this text

[Assistant] Which allows you to define some colors and there are predefined colors like yellow, green, pink, whatever. Now, one thing you might be confused about.


[User] Please transcribe this text

[Assistant] Remember we said sf colon colon.


[User] Please transcribe this text

[Assistant] Right, and we said whenever you do sf colon colon or whenever you do you type something and do colon colon, that's the namespace.


[User] Please transcribe this text

[Assistant] But well, here's the thing, I'm also doing calling calling here, and color is not a namespace.


[User] Please transcribe this text

[Assistant] Color is a class and it clearly says here it's a class. How come we're doing colon colon? Well, I'll explain that later. But essentially SF is our namespace, color is a class, and in our class there is a variable, right, that's called yellow, which we're using here. We'll talk about


[User] Please transcribe this text

[Assistant] Why we're doing colon colon here, even though this is not a namespace. This is a class. SF is a namespace. Color is a class. Alright, so in here what we're doing is we're clearing the window.


[User] Please transcribe this text

[Assistant] Color to a yellow color. So all the pixels in the window, we're turning them yellow.


[User] Please transcribe this text

[Assistant] Once we're done clearing the entire window, we're copying whatever exists inside the back buffer onto the screen. So whatever on the back buffer that we drew.


[User] Please transcribe this text

[Assistant] We drew it on the back buffer and then we're going to copy it to the screen on this line. Now.


[User] Please transcribe this text

[Assistant] That is the entire application and that's how the entire thing works in SFML.


[User] Please transcribe this text

[Assistant] There's a lot of information here that I talked about, especially when I mentioned.


[User] Please transcribe this text

[Assistant] We talked about events and event queues. Uh, we talked about v sync and refresh rate of a monitor. Um, the different refresh rates of a monitor. We talked about the, uh, game loop and what the game loop does, right? We covered a lot today. So what I want you to do is kind of digest all this information and try to write this code.


[User] Please transcribe this text

[Assistant] Copy it for the first time if you want to, that's fine. But the next time, try co- try write it yourself. Try experiment with things and see what happens when you change things up.


[User] Please transcribe this text

[Assistant] For now, I'm going to leave you on this, right? Uhm, our application works, which is great. I run it. I have a yellow, yellow screen, which is fantastic. Next time, what I'm going to do,


[User] Please transcribe this text

[Assistant] Is instead of just having a yellow screen, I'm gonna draw something on the screen.


[User] Please transcribe this text

[Assistant] Like a color or a cube, an R cube, a rectangle or anything, right? I'm going to leave you guys off here. Hope you learned something of the Smith sense. And again, as always, if you have any questions.


[User] Please transcribe this text

[Assistant] You can write it in the YouTube in the comment section below. I'll read it. Compile everything into a YouTube video answering all the questions out there. Alright, you guys take care. I'll see you later.


[User] Please transcribe this text

[Assistant] We had that. You didn't hear that singing? I heard that singing. You didn't hear that fucked up shit?


[User] Please transcribe this text

[Assistant] Let me tell you something. Didn't I tell you? I was gonna manage that cat back to the middle. So you guys, I ain't telling you. You guys better start believing.


[User] Please transcribe this text

[Assistant] What is this? The UK news?


[User] Please transcribe this text

[Assistant] Bro, does he have an actual lock on his door? I want one of those. What's up?


[User] Please transcribe this text

[Assistant] That was before you could jump off it.


[User] Please transcribe this text

[Assistant] Ease for human.


[User] Please transcribe this text

[Assistant] I went to meet Maryam today. I met Nasir before that.


[User] Please transcribe this text

[Assistant] Hey, what happened?


[User] Please transcribe this text

[Assistant] No, it's good. But keep this for your old lady. Okay? I don't wear such things.


[User] Please transcribe this text

[Assistant] Ayy, meh maar gayi meter reader. Baddar, toh ne toh khota hi khu mein daal diya hai.


[User] Please transcribe this text

[Assistant] Okay. I'll think of something. So go. Go and make me a cup of tea. I'm having a headache.


[User] Please transcribe this text

[Assistant] Ayy. Ayy. Ayy.


[User] Please transcribe this text

[Assistant] Okay, that's why he came home early in the evening. Okay.


[User] Please transcribe this text

[Assistant] Chali jaungi main teri Maryam ke garbi. Cheti kis baad ki?


[User] Please transcribe this text

[Assistant] Look, Raza. I'll get you a girl of my choice. Just like you, a beautiful animal.


[User] Please transcribe this text

[Assistant] But you needn't.


[User] Please transcribe this text

[Assistant] Alright, leave in your comments which one you think Hobby Mom should hit. Box number one. Hobby Mom box number two or Hobby Mom box number three. Alright Hobby Mom, come and ask these boys and see which one is telling the truth and which one is not.


[User] Please transcribe this text

[Assistant] Give Poppy Mom thumbs up if you feel like she should not have gotten her phone completely destroyed to smithereens.


[User] Please transcribe this text

[Assistant] He's saying it with like, some type of malice. What's in the box?


[User] Please transcribe this text

[Assistant] I don't know why, uhm, but I don't believe you!


[User] Please transcribe this text

[Assistant] Him? I don't know. I think he would want me to smash my phone. But you! I think my phone is not in this box.


[User] Please transcribe this text

[Assistant] That was a swell show, Mr. Kine. Well, thank you, Joe. Glad to. The Waldorf, Mr. Kine? Uh, what was that, Joe? That big shin they get throwing for you. It's down at the Waldorf, ain't it, Mr. Kine?


[User] Please transcribe this text

[Assistant] After that show tonight? Hey, I gotta get you back to the Waldorf. You got some vows to take.


[User] Please transcribe this text

[Assistant] So, uh, how are you guys? How are you doing?


[User] Please transcribe this text

[Assistant] And the village lay under deep snow.


[User] Please transcribe this text

[Assistant] Bright, icy stars shown from a dark sky down on the silent whiteness below.


[User] Please transcribe this text

[Assistant] Young Ethan Frome walked quickly down the empty moonlit street. He passed Edie's fine new shop.


[User] Please transcribe this text

[Assistant] And the Varnum's house with its two tall black trees.


[User] Please transcribe this text

[Assistant] Below that was the slope of the Corbury Road.


[User] Please transcribe this text

[Assistant] On clear nights, this was often full of young people coasting down, laughing and shouting as they went.


[User] Please transcribe this text

[Assistant] But there was not a sound from the icy slope as Ethan passed by. Tonight, all Starkfield's life was in a room in the church.


[User] Please transcribe this text

[Assistant] Its windows sent yellow light across the snow.


[User] Please transcribe this text

[Assistant] And the sound of dance music flowed out into the still midnight air.


[User] Please transcribe this text

[Assistant] Ethan hid in the shadows outside the church and looked in through the nearest window.


[User] Please transcribe this text

[Assistant] A lively young man with thick black hair jumped into the middle of the floor. He went into the crowd and pulled out a young girl. She was dark-haired.


[User] Please transcribe this text

[Assistant] The floor was alive with dancing figures.


[User] Please transcribe this text

[Assistant] Outside in the cold, Ethan's heart was beating fast.


[User] Please transcribe this text

[Assistant] His eyes followed the girl's red scarf and cloud of brown hair.


[User] Please transcribe this text

[Assistant] As she danced in faster and faster circles. The young man was Dennis Eady.


[User] Please transcribe this text

[Assistant] Dennis's own success with the young women of the village was well known. Ethan watched jealously as Maddie, the dark haired girl, held Edie's hands and smiled at him with her dark shining eyes. How can she look at him like that? Ethan wondered unhappily. Doesn't she realize what he is like?


[User] Please transcribe this text

[Assistant] Ethan used to walk into Starkfield to fetch home his wife's cousin, Maddie Silver.


[User] Please transcribe this text

[Assistant] On the few evenings when some chance of amusement brought her to the village.


[User] Please transcribe this text

[Assistant] Maddie had been with the Fromes for a year now.


[User] Please transcribe this text

[Assistant] She lived with them in their lonely farmhouse and helped Ethan's wife, Xena, with the housework.


[User] Please transcribe this text

[Assistant] Ethan had liked the warm smiling girl from the moment that she arrived.


[User] Please transcribe this text

[Assistant] And life and brightness into his home.


[User] Please transcribe this text

[Assistant] Like someone lighting a fire in a cold room But she had more than brightness


[User] Please transcribe this text

[Assistant] Living under his roof and eating his bread.


[User] Please transcribe this text

[Assistant] He could tell her things and show her things.


[User] Please transcribe this text

[Assistant] The bright stars in the clear night sky. Birds flying over golden fields.


[User] Please transcribe this text

[Assistant] The blue shadows of trees on sunlit snow.


[User] Please transcribe this text

[Assistant] And he knew that these things gave Matty and him the same feelings of deep, silent happiness.


[User] Please transcribe this text

[Assistant] He watched Maddie's laughing face as she flew round and round the room, and he felt lonely and unhappy.


[User] Please transcribe this text

[Assistant] Then he remembered a fear that he had tried to forget.


[User] Please transcribe this text

[Assistant] His wife was a cold, silent woman who noticed everything but said very little.


[User] Please transcribe this text

[Assistant] Her only real interest was her own ill health. But recently, she had started to complain more and more about Maddie's housework.


[User] Please transcribe this text

[Assistant] And to say things which worried Ethan.


[User] Please transcribe this text

[Assistant] I'll need someone to help me when Maddie leaves. She had said suddenly one morning.


[User] Please transcribe this text

[Assistant] Oh, Maddie'll never leave us while you need her. He replied.


[User] Please transcribe this text

[Assistant] His wife lay in bed and watched as he got dressed.


[User] Please transcribe this text

[Assistant] If a poor girl like her has a chance to marry a smart boy like Dennis Edie, I ain't going to stop her.


[User] Please transcribe this text

[Assistant] She said, in her flat whining voice,


[User] Please transcribe this text

[Assistant] The doctor says I can't manage on my own, so we'll need to hire a girl.


[User] Please transcribe this text

[Assistant] Life without Maddie. Ethan could not think of it. Her voice, her sweet smile


[User] Please transcribe this text

[Assistant] Her gentle arm and his arm during those night walks back to the farm.


[User] Please transcribe this text

[Assistant] These were the only things which mattered in his world.


[User] Please transcribe this text

[Assistant] Had he been stupid to think that Xena would not notice his interest in Maddie? He had not thought about it before. But now...


[User] Please transcribe this text

[Assistant] As he stood in the darkness outside the church,


[User] Please transcribe this text

[Assistant] He remembered other things that Xena had said, and his fear grew.


[User] Please transcribe this text

[Assistant] The dancers, now in their thick coats and scarves, came out into the cold night air. Ethan heard Maddie's voice in the crowd, and he stepped back into the shadows, suddenly afraid to speak to her. The crowd quickly disappeared.


[User] Please transcribe this text

[Assistant] And Maddie stood alone, outside the church, looking around her. Then a man's figure appeared. Nobody to walk you home, Matt? What a pity.


[User] Please transcribe this text

[Assistant] But ain't I lucky that I got my dad's horse and sleigh down here waiting for us. Come on, let's take a ride. The girl said nothing, but stood still watching.


[User] Please transcribe this text

[Assistant] While Dennis Edie went to untie the horse. In the shadows, Ethan, too, watched and waited with his heart beating fast.


[User] Please transcribe this text

[Assistant] Maddie held his life in her hands. Edie got into the sleigh and called to Maddie to join him. Then she turned and ran up the slope. Goodbye, have a lovely ride, she called back. Edie laughed.


[User] Please transcribe this text

[Assistant] A moment later, he heard the sound of Edie's sleigh going away and saw Maddie walking alone across the snow.


[User] Please transcribe this text

[Assistant] They stood in the dark shadows of the trees.


[User] Please transcribe this text

[Assistant] And their laughing voices ran together like


[User] Please transcribe this text

[Assistant] Water dancing down from the mountains in springtime. He put his arm through hers, but neither of them moved.


[User] Please transcribe this text

[Assistant] Ethan wished he could stand there with her all night in the blackness. Maddie took a few steps forward and then stopped.


[User] Please transcribe this text

[Assistant] Looking down the icy slope of the Corbury Road.


[User] Please transcribe this text

[Assistant] There were lots of people coasting this evening, she said. Ned Hale and Ruth Varnum?


[User] Please transcribe this text

[Assistant] Almost crashed into the big tree down there. It's so dangerous, that tree. You'd be safe with me, Matt, replied Ethan. Would you like to come coasting some night?


[User] Please transcribe this text

[Assistant] We could come tomorrow if there's a moon. Oh yes, how lovely. They walked along in silence, but then all Ethan's jealous fears returned.


[User] Please transcribe this text

[Assistant] I guess it's natural that you're going to leave us, he said at last. Leave? You mean Xena ain't happy with me? I know I ain't so strong or so smart, but I want to try. I really do. So you don't want to leave us, Matt? Where could I go? She whispered, almost crying.


[User] Please transcribe this text

[Assistant] Her answer made Ethan sad and happy at the same time. They continued their walk with the dark starry sky above them.


[User] Please transcribe this text

[Assistant] And the quiet lonely fields all around. At the entrance to Ethan's farmland, they passed by the Frome graves.


[User] Please transcribe this text

[Assistant] Ethan had always felt that the gravestones were looking at him and saying, we never got out of Starkfield. Why should you? But now he didn't want to escape.


[User] Please transcribe this text

[Assistant] All he wanted was to be with Maddie and someday to lie under that cold ground with Maddie beside him. Ethan was happy now in his world of dreams. For the first time he put his arm around Maddie. She let it stay there and they walked up to the farmhouse.


[User] Please transcribe this text

[Assistant] Zeena always went to bed early. On the nights when they came back late,


[User] Please transcribe this text

[Assistant] She used to lock up the house and hide the key outside the kitchen door. Ethan felt for the key under the usual stone. Matt, the key's not there, he said. This had never happened before. They began to look for it in the darkness. Suddenly,


[User] Please transcribe this text

[Assistant] There was a sound inside the house. They heard a step on the stairs and saw light under the door.


[User] Please transcribe this text

[Assistant] Then the door opened, and Ethan saw his wife.


[User] Please transcribe this text

[Assistant] A tall, thin woman with a blanket round her shoulders. She held a lamp in one hand.


[User] Please transcribe this text

[Assistant] And it's light through strange shadows under her thin lined face. She said nothing, and they stepped into the kitchen.


[User] Please transcribe this text

[Assistant] It was deadly cold, like a grave. Ethan shook the snow off his boots.


[User] Please transcribe this text

[Assistant] I guess you forgot us, he said, looking at Xena.


[User] Please transcribe this text

[Assistant] No, I just felt too bad. I couldn't sleep. I'm sorry, said Maddie. Can I do anything to help, Xena? No, there's nothing you can do. Xena turned away from her.


[User] Please transcribe this text

[Assistant] And why couldn't you shake that snow off outside? She said to her husband.


[User] Please transcribe this text

[Assistant] They left the kitchen, and the two women went towards the stairs. If I go up now...


[User] Please transcribe this text

[Assistant] Maddie'll see me go into the bedroom with Xena, thought Ethan. And I don't want that. Not tonight. I think I'll stay down here a bit longer. I've got some paperwork to do, he said. What, now? Said Xena. You'll die of cold.


[User] Please transcribe this text

[Assistant] Ethan did not answer, but turned back towards the kitchen. Then he saw the look in Maddie's eyes. Was it a look of warning? I guess you're right. It is awful cold down here, he agreed. With his head down,


[User] Please transcribe this text

[Assistant] He slowly followed his wife up to their bedroom.


[User] Please transcribe this text

[Assistant] I wore more clothes and a pair of fur-lined gloves. I don't sell myself that cheap. Take her! Get her!


[User] Please transcribe this text

[Assistant] One of the things I love most about linear algebra is that you can do linear algebra in two different ways. Two ways that are like different sides of the same coin.


[User] Please transcribe this text

[Assistant] And then, what that magic of linear algebra is, is that these two different worlds, the algebraic and the geometric, they really merge together into one coherent picture that is both beautiful and interesting and powerful. And I'm gonna show you just a little bit of that in this video.


[User] Please transcribe this text

[Assistant] So what do I have? This particular point. 4 minus 1. 4 to the right, and 1 down.


[User] Please transcribe this text

[Assistant] So, what we really learned here is that for these linear transformations that take lines to lines, and the origin to the origin,


[User] Please transcribe this text

[Assistant] So, in other words, we have this geometric world, we have this algebraic world, and we have different types of constraints. The transformation the geometric world was imposing that a straight line has to go to a straight line in the origin to itself.


[User] Please transcribe this text

[Assistant] When the convoy arrives, tell the officer I wish to thank him.


[User] Please transcribe this text

[Assistant] Why are you so surprised? You know how long that has been my dream?


[User] Please transcribe this text

[Assistant] Are you offended because I had to ask that you do not go outside the walls?


[User] Please transcribe this text

[Assistant] Oh, the other night I thought you felt somewhat differently.


[User] Please transcribe this text

[Assistant] I'm leaving for a few days. When I return, I hope to bring interesting news.


[User] Please transcribe this text

[Assistant] For years I've heard that dismal whimper from weary old men. That we cannot face our invader. But what will the answer be to this?


[User] Please transcribe this text

[Assistant] Word has come that the rest of the Kaids have refused to join us. They want no more French kills.


[User] Please transcribe this text

[Assistant] How can you say that? If you're somebody's- People are looking up to you, Billy. Like, how could you possibly say something like that? I'm like, you know why they're looking up to me? Because I say shit like that.


[User] Please transcribe this text

[Assistant] I say what the fuck I want to say. Because if I don't say it, what is the point?


[User] Please transcribe this text

[Assistant] I mean, this is actually made by this dude Emren Potato on Instagram. He's like, just the most G he could possibly be.


[User] Please transcribe this text

[Assistant] Woah, that rhymed. Oh my god, that was crazy. Nah, he actually put this whole thing together, and the socks too, even. Uhm, which is just, he makes stuff like this all the time, but.


[User] Please transcribe this text

[Assistant] I don't know, he's, he's just incredible, but I just like wearing like weird shit, like I'm just, I'm just trying to make people look at me, you know?


[User] Please transcribe this text

[Assistant] Right, uh, I mean, well what's funny about that is like, you know, we made the whole...


[User] Please transcribe this text

[Assistant] I mean, we wrote all of the songs in my brother's bedroom, and that's like, you know that, like that's kinda how it is, but.


[User] Please transcribe this text

[Assistant] And you know, like the world sort of knows it now, and people around the world know it, like tons of, it's just insane and insanely surreal, but what's cool is like, you know,


[User] Please transcribe this text

[Assistant] I'm still making music in his bedroom. We're still doing that. Like it's... I just think like so many people just...


[User] Please transcribe this text

[Assistant] Think that you need, you need to rent a studio and you need to have all these producers there and all these co-writers and all these like people and uuuh. It's like bro, like if you want to make art, like


[User] Please transcribe this text

[Assistant] I don't even know, like I don't, I just, I don't, I don't know, like, I don't know, I've, I've, I've always listened to just so much music, like since I was little, I was always listening to, you know,


[User] Please transcribe this text

[Assistant] Eight thousand different things at once, like I cannot.


[User] Please transcribe this text

[Assistant] I just, I've never been able to like survive without listening to music all the time.


[User] Please transcribe this text

[Assistant] You know, like once I lost my earbuds and I just like had a heart attack for like a week and it was crazy. But even since I was little, you know, like in the car my dad would...


[User] Please transcribe this text

[Assistant] Make a bunch of mixtapes of like, you know, tons of The Beatles and like Avril Lavigne and...


[User] Please transcribe this text

[Assistant] Tons of different artists in different kinds of genres and, you know, without sort of...


[User] Please transcribe this text

[Assistant] Some artists are sort of known to be like, oh that's kind of like...


[User] Please transcribe this text

[Assistant] There's so much in there, and it's so real, and the fact that, like, everybody's so, like, uh, yeaah, but they're, like, a joke, cause, like, uh, it's like, shut up, like,


[User] Please transcribe this text

[Assistant] It's their art because they made it because they wanted to and that's what I look for in music and always have really.


[User] Please transcribe this text

[Assistant] I think especially lyrics are like the number one thing, especially like the Beatles.


[User] Please transcribe this text

[Assistant] That, oh, I just think like, you know, like, let's say, I don't know, my chemical romance or Green Day, like,


[User] Please transcribe this text

[Assistant] It's such a certain kind of music that I really fuck with and I fuck with for like all of my life and


[User] Please transcribe this text

[Assistant] Same with like 21 pilots even. Like that's, that's one that I think...


[User] Please transcribe this text

[Assistant] They have put out some incredible, you know, projects and...


[User] Please transcribe this text

[Assistant] Just said some of the most real things that I think I've ever heard and also been


[User] Please transcribe this text

[Assistant] So original and so like themselves and I think that's why


[User] Please transcribe this text

[Assistant] I mean, we started working together, I think like...


[User] Please transcribe this text

[Assistant] I'd say a year before we actually wrote that song together, cause that was, I guess that was sort of the first full song we wrote like equally, I'd say. And like before that, you know, I had written a bunch of songs on my own and he had written a bunch on his own and then, I don't know, we just like


[User] Please transcribe this text

[Assistant] There was no intention whatsoever, there was no intention, no like...


[User] Please transcribe this text

[Assistant] I made it cause I, I'm not saying I made it, I'm saying I made music because I wanted to. He made music because he wanted to. He's my best friend, so.


[User] Please transcribe this text

[Assistant] You know, we're friends and we just make shit. And like, bellyache, we were just sitting in my garage and like,


[User] Please transcribe this text

[Assistant] I don't even know what we were doing. I don't think we knew what we were doing at the time and we were just like, you know, making some random stuff up and we started, you know, just ad-libbing a bunch of weird like, I don't even know what and I was like sitting all alone.


[User] Please transcribe this text

[Assistant] That was full of gum in the driveway. And we were like, what the fuck does that even mean? Like, what the fu- and then...


[User] Please transcribe this text

[Assistant] He was like, you know, I've explained it so many times, but I'm going to anyway because I kind of fly. He was like, my friends aren't far, in the back of my car are their bodies. Like, you're in a car with your friends, like, cruising down the street in my 6-4.


[User] Please transcribe this text

[Assistant] I changed the lyrics. Yea, so he was like in the back of my car, are there bodies? I was like, no.


[User] Please transcribe this text

[Assistant] Lay their bodies. We just killed all these hoes.


[User] Please transcribe this text

[Assistant] And they just lay there. And then that was sort of like, we were like, oh! And then it was like, woo! And we wrote whatever that song was, you know? Like that's, that's when our, our minds sort of, I think, realized that you can literally write about whatever you want.


[User] Please transcribe this text

[Assistant] And like that's, nobody does that, I feel like.


[User] Please transcribe this text

[Assistant] Well, I mean, it's just, it's exactly what you just said. It's like, I don't know, so much, so much music is like, I mean, I even talked to people that


[User] Please transcribe this text

[Assistant] Cause, okay, there's many things I could say. I have so many things in my brain like bubbling around in there, but you don't have to go through anything to write about it.


[User] Please transcribe this text

[Assistant] Or you can go through everything and write about something else. You know, it's like you can... It's literally like telling a story. It's not...


[User] Please transcribe this text

[Assistant] It's not something you can, you know, you can write about something you've done, you can write about something your friend's done, or you wanna do, or you used to do, or your mom did, or, you know, it's like, that sounded like an insult, like a your mom insult, but.


[User] Please transcribe this text

[Assistant] Yeah, but like, cause I've even talked to people that are like, you know, Billy, you're the reason that I...


[User] Please transcribe this text

[Assistant] I had no idea that you could write about anything. I thought, you know, you had to go through exactly what you write about because, you know, you're not...