latest
General
About
Introduction
Before you start
About Godot Engine
About the documentation
Organization of the documentation
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?
What type of 3D model formats does Godot support?
Will [insert closed SDK such as FMOD, GameWorks, etc.] be supported in Godot?
How should assets be created to handle multiple resolutions and aspect ratios?
How can I extend Godot?
I would like to contribute! How can I get started?
I have a great idea for Godot. How can I share it?
Why does Godot not use STL (Standard Template Library)
Why does Godot not use exceptions?
Why does Godot not enforce RTTI?
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?
Documentation changelog
New tutorials since version 3.1
Project workflow
2D
Audio
Math
Inputs
Internationalization
Shading
Networking
VR
Plugins
Multi-threading
Creating content
Optimization
Legal
New tutorials 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
Step by step
Introduction to Godot’s editor
Project manager
Create or import a project
Your first look at Godot’s editor
The workspaces
Modify the interface
Move and resize docks
Scenes and nodes
Introduction
Nodes
Scenes
Editor
Configuring the project
To be continued…
Instancing
Introduction
Instancing by example
Multiple instances
Editing instances
Conclusion
Instancing (continued)
Recap
Design language
Information overload!
Scripting
Introduction
GDScript
VisualScript
.NET / C#
GDNative / C++
Scripting a scene
Scene setup
Adding a script
The role of the script
Handling a signal
Scripting (continued)
Processing
Groups
Notifications
Overridable functions
Creating nodes
Instancing scenes
Register scripts as classes
Signals
Introduction
Timer example
Connecting signals in code
Custom signals
Conclusion
Your first game
Overview
Project setup
Organizing the project
Player scene
Node structure
Sprite animation
Moving the player
Choosing animations
Preparing for collisions
Enemy scene
Node setup
Enemy script
Main scene
Spawning mobs
Main script
HUD
ScoreLabel
MessageLabel
StartButton
Connecting HUD to Main
Removing old creeps
Finishing up
Background
Sound effects
Keyboard shortcut
Project files
Exporting
Overview
Preparing the project
Setting a main scene
Export templates
Export presets
Exporting by platform
PC (Linux/macOS/Windows)
Android
iOS
HTML5 (web)
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
Design interfaces with the Control nodes
The 5 most common UI elements
TextureRect
TextureButton
TextureProgress
Label
NinePatchRect
There are two workflows to build responsive UIs
Place UI elements precisely with anchors
How to change the anchor
Anchors are relative to the parent container
Margins change with the anchor
Use size tags to change how UI elements fill the available space
Arrange control nodes automatically with containers
The 5 most useful containers
Design a title screen
How to design your game UI
Design the main menu
Break down the UI mockup
Prepare the Main Menu scene
Add the UI sprites
Add containers to place UI elements automatically
Break down the UI mockup
Design the GUI
Breaking down the UI
Create the base GUI
Create the bars’ base
Replace the Label’s font
Add the progress bar
Design the bomb and emerald counters
Turn the bar and counter into reusable UI components
Use scene inheritance to create the remaining elements
Inherit the Bar Scene to build the LifeBar
Design the EnergyBar
Prepare the bomb and emerald counters
Add the UI components to the final GUI
Place the GUI onto the game’s mockup
Control the game’s UI with code
Intro
Download and explore the start project
Set up the Lifebar with the Player’s max_health
Update health with a signal when the player takes a hit
Animate the loss of life with the Tween node
Assign the animated_health to the LifeBar
Fade the bar when the Player dies
Splash screen
Tutorial
Setting up
Animations
Introduction
Add an animation player
Creating the animation
Editing the animation
Resources
Nodes and resources
External vs built-in
Loading resources from code
Loading scenes
Freeing resources
Creating your own resources
File system
Introduction
Implementation
project.godot
Path delimiter
Resource path
User path
Host file system
Drawbacks
SceneTree
Introduction
MainLoop
SceneTree
Root viewport
Scene tree
Tree order
“Becoming active” by entering the
Scene Tree
Changing current scene
Singletons (AutoLoad)
Introduction
AutoLoad
Custom scene switcher
Global.gd
Editor manual
From Unity to Godot Engine
Differences
The editor
The scene system
Project organization
Where are my prefabs?
Glossary correspondence
Scripting: GDScript, C# and Visual Script
Design
Connections: groups and signals
Script serialization
Using Godot in C++
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
Default editor shortcuts
General Editor Actions
2D / Canvas Item Editor
3D / Spatial Editor
Text Editor
Script Editor
Visual Script Editor
Editor Output
Debugger
File Dialog
FileSystem Dock
Scene Tree Dock
Animation Track Editor
Tile Map Editor
Tileset Editor
Scripting
GDScript
GDScript basics
Introduction
Language
Built-in types
Data
GDScript: An introduction to dynamic languages
About
Dynamic nature
Arrays
Dictionaries
For & while
While
Custom iterators
Duck typing
GDScript exports
Introduction to exports
Examples
Exporting bit flags
Exporting arrays
Setting exported variables from a tool script
GDScript style guide
Formatting
Naming conventions
Code order
Static typing
Static typing in GDScript
A brief look at static typing
How to use static typing
Typed or dynamic: stick to one style
Warning system
Cases where you can’t specify types
Summary
GDScript format strings
Usage in GDScript
Multiple placeholders
Format specifiers
Padding
Escape sequence
Format method examples
VisualScript
What is Visual Scripting
Getting started with Visual Scripting
Creating a script
Adding a function
Nodes and terminology
Node properties
Ports and connections
Adding nodes
Adding more nodes
Custom VisualScript nodes
Creating a custom node
Using a custom node
C#
Introduction
Setting up C# for Godot
Configuring an external editor
Creating a C# script
Project setup and workflow
Example
General differences between C# and GDScript
Current gotchas and known issues
Performance of C# in Godot
Using NuGet packages in Godot
Profiling your C# code
Configuring VS 2019 for debugging
Configuring Visual Studio Code for debugging
Features
Type conversion and casting
C# signals
Preprocessor defines
API differences to GDScript
General differences
Global scope
Export keyword
Signal keyword
Singletons
String
Basis
Transform2D
Plane
Rect2
Quat
Array
Dictionary
Variant
Communicating with other scripting languages
Yield
Other differences
C# style guide
Language specification
Formatting
Naming conventions
Member variables
Local variables
Implicitly typed local variables
Other considerations
Cross-language scripting
Instantiating nodes
Instantiating C# nodes from GDScript
Instantiating GDScript nodes from C#
Accessing fields
Accessing C# fields from GDScript
Accessing GDScript fields from C#
Calling methods
Calling C# methods from GDScript
Calling GDScript methods from C#
Inheritance
Creating script templates
Locating the templates
Editor-defined templates
Project-defined templates
Language support and overriding behavior
Default template
List of template placeholders
Base placeholders
Type placeholders
Project workflow
Project setup
Project organization
Introduction
Organization
Importing
Assets workflow
Import process
Importing assets in Godot 3.0+
Changing import parameters
Automatic reimport
Files generated
Changing import resource type
Changing default import parameters
Simplicity is key!
Importing images
Why import them?
Importing textures
Supported image formats
Compression
Flags
Process
Importing audio samples
Why import?
Best practices
Importing translations
Games and internationalization
Translation format
CSV importer
Importing 3D scenes
Godot scene importer
Import workflows
Import options
Animation options
Scene inheritance
Import hints
Blender ESCN exporter
Details on exporting
Disabling specific objects
Build pipeline integration
Export
Exporting projects
Why export?
Export menu
Exporting from the command line
Exporting packs, patches, and mods
Use cases
Overview of PCK files
Generating PCK files
Opening PCK files at runtime
Summary
Feature tags
Introduction
Default features
Custom features
Overriding project settings
Default overrides
Customizing the build
Exporting for PC
Exporting for iOS
Requirements
Export a Godot project to Xcode
Active development considerations
Services for iOS
Exporting for Universal Windows Platform
Limitations on Xbox One
Creating a signing certificate
Signing the package
Installing the package
Exporting for Android
Download the Android SDK
Install OpenJDK or Oracle JDK
Create a debug.keystore
Make sure you have adb
Setting it up in Godot
Providing launcher icons
Exporting for Google Play Store
Optimizing the APK size
Exporting for the Web
WebGL 2
Limitations
Serving the files
Export options
Calling JavaScript from script
One-click deploy
Sounds good, what is it?
Steps for one-click deploy
Custom builds for Android
Set up the custom build environment
Install the Android SDK (command-line version)
Install the Android SDK (Android Studio)
Enabling the custom build and exporting
Changing application icon for Windows
Changing the taskbar icon
Changing the file icon
Testing the result
ICO file requirements
Best practices
Introduction
Godot scenes and scripts are classes
Making sense of classes in Godot
Scripting performances and PackedScene
Scenes and scripts are objects
Scene organization
How to build relationships effectively
Choosing a node tree structure
When to use scenes versus scripts
Anonymous types
Named types
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. AnimatedSprite vs. AnimationPlayer vs. AnimationTree
Logic preferences
Loading vs. preloading
Large levels: static vs. dynamic
Tutorials
2D
Canvas layers
Viewport and Canvas items
CanvasLayers
Viewport and canvas transforms
Introduction
Canvas transform
Global canvas transform
Stretch transform
Transform order
Transform functions
Feeding custom input events
Using tilemaps
Introduction
Project setup
TileMap node
Creating a TileSet
Collision shapes
Atlas tiles
Tips and tricks
Particle systems (2D)
Intro
Particle nodes
ParticlesMaterial
Texture
Time parameters
Lifetime
One Shot
Preprocess
Speed Scale
Explosiveness
Randomness
Fixed FPS
Fract Delta
Drawing parameters
Visibility Rect
Local Coords
Draw Order
ParticlesMaterial settings
Spread
Gravity
Initial Velocity
Angular Velocity
Spin Velocity
Orbit Velocity
Linear Acceleration
Radial Acceleration
Tangential Acceleration
Damping
Angle
Scale
Color
Hue variation
Emission Shapes
Emission Mask
Emission Colors
2D movement overview
Introduction
Setup
8-way movement
Rotation + movement
Rotation + movement (mouse)
Click-and-move
Summary
2D lights and shadows
Introduction
Setup
Nodes
Lights
Shadows
Step by step
2D meshes
Introduction
Optimizing pixels drawn
Converting Sprites to 2D meshes
Custom drawing in 2D
Why?
But…
OK, how?
Updating
An example: drawing circular arcs
Arc function
Draw the arc on the screen
Arc polygon function
Dynamic custom drawing
Tools
2D Sprite animation
Introduction
Individual images with AnimatedSprite
Controlling the animation
Sprite sheet with AnimatedSprite
Sprite sheet with AnimationPlayer
Controlling an AnimationPlayer animation
Summary
3D
Introduction to 3D
Spatial node
3D content
DCC-created models
Generated geometry
Immediate geometry
2D in 3D
Environment
3D viewport
Coordinate system
Space and manipulation gizmos
View menu
Default environment
Cameras
Lights
Using 3D transforms
Introduction
Problems of Euler angles
Axis order
Interpolation
Say no to Euler angles