Learn GDScript From Zero is a free and open-source app to learn to code with Godot's GDScript programming language from zero.

It is compatible with Godot 4.

We designed it for programming beginners. It should also help self-taught people coming from other programming languages and domains.

This app is the free part of a larger paid course to learn game creation with the Godot game engine: Learn to Code From Zero, with Godot.

PlatformsWindows, macOS, Linux, HTML5
Rated 4.9 out of 5 stars
(234 total ratings)
AuthorsGDQuest, Xananax
Made withGodot
Tagscode, course, gdscript, Godot, learn, sourcecode
Code licenseMIT License
Asset licenseCreative Commons Attribution v4.0 International
Average sessionAbout a half-hour
InputsKeyboard, Mouse
LinksSource code


Download NowName your own price

Click download now to get access to the following files:

learn-godot-gdscript-linux-release.zip 23 MB
Version 21
learn-godot-gdscript-windows-release.zip 21 MB
Version 23
learn_to_code.zip 41 MB
Version 18


Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 87 · Next page · Last page

Enjoying the app, very accessible. However, the time delta lesson is messing me up a little. We have been doing the rotate function in the previous lesson without it and now I'm being told that you have to multiply it by delta otherwise the code isn't consistent. I am able to continue and apply what is taught, but I don't fully understand yet why that is.

(4 edits) (+1)

The delta lessons explains it pretty decently in my opinion, but I'll try to sum it up more:

They first teach you how to rotate stuff in the most basic way possible, just so you know what rotate() does and so on.

And afterwards, they explain you how to *properly* rotate things. it's how you should do it 99.9% of the time, they just didn't do it straight off to teach you the basics first.

As the lesson mentions, not multiplying something by delta will make it rotate (or move, etc) as fast as your computer can handle. And you usually do not want a video game character's movement speed to be attached to computer specs - it just makes no sense except for advanced scenarios like trying to perform a simulation as quickly as possible and skip to the end.

And then they explain you that multiplying things by delta (or you could also run the function at a fixed time interval without multiplying by delta, which also works but is visually less smooth) is how you'll almost always want to do things like mentioned.

If you want real life examples of this, Evoland 1 breaks on high refresh rate monitors because of this (the game can't be beaten! the final boss becomes too fast to be killed), Forager runs faster on higher refresh rates/FPS (you can kinda speedrun the game as if the forager guy was on crack, to me it was funnier but a little chaotic), and Fallout games are known to break at uncapped FPS, IIRC even in multiplayer where some players would run faster than others because they had uncapped their FPS, working almost like a cheat. Unless you want your game to end up like these games (it isn't pretty), you'll want to be smart and remember to multiply every single relevant thing by delta time difference so things are time-based not beef-based :P

(Eck, even in Terraria, when holding your mouse button, it grabs/crafts one item per frame instead of something like 10 per second fixed, so it's very easy to accidentally craft too many things on good computers.)

(1 edit) (-3)

I wouldn't use this to learn how to code. I'm following the instructions but it keeps saying that I am wrong and the hints are not helping.

Hello, can you tell me where you got stuck? I was going through the course to evaluate how good it is for beginners and havent seen many problems with it; that said I'm not a beginner myself so I could easily miss something that seemed obvious enough to me but was actually poorly explained


Well, I think that it would be better if it broke the instructions down into a more understandable way. I got stuck on like the 2nd lesson.

Hey, I am not exactly a beginner. But I am pretty new to coding. If you do not understand the actual coding aspect (how to structure your code) I highly recommend Scratch. It may feel like you are being a baby by using something designed for kids, but IT WAS DESIGNED FOR KIDS, and if little kids can learn on it, then SO CAN YOU!!!!(insert kids cheering sound effect)

So go, my friend. Go to scratch and learn. (and also gain a great appreciation to Griffpatch) btw I really would use Griffpatch's videos to learn, they are step by step and teach you how scratch works without you even noticing it.

I kind of get stuck on most of them, as I was saying I prefer a step-by-step process but for people who tried coding before might understand it.

(1 edit)


How does this result in multiple cells being highlighted when I did not pass specific grid coordinates when calling the function? Should I assume this is just a demonstration gimmick?
(1 edit)

If the function is being run (which it is, otherwise nothing would happen when you press play), it means it is being called somewhere, even if you don't see it. You can see on the visible part of the code that the (cell) parameter is mandatory when calling convert_to_world_coordinates(), meaning every time it is (invisibly) called (and you just learned it *is* called if you didn't know already), it will of course include the mandatory cell "specific grid coordinates". If they passed no coordinates on the example, it would return an error, so they can't do that. So they *had* to pass something and why not make it a bunch of pre-selected cells, because if they passed a single one it would be more confusing tbh.

