Sprites Behind Walls (Depth Sorting) | E4. Crazy Fun Raycasting
Вставка
- Опубліковано 26 чер 2024
- How to depth sort entities in a raycast 3d scratch game. In episode 4 we learn to raycast to a list, depth sort that list shuffling in our entities as we go, and then draw from our list to render the scene. Wow - and it's looking real spooky! This is an awesome tutorial for creating that 3d game you've all been wanting to make!
👀 Next Episode #5 - • Collectables & Enemies... (Early Access)
🔥 Bug Fixes - • Quick Fixes for Raycas...
Don't forget to submit your projects to the studio linked below by commenting the project URL in the studio comments.
My tutorials are for all budding game & software developers using Code Blocks. Scratch On guys!
🚀 Boost Your Creativity with Griffpatch
The Griffpatch Academy will take you from "Gamer to Game Creator"
Learn more at 👉 griffpatch.academy 👈
😺 Scratch was developed by the Lifelong Kindergarten Group at the MIT Media Lab. See scratch.mit.edu
🐱 Scratch Studio for this tutorial - scratch.mit.edu/studios/31052...
👀 Part 1 - • Crazy Simple Raycastin...
👀 Full Episode Playlist - • Crazy Fun Raycasting (...
👀 Quick and Fun Tutorials - • Quick and Fun Scratch ...
❤️ Scratch Addons - scratchaddons.com/
📹 Video Editing Software - techsmith.pxf.io/c/2682566/50...
-------------Video Chapters-------------
0:00 Intro
0:42 Behind a Wall…?
1:38 Raycast into a list
7:22 Drawing the Scene from the Lists
11:29 Ordering the lists by Distance
13:35 Insertion Sort
18:04 Include Entities in the Sort
20:20 Handle Entity Drawing from the List
24:34 Entity Brightness
25:43 More Entities
29:41 Fixing the Level Colors
30:27 Outro
Scratch:fun coding for kids
Griff:reality can be whatever i want
Hes got a point
Griffpatch goes really on board!
I bet he can make the next scratch fortnite
This tutorial is made for kids to be able to follow, but yeah i see what you mean
@@vaguedestruction this is impossible
scratch: helps kids problem solve
griffpatch: helps scratch problem solve
lol
lol
So true 🤣
25:47 Watch, as the wild programmer changes his emotions in less than a second.
Incredible! These creatures can change their emotions at command.
Well now I can make a horror game thanks to you Griffpatch!
hopefully scratch moderation spares me 😅
im making 1 TOO !
same?
Same as well! have you heard of baldi's basics plus? in the game there was a field trip when you go to a corn maze however if you don't escape the maze a GIANT gotta reap reap will reap all the corn leading Baldi to catch you and teleport to you to the bus when you left off. It's kinda like that but you need to find 9 corn in the corn maze while avoiding Baldi.
@@rafabielicki8652 This comment is old I already gave up making said game stop replying
lol same
scratch: Doesn't allow pen layering
Griffpatch: Fine, I'll do it myself
griffpatch is so smart, he can bypass a whole "no" from scratch
2160-12-31 23:57
2160-12-31 23:58
2160-12-31 23:59
1960-01-01 00:00
0000-00-00 00:00
@@ricardosantos2599 yes, ZERO
No memes here
Hey griffpatch. Your platformer series helped me make a game for my school's coding competition! i put my own twist on it ofc. but i hope i win! fingers crossed! :)
good for you :D
➡️ 🍀 ⬅️ here you go
🤲🏻🍀🍀🍀🍀🤲🏻
which one?
Plz win
man, your tutorials are so good that i don't even have to watch the video to follow
i can just listen
keep up the good work man
Next, he's going to make it 4d
It’s getting more and more real at the moment 💀
You mean 9885659466485935D?
bruh wat@@tonyaarnett2655
@@tonyaarnett2655 Our little comedian 😂😐
@@valdemarandersson3234who said he’s joking…. Griffpatch 2045 WHATS UP GUYS TODAY WE DO 4040404943838383838399D IN SCRATCH LETS GET SCRATCHING imagine tho
Nice to see you uploading griffpatch! You've been a massive inspiration for the Scratch community for years
Hey, thanks!
@@griffpatch hey help me pls im having a problem to where m height block is 3 and then the sprites size is 3 pls respond quick
Scrappy Doo says "Do you know Yamaha, both music and motorcycles? What about Yoshi & Pikachu?"
Hi, I animate too
@@griffpatch Hi Grifffpatch. I need help. At the end of the video chapter "Drawing the scenes from the List" I tested out the game, and then I was stuck under the ground, and nano disappeared. Can you help?
Wow! I’ve always wanted to know how to place sprites behind pen and this was super helpful! Maybe you could talk about how to texture the walls into simple patterns like bricks? Thanks for all your videos!
guess what
I love the little smiley face in the captions :D
i havent watched griffpatch in a while, and coming back after months and seeing that he passed 100k subscribers i can notice the evolution he is doing
200K now...
@@crusherblade8161 2015K now...
Now we need to have enemies that can follow us around the map, and this is a great tutorial series!
THIS IS SO COOL! I mean, I did have to split my projects’ updates in 2 (except for fnaf 3), but it was WORTH IT! Thank you so much Griffpatch!
Bro this tutorial is about A maze like backrooms not Freddy Fazbears Pizzeria dont know griffpatch does not know about Fnaf YOu Idiot William Afton
Surprisingly, over 1000 entities fit into my level. It was pure chaos and I loved it.
I just coded this onto a project and it was really fun and a bit educational! Can't wait for episode 5!
this man is awesome, like he created a literal 3D game in a 2D program, MY MAN JUST ADDED SOME DEPTH TO SCRATCH BRO
Ikr!
Its not true 3d though. While griffpatch has done a great tutorial raycasting is nothing new. Before true 3d games like “half life” came out most 3d games looked like the original doom or wolfenstein games. Raycasting is just creating the illusion that a 2d map is 3d
So he killed a man with a healing potion🤣
OMG its Fat Garbage Shrek @epicgarbagehere2011
I absolutely love your tutorials! You can teach coding in a fun, cool and interesting way and it is easy to understand and the end results are unbelievable! Thanks for the awesome tutorials griffpatch!
10:55 that public announcement edit had me laughing, especially because of the way it was said 😂
I've learned so much from you griffpatch! Great work!!
You could use the path finding algorythme in this project for the enemies!
And quite possibly the random maze generator for the level itself
By the way the pathfinder is quite slow when you are moving around but it works and for the maze generator form griffpatch, the problem is they used pen and not sprite but it could be very fun to have that stuff
@@undertalerandomvideos5222 the stamp in level generation breaks the project
*algorithm
@@undertalerandomvideos5222 Impossible Since both require pen, You would need to hide the map but there is no "if touching pen" block So It is a scratch impossibility; Just sayin'
28:05 Scratch: No, I won't let you use the "touching (Entities)?" boolean block in the sprite Entities
Griffpatch: Ok fine, I'll do it myself
Scratch: WHA-
Used this in a school project, and everyone loved it!
I already have a million ideas that I could make with this alone, can’t wait for part 5!
Who can wait for part 5? He's so good we beg for part [current part] + 1
@@funraven659 Lets say ‘Current part = X’. X+1 is what we always want. We also need an average time between parts, lets say ‘T’. What we want is Tx0 and X+1. Sadly this is impossible, so we need a work-around. Make a new scratch block. Lets call it ‘Condense Time’. Run without screen refresh. Okay! Now move this into some free space and apply the following: [REDACTED]. Now if we run this script… voilà! We now have a new episode. Rinse and repeat.
Read this in griffpatch’s voice.
Ok, @@theoriginaldrdust
Amazing tutorial! Even created my own “Sensitivity” variable at the beginning so it was easier to control how fast I looked around.
thats a really good idea man! is it alright if i use it in my game?
@@ballsucker89 yes of course! don’t worry I didn’t invent the idea of sensitivity
@@polypinesnek3744 thank you! this idea is so good and yet so easy to make
i did that already lol
I did too
The things you do in scratch are things I never thought to be possible in scratch.
28:00
scratch be like: we won't let you select another entity
griffpatco be like: fine. ill do it my own way
Ah yes, "griffpacho." Definitely a name.
Idea: when key M is pressed, the Level and player sprite have their ghost effect set to 90 instead of 100
Essentially giving a map of the level
Ha, I already have that added to the next episode scripts :) great minds!
Hey you stole that idea from my game >:(
yes
@@Speed-TV a lot of people did that
@@griffpatch i did that back when we hid the levels, where i made it
if
[set {ghost} effect to (40)]
else
[set {ghost} effect to (100)]
i can imagine scratch shorts where griffpatch teaches something as fast as possible.
but since he has to make it fast everyone already knows it but still enjoy
man i stay up for so long doing your tuts, I LOV ETHESE!!
THIS IS AWESOME!! I CAN'T WAIT T FINISH THIS!!!
You might want to cap off the entity brightness by using an if statement and a greater than block to prevent them from getting brighter than the original sprite.
this is a smart idea but its impossible, considering the brightness effect isnt a variable, so you cant input into an if statement. well, unless there's some work around for that i just dont know about
@@thejustlexa you take the brightness setting code and check if its not over 0, and if it isnt then do the basic brightness setting code. else, simply set brightness to 0
@@js62926 thats... not how it works? theres no way to check what the brightness effect is set to?
@@thejustlexa
if ( not ( ( 40 - ( Distance / 1.5 ) ) > 0 ) ) then
set brightness effect to ( 40 - ( Distance / 1.5 ) )
else
set brightness effect to ( 0 )
end
@@js62926 you could also just make it change a variable which brightness gets set to?
You should add jumping, and actuall floor collision,and render script (make platforms in the air). I would really want to learn that. Also, there is a way too make entitys look 3D with some maths and pen.
Dev, I was thinking about jumping!!!
I'm afraid, with the system currently, it is impossible (without making the game unplayible and glitch a lot) This is projecting a 2d world as if it was 3d Jumping is possible as an optical illusion
@@preloadingwastaking well it wouldn't be that difficult to add a Z height to entities even if the world is 2d, though like I said the world is entirely 2d so its not like there would be a point to doing that but it could be done
@@jlewwis1995 You are aware that you would need to do almost 200 more raycasters just for it, Raycasting is only meant for 2 cords. If you do make one that does it without remaking the whole system I'll take my words back (and it has to be playable)
@@preloadingwastaking uh no? Just move the entities up and down on the screen based on their height l? And implement y-shearing so the player can look up and down, obviously it isn't true looking up and down but that's beside the point, either way problem solved :p
scratch: intended for kids 4 - 8
griff: I DONT CARE, I CAN DO WHAT I WANT
3 to 17
I've said it before, and I'll say it again: Griffpatch is the most friendly, welcoming, and fun person I've ever seen in YT tutorials.
I do have an issue, though, if by any chance someone sees this and can help
I am making an FPS in the game, and the weapon animations heavily rely on fast rendering and FPS, since it is like a stop-motion gif for each weapon. How can I better optimize the rendering that removes the lag? Before this episode, the stop-motion animations for each weapon were running fine, but now they are slowed down a little.
Idea: Camera movement up and down would be very cool
would probably be hard, but would be very cool, especially for cutscenes and stuff
Awesome tutorial! Also can't wait for procedural world generation and the next mario episode!
Omg I can't wait to finish watching this series, then I could maybe use your multiplayer tutorial to add multiplayer 0-0
these episodes are the best out there
Make it so that we can transfer into different levels of the game because this seems like a perfect way to make a 3d horror game in scratch! Reminds me of IMSCARED
To change levels, just switch the Level and Level Color sprites when you touch an entity.
Awesome tutorial, a tutorial on how to make the entities move/chase you would be very cool too!
how was this 2 days ago the video literally just came out lol
@@DudeSusIsTaken
Joining to Griffpatch's Membership allows members to get early access on his videos
Make a sprite named bot and make another raycaster, except for the bot. Also make sure in the player raycaster you add the ability to look at the bot, Add a if inside the bot raycaster that checks if touching player (also make sure it has level too lol) and broadcast touching player, In a when i receive block point towards player and move 5 steps. There you go. (sorry i dunno how to do it with the 2d sprites)
I made the mistake of putting the skeleton sprite as my "Nano" and let me just tell you that the sprite is terrifying and the fact that it can just now teleport and clone itself basically is awesome, as fun as this tutorial is, my nightmares are going to be even more fun!!
28:20 Ohhhhhh Myyyyyyyy Godddddd, that trick is awesome! Thanks Griffpatch!
I thought about how the next episode would make all entities enemies and collectibles, so I decided to change to Tera because the characters other than Scratch Cat have expressions such as mad.
I'm going to make custom enemy sprites later but for now using a placeholder
@@PercydeRoloFangirlI’m just using a bean as a placeholder
BIG thanks for the tutorial! This is a lot helped me!
No problem!
Love the pilot announcement part
so cool and I learned a lot thank you for always answering my questions
Also like the idea of having enemies chase you!
Emperorororororoz55
yea
well if you want to just do what i tell you
make sure you do this in the entity's
step1: put a put a move [ the speed you want ] block in a forever loop
step2: add a look at block of the input of player
ya done
@@coolswag352 the only real downside is that they move through walls, they could work with ghost related enemies
@@jumpwithkarl ghost in among us
suggestion: it'll be so cool if you add a mini map on one of the corners that rotates with the player's direction 😉👌
just make the map visible when you press the m key, also make the player visible as well
@@PabTSM-OfficialChannel or make mini sprites to not f up the collisions when your resize it
its difficult trust me we tried
@@opinionatedfoxl8369 what if you stamped a shrunk version, and then reverted it before doing collisions
@@jyke321 PLS DO
12:30 Idk why but this pop sound with nano is so sweet
Bravo for all your projects, they are amazing, it's even better with all the help on UA-cam that you offer.
You're just a PROFESSIONAL!
Thanks a lot!
👍👏
I LOVE YOUR VIDEOS Griffpatch!!
This is so cool. I am really glad we have been able to do all of this in our 3D project. I can’t wait to explore everything else there is to see about this 3D world. Especially entity movement and collectibles. Best series in all of UA-cam. Thanks so much GriffPatch.
yeah
Griffpatch: "Wow, this represents a distance that is far, far away, much further than any well we'll ever draw." ( 13:55 )
Me: "MY GOALS ARE BEYOND YOUR UNDERSTANDING"
Thanks for tutorial now i can make my dream arena shooter!
Thanks so much Griffpatch!
Hey Griffpatch, I believe I’ve figured out how to add verticality to the camera! When messing around with base ray tracing code trying to add jump, I accidentally stumbled on it. I’m awful at explaining things but I’ll attempt to:
Create a new costume in the Raytracing sprite. Make that sprite absolutely massive. The bigger a sprite, the further it can go off screen from what I’ve seen.
Create a new variable to represent vertical looking directions(would suggest adding a cap to it of 400. It moves 4x as slow as normal directions from what I’ve tried)[I’ll be calling the variable *up* )
Then, where the normal bricks for raytracing is, replace the bottom of the wall generation with this
[switch costume to (Huge)]
[go to x: (x) y: (height - up)]
[if(y > -180){
[Pen Down]
[Change y by (height*-2)]
[Pen Up]
}]
[switch costume to (hitbox)]
This is probably a bad explanation lol. If wanted, I can send a turbowarp link with the vertical stuff,(unsure with how it mixes with enemies and other things yet)
Also Griff, massive thank you for the tutorials and everything else you have done for the scratch community. Your work is truly amazing mate
Oh, I simply did it by adding scratches mouse y variable to the height. I did the same thing with mouse x for turning, and now it feels like a proper first person game!
A turbowarp link would be nice.
damn, i really love this, its the best scratch raycaster tutorial series so far! keep going!
i suggest add a jumping mehcanic, textured walls or multicolored walls, and as a bonus, a path finding algorithm for the enitites!
Bro just predicted the future 💀
@@ES_Alt3lmaoo💀💀💀
Oh goodness, I've not even thought about depth sorting in years!
YOUR A BEAST, THANK YOU GRIFFPATCH
Griffpatch could is suggest you do a part 5 on Textured walls And btw Your content is amazin keep up the good work! :)
it is part 7 btw
@@MOMKUNG999 loL
I’d like to recommend something. I saw a video that you made nine months ago where it makes its own maze what if there’s people who want to have replayability in their games so hopefully you can make a tutorial on how to make a 3-D game that makes its own layout.
Griffpatch doesn't fall, he makes the universe move around him.
way to fun! thanks!
I really hope there will be a multiplayer raycasting episode
same
I wonder how that would work.
"Pants." griffpatch 2022
*" P A N T S . "*
A trick I recently learned in scratch: if. you divide anything by zero, you get infinity, which does work with > and < blocks. So I just set a variable infinity to 1/0 when the flag is clicked, and I can use it whenever.
THANK YOU GRIFFPATCH !!! THANKS 4 ALL
I have added a few custom features to my game, like a brightness cap to the sprites, and fps counter, and a telescope
How
Could you show us how to add a crouch system? That would be really interesting!
And jump
Thanks.That is great!
scratch: we dont have pen layering
griffpatch: i,m gonna pretend i did not here that
Suggestion: add Multiplayer 3d, with the players appearing as a separate entity
im already attemting that!
Too easy to make a tutorial. But it would be cool.
I’m already trying that,I’m trying to make a 3D undertale remake
3D multiplayer undertale full game remake!
@@thememer4071 that sounds very hard to make, but 3d Undertale would be very fun to play
Scratch team: watches griffpatch break scratch laws
Scratch team: Excuse me?
wow, thank you so much Griffpatch, you really helped me alot. Thank you so much for your help!!!! p.s: you know a lot about scratch, you make learning and math really fun, thanks.😄😎
Him: hello fellow scratchers i am griffpatch
Me: your griffpatch
Hi Griffpatch! When I did the stamp thing, My entity went bigger when I walked away from it, and a very big one was in the background behind everything, any tips for this bug? Thanks!
I have the same bug if you find a fix please tell me thanks. (:
Me too
I don’t know what i did 😂
Very good video, maybe add a multiplayer system.
Dude Its IMpossible to Add Multiplayer In Scratch
@@noobertplaying2395 no its not cloud variables
I love your projects
At this point griffpatch is beyond scratches understanding
This series is so amazing. I think a good tutorial would be to make textured walls
I agree
hey does anyone know why i am only seeing my background? Ive gotten to 11:00 of the video and don't know what I have done?
Raycast sprite is too big
@@SwankemasterSupreme I changed it but it didnt do anything for it
I think its because of somehing with the erase all block, works fine if you remove it while keeping a copy in the light entity, but you cant place the entities behind walls
griffpatch: are you touchin yourself?
the scratch servers just being confused
haha
Amazing.that was very good.
We should learn texture mapping and the Doom-Style effect that it uses for calculating height!
With that, we could make a lot more intricate levels, I think.
23:11 - problem: the entity don't stamp ☹️
i have that problem too
Samr
This tutorial is great!
Griffpatch is a good teacher
This is great hope the enemy’s will kill in the future and after this can update the platformer series
Could've you used a faster algorithmn than insertion sort? (e.g. quick sort, insertion sort) While the sort you used is a bit faster than bubble sort, it is still considered inefficient due to its O(n^2) average performance (meaning that it makes n^2 comparisons/swaps where n = the number of items in the list).
The trick is to start from the last inserted position. When the next wall is next to the previous wall (which is the majority of cases), the search will finish after one change by -1 or +1. Only when switching to a far away wall will the search take longer. So insertion sort has a much better actual performance than the worse case O(n^2) and is a great choice here.
What?
you do a very good job on making the imposible posible! :)💅🏾
Super cool
the if touching entities was so smart XD
i like the uploads and games you make in scratch and youtube! my favorite game made by you is hill climb racing.
Hey griffpatch this is going to help show how good i gotten at scratch for school so i can show my teachers
im doing this for a contest too! hope I win. It took me 30 minutes to figure out why there were 2 of the entities then I realized I made 2 variables. 1 was a misspelled 'hight' and the other was 'hight' so that broke it. Thanks for encouraging me in coding! :)
Thank you For this comment i was just struggling with that problem!
NICE!!!
This Series Screams “Tell me your smart without telling me your smart”
Scratch: I wont allow you to make nano go back
Griff: You really underestimate my power?
Scratch:our coding is simple but it would not always do what you wanted
Griffpatch:I will make it better