Introduction to Godot & GDScript
Godot is a free, open-source (MIT-licensed) game engine for 2D and 3D games and interactive applications.
1.1 What is Godot?
Godot is a free, open-source (MIT-licensed) game engine for 2D and 3D games and interactive applications. It runs on Windows, macOS, Linux, and Android (editor), and exports to desktop, mobile, web, and consoles (through third parties). There are no royalties or fees — you own everything you make.
Everything is built from nodes, organized into scenes, which form a scene tree.
Scenes are reusable and nestable (a "Player" scene can be instanced inside a "Level" scene).
Communication between nodes uses signals (the observer pattern built into the engine).
Scripts attach behavior to nodes.
1.2 What is GDScript?
GDScript is a high-level, dynamically typed language with optional static typing, designed specifically for Godot. Its syntax is Python-like (indentation-based), but it is not Python.
Indentation-based, Python-like Dynamic, with optional (gradual) static typing
Reference counting for RefCounted/Resource; manual free()/queue_free() for Node/Object
Tight: node paths ($Sprite2D), signals, exports, editor autocompletion
Compiled to bytecode and run in a VM; typed code uses faster typed instructions
Scripts can be reloaded while the game runs Other supported languages: C# (.NET build of Godot), C++/Rust/Swift and more via GDExtension, and the visual shader editor for shaders. VisualScript was removed in Godot 4.
1.3 Why GDScript?
Designed around the engine: no glue code, short iteration times, built-in editor with debugger.
Easy to learn, yet supports classes, inheritance, lambdas, typed arrays/dictionaries, coroutines.
Fast enough for nearly all gameplay code; heavy algorithms can move to GDExtension.
1.4 History
Juan Linietsky and Ariel Manzur develop the engine for Argentine studios Released on GitHub under MIT license
First stable public release; GDScript already the main language
New 2D lighting, shader editor improvements Scene instancing/inheritance improvements, new editor UI
PBR renderer (GLES3), C# support, GDNative, VisualScript Optional static typing in GDScript, OpenGL ES 2 backend
Mono improvements, physics interpolation (3.5), stable LTS series
Vulkan renderer, GDScript 2.0 (annotations, await, lambdas, typed arrays, first-class signals/callables, super), GDExtension, new TileMap, new multiplayer API
Static variables, @static_unload, performance work Many GDScript/editor refinements, AnimationMixer refactor
TileMapLayer (TileMap deprecated), @export_storage, @export_custom, interactive music, single-threaded web export
Typed dictionaries, @export_tool_button, .uid files, Jolt physics integrated as an option, embedded Game view
Variadic functions, @abstract classes/methods, script backtraces in release builds, many editor improvements
This course targets Godot 4.3–4.5. Most code works on all 4.x versions; features introduced later are tagged (e.g., "4.4+").
1.5 Godot 3 vs Godot 4 at a glance
export var speed = 100 @export var speed:= 100 onready var s = $Sprite @onready var s:= $Sprite2D
yield(get_tree().create_timer(1), "timeout") await get_tree().create_timer(1.0).timeout
connect("pressed", self, "_on_pressed") KinematicBody2D + move_and_slide(velocity)
CharacterBody2D + velocity property + move_and_slide() setget set_x, get_x var x: set = set_x, get = get_x Chapter 41 covers migration in depth.