Godot Game Engine
Tags: gdscript, gamedev, beginners, programming
Published: 2023-12-28 23:20:33

I have been a fan of the Godot Game Engine for a few years now. A sleek game called [Dome Keeper](https://rawfury.com/games/dome-keeper/) set me down my Godot path. I thought to myself, one day I will make a game like this, and I'll do it with Godot. Now that  I am at the end of my Immersion course, I decided to do just that. I used the Godot engine to program a game and although it is a far cry from Dome Keeper, It was nice to finally dig into the sandbox of the engine and produce a tangible result.

![Dome Keeper Poster](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/opj2ejk5haab57iw675i.jpg)

**History**
Originally developed by Argentinian developers Juan Linietsky and Ariel Manzur in 2014. It went through many name iterations before landing on Godot. Names included Larvotor, Legacy, NG3D, and Larvita. The developer environment can run on and export to many platforms. While there is a concentration on 2D and 3D games it can be used to develop non-gaming software, including editors.


![Metroid Start Screen](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7eypi5vymrlzefqyv8hu.png)

**Process**
While looking into Godot, I saw that they have a step-by-step instruction manual for [making your own game](https://docs.godotengine.org/en/stable/getting_started/first_2d_game/index.html). They give you three options of languages: C++, C# and GDScript. I had started this journey with the intent to code in C#, but the GDScript caught my eye. It is Godot's proprietary language with syntax similar to Python where the code is indented rather than using a lot of semicolons and brackets. I download the engine onto my machine and boot it up. The engine itself was intimidating at first, but like with anything coding-related, the more time you spend with it the more comfortable you get. 


![Godot Editor](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tgoiq0vekkcpdehp987l.png)
Godot uses a hierarchy of nodes to create your game. Nodes are organized into "Scenes" as seen in the above picture's red rectangle. These scenes can then be assigned a main node from which all descendent nodes in the scene stem. Each of the descendants can be assigned all manner of behaviors such as timers, paths on which to travel, labels, and music or sound effects. These descendant nodes also have tons of modularity as seen in the green rectangle. Each script also has four main tabs as seen in the blue rectangle. The 2D and 3D are for the modeling of the asset and for placement of where it belongs in the defined space. The Script area is where the logic of that asset can be written. The Node tab in the green rectangle can be used to link different functions between scenes to other scene's nodes. The step-by-step instructions are fairly clear (although admittedly I had to hop on YouTube to get some clarification on some parts I was stuck on.) 

![Dodge the Creeps](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p7z959sxjczzz3okordy.png)
The Player and Mob scenes were fun to work on. In those scenes, I can add animation cells (which I customized with my own character) and you can add collision logic so that when the player and the mob collided, the logic of ending the game would fire off. For the mobs, I had to place boundaries of where they would spawn around the stage and at random intervals. Their logic would be to just move in a straight line at varying speeds.  Later I would like to add logic for their speed to increase as the games' duration increases ala Space Invaders.

![Game Over](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ls2d0ke67zmqfusqs8lb.jpg)

**Conclusion**
In conclusion, I enjoyed my time with Godot Game Engine. It was easy enough to pick up but will take a lot of time to become adept at it. My next steps in this journey will be to redo this project in C# and then try my hand at creating a 3D game. If you are interested in game design, I highly encourage you to give Godot a try and hit the ground running with a game you can build in less than a day.

**References**
https://en.wikipedia.org/wiki/Godot_(game_engine) 
https://godotengine.org/article/godot-history-images/
https://gamefromscratch.com/the-evolution-history-of-the-godot-game-engine/
https://docs.godotengine.org/en/stable/getting_started/introduction/index.html 
https://gdscript.com/