It's not just with this exercise, there are implicit calls and functions everywhere through the exercises. If you think about it, you'll just know it's there and part of the example

This has been very useful to me as someone with a very limited understanding of code/computer science principles.  So foremost, thank you very much for creating this!

One thing I've noticed, and maybe this is a chrome/mac interface issue, but when doing the coding practice segments, I was unable to copy code snippets and paste them in a separate text document.  It just gives me the URL for this itch.io page.  Yeah of course I could(should?) type them out.  But for quick note taking etc. not being able to extract stuff quickly is a pain.  

Deleted 17 days ago

As a beginner who knows just enough to see that there is more going on behind the curtain than is shown in the exercises, I somewhat agree with your opinion.  I just finished lesson 19 (looping over arrays) and the second practice had me pretty baffled as to what I should be able to glean from the text leading up to it that would help me achieve the solution. 

So yeah, there are times when I've had to take it with a grain of salt and just reverse engineer the solution to learn what is going on.  But I appreciate the opportunity to practice specific concepts instead of just grasping at the theory behind it.  Gradually connecting some of the dots in the Godot scripting universe.

Can you give an example of a bad exercise that you've found?

I solved several of them at random, and those that I've seen so far didn't expect the solver to use some hidden functions or have any other problem

so glad i found this , thankkkk youuuu

did you make this with Godot?

Yes !

have you considered /created a course on application development in Godot? I understand the general flow of godot but the logic behind building the complete tool qnd where to start is a bit confusing

Hi there! I recently downloaded the latest version - the one from earlier this month, I believe - and when I ran it, there was a little command line window that popped up with the exe. When I went to select a lesson, the command line window showed me an error in yellow text: 

WARNING: This control can't grab focus. Use set_focus_mode() to allow a control to get focus. 

Does that mean something is wrong with the app I downloaded? Is there something I need to do to work around this error? 


You should be good to go ! Some warnings are there usually to tell the developers themselves that there are some things they could fix, but they are not errors, you should be able to use the program without any issues.


i tink i found a bug if not wat was the problim her i dount see noting rog?

(2 edits) (+4)

You wrote trun_right(90) instead of turn_right(90) in the function identifier, as well as that you missed a d in "move_forward(length)" right underneath it. Hopefully that fixes the problem! :)


I think its a joke! :) Look at the spelling in the comment.

i knoe rhigt? i aslo had smoe smillar porbmles.


Is there a version for Android

you can use browser


Doesnt work (cant bring up keyboard when trying to type)

Would love to be able to use this on my phone! Sajj :'(


auto rotate your phone then open it using your browser

(1 edit) (+1)

Potential errors in Lesson 14: Multiplying

After the first quiz it says, "We can use  in the same way as  and ."

In the first lesson, I think the resulting health should be 110 but for some reason it's multiplying the max health twice and it's saying 121. It is allowing me a passing grade though!

I'm loving this learning game, by the way! I can't wait to try Godot when I'm finished! I want to make a turn-based strategy game!


I believe that is the point, it is teaching how do non-linear scaling, and since it is multiplying by 1.1 twice it increases the health by 10 (10% of 100) and then by 11 (10% of 110)


If you need any help translating to German, Dutch or French. Definitly hit me up, I love this introduction, it's easy small scaled and a very nice introduction.


I will buy 100 copies if you translate it into Italian.


You should learn English, dude


