In this tutorial series, we will cover the basics of developing a simple 2D top-down RPG with Godot 3.2. After the first introductory tutorials, we will get to the heart of game development, learning to use sprites, physics, animations, GUIs, sounds and to program the logic of the game with the Godot script language, GDScript.

  1. Installation and introduction to the editor
  2. Nodes and Scenes
  3. First project
  4. Developing a pixel art RPG
  5. Player movement
  6. Physics and collisions
  7. Using tile maps to create the game map
  8. 2D Sprite animation
  9. Designing the game GUI
  10. Monsters and Artificial Intelligence
  11. Attacks, Damage & Death
  12. Picking and Using Items
  13. Experience Points and Level Advancement
  14. NPCs, Quests and Dialogues
  15. Adding sounds and music using AudioStream nodes
  16. Pause menu. Restart and quit game
  17. Exporting the project
  18. Adding a house with interior
  19. Start Menu – Changing Scene – Saving and Loading the game

Bonus tutorial: Dragging the player with the mouse

You can download the game project on GitHub.

Other Godot posts



mohammad bayazid jalali arasa · January 13, 2020 at 1:47 am

love ur simple tut. continue making man


    Davide Pesce · January 13, 2020 at 7:27 am

    Thank you Mohammad!


Dan · February 20, 2020 at 2:31 pm

Hello David Epesce , would the last tutorial include game save and load data? Thanks for your awesome tutorial.


    Davide Pesce · February 20, 2020 at 2:36 pm

    Hi Dan, I’ll probably write a tutorial dedicated to saving and loading games in the coming weeks.


Danthn · February 21, 2020 at 4:30 am

That would be amazing! I look forward to that Keep up the good work, Davide Pesce.


Laurence · February 24, 2020 at 11:59 pm

Wow, these tutorials are really good, smart and concise and im finding them super helpful.

Still trying to figure out if i want to pursue godot or unity and this will give me some good insight in how godot works (though still unsure if i like a game engine dependant language over c#)


Subcriber · March 15, 2020 at 2:31 pm

Your tutorials are really nice and helpful.
I have followed you step by step but for some reasons when i run the game the dialogues don’t show up and i still don’t understand why. Could you help me?
Thanks a lot.


    Davide Pesce · March 15, 2020 at 3:17 pm

    Hi! To help you I need to see your project. If you can upload it to Dropbox or Google Drive and send me the link (here or privately via the Contact page) as soon as possible I take a look at it and let you know!


      Subcriber · March 15, 2020 at 5:08 pm

      Here is the link to Google Drive:
      Please take a look!
      Hope to get your reply soon.


        Davide Pesce · March 16, 2020 at 11:11 am

        You have a problem in the Font.tres file. My advice is to delete it, recreate it from scratch (the instructions are in this tutorial) and reassign it to all Label and RichTextLabel nodes.


          Subcriber · March 16, 2020 at 7:21 pm

          Wow it finally works!!! Thank you so much!!!!


Anastasia · March 28, 2020 at 2:35 pm

I’m almost done with this series (for now hehehe) and I want to say im so thankfull i found it And i thank you so much for all the times you helped me because there’s been plenty! What you are doing here is very wholesome


    Davide Pesce · March 29, 2020 at 1:29 pm

    Thanks Anastasia, I am glad to have been of some help! 🙂


Zag · April 26, 2020 at 2:30 pm

Hi Davide. These GODOT tutorials are AWESOME!!! Absolutely helped me who had ZERO programming background to understand how actually the game coding related to each other & works! I was searching Youtube for tutorial but mostly shown specific solution for specific problems & was about to give up. And I found you while having last try!!! Hope to see more simple tutorials are coming. RTS or farming will be Great!!! Thank you Davide!!!


    Davide Pesce · April 26, 2020 at 7:30 pm

    Thanks Zag, I’m happy that my tutorials have helped you!
    I still have a tutorial scheduled to finish the RPG series and a standalone one, I hope to finish them soon.
    I have yet to decide what to do next, an RTS would be interesting. Maybe a bit ambitious as an idea, but I’ll think about it!


Nozgoth · May 5, 2020 at 6:31 pm

Will you teach level transition?


    Davide Pesce · May 6, 2020 at 3:48 pm

    In the next tutorial we will go from the main menu to the game so yes, we will learn to load a level (actually I have already mentioned the change_scene function, but in that tutorial it was used to reset the game)


Phigiro · May 12, 2020 at 7:32 pm

Hi Davide!
These tutorials are great!

There are people who can explain well, there are those who can explain very well and than there are you. 🙂

Can you foresee when part 19 is finished?
I Can´t wait! :-))


    Davide Pesce · May 12, 2020 at 10:07 pm

    Thanks for the support Phigiro! Unfortunately the job is taking most of my time, I hope to publish part 19 by the end of May!


