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.
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
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.
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.
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
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]
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 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
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 :(
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
You explain everything so clearly, subbed!
Thanks! Glad it was helpful :)
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.
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.
I like the way you explain, It keeps me focused for some reason 😂 thx 👍
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!
your level of energy is unmatched! keep it up, you earned a new subscriber.
thank you so much this helped a lot
Thank you for informative video. You helped me a ton!
Thanks a ton for the tutorial! I like that you explain what things do as you go.
Great to see you back!
Thanks David! Glad to be back!
Loved this tutorial! Clear, simple, funny and the best: It worked!
Thank you, would love to see more!
The energy you bring is incredible. One topic I think could use some more coverage on youtube is components.
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
BEST TUTORIAL EVER
thank you SO MUCH! ive been stuck on changing the levels but this video worked!!
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
Keep it up man, this is good godsend content
Bro thank you so much this really helped with my game.
Love the energy! Thanks for the help!
You explain it very well thank you for Help please more of good Godot Tutorials👍
goated tut
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 :(
If you close your eyes is like Mike Tyson is teaching you this Lol
From Beyblade or the Chef? I'm bad with names.
thanks
BIG THANKS, YOU SAVED ME
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
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
thank you this helped me a lot :)
Thank you so much for this video
More Godot 4 videos please!
Great content!
so helpful, easily earned my like
I thought this was the standard logic / path for launching / entering new levels? Maybe I’m just built different… #GFC
You a real plug fr
Great tutorial
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]
How much coke did you do before this? What it all of the coke?
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.
Thanks !
Dose not work on 3D scenes at all and still left confused
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 💪.
Good job buddy
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 :(
wait till you start to discover thing like singulars and arrays.
please make more videos
womp, thank you:3
It doesnt work for me and my character is a physics thing
Me too
Does this work for 3d games?
pls go quicker next time 😅
Don't
Bro spent 10 mins explaining 3 lines of code
Anderson got a YT channel? Lets g0000! I sub