ok wtf bro? I just entered this video just for no reason, and you literraly teached me what I need to learn to make a mechanic that I wanted in my first game for a game jam that I am participating alone, thanks so much, you explain so well! New sub
I really appreciate you going so slow, explaining what every part of the code is doing by both saying and showing. It may have made it slower, and people used to coding might find that annoying, but that’s the exact type of videos I’ve been looking for. I don’t have a clue what ANYTHING is doing, and it’s very hard to figure out when most videos spit out code and say “This works” without explaining why. Again, really really appreciate you taking the time to explain why everything is needed.
Honestly, I tried implementing a level switch in so many ways suggested by other TH-camrs. Yours was the first one I was able to make it work properly, and I went one step further by moving the level switching logic to an autoload script (the level switch function is called by the player, when they touch the "portal"). The reason I did that was that I want to figure out later (hopefully) how to transfer the player data from one scene to the other (so the player character doesn't lose her power up). I also made a second function (and a second portal/gate scene) to take the player back to the previous level/scene. Learning programming is so damn hard for me, I find it difficult to understand, and I have zero confidence in myself, so thank you for making your tutorials so accessible.
This and previous video that led here were super helpful. To echo everyone else I really enjoyed how you were breaking things down and explaining why you made your choices.
Far and above the best godot tutorial I have seen. Thank you, thank you, thank you for explaining the code and using print statements for proof of concept!
In my experience, physics layers are very helpful when dealing with physics objects. I use them whenever I want these objects to avoid collisions. Groups are great for simply identifying a specific object we are colliding with. But ultimately use whatever gets the job done for you.
@@mrglick5050 Using multiple physics layers for different things is not ideal for all cases because they have a set limit (up to 32 layers), it makes sense to use them if you are doing expensive physics operations for multiple physics bodies at the same time as they are faster to compare, but for cases like this is definitely worth using groups instead, it also makes refactoring less of a pain the larger your project gets.
How do you make your spinning cube remain looking like pixel art despite being rotated? Normally pixels would turn diagonal but your pixels look as if you have a sprite sheet for the entire rotation.
hey can you tell me how i save my current level, when we go further so we need to save our current level so we come back so the level is save it start, a system for save and load
I understand what you said in this video bc these are what I already did. I came back to this video bc I want to know what if I'm missing something. And then I realize that, if it was me few months ago, when I had zero exp with code, I would probably skip all your chit chat and skip to the action part. But to be honest, your chit chat is really great for beginner, might help someone out of the tutorial hell like me. Thanks for the video btw, I watch all til the end (skill pressed for x2 speed lol)
Good stuff. Thank you. How would you change it if there were cut scenes and level order may change based on difficulty level? For eample, difficulty 1 you do levels 1, 2, 3 but difficulty 2 you may do level 1, 3, 2, 4. And in betweem each level is a cut scene?
Instead of increasing number value have a list of numbers in order for each difficulty and then depending on difficulty search first for a number for index in list and then return next. easy: [1,2,3,4] normal:[2,4,3,1] level = 3 list = easy if Globalstate.difficulty = "normal": list = normal index = list.getIndex(level) return normal[index+1]
If you want a variable to not get reset between scenes you can declare that variable in a singleton. Singletons are persistent across switching scenes. If you want to save and load data after the game is closed, there are several other guides for doing so. Hope this is helpful, good luck!
@@clide8414 I haven't done that yet in Godot 4, so sorry if it's changed. I usually go with the system that's documented here kidscancode.org/godot_recipes/3.x/basics/file_io/index.html
The way you hardcoded the path in your variable "next_level_path" 11:36 made the previous statement completely unnecessary where you dynamically determine the file path of the Top node. Additionally, There are projects where the level node is not the scene tree root (like a "Game" node), so entirely relying on that node for the file path isn't very maintainable, if you're planning to expand your project I wouldn't recommend it. Finally, some games don't have a linear level progression, so I would recommend exporting the scenes of the levels directly inside your portal or door node. This would be tedious, but it's a more robust, expandable, and maintainable system. Good tutorial though, good job 👍
Every method has a use case, obviously this won't work for every single game but it doesn't have to. Its a very clever technique that will help people think outside of the box as they're learning to code and for a lot of small games it would work great.
I totally overlooked that! Thanks for pointing that out! Yeah I could've had it dynamically parse the file path string instead of hard coding it. But that may of made it harder for beginners to follow along. Usually people will put all of their levels in one folder, so I don't think that hard coding it is really a problem. But I do see your point. I believe most people will have a system similar to this where the scene tree root is the level. More advanced systems such as random generation and dynamic level loading systems are much less common. People making these systems know what they're doing and probably don't need a level switching tutorial like this one. Totally agree with your third point. This system isn't for everyone. Those that need to go for more of a manual and configurable system will have to do something different. It's not possible to cover all use cases, but this is a great starting point. Thanks for the feedback, I really appreciate it. 👍
@@PlugWorld I agree with your point in making tutorials easy for beginners to follow through. Having a solid foundation to expand on would also be great. I appreciate you for taking my feedback and being open with it. It's great to see people like you helping the community grow, I hope you continue making tutorials for beginners and intermediates alike.
I've been able to turn this little platformer into a nifty little game Ive added killing the slime mario style (jumping on head) a little animation for picking up a coin i attempted coyote time but it didnt work well haha i have 2 main levels so far and a level switcher at the end of each level - which is the only thing i used another video for
Does it matter if it is in scene or global groups when i create it on the player? I am using godot 4.3 and have a character2d... and it doesn't work. Help @plugworld
FUUUUUUUUUU!! I had a root node above level 1, so current_scene_file would not be the path to level 1, I couldn't figure out how to remove the root node other than removing the entire tree and dragging level 1 tscn back to the window... that broke my entire game and undo button did nothing, can't even load my game now, awesome :(
This is not a good solution.. If I have 30 levels and decide to insert a new level before level 2, I would have to rename 28 other level files. I recommend creating a singleton where you have 2 variables: an array of the level files and the current level index. When you load a new level, increase the level index and load the file at that index of the level array.
If your interested in my upcoming course, you can check it out here! Thanks guys!
courses.plug-world.com/seadefender/
ok wtf bro? I just entered this video just for no reason, and you literraly teached me what I need to learn to make a mechanic that I wanted in my first game for a game jam that I am participating alone, thanks so much, you explain so well! New sub
I really appreciate you going so slow, explaining what every part of the code is doing by both saying and showing. It may have made it slower, and people used to coding might find that annoying, but that’s the exact type of videos I’ve been looking for. I don’t have a clue what ANYTHING is doing, and it’s very hard to figure out when most videos spit out code and say “This works” without explaining why. Again, really really appreciate you taking the time to explain why everything is needed.
So trueee!! They all act like we already know whats happening
You explain everything so clearly, subbed!
Thanks! Glad it was helpful :)
I had been looking at so many tutorials, but this one was the only one that worked for me. Thank you so much!!!
Honestly, I tried implementing a level switch in so many ways suggested by other TH-camrs. Yours was the first one I was able to make it work properly, and I went one step further by moving the level switching logic to an autoload script (the level switch function is called by the player, when they touch the "portal"). The reason I did that was that I want to figure out later (hopefully) how to transfer the player data from one scene to the other (so the player character doesn't lose her power up).
I also made a second function (and a second portal/gate scene) to take the player back to the previous level/scene.
Learning programming is so damn hard for me, I find it difficult to understand, and I have zero confidence in myself, so thank you for making your tutorials so accessible.
This and previous video that led here were super helpful. To echo everyone else I really enjoyed how you were breaking things down and explaining why you made your choices.
If you close your eyes is like Mike Tyson is teaching you this Lol
From Beyblade or the Chef? I'm bad with names.
Great to see you back!
Thanks David! Glad to be back!
your level of energy is unmatched! keep it up, you earned a new subscriber.
wow! really really easy to follow, entertaining, and useful! lovely!
You’re a great teacher
Would love more tutorials from you 😅
2 minutes in and I subscribed. Love the energy! I haven't even got to the part where you show what to do. Don't let me down now!
The energy you bring is incredible. One topic I think could use some more coverage on youtube is components.
Far and above the best godot tutorial I have seen. Thank you, thank you, thank you for explaining the code and using print statements for proof of concept!
Loved this tutorial! Clear, simple, funny and the best: It worked!
Thank you, would love to see more!
thank you so much this helped a lot
Thanks a ton for the tutorial! I like that you explain what things do as you go.
7:10 it's better to use physics layers than groups
In my experience, physics layers are very helpful when dealing with physics objects. I use them whenever I want these objects to avoid collisions. Groups are great for simply identifying a specific object we are colliding with. But ultimately use whatever gets the job done for you.
@ArabGameDev why?
@@mrglick5050
th-cam.com/video/UZu8NwlkXcU/w-d-xo.html
@@mrglick5050 Using multiple physics layers for different things is not ideal for all cases because they have a set limit (up to 32 layers), it makes sense to use them if you are doing expensive physics operations for multiple physics bodies at the same time as they are faster to compare, but for cases like this is definitely worth using groups instead, it also makes refactoring less of a pain the larger your project gets.
OMG THANK YOU SO MUCH I WAS STUCK FOR WEEKS AND TOTALLY FORGOT ABOUT PHYSICS LAYERS!!!!!!!!! MY GUY WAS ON LAYER 2))///)//!!!!! TYSMMM
How do you make your spinning cube remain looking like pixel art despite being rotated? Normally pixels would turn diagonal but your pixels look as if you have a sprite sheet for the entire rotation.
Love the energy! Thanks for the help!
thank you SO MUCH! ive been stuck on changing the levels but this video worked!!
Dose not work on 3D scenes at all and still left confused
Keep it up man, this is good godsend content
hey can you tell me how i save my current level, when we go further so we need to save our current level so we come back so the level is save it start, a system for save and load
I understand what you said in this video bc these are what I already did. I came back to this video bc I want to know what if I'm missing something. And then I realize that, if it was me few months ago, when I had zero exp with code, I would probably skip all your chit chat and skip to the action part. But to be honest, your chit chat is really great for beginner, might help someone out of the tutorial hell like me. Thanks for the video btw, I watch all til the end (skill pressed for x2 speed lol)
Good stuff. Thank you. How would you change it if there were cut scenes and level order may change based on difficulty level? For eample, difficulty 1 you do levels 1, 2, 3 but difficulty 2 you may do level 1, 3, 2, 4. And in betweem each level is a cut scene?
Instead of increasing number value have a list of numbers in order for each difficulty and then depending on difficulty search first for a number for index in list and then return next.
easy: [1,2,3,4]
normal:[2,4,3,1]
level = 3
list = easy
if Globalstate.difficulty = "normal":
list = normal
index = list.getIndex(level)
return normal[index+1]
Hi! Cool video. What about save data (Example: int coins) between levels?
If you want a variable to not get reset between scenes you can declare that variable in a singleton. Singletons are persistent across switching scenes. If you want to save and load data after the game is closed, there are several other guides for doing so. Hope this is helpful, good luck!
@@PlugWorld Yeah, thanks, I get it. But how I can save data in a file? I am try save file in json, but...
@@clide8414 I haven't done that yet in Godot 4, so sorry if it's changed. I usually go with the system that's documented here kidscancode.org/godot_recipes/3.x/basics/file_io/index.html
@@PlugWorld thank u very well for support 💪.
Thank you! In the end it worked for me but I get some error messages which I don't understand yet. It still works tho haha
Thank you for informative video. You helped me a ton!
The way you hardcoded the path in your variable "next_level_path" 11:36 made the previous statement completely unnecessary where you dynamically determine the file path of the Top node.
Additionally, There are projects where the level node is not the scene tree root (like a "Game" node), so entirely relying on that node for the file path isn't very maintainable, if you're planning to expand your project I wouldn't recommend it.
Finally, some games don't have a linear level progression, so I would recommend exporting the scenes of the levels directly inside your portal or door node. This would be tedious, but it's a more robust, expandable, and maintainable system. Good tutorial though, good job 👍
Every method has a use case, obviously this won't work for every single game but it doesn't have to. Its a very clever technique that will help people think outside of the box as they're learning to code and for a lot of small games it would work great.
I totally overlooked that! Thanks for pointing that out! Yeah I could've had it dynamically parse the file path string instead of hard coding it. But that may of made it harder for beginners to follow along. Usually people will put all of their levels in one folder, so I don't think that hard coding it is really a problem. But I do see your point.
I believe most people will have a system similar to this where the scene tree root is the level. More advanced systems such as random generation and dynamic level loading systems are much less common. People making these systems know what they're doing and probably don't need a level switching tutorial like this one.
Totally agree with your third point. This system isn't for everyone. Those that need to go for more of a manual and configurable system will have to do something different. It's not possible to cover all use cases, but this is a great starting point.
Thanks for the feedback, I really appreciate it. 👍
bro really wrote an essay 😭
@@PlugWorld I agree with your point in making tutorials easy for beginners to follow through. Having a solid foundation to expand on would also be great. I appreciate you for taking my feedback and being open with it.
It's great to see people like you helping the community grow, I hope you continue making tutorials for beginners and intermediates alike.
@rashy15 Paragraphs 1 and 2 are only one sentence. Paragraph 3 is oly 3 sentences.
Hardly an essay :(
I've been able to turn this little platformer into a nifty little game
Ive added
killing the slime mario style (jumping on head)
a little animation for picking up a coin
i attempted coyote time but it didnt work well haha
i have 2 main levels so far
and a level switcher at the end of each level - which is the only thing i used another video for
tnx bro. super easy to follow and understand!
Does it matter if it is in scene or global groups when i create it on the player? I am using godot 4.3 and have a character2d... and it doesn't work. Help @plugworld
Bro thank you so much this really helped with my game.
FUUUUUUUUUU!! I had a root node above level 1, so current_scene_file would not be the path to level 1, I couldn't figure out how to remove the root node other than removing the entire tree and dragging level 1 tscn back to the window... that broke my entire game and undo button did nothing, can't even load my game now, awesome :(
How much coke did you do before this? What it all of the coke?
This video is super well explained, however the pipeline I'm using has numbers on the folders, so RIP me
You a real plug fr
More Godot 4 videos please!
Great content!
I like the way you explain, It keeps me focused for some reason 😂 thx 👍
Does this work for 3d games?
wait till you start to discover thing like singulars and arrays.
BEST TUTORIAL EVER
thank you this helped me a lot :)
so helpful, easily earned my like
Thank you so much for this video
BIG THANKS, YOU SAVED ME
This is not a good solution.. If I have 30 levels and decide to insert a new level before level 2, I would have to rename 28 other level files. I recommend creating a singleton where you have 2 variables: an array of the level files and the current level index. When you load a new level, increase the level index and load the file at that index of the level array.
It doesnt work for me and my character is a physics thing
Me too
You explain it very well thank you for Help please more of good Godot Tutorials👍
Great tutorial
goated tut
I thought this was the standard logic / path for launching / entering new levels? Maybe I’m just built different… #GFC
Good job buddy
pls go quicker next time 😅
Don't
Use 1.5x, it's on the TH-cam options
Thanks !
please make more videos
thanks
womp, thank you:3
it is very nice
Bro spent 10 mins explaining 3 lines of code
Anderson got a YT channel? Lets g0000! I sub