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.
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)
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.
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.
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: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)
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.
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.
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
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.
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.
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.
@@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.
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.
[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!
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
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...
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?
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.
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.
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
May 23rd: Added Lock Delay and Lock Delay Resets, Fixed Leveling up with a value of "Line Clears to Level up" not equal to 10, made it unable to start at a speed of 0 (it freezed the game when harddropping), Added a line counter, Fixed the I piece "Floating" when facing up with a Y pos. of -2 (Solution: shift the whole board one row higher) Added SRS kicks and 3 Next Piece Previews
@@XenonNeko May 24th and 25th added optional Guideline Scoring. - All Clears - Combos - Back to Backs T-Spins are in the works Also added Line Clear SFX! :D
@@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!
Wait if I wanna do a gif I don’t have to do “forever. repeat until ____. next costume. Wait 0.2 seconds”? Wow, well I’ll still choose do it since it’s simple.
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
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)
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.
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
This is a pretty good project! I was so happy when you switched to the delta time method.
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 dont understand programming, and i have no idea why this vid popped up in my recommended. But this was fun to watch xD
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.
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: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
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
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 😮😮😮😮😮😮😮😮😮😮😮😮
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)
3:00 You can recolor with the color effect block, however getting the colors you actually want is tricky.
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
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.
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.
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
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
there's a block where you can turn the sprite technically but not visually
that thumbnail was so good i clicked and immidietly commented this
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.
2:10 the plural of Tetris is Tetrises
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
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.
You are now Griffpatch
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.
it’s already hard enough to arrange a shape out of the blocks
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.
AWESOME!
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.
you should consider implementing matrix in scratch when working with tiles on a set grid in makes things simpler
[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:51 oh, by the way, scratch runs at 30 fps (unless you use turbowarp).
idea: turn the blocks into scrath cat but its limbs being the little parts and the main bit/center being the face
or for creating the peices, you could just.. set the rotation style for the peices to "dont rotate"
thanks for adding subtitles
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
ya know you are actually better than me at scratch... nice job
I made geometry dash in scratch as well
Tip: Use wait 0 second to make scratch wait one frame + Scratch forever loop each loop waits one frame
As someone who spent their childhood making shity FNAF games on scratch my mind in BLOWN
Wow very good you used alot of advanced grid system
im recreating mario 64 in scratch lol, but it was nice watching this haha. good job
5:00 ... there's literally a block that you can change to "don't rotate". bruhhhhhhhhhhh
This video is 10000x better cos of the crave gaming music
Not to say it’s bad otherwise. It was a great video
Turn sprite rotation off so it looks the same, but the move (steps) command works
i made a whole ping pong game in scratch when i was a 4th grader
is anyone going to talk about 12:44
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.
I thought it was griffpatch video lol😂
You are so underrated! It looks very good :)
I'm making Tetris in Scratch right now. I'm "play testing" it more than I'm working on it 😅
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 love seeing game devs fumble around and code things they don't need to lol
Ä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.
Me over here still trying to use velocity in scratch:
underrated as hell
YAAAAAAAAAAAY FINALLY SOMEONE WHO DOES SOMETHING I DO!
thanks for the idea!
Awww yeaahhh!!! New video!!!
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...
As a man who has done this last year,
I can confirm this man's pain
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
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 really don't understand why they made the pen an extension in scratch 3 and not just a feature like in scratch 2
actually lemme try making tetris in scratch it seems fun
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.
17:15 Here, he obviously means desmos
7:54 what a coincidence, scratch already runs at 30 frames per second.
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.
Big L on the 3d earlier. But you did really good on tetris!
🤯 My mind is broken right now
5:32 my brain had an idea with that heard, ''i piss''
now add SRS, allspins, max SDF, kick system and multiplayer
4:50 scratch has a setting that stops a sprite from Visually rotating.
cool
Im making a massive game there
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
YES, THE aeiou IS BACK
4:40 may I introduce you to rotation styles?
mind if i try to complete it?
Go ahead!
@@XenonNeko i'll keep you updated :3
also 2:12 it's "Tetrises"
May 20th: Fixed Piece spawn positions :3
Fixed Hold, and made it Render separately
May 23rd: Added Lock Delay and Lock Delay Resets, Fixed Leveling up with a value of "Line Clears to Level up" not equal to 10, made it unable to start at a speed of 0 (it freezed the game when harddropping), Added a line counter, Fixed the I piece "Floating" when facing up with a Y pos. of -2 (Solution: shift the whole board one row higher)
Added SRS kicks and 3 Next Piece Previews
@@XenonNeko
May 24th and 25th
added optional Guideline Scoring.
- All Clears
- Combos
- Back to Backs
T-Spins are in the works
Also added Line Clear SFX! :D
As a scratcher, these things are really complicated. I haven’t watched all but I can guess you are using lists and clones/pen.
3:13 the music transition here is crazy
theres only 4 rotation states for each piece so it wouldve been way easier to just draw each rotation manually instead of making that whole system lol
it was so hard because you were coding everything in 1 sprite 💀💀
True though
4:40 YOU HAVE A BLOCK THAT CANCELS VISSABLE ROTATION
I found out too late
I am also working on Tetris because all others like... SUCK A LOT LIKE LITERALLY NO COLOR CHANGING
I almost forgot your channel existed. Sorry man?
I also tried to make Tetris I scratch
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!
great video tutorial!!! 😍
Wait if I wanna do a gif I don’t have to do “forever. repeat until ____. next costume. Wait 0.2 seconds”? Wow, well I’ll still choose do it since it’s simple.
2:55 it does, in fact work like that 😭
I must be missing something! All I could get the white sprite to look like was really pale versions of all the colors.
6:02 you made diagonal Tetris