They clearly asked the question in English, they could be a teacher trying to introduce students to coding. They could not understand a different language perfectly.

A different question how many Languages do you know Vladimir? Because challenging random people online to expand their knowledge without any idea about situation or context is a little mean spirited.


you ate and left no crumbs


(2 edits) (+7)

OK. Sorry, I was wrong. All languages are good.




like just learn english you will need it anyway when u start coding


Go to options -> Language -> Italian and click Apply to display the Italian version.

For the latest release, we're lacking maybe 5% of Italian translations. The Italian version is community-translated. If anyone wants to help bring it back up to 100%, they can contribute translations here: https://github.com/GDQuest/learn-gdscript-translations/

time to buy amico mio!


Cool program. In German please!


we need chinese


u need english




Thanks for your work.


Thank you for teaching me!


Great Idea and direction, not so great execution.

There absolutely must be more notes telling you what is in godot already and what was pre programmed for this specific tutorial.

Just little "*" things with text like "*hey, this "amount" thing is a variable we hid behind the scenes, you don't see it, but it's there and we'll change it to test different things"

A lot of things are in what feels like the wrong order, stuff like variables should probably be taught before you get into contact with them at all, not after. You just end up seeing a lof of things on screen you have no idea about.

Other than that, It's a great learning tool. It just needs some thoughtful reworking.

(2 edits) (+3)

This was exactly my problem, and really lead me to be more confused. I had to use a combination of an absolute beginners livestream that a guy made on youtube, and ChatGPT to help me really nail down things like dot operators.  

All the magic variables they used in this are going to really keep confusing newbies. 

There is a challenge in getting someone who already knows coding, to be able to teach it. They tend to not explain every single thing in the detail necessary for it to all make sense, and once the chain of context is broken, then no more can be learned.


Loving this so far!  Only complaint I'd make is to make sure you tell us that the exercise we're about to go into has pre-declared variables and list what they are in a flyout/dropdown...there were a few instances where I thought I had to declare variables that already existed for the sake of the exercise.  My brain is a BIT wobbly, but I think things are settling in.  Thanks!


Is one of the lesson removed in the new update?

I think that the modulo lesson is not there

Is there a reason for that or is it like we dont need to know that?

(3 edits)

in the lesson "drawing squares in different positions" it says to keep squares 100 pixels apart. I think it could be a bit clearer like "keep each squares 100 pixels apart on both the x and y axis." cause I got stuck by only doing the y axis.

It's great at teaching people programming by getting them into the mindset.

Also cheers! I am pretty good at python anf "for i in range(3)" worked and it made me so happy! Good job!


Overall...I'm not happy with this app.
I don't know what I'm doing wrong.  The code and practices presented aren't real code and some things are not defined, presented, nor stated, which for me is just confusing. I can't learn to think how to code if things or logic appear magically.

For example, in the Looping over arrays exercises i was going crazy looking for the error, I hit the solution box, and it turned out that i could write:

for size in rectangle_sizes:

      draw_rectangle(size.x, size.y)


In no point at the code was stated what size was,  Is it a variable? Something that Godot just knows because is in one of its libraries or something? The exercises are full of this types of things, places on the code that just use variables or functions that hasn't been defined or I don't know where they come from nor why, and it's hella confusing and frustrating.

(1 edit) (+1)(-1)

I absolutely understand it's easy to forget some parts, and there could be more practices to go more gradually, as well as more user experience features if we had more funding. The app helped many people learn, and we're well aware that it can be improved and how. We've started work on a complete remake from scratch, though the lack of funding for this kind of free and open-source project makes it challenging to achieve.

