Logo
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