daniel · May 23, 2020 at 10:30 pm

the player movemenr is saying error at the entitles it wont move or play


    Davide Pesce · May 24, 2020 at 11:55 am

    Hi Daniel, I can’t help you unless you give me more information about your problem.
    Since these tutorials have now been tested by hundreds of people successfully, the only suggestion I can give you is to follow them step by step and compare the code of your scripts with the one on GitHub.


Cary · June 13, 2020 at 11:53 am

Hi David,

Just wanted to say a massive thank you for this tutorial. I’ve been wanting to try my hand at game programming for over 20 years and just never found the resources. I have very little experience and with your expert guidance I have nearly created and game in 1 week. You are an absolute legend.
Keep up the amazing work.


    Davide Pesce · June 14, 2020 at 9:51 am

    Glad to have been of help, Cary!


Phigiro · July 7, 2020 at 3:26 pm

Hi Davide!

Can you now foresee when part 19 is finished?
I really Can´t wait! :-))

Or have you stoped the Godot-Tutorials?

Greetings from germany


    Davide Pesce · July 7, 2020 at 5:36 pm

    Hi Phigiro!
    Part 19 is in progress and I have many others tutorials planned for the future, but unfortunately my job is taking all my time. So I don’t know when I will be able to finish it. I’m sorry for the delay!


Ransum-TNI · July 10, 2020 at 10:36 pm

I try to make a Platformer Game, i’m new in Godot..
Actually i’m on problems now..
I want to make some Hidden Traps, you know something like Invisible Object and when Player touch it’s Area it’ll show up and boom.. Player dead.

And there’s a problem on it, the Animation of this Hiddens Trap is perfectly work.. also the Area2D Script (Command to Reload Scene) but both are Triggered at the Same times.. so The Animations won’t show and yes it’s Directly brought us to Reload Scene Command..
How can I fix it?
Can you help me please..
I try to ask this question on Facebook but they give me nothing but Judging on me..

Thanks Before
This is my E-MAIL if reply this lemme know it..
prakasgarda2017 [at]

Also, sorry for broken English..
I’m 17 y.o student that want to learn Coding especially in Game Development things 🙂


    Davide Pesce · July 11, 2020 at 1:16 pm

    You need to introduce a delay between the animation and the reloading of the scene. You could use a Timer: when the player enters the Area2D you start the timer, and when the timeout occurs you reload the scene.


oddEvan · July 11, 2020 at 5:39 pm

Just wanted to leave a note here that I’ve started working my way through these and I’m really excited about it. Thanks for putting these out here!


NewbieInCoding · July 28, 2020 at 3:58 pm

Can you please make tutorial on making 3d games in godot? I am finding it difficult. I tried searching tutorials in yt and internet but couldn’t find a good one. Your tutorials are step by step easy to understand and i really found them helpful.


Phigiro · August 20, 2020 at 7:22 pm

Hi Davide,

i have a little Problem:
I want to make an Intro and an Outro.
In the intro/outro the palyer should go somewhere and do something.

Is it state of the art to copy the main scene (rpg tutorial) twice for that.
The problem i see is, when i have, for example, changes in the playernode, then i have to do it in each copy of main scene.

Sorry i´m very new at Godot.

Thanks! 🙂


    Davide Pesce · August 21, 2020 at 11:56 am

    Hi Phigiro, the best solution is to make Player a separate scene, so that if you edit it, changes are automatically applied to all scenes in which it’s instantiated.


      Phigiro · August 21, 2020 at 1:39 pm

      Hey! 😃
      Thanks for your answer!
      Do i have to make a separate scene for the Tilemap to?


        Davide Pesce · August 21, 2020 at 7:34 pm

        What to make as a separate scene and what not is often a personal choice, Godot’s node/scene system is very flexible and allows you to organize a projects in many different ways.

        As a general rule, I recommend that you create a scene when you intend to use an element multiple times. If you have a game divided in levels, and each level has its own map, the tilemap usually doesn’t need to be in its own separate scene.


Phigiro · August 21, 2020 at 8:21 pm

ok, now i understand!

And yes, in my case i use the tilemap three times, in the intro, for the game and the outro.
And perhaps somewhere else. But it is always on the same map.
So it make sence, to separate the tilemap.

Thanks for that! 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

By continuing to browse this Website, you consent to the use of cookies. More information

This Website uses:

By continuing to browse this Website without changing the cookies settings of your browser or by clicking "Accept" below, you consent to the use of cookies.