About
Introduction
Before you start
About Godot Engine
Organization of the documentation
About this documentation
List of features
Platforms
Editor
Rendering
2D graphics
2D tools
2D physics
3D graphics
3D tools
3D physics
Shaders
Scripting
Audio
Import
Input
Navigation
Networking
Internationalization
Windowing and OS integration
Mobile
XR support (AR and VR)
GUI system
Animation
File formats
Miscellaneous
System requirements
Godot editor
Desktop or laptop PC - Minimum
Mobile device (smartphone/tablet) - Minimum
Desktop or laptop PC - Recommended
Mobile device (smartphone/tablet) - Recommended
Exported Godot project
Desktop or laptop PC - Minimum
Mobile device (smartphone/tablet) - Minimum
Desktop or laptop PC - Recommended
Mobile device (smartphone/tablet) - Recommended
Frequently asked questions
What can I do with Godot? How much does it cost? What are the license terms?
Which platforms are supported by Godot?
Which programming languages are supported in Godot?
What is GDScript and why should I use it?
What were the motivations behind creating GDScript?
Which programming language is fastest?
What 3D model formats does Godot support?
Will [insert closed SDK such as FMOD, GameWorks, etc.] be supported in Godot?
How can I extend Godot?
How do I install the Godot editor on my system (for desktop integration)?
Windows
macOS
Linux
Is the Godot editor a portable application?
Why does Godot aim to keep its core feature set small?
How should assets be created to handle multiple resolutions and aspect ratios?
When is the next release of Godot out?
Which Godot version should I use for a new project?
Should I upgrade my project to use new Godot versions?
Should I use the Forward+, Mobile, or Compatibility renderer?
I would like to contribute! How can I get started?
I have a great idea for Godot. How can I share it?
Is it possible to use Godot to create non-game applications?
Is it possible to use Godot as a library?
What user interface toolkit does Godot use?
Why does Godot use the SCons build system?
Why does Godot not use STL (Standard Template Library)?
Why does Godot not use exceptions?
Does Godot use an ECS (Entity Component System)?
Why does Godot not force users to implement DOD (Data-Oriented Design)?
How can I support Godot development or contribute?
Who is working on Godot? How can I contact you?
Complying with licenses
What are licenses?
Requirements
Inclusion
Credits screen
Licenses screen
Output log
Accompanying file
Printed manual
Link to the license
Third-party licenses
Godot release policy
Godot versioning
Release support timeline
Which version should I use for a new project?
Should I upgrade my project to use new engine versions?
When is the next release out?
What are the criteria for compatibility across engine versions?
Documentation changelog
New pages since version 4.4
Editor
GDExtension
Migrating
Scripting
New pages since version 4.3
2D
3D
Debug
Editor
Migrating
Performance
Physics
Rendering
Shaders
New pages since version 4.2
About
2D
Contributing
GDExtension
Migrating
Rendering
XR
New pages since version 4.1
C#
Development
Migrating
I/O
Platform-specific
New pages since version 4.0
Development
Migrating
Physics
New pages since version 3.6
2D
3D
Animation
Assets pipeline
Development
Migrating
Physics
Scripting
Shaders
XR
New pages since version 3.5
New pages since version 3.4
3D
Animation
Editor
New pages since version 3.3
GDScript
New pages since version 3.2
3D
About
Best practices
Development
Editor
Export
Input
Math
Platform-specific
Physics
Shaders
Scripting
User Interface (UI)
New pages since version 3.1
Project workflow
2D
Audio
Math
Inputs
Internationalization
Shading
Networking
Plugins
Multi-threading
Creating content
Optimization
Legal
New pages since version 3.0
Step by step
Scripting
Project workflow
2D
3D
Physics
Animation
GUI
Viewports
Shading
Plugins
Platform-specific
Multi-threading
Creating content
Miscellaneous
Compiling
Engine development
Getting started
Introduction
Introduction to Godot
What is Godot?
What can the engine do?
How does it work and look?
Programming languages
What do I need to know to use Godot?
Learn to code with GDScript
Learn in your browser with the GDScript app
Overview of Godot's key concepts
Scenes
Nodes
The scene tree
Signals
Summary
First look at Godot's interface
The Project Manager
First look at Godot's editor
The five main screens
Integrated class reference
Learning new features
Making the most of this manual
Learning to think like a programmer
Learning with the community
Community tutorials
Godot's design philosophy
Object-oriented design and composition
All-inclusive package
Open source
Community-driven
The Godot editor is a Godot game
Separate 2D and 3D engines
Step by step
Nodes and Scenes
Nodes
Scenes
Creating your first scene
Changing a node's properties
Running the scene
Setting the main scene
Creating instances
In practice
Editing scenes and instances
Scene instances as a design language
Summary
Scripting languages
Available scripting languages
Which language should I use?
GDScript
.NET / C#
C++ via GDExtension
Summary
Creating your first script
Project setup
Creating a new script
Hello, world!
Turning around
Moving forward
Complete script
Listening to player input
Moving when pressing "up"
Complete script
Summary
Using signals
Scene setup
Connecting a signal in the editor
Connecting a signal via code
Complete script
Custom signals
Summary
Your first 2D game
Prerequisites
Contents
Setting up the project
Organizing the project
Creating the player scene
Node structure
Sprite animation
Coding the player
Choosing animations
Preparing for collisions
Creating the enemy
Node setup
Enemy script
The main game scene
Spawning mobs
Main script
Testing the scene
Heads up display
ScoreLabel
Message
StartButton
Connecting HUD to Main
Removing old creeps
Finishing up
Background
Sound effects
Keyboard shortcut
Sharing the finished game with others
Your first 3D game
Contents
Setting up the game area
Setting up the playable area
Player scene and input actions
Creating input actions
Moving the player with code
Testing our player's movement
Designing the mob scene
Removing monsters off-screen
Spawning monsters
Creating the spawn path
Spawning monsters randomly
Jumping and squashing monsters
Controlling physics interactions
Jumping
Squashing monsters
Killing the player
Hitbox with the Area node
Ending the game
Code checkpoint
Score and replay
Creating a UI theme
Keeping track of the score
Retrying the game
Adding music
Character animation
Using the animation editor
The float animation
Animating the mobs
Going further
Exploring the manual
Manual
Best practices
Introduction
Applying object-oriented principles in Godot
How scripts work in the engine
Scenes
Scene organization
How to build relationships effectively
Choosing a node tree structure
When to use scenes versus scripts
Anonymous types
Named types
Performance of Script vs PackedScene
Conclusion
Autoloads versus regular nodes
The cutting audio issue
Managing shared functionality or data
When you should use an Autoload
When and how to avoid using nodes for everything
Godot interfaces
Acquiring object references
Accessing data or logic from an object
Godot notifications
_process vs. _physics_process vs. *_input
_init vs. initialization vs. export
_ready vs. _enter_tree vs. NOTIFICATION_PARENTED
Data preferences
Array vs. Dictionary vs. Object
Enumerations: int vs. string
AnimatedTexture vs. AnimatedSprite2D vs. AnimationPlayer vs. AnimationTree
Logic preferences
Adding nodes and changing properties: which first?
Loading vs. preloading
Large levels: static vs. dynamic
Project organization
Introduction
Organization
Style guide
Importing
Ignoring specific folders
Case sensitivity
Version control systems
Introduction
Version control plugins
Official Git plugin
Files to exclude from VCS
Working with Git on Windows
Git LFS
Troubleshooting
The editor runs slowly and uses all my CPU and GPU resources, making my computer noisy
The editor stutters and flickers on my variable refresh rate monitor (G-Sync/FreeSync)
The editor or project takes a very long time to start
The Godot editor appears frozen after clicking the system console
The Godot editor's macOS dock icon gets duplicated every time it is manually moved
Some text such as "NO DC" appears in the top-left corner of the Project Manager and editor window
A microphone or "refresh" icon appears in the bottom-right corner of the Project Manager and editor window
The editor or project appears overly sharp or blurry
The editor or project appears to have washed out colors
The editor/project freezes or displays glitched visuals after resuming the PC from suspend
The project works when run from the editor, but fails to load some files when running from an exported copy
The project crashes frequently or instantly after opening it from the project manager
Editor introduction
Editor's interface
Using the Project Manager
Creating and importing projects
Opening and importing projects
Downloading demos and templates
Managing projects with tags
Recovery Mode
Inspector Dock
Usage
Project Settings
Changing project settings
Reading project settings
Manually editing project.godot
Advanced project settings
Script Editor
Introduction
Features
Usage
Default editor shortcuts
General editor actions
Bottom panels
2D / CanvasItem editor
3D / Spatial editor
Text editor
Script editor
Editor output
Debugger
File dialog
FileSystem dock
Scene tree dock
Animation track editor
TileMap editor
TileSet Editor
GridMap Editor
Project manager
Customizing the interface
Moving and resizing docks
Splitting the script or shader editor to its own window
Customizing editor layouts
Customizing editor settings
XR editor
Using the XR editor
XR devices support
Runtime Permissions
Tips & Tricks
Limitations & known issues
Android editor
Using the Android editor
Android devices support
Runtime Permissions
Tips & Tricks
Limitations & known issues
Web editor
Using the Web editor
Browser support
Limitations
Importing a project
Editing and running a project
Where are my project files?
Advanced features
Command line tutorial
Command line reference
Path
Setting the project path
Creating a project
Running the editor
Erasing a scene
Running the game
Debugging
Exporting
Running a script
Using an external text editor
Automatically reloading your changes
Using External Editor in Debugger
Official editor plugins
LSP/DAP support
Using the engine compilation configuration editor
Limitations
Managing editor features
Managing editor features
Introduction
Creating a profile
Sharing a profile
Migrating to a new version
Upgrading from Godot 3 to Godot 4
Should I upgrade to Godot 4?
Advantages of upgrading
Disadvantages of upgrading
Caveats of upgrading
Preparing before the upgrade (optional)
Running the project upgrade tool
Using the Project Manager
Using the command line
Fixing the project after running the project upgrade tool
Automatically renamed nodes and resources
Manually renaming methods, properties, signals and constants
Checking project settings
Checking Environment settings
Updating shaders
Updating scripts to take backwards-incompatible changes into account
ArrayMesh resource compatibility breakage
List of automatically renamed methods, properties, signals and constants
Porting editor settings
Updating version control settings
Upgrading from Godot 4.0 to Godot 4.1
Breaking changes
Core
Animation
2D nodes
3D nodes
GUI nodes
Physics
Rendering
Navigation
Networking
Editor plugins
Behavior changes
Updating your GDExtension for 4.1
Upgrading from Godot 4.1 to Godot 4.2
Breaking changes
Core
Animation
GUI nodes
Rendering
Text
GraphEdit
TileMap
XR
Upgrading from Godot 4.2 to Godot 4.3
Breaking changes
GDExtension
Animation
GUI nodes
Physics
Rendering
Text
Audio
Navigation
TileMap
XR
Editor plugins
Behavior changes
Core
Animation
GUI nodes
Multiplayer
Rendering
TileMap
Android
Upgrading from Godot 4.3 to Godot 4.4
Breaking changes
Core
GUI nodes
Physics
Rendering
Navigation
Editor plugins
Behavior changes
Core
Rendering
CSG
Android
Upgrading from Godot 4.4 to Godot 4.5
Breaking changes
Core
Rendering
GLTF
Text
XR
Editor plugins
Behavior changes
TileMapLayer
3D Model Import
Core
Navigation
Physics
Text
Upgrading from Godot 4.5 to Godot 4.6
Breaking changes
Core
Animation
3D
Rendering
GUI nodes
Networking
OpenXR
Editor
Behavior changes
Android
Core
Rendering
Navigation
Changed defaults
3D
Rendering
GUI nodes
2D
Introduction to 2D
2D workspace
Main toolbar
Coordinate system
2D Viewport
Node2D and Control node
Displaying 3D nodes in 2D
Canvas layers
Viewport and Canvas items
CanvasLayers
Viewport and canvas transforms
Introduction
Canvas transform
Global canvas transform
Stretch transform
Window transform
Transform order
Transform functions
Feeding custom input events
Rendering
2D lights and shadows
Introduction
Nodes
Point lights
Directional light
Common light properties
Setting up shadows
Normal and specular maps
Using additive sprites as a faster alternative to 2D lights
2D meshes
Introduction
Optimizing pixels drawn
Converting Sprite2Ds to 2D meshes
2D sprite animation
Introduction
Individual images with AnimatedSprite2D
Sprite sheet with AnimatedSprite2D
Sprite sheet with AnimationPlayer
Summary
2D particle systems
Intro
Time parameters
Drawing parameters
Particle Process Material Settings
ParticleProcessMaterial 2D Usage
Process material properties
Particle Flags
Spawn
Animated Velocity
Accelerations
Display
Emission Shapes
Customizing the process material
2D antialiasing
Introduction
Antialiasing property in Line2D and custom drawing
Multisample antialiasing (MSAA)
Custom drawing in 2D
Introduction
Drawing
Updating
Coordinates and line width alignment
Antialiased drawing
Tools
Example 1: drawing a custom shape
Example 2: drawing a dynamic line
2D Parallax
Introduction
Getting started
Scroll scale
Infinite repeat
Scroll offset
Repeat times
Split screen
Previewing in the editor
Physics and movement
2D movement overview
Introduction
Setup
8-way movement
Rotation + movement
Rotation + movement (mouse)
Click-and-move
Summary
Tools
Using TileSets
Introduction
Creating a new TileSet
Merging several atlases into a single atlas
Adding collision, navigation and occlusion to the TileSet
Assigning custom metadata to the TileSet's tiles
Creating terrain sets (autotiling)
Assigning properties to multiple tiles at once
Creating alternative tiles
Using TileMaps
Introduction
Specifying the TileSet in the TileMapLayer
Multiple TileMapLayers and settings
Opening the TileMap editor
Selecting tiles to use for painting
Painting modes and tools
Painting randomly using scattering
Saving and loading premade tile placements using patterns
Handling tile connections automatically using terrains
Handling missing tiles
3D
Introduction to 3D
3D workspace
Main toolbar
View menu of viewport
Coordinate system
Space and manipulation gizmos
Navigating the 3D environment
Using Blender-style transform shortcuts
Node3D node
3D content
Manually authored models (using 3D modeling software)
Generated geometry
Immediate geometry
2D in 3D
Environment
Preview environment and light
Cameras
Lights
Using 3D transforms
Introduction
Problems of Euler angles
Axis order
Interpolation
Say no to Euler angles
Introducing transforms
Manipulating transforms
Precision errors
Obtaining information
Setting information
Interpolating with quaternions
Transforms are your friend
Procedural geometry
Using the ArrayMesh
Setting up the ArrayMesh
Generating a rectangle
Generating a sphere
Saving
Using the MeshDataTool
Using the SurfaceTool
Using ImmediateMesh
What is geometry?
What is a Mesh?
What a Mesh is
Surfaces
Surface array
Tools
ArrayMesh
MeshDataTool
SurfaceTool
ImmediateMesh
Which one should I use?
3D text
Introduction
Label3D
Advantages
Limitations
TextMesh
Advantages
Limitations
Projected Label node (or any other Control)
Advantages
Limitations
Should I use Label3D, TextMesh or a projected Control?
Rendering
3D rendering limitations
Introduction
Texture size limits
Color banding
Depth buffer precision
Transparency sorting
Standard Material 3D and ORM Material 3D
Introduction
BaseMaterial 3D settings
Transparency
Shading
Vertex Color