Placeholder Image

Subtitles section Play video

  • Hello.

  • A little out of sequence video.

  • I was challenged on my discord server to code the game break out in 30 minutes, and I was to do it live in front of an audience.

  • I'm not gonna get into the habit of loading my life streams, but I thought this one had enough educational content that it should be going on main YouTube channel.

  • Anyway, this is how we got on Enjoy S o.

  • The title of the stream is the sign Hunters challenging Assigned Hunter is a member off the discord community who had the idea that maybe I should have a go at trying to program break out as fast as possible.

  • Originally was 20 minutes.

  • We negotiated toe half on hour.

  • I think it's probably gonna be more like 45 minutes, but it might serve as a useful video for people who haven't used the console game engine for anything on Dhe.

  • They can look at this and see how something is done from scratch.

  • I'm not saying we'll get it all right.

  • And perfect.

  • First time.

  • I also don't think it'll look very pretty, but we can see how we get off of the audio levels.

  • Okay, can somebody give us a shout?

  • So let's have a go.

  • I'm going to start a timer just because it's fun to start the timer, but I don't think I'll be able to do it in half an hour.

  • But we'll see.

  • I think we'll only get it something, something doing within an hour, anyway.

  • So let's have a go, right?

  • Good time is ticking over.

  • So the first thing we want to do is actually include the console game engine.

  • And then we want Thio overwrite the class that it provides, so we'll have to do that ourselves.

  • So we'll call this one a recount.

  • We'll see Consul Game Engine.

  • And so the point is that the council damage and provides two functions in the background, which the operator or the user will need to override to facilitate gameplay.

  • Well, just stick in a constructor.

  • Remember, I'm on the clock, so I'm not going to be describing everything into much detail.

  • You'd usually stick your name in the Let's Do the two overridden functions avoid on.

  • It's not Boyd is.

  • It's bull on user creates, which is where we'll create all of our static resources of course, I probably won't be able.

  • Thio, read the Read the chapter whilst I'm doing this.

  • I'm not gonna be pausing the timer, um, on on user dates and that passes in f elapsed time, which is what we're using to keep everything in sync.

  • What's he got to class?

  • We then need to create our main function.

  • You gonna be my typing that's gonna let me down with this on.

  • We want to create an instance of our class.

  • In this case, it's a great count game.

  • Once we've got that, we want to create the console with the construct Consul function.

  • Until that we pass in the resolution, which we're going to draw things out now because I've been using it a bit recently.

  • I'm going to use to 56 by 2 40 by four by four.

  • So that's the width and height in characters on the size of the character is going to be four by four pixels.

  • I'm going to assume that that's going to work so we'll just call the start function straight away.

  • Let's have a look.

  • Not gonna work straight away, not returned tree from that.

  • So if you return true, it doesn't cause the game engine to stop.

  • If any of these functions return false, it will automatically cause the game engine to stop and clean up.

  • So there we go.

  • We got a window running at a number of France for second.

  • Good.

  • Don't read code.

  • We're the splits.

  • Yeah, I should have just splits, but I need some more splits to work against anyway.

  • Right?

  • So how are we going to structure this?

  • Not even thought of any of this.

  • So we're going to need a level that represents the blocks.

  • I'm going to stick with the old Jerry A way of doing this.

  • I'm going to create a string todo Let's define what we're going to have as a level.

  • I think level's gonna need a width and height as well.

  • How wide is an ark annoyed level?

  • I have no idea.

  • I'm going to pick 16 pixels.

  • What's 2256 divided by 16.

  • 16.

  • So we get up sort of half the screen with blocks, maybe something like that.

  • Okay.

  • Point on the hike would be 16 blocks to 40.

  • Tango on a second.

  • That's 15 pie.

  • That's going to be the full playing field 16 15 draw that recall it would hold it level right?

  • So, to the level I want to dio Want to make sure you count this out properly.

  • 123456789 10 11 12 13 14 15 16.

  • But right, let's put in some blocks then, um, so we're going to use the fir boundary blocks.

  • I think we'll use the hash symbol, so let's just get it to draw the level to begin with.

  • Firstly, will probably want to erase whatever this.

  • I'm going to cheat a little bit by using the space character to do that.

  • So let's draw the level.

  • Let's assume a block is eight by eight grid with Yeah, I know So So I'm going to do two nested four loops and we're going to draw the contents of the level to the screen So way.

  • Want a switch block for the level at that position level?

  • Why times and with plus six case, What did we have?

  • So if it's a hash that's going to be our boundary, it's Phil Recht.

  • Uh, next time's and block coma White times and block Common X plus one times and block comma y plus one signs and block and on what color were going to do.

  • We want that to be a full solid pixel on.

  • We'll set that thio g white.

  • So the boundary off the level is going to be white.

  • Lots of little red squiggles there.

  • Why is that?

  • Oh, it's not Phil Rector's.

  • It is, uh, just felt.

  • So it's found a Windows commander.

  • Oh, yeah, Phil, that's for a regular block.

  • Was couldn't paste that on for empty space, which I'm gonna use the period symbol for will draw that as block quick.

  • Look.

  • Okay, it's a little bit smaller than I thought it was gonna be, But maybe this is a scale to work, and we can play the numbers later.

  • So let's just put in some other types of blocking here.

  • Insert.

  • We'll use the numbers one to represent a block.

  • I don't know.

  • Maybe later on, I'm not.

  • Maybe not for this challenge, but if we choose different numbers, perhaps that's how many times you have to hit them before they disappear.

  • But let's let's just fill that in for completeness.

  • We also want it's a one c.

  • You do use the insert k.

  • All those GS code people that don't have it.

  • We'll set the cool of the block to bay.

  • Agree?

  • Okay, so it's now draw in a bat on, add some user control.

  • Tow it.

  • We'll try and work in the floating point.

  • The main mats as the bats only really got one position, hasn't it?

  • It's just going to be bat, I suppose, on.

  • We'll set that to the middle off the playing field, which is going to be, Ah, something like 64.

  • We'll see.

  • Um, let's draw that into so for the bat will just draw in a line for the bat with.

  • You might want to play with that with late if we're gonna add power ups and things, but we'll see.

  • Let's step back to being 10 either side of the center point.

  • That might become important.

  • So its drawbacks droll line take, and that's where we're going to draw it.

  • Well, it's going to be and height minus a little bit and heights on block minus two.

  • Uh, but plus and back Wythe, we'll draw that as pixel solid on again.

  • We'll draw that white.

  • We'll just keep that one appear that looks like it might be quite useful.

  • Let's just see if that's drawing a fact throwing anything.

  • I hope I did draw something too long to start.

  • There we go.

  • Okay, We've got a bit of a bath.

  • Let's sound some controls for the bats.

  • Now s So we're going to use the get key.

  • Will use the left and right arrows.

  • It's only if it's held down.

  • Do we want to do anything that the left yourself down?

  • Now we want to deck Ament the fat.

  • I don't know what speed is going to be yet, but we'll see you choose a number the last time on if we want the right key.

  • We want to do the opposite now with no pony constraints on the back yet.

  • So it's going to drift all over the place.

  • So left and right, k.

  • Well, too slow.

  • Way too slow.

  • Changed.

  • I think it's going up.

  • Helps you impressing the right keys, doesn't it?

  • That's probably still too slow.

  • Double what?

  • Speed?

  • OK, so we put a bat in right now, it's time to add a ball.

  • We'll just start the ball somewhere in the middle is well, I don't know how far down is gonna be, but we'll probably be somewhere about right.

  • We'll also need a direction that the ball is traveling in Rome.

  • We now should I use it using an angle or sledges to with Delta's?

  • I'm just going to do with Delta's uh, Bolty X will just start that office.

  • We'll have to actually, we'll have to calculate that from an angle, sir.

  • X and one.

  • Let's do that here with a bit of code.

  • I want to pick a random angle for it to start with.

  • Yeah, runs divided by closing point.

  • Random number, please.

  • Giving me 01 times it was two pies.

  • Yes, 20.14159 times.

  • That's good.

  • So we'll set our four DX.

  • Because this way, I know I'm going to get a unit vector for the speed of the booth.

  • Okay, so we've got a full We need to draw the ball way.

  • Do fur ball to actually use a circle.

  • Yeah, Why?

  • No Bill circle Now I'm going to cheat a little bit.

  • Even I'm going to set the balls radius to be something like two or three.

  • I think for the collision, I'm just going to keep it as a single unit.

  • A single pixel ball has left a fact about with the collision of the wife S.

  • O F ball, except for why Radius I said that to get just two pixels ball is going to be a solid again yellow.

  • Let's just say that just indeed.

  • Drawer fall.

  • Yep, Right.

  • So now we want to update the physics off the ball and we'll do that after we moved the bat to give the players chance.

  • So this is where it gets a bit tricky and fun.

  • Now let's have a look.

  • So the ball needs to have its position updated so full X plus equals, you know I'm going to do.

  • Actually, I'm going to maintain a cache of where the ball waas.

  • I think that's probably how I'm going to solve the collision detection.

  • Let's see.

  • Bull X plus equals ball.

  • The X on times the last time, times some speed.

  • We don't know what it is yet.

  • We won't do the same for why just stick that a beer in a temporary constant area B equals 20.

  • Let's just have a feel for how fast that is really slow.

  • Also, disappointingly, it's also just sort of gone straight.

  • Why's that?

  • What was going on?

  • So the ex is that Dean Wide Little Tiny number?

  • Maybe it's just unfortunate coincidence.

  • That's how it started off.

  • I'll tell you what, we'll make it bean random to begin with, we'll just have it.

  • No 0.6.

  • Okay, good.

  • So let's get a bounce off solid objects.

  • To do that.

  • I want to work out where abouts in my array.

  • I am So that is simply and sell X equal value are all ex mines.

  • No, it's not.

  • Not minus divided by something similar for why, Okay, I'm also going to get so new necks.

  • We'll do something similar to this old ex using the older variables on.

  • The reason I'm doing this is because I'm going to make a check on the weather Collision has occurred by looking at Watts the ball in an empty cell before it was in on occupy itself.

  • Because that way I can also work out to make it right.

  • I can work out which direction I've hit the cell from which army to doing also deflect the ball appropriately.

  • So let's just see what happened with new cell.

  • So actually grabbed the contents of the cells.

  • Thio char New cell equals level.

  • New cell Why?

  • Times And with new cell x No time for these to the amateur time wasting mistakes on.

  • Of course, that's not new, is it?

  • That's actually old.

  • And that one's old on that one.

  • Old right?

  • Got there in yet.

  • So if news cell equals, let's just do it, do it.

  • Let's just test to see if we get the collision so that working first, if New Cell is a solid wall, as in it's the boundary, then we need to work out which direction have we hit from?

  • So I can do that by saying, If on new called these new cells in a cell, new X is greater than And so I knew why old ex that way.

  • I hit the coming from the left, so that's a collision in the left axis.

  • So I want to invert in that situation.

  • Let's just see what happens that so the ball's coming along.

  • There we go.

  • So it bounced off the wall.

  • Okay, it's gone after pounds.

  • We'll worry about that in a minute.

  • Well, just speed the ball up.

  • Might move.

  • Make it move a little bit quicker.

  • Let's do something similar for why I think just to test all of this out on going to put in an artificial floor for now, I don't think I'm going in the right direction with this, We'll see.

  • Yeah, okay.

  • It's that drifts off into the middle of nowhere and, you know, with some sort of circular logic here, that's not gonna make any sense.

  • Corners.

  • Okay, so that's a bowl bouncing around.

  • Good.

  • Good.

  • What we shall also do is in the event off.

  • It's not being not being a full stops of empty space.

  • New cell, our one brute force.

  • Poppy, you if it's a number, I'm just going to set the number two being space.

  • Okay, Okay, okay.

  • Hits anything.

  • It's going to inverse its direction.

  • If it hits a number, it's going to change that to a space and still inverted direction.

  • Look at that.

  • Okay.

  • All right.

  • So now we want to worry about the bat.

  • Uh, so we know a little bit of a check in the bat if the ball is greater than where did we petition the bat?

  • But I put it on height claims to minus Ah, if Theo the F four y is greater than that position vertically, then we want to check.

  • Is it within the bounds?

  • Off the bat?

  • Full access.

  • Great Savannah back minus and wit on Ball X is less than plus, and that's wits, sticks and brackets in there not to tempt fate.

  • Want to bully?

  • It'll tell me, uh, if it's s So we've hit the bats.

  • We want to invert the y Axis else dead.

  • Which point we'll look choose Will sent the ball to Bay Bull X equals on with divided by two times on block.

  • We'll set the why to be somewhere also in the middle.

  • Wilson and the two randomly choose an angle again.

  • We'll take all of that, right?

  • So let's just remove this wall.

  • Okay, bounced off the bat.

  • Come on, ball faster.

  • Let's just try and die and see what happens.

  • Okay, so the ball gets respond somewhere on the game.

  • Continues way.

  • Want the ball to just be a little bit quicker.

  • It's a really good songs that have been back around when this is play s so we just want to constrain the fat.

  • Now don't wait.

  • It's not here So the bats, Linus and wit?

  • No, that's not shape.

  • Yeah.

  • Yes, it is.

  • Is greater than is less than on block way.

  • Want to set that fat equals n block Plus on back with on for the other side, If that's a plus.

  • And bat wits is greater than and with a Glock equals with finest.

  • And so forget about trying to stop the ball.

  • It's just make sure the battles we get semi colons, semi colons.

  • Okay, kind of gets on that side.

  • Stop solid on that.

  • So?

  • So it's there with take one.

  • So knowing that let's just stick in a few more blocks for an interesting shape in the This one is great.

  • Block.

  • Come on.

  • Don't let me down now.

  • How are we doing?

  • Almost a big crash.

  • Why's it going through the back?

  • Well, I think with your acceptance is that good enough for break out in half an hour?

  • Can I stop the timer?

  • I think that's not bad.

  • I mean, we could have had more bells and whistles to it.

  • There we go.

  • 29 26 75.

  • There we go.

  • Well, never been so nervous in my life.

  • Yeah.

  • So what I need is a team, uh, is that the writer think their way.

Hello.

Subtitles and vocabulary

Click the word to look it up Click the word to find further inforamtion about it