For anyone struggling with the assets, the original artist changed the format of the assets into sprite sheets. The location of the sprites have changed as well but you just have to look through the folder! HOWEVER, at 21:03 i go over how import the sprite sheet instead of single sprites!
@@CodingQuests yeah i saw that, but appling that to the big spritesheet wasnt intuative, didnt rly get what u meant by "bc its 2 horizontal and 1 vertical". got it tho
thank you for tutorial in regards to placing the panel for the sprite to land on when you play the project my sprite falls right through the panel and doesnt seem to have collision ive gone back through the vid but cant seem to find anything ive done differently that would allow this to occur. i have the 3 collision shape 2d all made unique and the panel as well
Nearing the end of this mini-project. Felt like a 10 hour course in disguise with all the pausing, note-taking, and following along! Thank you, this was pretty helpful :)
@@NostalgicChuk anything I kept forgetting and going back to. Especially with why some of the script was written the way it was so I can learn more about it separate from this tutorial
Thank you very much it was very easy to get up and running. Some notes from my personal experience, you move your mouse very quickly and tend to skip over what you're clicking on. It's natural for you but for us learning the software when we blink and you're on a new screen it's confusing so it would be nice if you either announced what you're clicking on or have a mouse click animation. You also do it when you're making new nodes, you click on the root/parent before you make the node but you don't say this and so I was making nodes with the wrong parents. And when you did the animation of the player, you would reset the timeline back to zero before you added the animation but you didn't mention this and it took me a while to figure out what I was doing wrong there.
@@EienMugetsuTensho yep i agree with your comment cause now i am stuck on the animationtree part and i am playing the guessing game of which one to choose at the 31:51 mark of the video
It goes a bit too quickly for me, so I had to hit pause a few times in order to catch up. But, all the good stuff is there and I found this even more fun than Unity. Thank you. I will definitely experiment more with Godot.
Friendly recommendation: Might be a good idea to click Settings>Playback Speed>Custom to slow down videos. Sometimes I listen to videos at 0.95 or 0.90, slow enough to keep up but quick enough he does not sound drunk lol
Definitely set this vid to 75% playback speed & he sounds like a normal human. Whomever uploaded the vid clearly sped it up first to shorten the total time. :-/
It blows my mind how simple Godot is compared to Unity ('m migrating from there). The pythonic code is intuitive and there's basically no setup needed at all. Getting all the auto complete suggestions without having to do any setup was amazing. I'm blown away. Christmas coding it looking to be an amazing time
I work in python every day. Don't really know C#. Was able to instantly figure out what was going on and help fix my kid's game that wasn't working. I'm a fan of C# now.
I can see some other comments having this same issue, so here is the resolution The part where you setup the health 1:10:05 causes the game to crash for many BECAUSE he cuts out the part of dragging the playing into the script. You want to drag the child player (not the parent node) into the script. func _process(delta): text = "HP: " + str(get_node("../../Player").health) is the correct code.
Thank you so fucking much. Been banging my head against this for an embarrassing amount of time. This is a cool tutorial (and hey, the price is right), but he does skip steps.
You say to drag the child player but then you give the code for the parent... The correct code according to the the layer format should be this i believe: text = "HP: " + str(get_node("../../Player/Player").health)
For all the poeple with problems with the new asset set. In the downloaded files is a file with the name GodotProject, can´t import it in godot but if you open it there is another GodotProject file in it, open that too. Then you can drag enemie, music, pickups, player and world in Godot then skip the video to min 20:45 there he is showing how to use spite sheets. Hope that helps everyone =)
As of today, since the Asset download has changed, this should be the top PINNED comments. I was stuck on this part for about 30 mins. Thanks for the help
Ok seriously guys, now you've done everything! thank you so much, I'm happy to see my favorite game engine covered by my favorite learning channel, you're awesome!
Great intro to the program, it even got the gears turning in my head to the point where I even added a hop motion to the frogs. For those who aren't sure how to do that, just go back and reference how you made your player jump, as well as the section where you made the frog chase the player, and it's pretty simple to add. If shooters are your thing, and you need to add the actual shot, just remember; this guy just showed us how to spawn something in at 1:33:28. I know most people will probably think that's obvious, but if you're just starting out, it can be very hard to see the forest from the trees. I actually came from Unity, which to me was overly complex. I've worked with Gamemaker since around GM6, and learned GML back in the day. Unity is a great engine, but Godot 4 is definitely the engine for me as a hobby game creator. It's going to be fun creating that game I've been wanting to make for years and never finished.
I really appreciate this comment, you got me to try and set up frog jumping on my own and it led me down a small rabbithole of learning a few new things on my own
This is nice but a bit frustrating to follow and things get messy in the coding area when you're following along and then code gets edited and moved around it gets pretty confusing. Also add the yellow cursor dot for the mouse as it is hard to follow where you are going sometimes as newbs are unfamiliar with the interface. Just helpful critique for next video.
And slow down... I used to be in charge to training at my old job and with very technical complicated processes and it's easy for eager techs to go fast and be excited about the topics training on but you could see the trainee eyes gloss over from overload.
you're never going to get a coding tutorial that isn't moving code around. He is doing this to show how things work. If you dont like it, which i totally get, just skip over it and try and copy what you see when its more finalized. He at least moves his code in a way that doesnt break things in his own tutorials, this tutorial is by far the cleanest one i've seen in ages.
Jesus christ man.... you click things before you're even talking about them. This tutorial is super smooth if you already know what you're doing and don't need to take it slow. Still works if you don't. It's just rough
Great crash course. I even surprised myself by actually making the connection from the menu to the world scene by myself. Just shows how intuitive Godot is. great stuff!
I've been working my way bit-by-bit through this tutorial for about a month now. Folks weren't kidding when they said it was a ten hour course compressed into 1:41. I've tried a ton of "basics of so-and-so game engine" and always ended up getting bored or stopping partway, but this is the first one I've actually seen all the way through to the end. As frustrating as your speed could be sometimes, it really forced me to stop, replay, and pay attention to parts and to do a little legwork to understand what was going on, which I think ultimately helped me internalize the concepts better. I even appreciate you not editing out the parts where you messed up and had to go back and fix things, since it gives a taste of problem solving. It also gave me the chance to notice them before you did, which made me feel accomplished and like I actually understood the core concepts. Thank you so much and I look forward to sampling your other tutorials.
anyone who is confused at 13:00 why the get_tree function isnt working it is because you have to press tab after the function for it to be used by the function took me a while to figure that out
Small but hopefully helpful bug fix: -For some reason, the instruction around 59:00 did not work for me (frog jumping left or right) -instead of the line: var direction = (player.position - self.position).normalized() -I had to use the line: var direction = (player.global_position - self.global_position).normalized() -i figured it out by putting on some print statements and trying out both position and global_position. -Using .position always resulted in a value greater than zero, therefore the condition could not depend on if direction > 0 -Using .global_position, resulted in positive value when approaching from the right, and negative when approaching from the left, which i believe was the intended result of the original line.
god i spent like 2 hours wanting to smash my head on the keyboard because it just didn't work, but your correction actually worked, thank you, you saved my keyboard
oh my fing g...you have saved me :D For some reason i went to bed and everything was working perfectly. Woke up, opened godot...and my frog only went left XD You have saved me so much time, i was trying to rewrite this again *cries*
Really good intro to godot. I think this could easily have been twice or more longer in duration because of how often I had to pause but that's no biggie, that's what the pause button is for.
I had to watch this guy at 1.5x. It's way too slow. There are plenty of 10+ hour tutorials out there but this guy speed-running the info is the best thing I've ever seen for godot.
@@alexomar9168 Agreed. I rather have this and the ability to just pause/go back rather then listen to a chipmunk never getting to the point in 2x speed.
To help anyone along the way! I was having this issue where the "Player Detector" wasn't detecting my player at all. I found out that if you go to the frog itself, you probably have two "CollisionShape2D" so what I did was select the one NOT underneath the Player Detector, but the other one. and change the shape of the collision box, I changed it to a circle for example, and had the other one that IS underneath the Player Detector, become a rectangle. Turns out, my issue was that they were both colliding with each other and they were the same exact size. I was trying to figure this out for over 45 minutes and well, there you go. Hope that makes sense to some of you and helps some of you out! :)
i was having the same issue, you might have to delete the player and enemy out of the world scene and re add them if you made a ton of changes. if the name isn't "player" in the scene it wont call for the detection
You left me drowning in cherries! I can't make them stop spawning lol excellent course for getting the basics down and I like that that you went through the whole thought process in the code and bug checking not just "put all these lines in and you're good". Definitely checking out your channel for more!
Godot is so beginner friendly im crying man im so happy to find something that i can actually understand and it doesn't just bombard me with so much stuff
Doing this tutorial now with Godot 4.1.3 and at 59:46 that did not work. I had to use self.global_position to get the frog's correct positioning. if I just used position or self.position the 'x' was always set to 0 somehow. For the player, position and global_position were always the same.
This is my line of Code: var direction = (player.position - self.global_position).normalized () if I am Running this its Crashing always at this line and I dont know what i am doing wrong? Even if i set the line to var direction = 1 and delete the other lines following its crashing it dosent make any sens
Yep. Did it with 4.2 and also figured GlobalPosition was what was needed. I'm not clear on what position returns... it definitely seems to be a position relative to some node, but I'm not sure which.
@@Lion-up5rz i had a few crashes for this reason and i fixed it by checking the mobs tree in the world scene. i had some mobs as children to others and it would crash every time i went near the child node.
GUYS! Just move "Player" from node2d and remove node2d(player), after saving everything works fine :) Good luck (I used version 4.2.1) ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-pHIi7Vte7Xk.html
day 1: 31:12 (abandoned a failed unity project idea) day 2: 47:43 (A bit slower today, hopefully the next day I complete more of the crash course) day: 3 1:10:32 (Back in pace, just realized 90% of the code is just if else statements lmao, also pausing every step is a pain) day 4: done
Watching this now, and want to thank you all so much for the work put into this! I really struggle with paying attention to tutorials, and so far this is perfectly paced for me to remain focused. Thank you so much for sharing your knowledge!!
The most straight forward guide I've seen After 50 minutes of the video, I already made a level on my game (after struggling for 3 hours on my side to understand what he's doing and how) I tried learning from other videos before this one but it led nowhere, too much theory
Thanks, great video. Despite what some other comments say, I appreciate you showing that something doesn't work and then 'fixing' it. It helps separate the individual functions and provides more rationale on why each line of code is there. I think it's a good approach for providing more context and trying to teach the viewer to think critically rather than just copying.
This is exactly the crash course I needed. I always felt that I needed to know the full ins and outs of the programming language and software to become a game dev, but overloading your mind with info regarding different types of nodes at the beginning of the learning process can be discouraging. Just having the basic tools and knowledge that I need to make the basic/essential features of a game has put me in a place where I can explore Godot's features while naturally following my curiosity and creativity. Thanks!
i've been bashing my head against a brick wall in godot for days now, then suddenly this tutorial appears posted just 3 minutes ago?! amazing timing! thank you!
at 1:04:06 you can use frame duration which makes a frame last for longer (if you wanted to add 8 frames you would put 8 in the frame duration, for example)
31:24 I don't really get why we had to use AnimationPlayer to fix the jump and fall part, it can be done just as well by removing the fall frame from the "Jump" animation in the AnimatedSprite2D, and creating a new "Fall" animation with that fall frame in it. I mean, I get that AnimationPlayer provides more flexibility, but in the context of this tutorial I don't see the use for it. Also at 31:50 you mention that you prefer AnimationTree but you'll start with AnimationPlayer and transition to AnimationTree later, but eventually AnimationTree just vanishes into thin air at 37:05. Confusing
Yeah it wasn't needed for what he said it was, he ended up fixing it in a different way (with a gajillion conditional if statements hammering away every frame ;)). Anyway that entire way of doing things was just hideously sloppy and unmaintainable, and I ended up refactoring the whole thing to make the Player into a state machine instead because, even if Godot tolerates it, I just do not like the idea of clobbering the Play method 600 times a second telling it to play the same animation it's already playing. It does hammer in an important point about Play, which is that it does not restart animations that are already playing (if it did, his code would not work). It'd be a better video if he explicitly explained that, though. You can kind of follow along and see where he's fudging things if you have prior experience, but for an absolute beginner who is taking his word as gospel, there are some inaccuracies in there.
Hi, thanks for making this tutorial. In your future videos can you please slow down a bit as you navigate the program? I am a complete beginner and sometimes you are clicking on areas really quickly without telegraphing what I need to do to follow along and so I need to constantly pause and rewatch sections to see where you are navigating in Godot. Thanks again and great job on the tutorial!
at 59:53 for the direction I had some trouble getting this to work. turns out when you create the parent node2D for mobs and player you should lock those at (0,0) to keep them from moving. Otherwise you might do what I did and accidently move the reference point for one and not the other. Hope that helps
We’re you able to get the frog to drop/react to gravity? For some reason nothing seems to be working with the frog even through my code is written correctly, at least I think it is
I'm having trouble with direction. The mobs detects the player always to the right with no regards for its position. "With lock those at (0,0)" What did you mean? The position?
58:00 - With my code being identical, I was getting an output of "Left" regardless of which side I approached the frog. I printed off the player position and frog position and found that the player position was always the same whether I came from the left or the right. I'm getting Godot as a flatpak so maybe there's some issue there. What I did to fix this was to use 'body' instead of 'player', since we already have that information passed in to the function. No need to instance more information. Then I used body.global_position rather than body.position @thepie's comment here on the video. However, I did not invert the frog's position. ex: var direction = (body.global_position - self.position).normalized()
Exactly what I was looking for; I just about gave up and figured that one day I will learn how to make enemies chase the player in two directions, but then I saw your comment. Thanks for this! Worked like a charm
If ever there is a rework of this, I'd suggest taking it a little slower, mostly around "we're going to go back to here" while clicking on something you obviously already know about, but that might take us by surprise.
To anyone having trouble about the frog going the wrong way, ensure that the CharacterBody2D is flushed with the CollisionShape2D, AnimatedSprite etc. What happened to me was that the CharacterBody2D was misaligned causing the player.position to be wrong making the frog go the wrong direction. Hope this helps!
I also ran into an issue where not matter how I set the script up for Frog.gd I could not get the frog to flip left. I just swapped the true false values, ran and swapped back to original format and worked for me!
If you get hundreds of errors after importing the Sunny assets, you can fix that by deleting the __MACOSX folder in each of the 4 files. That fixed it for me atleast
Finished the tutorial! Great job, very helpful. One thing I was confused on though was the animations, it seems like there are several methods of animation (AnimationSprite2D, AnimationPlayer, AnimationTree) but it was never really explained why use one over the other. Thanks!
Yea, that part made me angry! He makes it too confusing. Also he doesn't explain why make those key frames at all when the sprite sheet comes with animated sprites? Is it because he wants to be able to control the animations after with code? The animation part was unnecessarily complex and frustrating.
Never realized Godot is becoming this big. Back in summer of 2019, I took a CS Game Development course and had a month to work in a team of 4 to create a game and applying Agile/Scrum methodology. We didn’t know which game engine to choose from that suited our game but decided to go with Godot while every other team chose Unity. From what I remembered, we did an indie game and put in minimum 3 hours a day to learn Godot scripting language. I learned so much about applying CS fundamentals from Godot than any other courses I’ve took to graduate. I’m glad Godot is getting more recognition.
This guy does an incredible job explaining everything, I give this a 9.5/10 as far as tutorials go. However, one of the things that's really hard to convey through a tutorial is mouse movement and control input. This guy fidgets way too much, quickly clicks between things while he's explaining stuff, and goes over huge swaths of material in just a brief instant that means I have to pause, rewind, and replay a lot of moments throughout. OTHER THAN THAT, this was a great tutorial!
@@denisl9661 it's a crash course to get you familiar with Godot. Not an indepth course. This is something for someone who already has some knowledge in the subject (not godot, but programming or working with anything similar) and just want something to go of from before reading the documentation. Take it for what it is. You won't learn every detail in a 2 hour video. Having that expectation is just unreal.
@@Tobsson it literally says "for beginners" in the title. I've been programming 10+ years and didn't like this tutorial. Chris tutorials has a better one for example, although shorter.
@@denisl9661 because different people learn differently. I'm watching at 1.25 and while I do pause and rewind occasionally, overall I'm following it. It works for me, so I "liked" it. ¯\_(ツ)_/¯
@@GenTink I find it very hard to believe that you just download Godot, looking at it for the first time, and you are playing it at 1.25 and keeping up just find. I'll admit I'm completely new to game dev, but I have done all of the unity courses and now looking at Godot, I type extremely quickly and I couldn't keep up. There's no way to watch what he is doing FASTER THAN REAL TIME and still keep up.
Finished this course! Tweaked a couple things too as I was learning and coding alongside. There's quite a lot to learn in Godot, especially all its inbuilt methods, properties and the GDScript language. Will try to make more games to get better!
Started recently and playing this for the pass couple of days and got through it. Your an amazing teacher. Deserved all the replayed watched times I gave it 😂😂
Really nice Video, thanks so much for making it! I had zero experience with gdscript whatsoever but while I was watching your tutorial I managed to make the frogs actually jump after you and while in death animation you can use them as a platform to reach higher areas. Thanks so much for the inspiration!
Lol same! That, for me, is what has made me decide to use Godot from here on, because it's not terribly hard to figure out new things to add, and even debug.
Null explains topics really well! I highly recommend him if you're interested in learning more about Godot and supporting a small content creator! One of the best Godot content creators for sure.
I know I don't want to beat a dead horse here but man you really gotta slow down when going through this stuff. You go through this like you got somewhere you have to be in five minutes and just squeezed out a section as fast as you could. The road is smooth for you but bumpy as hell for the rest of us. All in all good work just keep something like that in mind please.
Very nice tutorial. I like you dont explain too much but go straight to the point. A little suggestion. Please use a click sound whenever you click somewhere with your mouse. You move and talk so fast that sometimes its not clear if you clicked or just hovered your mouse. Also a mouse highlight would be nice for the same reasons.
For anyone that having problems at 41:40 with the parallax background not duplicating or glitching switch your renderer in the topright screen from mobile to compatibility!
Thanks for taking the time to makes this tutorial. Much appreciated. However, as more than one comment below has pointed out, it wouldn't hurt if you slowed down a notch 🙂 I don't know if you're suffering from ADHD or if you're just an unusually energetic person, but it is in fact quite difficult to follow along your video as a newcomer; especially when you are clicking buttons and jumping around the program without informing the viewer about what you are doing 😉
I really enjoyed that this tutorial went through actually building a game and covered a lot of information. But man was it way to fast, and a lot of things weren't explained. So I was having to pause frequently and watch what was being done that wasn't being described at all.
Thank you for explaining it well and actually showing us what each button does rather than “click this. Click this. Type this.” Like so many other tutorials
I like this, but slowing down a bit would be great. Mainly for the mouse movement and clicks when you're running through things fast. That way if this is new to someone, they're not rewinding and trying to figure out what you clicked. It turns into not really learning and just trying to follow steps that sometimes are mentioned and sometimes sped through. At least in the first half hour of the video. Either way, I appreciate the video
wow , without any struggle all worked for godot 4.2. Amazing content please keep continue !
Год назад
Thanks for a very good tutorial. Nice progression, and I also enjoy the small mistakes left in, so that you see how things work out in real life, and how to figure out what went wrong :)
I am an Python developer /c# software engineer I appreciate the effort put into this tutorial!. One learns basic things. However, some fundamental elements are missing to truly classify it as a Crash Course. Introduction to programming concepts (variables, functions, etc.) The scripts are not programmed following Best Practices, ultimately making them significantly unreadable, which leads to issues in larger projects. (Adding functions to handle tasks, for example, in the Player Script - movement actions, etc., to improve readability) Regarding the presentation, a bit more preparation and a slower pace would have been nice. Similarly, the chaotic mouse handling is taxing. Despite all of this, it's a nice tutorial from which one can learn.
@@j0habba best practice isnt fundamental. It's learned over time. This is not something that you need to care about unless you work in a team. Might be something to take a glance at if you're about to build a large/gigantic code base where you don't remember everything and have to read in on the code again every once in a while. Fundamentals is what you want it to be depending on what you're gonna do with it. Variables and functions is something that you'll always encounter. Control of logical flow is def a fundamental (if, else, switch, or whatever the language you use supports). Different data types like int, strings, floats and the likes. Anything beyond that is dependent on what you want to do.
Dude, it's a crash course on Godot, not programming. I agree though the scripts are a mess and it is unfortunate that it's encouraging newbies to program that way.
if anyone is stuck at 1:10:00 you need to drag the build-in script of the world from the script tab to the script option at the end of the label properties also if you've did everything correctly till now this should be the correct code for the world script: extends Label # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): text = "HP: " + str(get_node("../../Player/Player").health) Hope this helps 🌟
I noticed another bug where the game doesn't save correctly or at least not everytime you quit the game so you can implement this or fix that bug by creating a script that is not built-in in the world scene that saves the game consistently with this code: extends Node2D # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): Utils.saveGame() Hope this helps 🌟
Thank you so much for this tutorial it has helped me lots to get back into game development after the whole Unity fiasco! Just starting out with game development and Unity was really demotivating when that happened so this tutorial ended a long hiatus
thanks for the effort and everything but really man you should focus on explaining bits not on giving orders I know that that would make the tutorial more longer but what's the point on following the tutorial when i won't be able to make a game alone after it
Welp, after over a decade of playing them, time to learn how to make video games! Worst case scenario, I broaden my horizons and have a better understanding of the art-form of making games. Thank you for taking the time to make this tutorial!
got stuck at 59:59 because i couldnt get the direction bit to work even though my code is identical to his please help edit: i fixed it just had to change (player.position - self.position) to (player.global_position - (self.position*-1)) this allowed the frog to know which side the player was actually on
This was excellent, thank you. I actually feel like I learned stuff that I'll remember beyond the scope of this one tutorial project. I was even able to expand on this a bit, which is exciting.
The creator of the assets has completely changed the file structure and some of the sprites for some reason, making that entire section of the tutorial very different.
@@skully959 i had an issue with this as well, so i downloaded the sunnyland woods asset pack from the same creator. the file structure remained similar to whats in the video just different sprites :)
Thanks for the crash course, it really helped me get started with Godot. The pacing was just a bit too quick, but since I have some Unity experience already it made the tutorial feel less boring, since most of the concepts can be ported over to Godot as is.
damn really cool tutorial, easy to follow(esp if you have coding background), sometimes have to pause to figure out things, but still very nice! thanks a lot CodingQuests
This is a comment from a web dev that wants to go into indie game development: The tutorial is good-ish to start if you have NEVER seen godot, you can extract a lot from it and familiarize with the UI, the tutorial its so simple that makes you think ways of improving the game which is great. There's a lot of info that he doesn't explain at all, the instructor seems familiar with the concepts but not in a way he can explain them when they come up, try to pause as much as possible and don't try to keep up with him live, its not going to work, be aware of all his clicks because there are sections where he would just light speed click away and you will be backtracking a lot because of this, same with formatting code and moving pieces around. This barely counts as introduction but its great because it makes you excited to go deeper and that's the idea
Yeah he really skimps on the explanations, a lot of hand waving things away, though if you're coming from Unity you can kind of put two and two together for the most part. I do find it kind of wild how nodes are basically castable to the scripts they're attached to and would like some more deep dive into how that works.
Thank you so much for this course! I'm switching from Unity and went through this course day one of learning Godot today to try and get a hang of where everything is in this editor, and it has helped me a lot! Definitely going to check out CodingQuests other videos as well.