Godot 4: Switching Levels Made Easy

Поділитися
Вставка
  • Опубліковано 26 лис 2024

КОМЕНТАРІ • 86

  • @PlugWorld
    @PlugWorld  Рік тому +5

    If your interested in my upcoming course, you can check it out here! Thanks guys!
    courses.plug-world.com/seadefender/

  • @lucas_pscheidt
    @lucas_pscheidt 8 місяців тому +22

    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

  • @neversyn2panda984
    @neversyn2panda984 2 місяці тому +3

    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.

  • @PorChorrr
    @PorChorrr Рік тому +20

    You explain everything so clearly, subbed!

    • @PlugWorld
      @PlugWorld  Рік тому +1

      Thanks! Glad it was helpful :)

  • @Fliximan
    @Fliximan 11 місяців тому +4

    I had been looking at so many tutorials, but this one was the only one that worked for me. Thank you so much!!!

  • @Qilemonade
    @Qilemonade Рік тому +3

    You’re a great teacher
    Would love more tutorials from you 😅

  • @drbuni
    @drbuni 4 місяці тому

    Honestly, I tried implementing a level switch in so many ways suggested by other UA-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.

  • @josiahkey
    @josiahkey 29 днів тому

    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!

  • @bryceguyle4799
    @bryceguyle4799 Місяць тому

    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.

  • @davidphillips9366
    @davidphillips9366 Рік тому +2

    Great to see you back!

    • @PlugWorld
      @PlugWorld  Рік тому +1

      Thanks David! Glad to be back!

  • @ProgrammerPenguin
    @ProgrammerPenguin 5 місяців тому

    your level of energy is unmatched! keep it up, you earned a new subscriber.

  • @MalteNielson
    @MalteNielson 6 місяців тому

    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!

  • @cvrsor2985
    @cvrsor2985 10 місяців тому

    The energy you bring is incredible. One topic I think could use some more coverage on youtube is components.

  • @lucamahncke2276
    @lucamahncke2276 9 місяців тому

    Loved this tutorial! Clear, simple, funny and the best: It worked!
    Thank you, would love to see more!

  • @valtris994
    @valtris994 6 місяців тому

    Thanks a ton for the tutorial! I like that you explain what things do as you go.

  • @SixGroundsStudios
    @SixGroundsStudios 2 місяці тому +1

    thank you so much this helped a lot

  • @Evan0_
    @Evan0_ 11 місяців тому

    thank you SO MUCH! ive been stuck on changing the levels but this video worked!!

  • @brokenwings644
    @brokenwings644 12 днів тому

    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)

  • @Wayhoo
    @Wayhoo 10 місяців тому

    Love the energy! Thanks for the help!

  • @Mr_Boness
    @Mr_Boness 2 місяці тому

    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.

  • @kariimora
    @kariimora 4 місяці тому

    Keep it up man, this is good godsend content

  • @nemila4904
    @nemila4904 3 місяці тому

    I like the way you explain, It keeps me focused for some reason 😂 thx 👍

  • @Ranamo_
    @Ranamo_ 3 місяці тому

    Thank you for informative video. You helped me a ton!

  • @DarkMatter787-n2l
    @DarkMatter787-n2l 8 місяців тому +1

    If you close your eyes is like Mike Tyson is teaching you this Lol

    • @rmt3589
      @rmt3589 8 місяців тому +1

      From Beyblade or the Chef? I'm bad with names.

  • @GabbyMcAuley
    @GabbyMcAuley 6 місяців тому

    Bro thank you so much this really helped with my game.

  • @paulmanili2033
    @paulmanili2033 Рік тому

    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?

    • @kilisinovic
      @kilisinovic 5 місяців тому

      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]

  • @remingtonlewis2000
    @remingtonlewis2000 2 місяці тому

    tnx bro. super easy to follow and understand!

    • @alexanderbui5735
      @alexanderbui5735 2 місяці тому

      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

  • @fuwa9899
    @fuwa9899 9 місяців тому

    You a real plug fr

  • @pietraderdetective8953
    @pietraderdetective8953 Рік тому

    More Godot 4 videos please!
    Great content!

  • @KoalaOnYT_
    @KoalaOnYT_ 6 місяців тому

    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

  • @draft_fusion
    @draft_fusion 7 місяців тому

    Dose not work on 3D scenes at all and still left confused

  • @VoxelVoid3d
    @VoxelVoid3d 5 місяців тому

    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

  • @boanediggadukabberst5380
    @boanediggadukabberst5380 7 місяців тому

    You explain it very well thank you for Help please more of good Godot Tutorials👍

  • @tekkerzdesigner5435
    @tekkerzdesigner5435 5 місяців тому

    BEST TUTORIAL EVER

  • @clide8414
    @clide8414 Рік тому +1

    Hi! Cool video. What about save data (Example: int coins) between levels?

    • @PlugWorld
      @PlugWorld  Рік тому +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
      @clide8414 Рік тому

      @@PlugWorld Yeah, thanks, I get it. But how I can save data in a file? I am try save file in json, but...

    • @PlugWorld
      @PlugWorld  Рік тому +1

      @@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

    • @clide8414
      @clide8414 Рік тому +2

      @@PlugWorld thank u very well for support 💪.

  • @ArabGameDev
    @ArabGameDev Рік тому +2

    7:10 it's better to use physics layers than groups

    • @PlugWorld
      @PlugWorld  Рік тому +2

      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
      @mrglick5050 Рік тому

      @ArabGameDev why?

    • @ArabGameDev
      @ArabGameDev Рік тому

      @@mrglick5050
      ua-cam.com/video/UZu8NwlkXcU/v-deo.html

    • @ninstars
      @ninstars Рік тому +1

      ​@@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.

    • @Ranamo_
      @Ranamo_ 3 місяці тому

      OMG THANK YOU SO MUCH I WAS STUCK FOR WEEKS AND TOTALLY FORGOT ABOUT PHYSICS LAYERS!!!!!!!!! MY GUY WAS ON LAYER 2))///)//!!!!! TYSMMM

  • @lukynko
    @lukynko 8 місяців тому

    BIG THANKS, YOU SAVED ME

  • @podgeftbl
    @podgeftbl Рік тому

    so helpful, easily earned my like

  • @iconicprefix5522
    @iconicprefix5522 Рік тому +4

    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 👍

    • @davidphillips9366
      @davidphillips9366 Рік тому +3

      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.

    • @PlugWorld
      @PlugWorld  Рік тому +4

      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. 👍

    • @rashy15
      @rashy15 Рік тому +1

      bro really wrote an essay 😭

    • @iconicprefix5522
      @iconicprefix5522 Рік тому +4

      @@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.

    • @minyanism
      @minyanism 3 місяці тому

      ​@rashy15 Paragraphs 1 and 2 are only one sentence. Paragraph 3 is oly 3 sentences.
      Hardly an essay :(

  • @ravendaee
    @ravendaee 10 місяців тому

    Thank you so much for this video

  • @alikease11
    @alikease11 6 місяців тому

    thank you this helped me a lot :)

  • @sniatch7256
    @sniatch7256 4 місяці тому

    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

  • @IroquoisPliskin86
    @IroquoisPliskin86 7 місяців тому

    How much coke did you do before this? What it all of the coke?

  • @RandomManFromPoland
    @RandomManFromPoland 6 місяців тому

    Great tutorial

  • @chongthechihuahua2643
    @chongthechihuahua2643 Рік тому

    Does this work for 3d games?

  • @fatmike5038
    @fatmike5038 Рік тому

    wait till you start to discover thing like singulars and arrays.

  • @blasterxt9
    @blasterxt9 9 місяців тому

    Good job buddy

  • @ElGamerDesafortunado
    @ElGamerDesafortunado Місяць тому

    This video is super well explained, however the pipeline I'm using has numbers on the folders, so RIP me

  • @ViViViVuVuVu
    @ViViViVuVuVu 4 місяці тому

    goated tut

  • @lonewolfprogrammer8932
    @lonewolfprogrammer8932 7 місяців тому

    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 :(

  • @RodrigoMendes-bd3bp
    @RodrigoMendes-bd3bp 10 місяців тому

    Thanks !

  • @S1lence46-p4h
    @S1lence46-p4h 3 місяці тому

    It doesnt work for me and my character is a physics thing

    • @Ranamo_
      @Ranamo_ 3 місяці тому

      Me too

  • @JagArFlicka
    @JagArFlicka 10 місяців тому

    womp, thank you:3

  • @RequstingFlyby
    @RequstingFlyby 3 місяці тому

    I thought this was the standard logic / path for launching / entering new levels? Maybe I’m just built different… #GFC

  • @mynameis950
    @mynameis950 6 місяців тому

    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.

  • @-smile-1
    @-smile-1 Рік тому +17

    pls go quicker next time 😅

  • @Lowwaels
    @Lowwaels 4 місяці тому

    thanks

  • @pipeliner8969
    @pipeliner8969 4 місяці тому

    please make more videos

  • @ravagerboss8335
    @ravagerboss8335 12 днів тому

    it is very nice

  • @UsernameaBad
    @UsernameaBad 5 місяців тому

    Bro spent 10 mins explaining 3 lines of code

  • @kardrasa
    @kardrasa 11 місяців тому

    Anderson got a YT channel? Lets g0000! I sub