To answer the specific case of the for loop you mention, I would invite you to re-read the lesson dedicated to for loops, where this is introduced ( https://gdquest.github.io/learn-gdscript/#course/lesson-18-for-loops/lesson.tres ).

When you write a for loop, you define a temporary variable to which the computer will assign individual values from the array. It's something we introduce in the lesson linked above. So when writing for size in rectangle_sizes, the size bit is a variable that we, the developers, create. You could name it however you'd like, for example, for current_rectangle_size in rectangle_sizes. 

In each loop iteration, the loop variable will receive one value extracted from the rectangle_sizes array.

Thank you Thank you Thank you! This is so helpful for newbies like me!

(1 edit) (+1)

This is a fantastic tool for learning GDScript and coding in general!

One issue I have: it might not be feasible, but it would be nice if things we are explicitly asked to create are not hard-coded elsewhere in the program such that we have to be precise with our naming.

For example, in practice 5.2 Drawing Multiple Squares we are told to create a function called  "draw_three_squares". In the context of the course at this point, we should be able to call it "drawThreeSquares()" or "draw_3_squares()" or "feed_me_cookies()" and the function should still execute - all of which meet the parameters of the quiz question we had just been given.

Instead we are given a not-very-helpful error.

In the version on this page, it simply says "did you not call draw_square()?" which is incorrect because we did call draw_square(), just not in a function explicitly labeled "draw_three_squares()"

The error is slightly more helpful at the version here, but largely insinuates a typo or syntax error which "blames" the user for something they did not do incorrectly.

To the learner at this point, we should have no reason to believe that when we are defining a function ourselves, the name needs to be an exact match to the instructions. 

i love godot, it makes sence


Reminding myself that, when i release my first game, i will always credit this lovely experience for teaching me the basics and motivating me to start <3


I'm looking forward to this! I'm a Unity refugee...just by going up through the first Practice thing, the educational approach appears to be the best I've experienced by far (with one exception) from the Unity side.


nice its pretty easy to learn thxx

Lo podrian traducir al español, porfa


acá esta el link de la pagina mas actualizada, entras en configuración y cambias el idioma a español :D

I recently finished this and it was pretty helpful! It helped me familiarize coding in general and how GDScript works. While doing this, I was following a tutorial. This helped me a lot fixing some errors while coding and understand the underlying mechanics on how things work. Great stuff!

Bonjour. Comment installer la traduction française? Ca marche seulement en ligne?

Bonjour! J'utilise Google Translate, veuillez donc pardonner toute grammaire incorrecte. Vous n'avez pas besoin d'installer une version différente, ils ont un menu d'options. Dans le menu des options, allez dans la liste déroulante indiquant ENGLISH, cliquez dessus et sélectionnez FRENCH. Cliquez ensuite sur le bouton APPLY. J'espère que cela t'aides! Et je suis vraiment désolé que cela fasse presque un an depuis que quelqu'un a répondu à votre commentaire. :D

Ce n'est pas grave :D . J'utilisais la version en ligne car la langue francaise n'était pas encore intégré a cette appli mais si ca a changé alors même si j'en suis a plus de la moitié ca m'aidera quand même un peu et aidera d'autres personnes a l'avenir :D . Y avait pas le francais quand j'avais posté mais c'est cool que ca ai évolué :D . Bonne soirée.

incredible tool !

Thank you 🙏

Well done!


It’s a really nice tool to familiarize your with GDScript. Chip in a few bucks and support those who are helping folks build the games of tomorrow.


I hope everyone who helped make this app finds a billion dollar bill. I do not care how it happens nor will I question if such a thing is even possible, I will simply hope for it to happen.


real shit


This has been an awesome resource for learning the basics of Godot. My only gripe with the program is that; to get the correct solutions, many of the later lessons require specific variables that aren't declared anywhere in the instructions. There's really no way to know which variables are correct without either looking at the solution or making a lucky guess. Regardless, the program is an absolute must-do for anyone new to making games in Godot.


This is the best Godot learning App. It is amazing. It helps  so mutch to switch from Unity to Godot.


It seems they don't update this page anymore. The absolute latest version online is at https://gdquest.github.io/learn-gdscript/staging/ or you can compile it yourself from https://github.com/GDQuest/learn-gdscript


I've noticed an issue with the game on the lesson 11: time delta, if you do it incorrectly and the code runs too fast or does an infinite loop, the game doesn't handle it and just crashes, forcing a reload and losing all progress.

Viewing most recent comments 1 to 40 of 87 · Next page · Last page