btw, if u add multiple when flag clicked blocks, both run when flag clicks, allowing some scripts to be seperate from "wait" blocks in the forever loop of the other chain of blocks. this helps with things like snappy-ness.
@@XenonNeko Additionally you can use DaysSince2000 to create your own wait blocks which is a better alternative, and if you're worried that the wait blocks have more precise timing, they don't. Though, you'll have to multiply DaysSince2000 by 86,400 to get the value in seconds.
I love this video, and how it explains how scratch works. Most youtubers just try to make fun of it and say "How limited it is" but you described it very well in a way that makes it seem more like a game engine, which is what it is. Even if it is for kids, it does it's job very well, and i have been using scratch for years with no issues.
I have been using scratch for many years, and love it so much, but I still don't say it's a game engine. It's way more inline with regular programming than a game engine. A game engine usually takes care of physics and more, but scratch just gives you the basic tools. Scratch does have moving in a direction, but that's already a common programming concept, turtle graphics.
@@funkymossIts done enough for what I need now lol, my account name is this_is_a_name_yes Its called Performance task (inscryption style card game) Note: its INSPIRED by inscryption, i did NOT do a good job modeling after it lmao. Other note: Don’t speak with the book, it might get ideas… It will likely receive updates, as there are only 10 cards, half yours, half not.
Just wanted to let you know, the forever loop isn't ONLY a forever loop, but it also yields for other "threads" once the end of the loop is reached (if you put multiple flag clicked blocks for example, those scripts would then get processing time), and automatically waits for the next frame. This means loops are capped to 30 fps by scratch itself, so you don't have to do any timing work ! The only way to prevent this is to create a function (define block) with the "run without screen refresh" option on.
Well, scratch does cap it to 30 fps, but that doesn't mean lag can't happen. Using delta time is much better. Plus, this also caps the fps on turbowarp, which can run scratch projects at higher fps, as high as 256 (but usually just 60).
@@ego-lay_atman-bay Delta time is obviously superior, and for that, the `days since 2000` block actually is pretty cool if you want multiple timers (to avoid using the `timer` value which can be used for stop detection). It can get really precise, being a floating point number ! For small projects though? you aren't gonna lag scratch much, so it's fine.
@@lpinf Yeah. I switched my games to Google Chrome’s 32 fps, so it also works in the offline scratch program. I think most people use 32 fps for their games. I always used 23/24 until now.
the funny thing is, one of the sample projects that would COME with scratch (the very old 1.x versions for windows) was in fact a Tetris clone. It had levels and speed-up I think, but otherwise it looked far more boring visually, so I'll still say yours is better, lol (but also old Scratch had less to work with i.e. you couldn't create and define your own blocks/functions)
I loved the vibes in this video. I couldn't follow along the actual makig process very well since I don't know much about programming or scratch, but it was still a great watch! Keep it up gamer
4:39 there is a block that allows you to do this. There is a block in movement (I think) which is set rotation mode and you can set it to don’t rotate so the object moves like it’s rotated but it doesn’t look like it, if you know what I mean.
4:43 there's a block in the motion tab that lets you set the visual rotation style to only left and right. It might also have a setting to stop visual rotation completely but i'm not sure
14:30 cuz object wants to go beyond the screen, but scratch does not allow this and therefore moves the figure a little to the other side, but part of the figure remains behind the visible part ((for example, when a shape is rotated near the side of the screen, there is a chance that its coordinates will change, especially if they are J and L shapes and their long parts go beyond the screen)
professional scratcher here. there is a movement block called "set rotation mode to ()" and there is an option to remove all visual rotation. also, you can have numbers less than 1, eg 0.5. it will also work if you put in .5, which is neato.
3:15 With that nice black background it should make recoloring your sprites easy, to change the color of the sprite you set the color effect to double the value you want it to be, to get the saturation you set brightness effect to one hundred minus the value you want your saturation to be, and to get the brightness effect you set the ghost effect to one hundred minus the value you want for brightness. I may have gotten some of the mathematics wrong since I haven't needed to use this in a while, but that is the overall gist. Unfortunately using ghost effect for brightness makes it hard to then have actual ghost effect.
1:13 In my opinion, it's best not to use triangles, 3d rendering doesn't need triangles, any illusion will do, and bill-boarding is an illusion. But, there's more you can do, like if you want to render a 3d line you can project the two points onto the screen then put your 2d image in-between the two points, scale it to fit between the two points, and rotate it to match the slope of the line.
i think it would've been cool to see the process behind implementing other game mechanics such as SRS, T-spin line clears, and back-to-back. you can most likely find more info about this by looking at tetris wikis and things, so i'll spare the details, though i still think it would be neat to see someone show the thought process behind programming those mechanics into the game
@@XenonNekobut with clones are way less complicated and can use the if touching blocks in sensing and rotate using movement blocks instead of all that math stuff and code
@@XenonNeko Clones are easier, but not really the best for rendering, stamping is generally optimal, however clones do have their use case. Generally, clones are best used as extra data storage because if you make a list that is "For this sprite only" then clones will have their own separate version of the list that has different values, this is useful if you are storing a lot of data that can't fit on a regular list that only has 200,000 maximum items, though there is also a maximum of 300 clones so there is that to consider too.
@@XenonNeko most things on grid that need collision detection are generally better with lists than using clones because the touching block is a lot slower than the check a thing in the list blocks.
Alright, next I expect you'll be trying machine code, the best of all worlds, there will be no strange decisions from Unity, no weird block-based limitations, and a lot of time and effort spent.
Adding a score is easy, just add a score variable and increase it every time you clear a line, and also add a top score cloud variable or a leaderboard.
[Funfact]: in scratch the [ Change [ Color ] by ( Number ) ] block doesn't work with Black/White sprites exactly why some people make the base sprite Red (mainly) or other colors!
7:57 Oh wow, that's a funny thing, you're clearly used to programming languages where it will simply crash if you don't have delay at the end of any loop that runs forever, however in Scratch it automatically is capped at 30 fps. Indeed, I believe that you unintentionally made a 15fps game with that wait block.
6:04 Oh wow, that looks interesting. If I remember correctly, I just stored a sheet that included every rotation and piece, but that might have been on Excel now that I think about it.
No rotating idea: just switch the sprite's rotation style to don't rotate it can still move as usual, but you don't have to worry about the game getting messed up because of a rotated block
@@Fiberoeatingfiber -ī is the second declension ending which is applied for nouns with -us, -em, or -um at the end of the nominative form. however, no one in real life cares enough to correct you so you can call it that if it’s more comfortable lol
@@Fiberoeatingfiber an example would be avis, for which the plural would be aves. because "tetris" also ends in -is we could use avis, avis as an example and use tetres of course, tetris isn't a latin word so as long as people know what you mean it works!
I think scratch / block-based in general is just about the stupidest, dumbest, worst possible way to make games and just love watching people hurt themselves trying to do this stuff keep it up, good video.
Solid project and good way to go about it for what you were going for. Variable names are very clinical and make the video hard to follow at times. Also, for your line clearing script did you have that iterate per frame or per update?
Do not rotate mode: exist This dude: I don’t care about losing that heart so I’m here to say that this comment have no intention of hating him, his work is pretty incredible to do in Scratch from scratch.
never heard the square piece being called o-piece lol. Anyway, really interesting, my idea for the shading would be to have the board, then the tetris fall down on the board and then have an additional third layer with only the shading, so when a tetris enters the board, the shading will always be on top. But I have never used scratch and you couldnt do cool animations so,...
So the thing about the "bag" is that getting 2 pieces in a row isn't actually a bug. It's part of tetris strategy, so it didn't need to be fixed. I thought it was weird to put effort into changing a fundamental part of tetris in a challenge about making "good enough" tetris...
now that I think about it you didnt need to make a rotation system... you could have just made a list for example the L piece and then just going trough it so like the list would be like: (lets say that the grid is 3x3 ) (rotation right) 1: 000111001 (rotation down) 2: 010010110 (rotation left) 3: 100111000 (rotation up) 4: 011010010 1 = there is a block 0 = there is no block then you would just make it so that when you pressed left the place in the list would shift by -1, and if right the place in the list would shift by +1 which would completly delete the issue of coding the rotation.🧇
13:04 I know that you can do whatever set of rules you want for your implementation of tetris but “fixing” that thing where you can get the same piece twice in a row because of how the bag system is set up is actually not something that needed to be fixed and you just made more work for yourself for something that didn’t feel right to you… getting 2 of the same piece in a row can let you chain 3 tetrises by holding an I piece and then randomly getting two I pieces in a row from the bag, which is relevant in the verses tetris games like tetris 99 or Puyo Puyo tetris 1&2.
4:50 im late but you can turn on dont rotate in motion category to make the sprite visuals not rotate 8:00 scratch has a default framerate of 30fps, the wait block here only lets other scripts run before continuing the rest of the loop
4:26 could of used the set rotation style block and changed it to dont rotate
I was about to say that
"could of"
EXACTLY
Could ‘of’ used change x by and change y by
@@YourLocalGP8 nah u can’t cuz that’s not what he’s doin
btw, if u add multiple when flag clicked blocks, both run when flag clicks, allowing some scripts to be seperate from "wait" blocks in the forever loop of the other chain of blocks. this helps with things like snappy-ness.
Oh wow! That's neat!
@@XenonNeko Additionally you can use DaysSince2000 to create your own wait blocks which is a better alternative, and if you're worried that the wait blocks have more precise timing, they don't. Though, you'll have to multiply DaysSince2000 by 86,400 to get the value in seconds.
Except you can run into sync issues. That's why many lot of scratch games use only 1 green flag clicked block (even griffpatch uses 1).
I love this video, and how it explains how scratch works. Most youtubers just try to make fun of it and say "How limited it is" but you described it very well in a way that makes it seem more like a game engine, which is what it is. Even if it is for kids, it does it's job very well, and i have been using scratch for years with no issues.
Thank you!
I have been using scratch for many years, and love it so much, but I still don't say it's a game engine. It's way more inline with regular programming than a game engine. A game engine usually takes care of physics and more, but scratch just gives you the basic tools. Scratch does have moving in a direction, but that's already a common programming concept, turtle graphics.
In my computer class, im making an inscryption style card game. Scratch is a funny little thing.
i love inscryption!! can you give me an update when you release it?
@@funkymoss sure man!
@@funkymossIts done enough for what I need now lol, my account name is this_is_a_name_yes
Its called Performance task (inscryption style card game)
Note: its INSPIRED by inscryption, i did NOT do a good job modeling after it lmao.
Other note: Don’t speak with the book, it might get ideas…
It will likely receive updates, as there are only 10 cards, half yours, half not.
@@funkymossi hope he didnt forgor
@@parali30he forgor
Just wanted to let you know, the forever loop isn't ONLY a forever loop, but it also yields for other "threads" once the end of the loop is reached (if you put multiple flag clicked blocks for example, those scripts would then get processing time), and automatically waits for the next frame. This means loops are capped to 30 fps by scratch itself, so you don't have to do any timing work ! The only way to prevent this is to create a function (define block) with the "run without screen refresh" option on.
Well, scratch does cap it to 30 fps, but that doesn't mean lag can't happen. Using delta time is much better. Plus, this also caps the fps on turbowarp, which can run scratch projects at higher fps, as high as 256 (but usually just 60).
@@ego-lay_atman-bay Delta time is obviously superior, and for that, the `days since 2000` block actually is pretty cool if you want multiple timers (to avoid using the `timer` value which can be used for stop detection).
It can get really precise, being a floating point number ! For small projects though? you aren't gonna lag scratch much, so it's fine.
I’ve always found that scratch runs on 32fps, but 23 on Firefox. Maybe it’s 24 because my fps project isn’t that good lol
@@breakdanc3 I've had issues sometimes with broken FPS caps of 24 on Windows in some browsers :p
@@lpinf Yeah. I switched my games to Google Chrome’s 32 fps, so it also works in the offline scratch program. I think most people use 32 fps for their games. I always used 23/24 until now.
the funny thing is, one of the sample projects that would COME with scratch (the very old 1.x versions for windows) was in fact a Tetris clone. It had levels and speed-up I think, but otherwise it looked far more boring visually, so I'll still say yours is better, lol
(but also old Scratch had less to work with i.e. you couldn't create and define your own blocks/functions)
This is a pretty good project! I was so happy when you switched to the delta time method.
I dont understand programming, and i have no idea why this vid popped up in my recommended. But this was fun to watch xD
3:30 That is indeed one of the most useful blocks.
Good job! I've been using scratch for years...and I can't even fathom how to make Tetris
I loved the vibes in this video. I couldn't follow along the actual makig process very well since I don't know much about programming or scratch, but it was still a great watch! Keep it up gamer
4:39 there is a block that allows you to do this. There is a block in movement (I think) which is set rotation mode and you can set it to don’t rotate so the object moves like it’s rotated but it doesn’t look like it, if you know what I mean.
T-Spins:💀
Holding:💀
Perfect Clears:💀
jokes aside tho, i really liked seeing the process on how you made things, rlly cool!
😮😮😮 A New Scratch Game 😮😮😮😮😮😮😮😮😮😮😮😮
dude this is like your second time using scratch ever and your way better then me
that’s because he has coding experience in other coding softwares, Scratch is like an easier version of any other coding software
4:43 there's a block in the motion tab that lets you set the visual rotation style to only left and right. It might also have a setting to stop visual rotation completely but i'm not sure
I wish I would have known about this sooner!
yes that is true
whats the song at this part
@@ThePianoTutorialGuy "File Select" from Super Mario 64
Thanks man
Bro you are making amazing content.
Thats the First Video i have Seen of you, and i would have guessed that you Channel would be much bigger
14:30 cuz object wants to go beyond the screen, but scratch does not allow this and therefore moves the figure a little to the other side, but part of the figure remains behind the visible part ((for example, when a shape is rotated near the side of the screen, there is a chance that its coordinates will change, especially if they are J and L shapes and their long parts go beyond the screen)
Ive used scratch for 6 years and I love platformers animations and 3D Games
for your first time making an actual project on scratch, you did good
3:00 You can recolor with the color effect block, however getting the colors you actually want is tricky.
professional scratcher here. there is a movement block called "set rotation mode to ()" and there is an option to remove all visual rotation. also, you can have numbers less than 1, eg 0.5. it will also work if you put in .5, which is neato.
3:15 With that nice black background it should make recoloring your sprites easy, to change the color of the sprite you set the color effect to double the value you want it to be, to get the saturation you set brightness effect to one hundred minus the value you want your saturation to be, and to get the brightness effect you set the ghost effect to one hundred minus the value you want for brightness. I may have gotten some of the mathematics wrong since I haven't needed to use this in a while, but that is the overall gist. Unfortunately using ghost effect for brightness makes it hard to then have actual ghost effect.
1:13 In my opinion, it's best not to use triangles, 3d rendering doesn't need triangles, any illusion will do, and bill-boarding is an illusion. But, there's more you can do, like if you want to render a 3d line you can project the two points onto the screen then put your 2d image in-between the two points, scale it to fit between the two points, and rotate it to match the slope of the line.
i think it would've been cool to see the process behind implementing other game mechanics such as SRS, T-spin line clears, and back-to-back. you can most likely find more info about this by looking at tetris wikis and things, so i'll spare the details, though i still think it would be neat to see someone show the thought process behind programming those mechanics into the game
2 words USE CLONE
I personally feel that stamping is more efficient for tiles on a grid
@@XenonNekobut with clones are way less complicated and can use the if touching blocks in sensing and rotate using movement blocks instead of all that math stuff and code
@@PersonOverHeaven True. I'm definitely not used to the way things are done in Scratch 😂
@@XenonNeko Clones are easier, but not really the best for rendering, stamping is generally optimal, however clones do have their use case. Generally, clones are best used as extra data storage because if you make a list that is "For this sprite only" then clones will have their own separate version of the list that has different values, this is useful if you are storing a lot of data that can't fit on a regular list that only has 200,000 maximum items, though there is also a maximum of 300 clones so there is that to consider too.
@@XenonNeko most things on grid that need collision detection are generally better with lists than using clones because the touching block is a lot slower than the check a thing in the list blocks.
there's a block where you can turn the sprite technically but not visually
Alright, next I expect you'll be trying machine code, the best of all worlds, there will be no strange decisions from Unity, no weird block-based limitations, and a lot of time and effort spent.
that thumbnail was so good i clicked and immidietly commented this
2:10 the plural of Tetris is Tetrises
FYI scratch already runs at 30 fps, by adding the wait block you either made it run at 15 or it did nothing
I did eventually realize this after switching to delta-time later in the project. The delta-time always hovers around 0.03, which is 30 FPS.
Adding a score is easy, just add a score variable and increase it every time you clear a line, and also add a top score cloud variable or a leaderboard.
Definitely! Although I'd want the game to control a lot better before I felt right attaching scores to it.
Since I was already there, I went ahead and added score and levels and speed increase (No leaderboard yet, though).
@@XenonNeko nice :) this project is pretty cool btw
You are now Griffpatch
AWESOME!
As someone who spent their childhood making shity FNAF games on scratch my mind in BLOWN
You are so underrated! It looks very good :)
[Funfact]: in scratch the [ Change [ Color ] by ( Number ) ] block doesn't work with Black/White sprites exactly why some people make the base sprite Red (mainly) or other colors!
thanks for adding subtitles
7:57 Oh wow, that's a funny thing, you're clearly used to programming languages where it will simply crash if you don't have delay at the end of any loop that runs forever, however in Scratch it automatically is capped at 30 fps. Indeed, I believe that you unintentionally made a 15fps game with that wait block.
QUESTION: Would you be working more on Scratch even if you already know real-text-in-based programming? Just for fun!
I don't have any plans to return to Scratch at the moment, no.
it’s already hard enough to arrange a shape out of the blocks
6:04 Oh wow, that looks interesting. If I remember correctly, I just stored a sheet that included every rotation and piece, but that might have been on Excel now that I think about it.
I love seeing game devs fumble around and code things they don't need to lol
ya know you are actually better than me at scratch... nice job
No rotating idea: just switch the sprite's rotation style to don't rotate it can still move as usual, but you don't have to worry about the game getting messed up because of a rotated block
Ik this is one of his first time using scratch but this is painful to watch
Lol
im recreating mario 64 in scratch lol, but it was nice watching this haha. good job
latin nerd here, tetris is a 3rd-declension noun meaning the plural would be tetrēs!
dang it you stole my comment.
...i say tetri
@@Fiberoeatingfiber -ī is the second declension ending which is applied for nouns with -us, -em, or -um at the end of the nominative form. however, no one in real life cares enough to correct you so you can call it that if it’s more comfortable lol
@@Fiberoeatingfiber an example would be avis, for which the plural would be aves. because "tetris" also ends in -is we could use avis, avis as an example and use tetres of course, tetris isn't a latin word so as long as people know what you mean it works!
Tip: Use wait 0 second to make scratch wait one frame + Scratch forever loop each loop waits one frame
or for creating the peices, you could just.. set the rotation style for the peices to "dont rotate"
7:51 oh, by the way, scratch runs at 30 fps (unless you use turbowarp).
Awww yeaahhh!!! New video!!!
I think scratch / block-based in general is just about the stupidest, dumbest, worst possible way to make games and just love watching people hurt themselves trying to do this stuff keep it up, good video.
it's also good for prototyping
Solid project and good way to go about it for what you were going for. Variable names are very clinical and make the video hard to follow at times. Also, for your line clearing script did you have that iterate per frame or per update?
Thanks! Also, not sure what you mean by "iterate per frame or per update".
@@XenonNeko Are you checking for a line every frame of the game, or only calling it when a tetromino gets placed
@@_cfmca if I remember correctly, only when a tetromino is placed.
I'm making Tetris in Scratch right now. I'm "play testing" it more than I'm working on it 😅
Him: *Sub Boards*
Scratch: *Don't Rotate*
nah, he used lists, while using a game loop and a simple stamp render. so this isnt as simple as you expect lmao
5:00 ... there's literally a block that you can change to "don't rotate". bruhhhhhhhhhhh
you should consider implementing matrix in scratch when working with tiles on a set grid in makes things simpler
is anyone going to talk about 12:44
Do not rotate mode: exist
This dude:
I don’t care about losing that heart so I’m here to say that this comment have no intention of hating him, his work is pretty incredible to do in Scratch from scratch.
Yes, he’s not that good
Lol joke's on you I rehearted it (also thanks!)
Äh, you know that forever runs at 30 tps?
Every loop in Scratch does that unless it takes too long to go through the loop.
high contrast is the best mode (in my opinion)
never heard the square piece being called o-piece lol.
Anyway, really interesting, my idea for the shading would be to have the board, then the tetris fall down on the board and then have an additional third layer with only the shading, so when a tetris enters the board, the shading will always be on top.
But I have never used scratch and you couldnt do cool animations so,...
i made a whole ping pong game in scratch when i was a 4th grader
So the thing about the "bag" is that getting 2 pieces in a row isn't actually a bug. It's part of tetris strategy, so it didn't need to be fixed.
I thought it was weird to put effort into changing a fundamental part of tetris in a challenge about making "good enough" tetris...
now that I think about it you didnt need to make a rotation system... you could have just made a list for example the L piece and then just going trough it so like the list would be like: (lets say that the grid is 3x3 )
(rotation right) 1: 000111001
(rotation down) 2: 010010110
(rotation left) 3: 100111000
(rotation up) 4: 011010010
1 = there is a block
0 = there is no block
then you would just make it so that when you pressed left the place in the list would shift by -1, and if right the place in the list would shift by +1
which would completly delete the issue of coding the rotation.🧇
Turn sprite rotation off so it looks the same, but the move (steps) command works
YAAAAAAAAAAAY FINALLY SOMEONE WHO DOES SOMETHING I DO!
As a man who has done this last year,
I can confirm this man's pain
I made geometry dash in scratch as well
underrated as hell
7:54 what a coincidence, scratch already runs at 30 frames per second.
13:04 I know that you can do whatever set of rules you want for your implementation of tetris but “fixing” that thing where you can get the same piece twice in a row because of how the bag system is set up is actually not something that needed to be fixed and you just made more work for yourself for something that didn’t feel right to you… getting 2 of the same piece in a row can let you chain 3 tetrises by holding an I piece and then randomly getting two I pieces in a row from the bag, which is relevant in the verses tetris games like tetris 99 or Puyo Puyo tetris 1&2.
thanks for the idea!
Wow very good you used alot of advanced grid system
This video is 10000x better cos of the crave gaming music
Not to say it’s bad otherwise. It was a great video
idea: turn the blocks into scrath cat but its limbs being the little parts and the main bit/center being the face
I really don't understand why they made the pen an extension in scratch 3 and not just a feature like in scratch 2
YES, THE aeiou IS BACK
17:15 Here, he obviously means desmos
As a scratcher, these things are really complicated. I haven’t watched all but I can guess you are using lists and clones/pen.
5:32 my brain had an idea with that heard, ''i piss''
Me over here still trying to use velocity in scratch:
🤯 My mind is broken right now
I thought it was griffpatch video lol😂
4:50 im late but you can turn on dont rotate in motion category to make the sprite visuals not rotate
8:00 scratch has a default framerate of 30fps, the wait block here only lets other scripts run before continuing the rest of the loop
Big L on the 3d earlier. But you did really good on tetris!
Here before this is your top vid 🎉
it was so hard because you were coding everything in 1 sprite 💀💀
True though
Amazing!
6:02 you made diagonal Tetris
I almost forgot your channel existed. Sorry man?
I am also working on Tetris because all others like... SUCK A LOT LIKE LITERALLY NO COLOR CHANGING
0:55 spu7nix:
Fr
Uh oh, Tetris will murder you now
They're petty if they go after a Scratch project 🤣
I suppose we'll have to wait and see
4:50 scratch has a setting that stops a sprite from Visually rotating.
4:40 YOU HAVE A BLOCK THAT CANCELS VISSABLE ROTATION
I found out too late
4:40 may I introduce you to rotation styles?
cool
actually lemme try making tetris in scratch it seems fun
13:03 its not a fix, its a change. Because that is standard bag system behavior.
Right. Should have clarified, It was just my personal preference
I added a toggle for that behavior while implementing feedback from other people.