Logo

About

  • Introduction
    • Before you start
    • About Redot 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
    • Redot editor
      • Desktop or laptop PC - Minimum
      • Mobile device (smartphone/tablet) - Minimum
      • Desktop or laptop PC - Recommended
      • Mobile device (smartphone/tablet) - Recommended
    • Exported Redot 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 Redot? How much does it cost? What are the license terms?
    • Which platforms are supported by Redot?
    • Which programming languages are supported in Redot?
    • What is GDScript and why should I use it?
    • What were the motivations behind creating GDScript?
    • What 3D model formats does Redot support?
    • Will [insert closed SDK such as FMOD, GameWorks, etc.] be supported in Redot?
    • How can I extend Redot?
    • How do I install the Redot editor on my system (for desktop integration)?
      • Windows
      • macOS
      • Linux
    • Is the Redot editor a portable application?
    • Why does Redot prioritize Vulkan and OpenGL over Direct3D?
    • Why does Redot 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 Redot out?
    • Which Redot version should I use for a new project?
    • Should I upgrade my project to use new Redot versions?
    • I would like to contribute! How can I get started?
    • I have a great idea for Redot. How can I share it?
    • Is it possible to use Redot to create non-game applications?
    • Is it possible to use Redot as a library?
    • What user interface toolkit does Redot use?
    • Why does Redot use the SCons build system?
    • Why does Redot not use STL (Standard Template Library)?
    • Why does Redot not use exceptions?
    • Does Redot use an ECS (Entity Component System)?
    • Why does Redot not force users to implement DOD (Data-Oriented Design)?
    • How can I support Redot development or contribute?
    • Who is working on Redot? 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
  • Redot release policy
    • Redot 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.1
      • C#
      • Development
      • Migrating
      • I/O
      • Platform-specific
    • New pages since version 4.0
      • Development
      • Migrating
      • Physics

Getting started

  • Introduction
    • Introduction to Redot
      • What is Redot?
      • What can the engine do?
      • How does it work and look?
      • Programming languages
      • What do I need to know to use Redot?
    • Learn to code with GDScript
      • Learn in your browser with the GDScript app
    • Overview of Redot's key concepts
      • Scenes
      • Nodes
      • The scene tree
      • Signals
      • Summary
    • First look at Redot's interface
      • The Project Manager
      • First look at Redot's editor
      • The four 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
    • Redot's design philosophy
      • Object-oriented design and composition
      • All-inclusive package
      • Open source
      • Community-driven
      • The Redot editor is a Redot 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 Redot
      • 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
    • Redot interfaces
      • Acquiring object references
      • Accessing data or logic from an object
    • Redot 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
  • 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 Redot editor appears frozen after clicking the system console
    • The Redot 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
  • 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
      • The Inspector
        • Overview of the interface
      • Project Settings
      • Default editor shortcuts
        • General Editor Actions
        • 2D / Canvas Item Editor
        • 3D / Spatial Editor
        • Text Editor
        • Script Editor
        • Editor Output
        • Debugger
        • File Dialog
        • FileSystem Dock
        • Scene Tree Dock
        • Animation Track Editor
        • Tile Map Editor
        • Tileset Editor
      • Customizing the interface
        • Moving and resizing docks
        • Splitting the script or shader editor to its own window
        • Customizing editor layouts
        • Customizing editor settings
    • Android editor
      • Using the Android editor
        • Android devices support
        • Required Permissions
        • 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
        • Using External Editor in Debugger
        • Official editor plugins
        • LSP/DAP support
    • Managing editor features
      • Managing editor features
        • Introduction
        • Creating a profile
        • Sharing a profile
  • Migrating to a new version
    • Upgrading from Redot 3 to Redot 4
      • Should I upgrade to Redot 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
    • Upgrading from Redot 4.0 to Redot 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 Redot 4.1 to Redot 4.2
      • Breaking changes
        • Core
        • Animation
        • GUI nodes
        • Rendering
        • Text
        • GraphEdit
        • TileMap
        • XR
    • Upgrading from Redot 4.2 to Redot 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
  • 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
        • ParticleProcessMaterial settings
        • Emission Shapes
      • 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
        • 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 geometry
        • 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
        • Multi-sample antialiasing
      • Standard Material 3D and ORM Material 3D
        • Introduction
        • BaseMaterial 3D settings
        • Transparency
        • Shading
        • Vertex Color
        • Albedo
        • Metallic
        • Roughness
        • Emission
        • Normal map
        • Rim
        • Clearcoat
        • Anisotropy
        • Ambient Occlusion
        • Height
        • Subsurface Scattering
        • Back Lighting
        • Refraction
        • Detail
        • UV1 and UV2
        • Sampling
        • Shadows
        • Billboard
        • Grow
        • Transform
        • Proximity and Distance Fade
        • Material Settings
        • Render priority
        • Next Pass
      • 3D lights and shadows
        • Introduction
        • Light nodes
        • Light number limits
        • Shadow mapping
        • Directional light
        • Omni light
        • Spot light
        • Shadow atlas
        • Balancing performance and quality
      • Using decals
        • Use cases
        • Quick start guide
        • Decal node properties
        • Decal rendering order
        • Tweaking performance and quality
        • Limitations
      • Physical light and camera units
        • Why use physical light and camera units?
        • Setting up physical light units
        • Setting up physical camera units
      • Particle systems (3D)
        • Introduction
        • Basic usage
        • Advanced topics
      • High dynamic range lighting
        • Introduction
        • Computer displays
        • Scene linear & asset pipelines
        • Parameters of HDR
      • Global illumination
        • Introduction to global illumination
        • Using Voxel global illumination
        • Signed distance field global illumination (SDFGI)
        • Using Lightmap global illumination
        • Reflection probes
        • Faking global illumination
      • Environment and post-processing
        • Environment
        • Camera attributes
        • Environment options
        • Mid- and post-processing effects
        • Camera attribute options
      • Volumetric fog and fog volumes
        • Volumetric fog properties
        • Light interaction with volumetric fog
        • Using volumetric fog as a volumetric lighting solution
        • Balancing performance and quality
        • Using fog volumes for local volumetric fog
        • FogVolume properties
        • Custom FogVolume shaders
        • Faking volumetric fog using quads
      • 3D antialiasing
        • Introduction
        • Multisample antialiasing (MSAA)
        • Temporal antialiasing (TAA)
        • AMD FidelityFX Super Resolution 2.2 (FSR2)
        • Fast approximate antialiasing (FXAA)
        • Supersample antialiasing (SSAA)
        • Screen-space roughness limiter
        • Texture roughness limiter on import
        • Which antialiasing technique should I use?
    • Optimization
      • Using MultiMeshInstance3D
        • Introduction
        • Setting up the nodes
        • MultiMesh settings
      • Mesh level of detail (LOD)
        • Introduction
        • Visual comparison
        • Generating mesh LOD
        • Comparing mesh LOD visuals and performance
        • Configuring mesh LOD performance and quality
        • Using mesh LOD with MultiMesh and particles
      • Visibility ranges (HLOD)
        • How it works
        • Setting up visibility range
        • Visibility range properties
        • Configuration tips
      • Occlusion culling
        • Why use occlusion culling
        • How occlusion culling works in Redot
        • Setting up occlusion culling
        • Previewing occlusion culling
        • Performance considerations
        • Troubleshooting
      • Resolution scaling
        • Why use resolution scaling?
        • Resolution scaling options
        • Troubleshooting
      • Variable rate shading
        • What is variable rate shading?
        • Hardware support
        • Using variable rate shading in Redot
    • Tools
      • Prototyping levels with CSG
        • Introduction to CSG nodes
        • Prototyping a level
        • Using prototype textures
        • Exporting as glTF
      • Using GridMaps
        • Introduction
        • Example project
        • Creating a MeshLibrary
        • Collisions
        • Materials
        • NavigationMeshes
        • Exporting the MeshLibrary
        • Using GridMap
        • Using GridMap in code
  • Animation
    • Introduction to the animation features
      • Create an AnimationPlayer node
      • Computer animation relies on keyframes
      • Tutorial: Creating a simple animation
        • Scene setup
        • Adding an animation
        • Managing animation libraries
        • Adding a track
        • The second keyframe
        • Run the animation
        • Autoplay on load
        • Back and forth
        • Track settings
      • Keyframes for other properties
      • Edit keyframes
      • Using RESET tracks
      • Onion Skinning
    • Animation Track types
      • Property Track
      • Position 3D / Rotation 3D / Scale 3D Track
      • Blend Shape Track
      • Call Method Track
      • Bezier Curve Track
      • Audio Playback Track
      • Animation Playback Track
    • Cutout animation
      • What is it?
      • Cutout animation in Redot
      • Making of GBot
      • Setting up the rig
      • Adjusting the pivot
      • RemoteTransform2D node
      • Completing the skeleton
      • Skeletons
      • IK chains
      • Animation tips
        • Setting keyframes and excluding properties
      • Creating a rest pose
      • Modifying rotation only
      • Keyframing IK chains
      • Visually move a sprite behind its parent
      • Setting easing curves for multiple keys
      • 2D Skeletal deform
    • 2D skeletons
      • Introduction
      • Setup
      • Creating the polygons
      • Creating the skeleton
      • Deforming the polygons
      • Internal vertices
    • Using AnimationTree
      • Introduction
      • Creating an AnimationTree
      • Creating a tree
      • Blend tree
        • Blend2 / Blend3
        • OneShot
        • TimeSeek
        • TimeScale
        • Transition
        • BlendSpace2D
        • BlendSpace1D
        • StateMachine
      • For better blending
      • Root motion
      • Controlling from code
      • State machine travel
    • Playing videos
      • Supported playback formats
      • Setting up VideoStreamPlayer
        • Handling resizing and different aspect ratios
        • Displaying a video on a 3D surface
        • Looping a video
      • Video decoding conditions and recommended resolutions
      • Playback limitations
      • Recommended Theora encoding settings
        • Balancing quality and file size
        • FFmpeg: Convert while preserving original video resolution
        • FFmpeg: Resize the video then convert it
      • Chroma Key Videos
        • Scene Setup
        • Writing the Custom Shader
        • UI Controls
        • Signal Handling
    • Creating movies
      • Enabling Movie Maker mode
        • Command line usage
      • Choosing an output format
        • AVI (recommended)
        • PNG
        • Custom
      • Configuration
      • Quitting Movie Maker mode
      • Using high-quality graphics settings
      • Rendering at a higher resolution than the screen resolution
      • Post-processing steps
        • Converting AVI video to MP4
        • Converting PNG image sequence + WAV audio to a video
        • Cutting video
        • Resizing video
        • Reducing framerate
        • Generating accumulation motion blur with FFmpeg
  • Assets pipeline
    • Import process
      • Importing assets in Redot
      • Changing import parameters
      • Reimporting multiple assets
      • Automatic reimport
      • Files generated
      • Changing import resource type
      • Changing default import parameters
      • Further reading
    • Importing images
      • Supported image formats
      • Importing textures
        • Changing import type
        • Detect 3D
      • Import options
        • Compress > Mode
        • Compress > High Quality
        • Compress > HDR Compression
        • Compress > Normal Map
        • Compress > Channel Pack
        • Mipmaps > Generate
        • Mipmaps > Limit
        • Roughness > Mode
        • Roughness > Src Normal
        • Process > Fix Alpha Border
        • Process > Premult Alpha
        • Process > Normal Map Invert Y
        • Process > HDR as sRGB
        • Process > HDR Clamp Exposure
        • Process > Size Limit
        • Detect 3D > Compress To
        • SVG > Scale
        • Editor > Scale With Editor Scale
        • Editor > Convert Colors With Editor Theme
      • Importing SVG images with text
      • Best practices
        • Supporting high-resolution texture sizes in 2D without artifacts
        • Use appropriate texture sizes in 3D
    • Importing audio samples
      • Supported audio formats
      • Importing audio samples
      • Import options (WAV)
      • Force > 8 Bit
      • Force > Mono
      • Force > Max Rate
      • Edit > Trim
      • Edit > Normalize
      • Edit > Loop Mode
      • Compress > Mode
      • Import options (Ogg Vorbis and MP3)
        • Loop
        • Loop Offset
        • BPM
        • Beat Count
        • Bar Beats
      • Advanced import settings (Ogg Vorbis and MP3)
      • Best practices
        • Use appropriate quality settings
        • Use real-time audio effects to reduce file size
    • Importing translations
      • Games and internationalization
      • Translation format
      • CSV importer
    • Importing 3D scenes
      • Available 3D formats
        • Exporting glTF 2.0 files from Blender (recommended)
        • Importing .blend files directly within Redot
        • Exporting DAE files from Blender
        • Importing OBJ files in Redot
        • Importing FBX files in Redot
      • Model export considerations
        • 3D asset direction conventions
        • Exporting textures separately
        • Exporting considerations
        • Lighting considerations
      • Node type customization using name suffixes
        • Remove nodes (-noimp)
        • Create collisions (-col, -convcol, -colonly, -convcolonly)
        • Create Occluder (-occ, -occonly)
        • Create navigation (-navmesh)
        • Create a VehicleBody (-vehicle)
        • Create a VehicleWheel (-wheel)
        • Rigid Body (-rigid)
        • Animation loop (-loop, -cycle)
      • Import configuration
        • Import workflows
        • Scene inheritance
    • Retargeting 3D Skeletons
      • To share animations among multiple Skeletons
      • Options for Retargeting
        • Bone Map
        • Remove Tracks
        • Bone Renamer
        • Rest Fixer
    • Exporting 3D scenes
      • Overview
      • Limitations
    • Blender ESCN exporter
      • Details on exporting
        • Materials
        • Physics properties
        • Lights
        • Mesh
        • Skeleton
        • Animation
      • Disabling specific objects
      • Build pipeline integration
  • Audio
    • Audio buses
      • Introduction
      • Decibel scale
      • Audio buses
      • Playback of audio through a bus
      • Adding effects
      • Automatic bus disabling
      • Bus rearrangement
      • Default bus layout
    • Audio effects
      • Amplify
      • BandLimit and BandPass
      • Capture
      • Chorus
      • Compressor
      • Delay
      • Distortion
      • EQ
      • EQ6, EQ10, EQ21
      • Filter
      • HardLimiter
      • HighPassFilter
      • HighShelfFilter
      • Limiter
      • LowPassFilter
      • LowShelfFilter
      • NotchFilter
      • Panner
      • Phaser
      • PitchShift
      • Record
      • Reverb
      • SpectrumAnalyzer
      • StereoEnhance
    • Audio streams
      • Introduction
      • AudioStream
      • AudioStreamPlayer
      • AudioStreamPlayer2D
      • AudioStreamPlayer3D
        • Reverb buses
        • Doppler
    • Sync the gameplay with audio and music
      • Introduction
      • Using the system clock to sync
      • Using the sound hardware clock to sync
    • Recording with microphone
      • The structure of the demo
    • Text to speech
      • Basic Usage
      • Requirements for functionality
        • Distro-specific one-liners
      • Troubleshooting
      • Best practices
      • Caveats and Other Information
  • Export
    • Exporting projects
      • Why export?
        • On PC
        • On mobile
      • Export menu
        • Export templates
        • Resource options
      • Configuration files
      • Exporting from the command line
      • PCK versus ZIP pack file formats
    • 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 Linux
      • Environment variables
    • Exporting for macOS
      • Requirements
      • Code signing and notarization
        • If you have an Apple Developer ID Certificate and exporting from macOS
        • If you have an Apple Developer ID Certificate and exporting from Linux or Windows
        • If you do not have an Apple Developer ID Certificate
        • Signing Options
        • Notarization Options
      • Entitlements
        • Hardened Runtime Entitlements
        • App Sandbox Entitlement
      • Environment variables
    • Running Redot apps on macOS
      • App is signed, notarized and distributed via App Store
      • App is signed, notarized and distributed outside App Store
      • App is signed (including ad-hoc signatures) but not notarized
      • App is not signed, executable is linker-signed
      • Neither app nor executable is signed (relevant for Apple Silicon Macs only)
    • Exporting for Windows
      • Code signing
        • Setup
      • Environment variables
    • Changing application icon for Windows
      • Creating an ICO file
      • Changing the taskbar icon
      • Changing the file icon
      • Testing the result
    • Exporting for iOS
      • Requirements
      • Export a Redot project to Xcode
      • Active development considerations
        • Steps to link a Redot project folder to Xcode
      • Plugins for iOS
      • Environment variables
      • Troubleshooting
        • xcode-select points at wrong SDK location
    • Exporting for Android
      • Install OpenJDK 17
      • Download the Android SDK
      • Setting it up in Redot
      • Providing launcher icons
      • Exporting for Google Play Store
      • Optimizing the APK size
      • Environment variables
    • Gradle builds for Android
      • Set up the gradle build environment
      • Enabling the gradle build and exporting
    • Exporting for the Web
      • WebGL version
      • Export options
      • Limitations
        • Using cookies for data persistence
        • Background processing
        • Full screen and mouse capture
        • Audio
        • Networking
        • Clipboard
        • Gamepads
        • Boot splash is not displayed
      • Serving the files
      • Interacting with the browser and JavaScript
      • Environment variables
    • Exporting for dedicated servers
      • Editor versus export template
      • Export approaches
      • Exporting a project for a dedicated server
      • Starting the dedicated server
      • Next steps
    • One-click deploy
      • What is one-click deploy?
      • Supported platforms
      • Using one-click deploy
      • Troubleshooting
        • Android
        • Web
  • File and data I/O
    • Background loading
      • Using ResourceLoader
      • Example
    • File paths in Redot projects
      • Path separators
      • Accessing files in the project folder (res://)
      • Accessing persistent user data (user://)
      • Converting paths to absolute paths or "local" paths
      • Editor data paths
        • Self-contained mode
    • Saving games
      • Introduction
      • Identify persistent objects
      • Serializing
      • Saving and reading data
      • Some notes
      • JSON vs binary serialization
        • JSON limitations
        • Binary serialization
    • Encrypting save games
    • Runtime file loading and saving
      • Plain text and binary files
      • Images
      • Audio/video files
      • 3D scenes
      • Fonts
      • ZIP archives
    • Binary serialization API
      • Introduction
      • Full Objects vs Object instance IDs
      • Packet specification
        • 0: null
        • 1: bool
        • 2: int
        • 3: float
        • 4: String
        • 5: Vector2
        • 6: Rect2
        • 7: Vector3
        • 8: Transform2D
        • 9: Plane
        • 10: Quaternion
        • 11: AABB
        • 12: Basis
        • 13: Transform3D
        • 14: Color
        • 15: NodePath
        • For old format:
        • For new format:
        • 16: RID (unsupported)
        • 17: Object
        • 18: Dictionary
        • 19: Array
        • 20: PackedByteArray
        • 21: PackedInt32Array
        • 22: PackedInt64Array
        • 23: PackedFloat32Array
        • 24: PackedFloat64Array
        • 25: PackedStringArray
        • 26: PackedVector2Array
        • 27: PackedVector3Array
        • 28: PackedColorArray
  • Internationalization
    • Internationalizing games
      • Introduction
      • Configuring the imported translation
      • Localizing resources
      • Converting keys to text
        • Placeholders
        • Translation contexts
        • Pluralization
      • Making controls resizable
      • TranslationServer
      • Bidirectional text and UI Mirroring
      • Adding break iterator data to exported project
      • Structured text BiDi override
      • Localizing numbers
      • Localizing icons and images
      • Testing translations
      • Translating the project name
    • Localization using gettext
      • Advantages
      • Disadvantages
      • Installing gettext tools
      • Creating the PO template
        • Automatic generation using the editor
        • Manual creation
      • Creating a messages file from a PO template
      • Loading a messages file in Redot
      • Updating message files to follow the PO template
      • Checking the validity of a PO file or template
      • Using binary MO files (useful for large projects only)
    • Locale codes
      • List of supported language codes
      • List of supported script codes
      • List of supported country codes
    • Pseudolocalization
      • Introduction
      • Enabling and configuring pseudolocalization
      • Pseudolocalization configurations
      • Configuring pseudolocalization at runtime
  • Input handling
    • Using InputEvent
      • What is it?
      • How does it work?
      • Anatomy of an InputEvent
      • Actions
      • InputMap
    • Input examples
      • Introduction
      • Events versus polling
      • Input events
      • InputMap
        • Capturing actions
      • Keyboard events
        • Keyboard modifiers
      • Mouse events
        • Mouse buttons
        • Mouse motion
      • Touch events
    • Mouse and input coordinates
      • About
      • Hardware display coordinates
      • Viewport display coordinates
    • Customizing the mouse cursor
      • Using project settings
      • Using a script
      • Cursor list
    • Controllers, gamepads, and joysticks
      • Supporting universal input
        • Which Input singleton method should I use?
      • Vibration
      • Differences between keyboard/mouse and controller input
        • Dead zone
        • "Echo" events
        • Window focus
        • Power saving prevention
      • Troubleshooting
        • My controller isn't recognized by Redot.
        • My controller has incorrectly mapped buttons or axes.
        • My controller works on a given platform, but not on another platform.
    • Handling quit requests
      • Quitting
      • Handling the notification
      • On mobile devices
      • Sending your own quit notification
  • Math
    • Vector math
      • Introduction
      • Coordinate systems (2D)
      • Vector operations
        • Member access
        • Adding vectors
        • Scalar multiplication
      • Practical applications
        • Movement
        • Pointing toward a target
      • Unit vectors
        • Normalization
        • Reflection
      • Dot product
        • Facing
      • Cross product
        • Calculating normals
        • Pointing to a target
      • More information
    • Advanced vector math
      • Planes
        • Distance to plane
        • Away from the origin
        • Constructing a plane in 2D
        • Some examples of planes
      • Collision detection in 3D
      • More information
    • Matrices and transforms
      • Introduction
        • Matrix components and the Identity matrix
        • Scaling the transformation matrix
        • Rotating the transformation matrix
        • Basis of the transformation matrix
        • Translating the transformation matrix
        • Putting it all together
        • Shearing the transformation matrix (advanced)
      • Practical applications of transforms
        • Converting positions between transforms
        • Moving an object relative to itself
        • Applying transforms onto transforms
        • Inverting a transformation matrix
      • How does it all work in 3D?
        • Representing rotation in 3D (advanced)
    • Interpolation
      • Vector interpolation
      • Transform interpolation
      • Smoothing motion
    • Beziers, curves and paths
      • Quadratic Bezier
      • Cubic Bezier
      • Adding control points
      • Curve2D, Curve3D, Path and Path2D
      • Evaluating
      • Drawing
      • Traversal
    • Random number generation
      • Global scope versus RandomNumberGenerator class
      • The randomize() method
      • Getting a random number
      • Get a random array element
      • Get a random dictionary value
      • Weighted random probability
      • "Better" randomness using shuffle bags
      • Random noise
      • Cryptographically secure pseudorandom number generation
  • Navigation
    • 2D navigation overview
      • Setup for 2D scene
    • 3D navigation overview
      • Setup for 3D scene
    • Using NavigationServer
      • Communicating with the NavigationServer
      • Threading and Synchronization
      • 2D and 3D NavigationServer differences
      • Waiting for synchronization
      • Server Avoidance Callbacks
    • Using NavigationMaps
      • Default navigation maps
      • Creating new navigation maps
    • Using NavigationRegions
      • Creating new navigation regions
    • Using navigation meshes
      • Baking a navigation mesh with a NavigationRegion
      • Baking a navigation mesh with the NavigationServer
      • Baking navigation mesh chunks for large worlds
      • Navigation mesh baking common problems
      • Navigation mesh script templates
    • Using NavigationPaths
      • Obtaining a NavigationPath
    • Using NavigationPathQueryObjects
    • Using NavigationAgents
      • NavigationAgent Pathfinding
      • NavigationAgent Pathfollowing
        • Pathfollowing common problems
      • NavigationAgent Avoidance
      • NavigationAgent Script Templates
    • Using NavigationObstacles
      • Obstacles and navigation mesh
      • Obstacles and agent avoidance
        • Static avoidance obstacles
        • Dynamic avoidance obstacles
      • Procedural obstacles
    • Using NavigationLinks
      • Navigation link script templates
    • Using NavigationLayers
    • Navigation debug tools
      • Enabling navigation debug
      • Navigation debug settings
      • Debug navigation mesh polygons
      • Debug edge connections
      • Debug performance
    • Connecting navigation meshes
    • Support different actor types
    • Support different actor locomotion
    • Support different actor area access
    • Optimizing Navigation Performance
      • Performance problems with parsing scene tree nodes
      • Performance problems with navigation mesh baking
      • Performance problems with NavigationAgent path queries
      • Performance problems with the actual path search
      • Performance problems with navigation map synchronization
  • Networking
    • High-level multiplayer
      • High-level vs low-level API
      • Mid-level abstraction
      • Hosting considerations
      • Initializing the network
      • Managing connections
      • Remote procedure calls
      • Channels
      • Example lobby implementation
      • Exporting for dedicated servers
    • Making HTTP requests
      • Why use HTTP?
      • HTTP requests in Redot
      • Preparing the scene
      • Scripting the request
      • Sending data to the server
      • Setting custom HTTP headers
    • HTTP client class
    • TLS/SSL certificates
      • Introduction
      • Obtain a certificate from a certificate authority
      • Generate a self-signed certificate
    • WebSocket
      • HTML5 and WebSocket
      • Using WebSocket in Redot
        • Minimal client example
        • Minimal server example
        • Advanced chat demo
    • WebRTC
      • HTML5, WebSocket, WebRTC
        • WebSocket
        • WebRTC
      • Using WebRTC in Redot
        • Minimal connection example
        • Local signaling example
        • Remote signaling with WebSocket
  • Performance
    • Introduction
    • Common
      • General optimization tips
        • Introduction
        • Measuring performance
        • Detective work
        • Profilers
        • Principles
        • Appendix
      • Optimization using Servers
        • Servers
        • RIDs
        • Creating a sprite
        • Instantiating a Mesh into 3D space
        • Creating a 2D RigidBody and moving a sprite with it
        • Getting data from the servers
    • CPU
      • CPU optimization
        • Measuring performance
        • CPU profilers
        • External profilers
        • Manually timing functions
        • Caches
        • Languages
        • Threads
        • SceneTree
        • Physics
    • GPU
      • GPU optimization
        • Introduction
        • Draw calls, state changes, and APIs
        • Pixel cost versus vertex cost
        • Pixel/fragment shaders and fill rate
        • Transparency and blending
        • Multi-platform advice
        • Mobile/tiled renderers
      • Optimization using MultiMeshes
        • MultiMeshes
        • Multimesh example
    • 3D
      • Optimizing 3D performance
        • Culling
        • Transparent objects
        • Level of detail (LOD)
        • Bake lighting
        • Animation and skinning
        • Large worlds
      • Animating thousands of objects
        • Animating thousands of fish with MultiMeshInstance3D
        • Controlling thousands of fish with Particles
    • Threads
      • Using multiple threads
        • Threads
        • Creating a Thread
        • Mutexes
        • Semaphores
      • Thread-safe APIs
        • Threads
        • Global scope
        • Scene tree
        • Rendering
        • GDScript arrays, dictionaries
        • Resources
  • Physics
    • Physics introduction
      • Collision objects
        • Physics material
        • Collision shapes
        • Physics process callback
        • Collision layers and masks
      • Area2D
      • StaticBody2D
      • RigidBody2D
        • Using RigidBody2D
        • Contact reporting
      • CharacterBody2D
        • Character collision response
    • Using RigidBody
      • What is a rigid body?
      • How to control a rigid body
      • The "look at" method
    • Using Area2D
      • Introduction
      • What is an area?
      • Area properties
      • Overlap detection
      • Area influence
        • Point gravity
        • Examples
    • Using CharacterBody2D/3D
      • Introduction
      • What is a character body?
      • Movement and collision
        • move_and_collide
        • move_and_slide
      • Detecting collisions
      • Which movement method to use?
      • Examples
        • Movement and walls
        • Bouncing/reflecting
        • Platformer movement
    • Ray-casting
      • Introduction
      • Space
      • Accessing space
      • Raycast query
      • Collision exceptions
      • Collision Mask
      • 3D ray casting from screen
    • Ragdoll system
      • Introduction
      • Setting up the ragdoll
        • Creating physical bones
        • Cleaning up the skeleton
        • Collision shape adjustment
        • Joints adjustment
      • Simulating the ragdoll
        • Collision layer and mask
    • Kinematic character (2D)
      • Introduction
      • Physics process
      • Scene setup
      • Moving the kinematic character
    • Using SoftBody
      • Basic set-up
      • Cloak simulation
    • Collision shapes (2D)
      • Primitive collision shapes
      • Convex collision shapes
      • Concave or trimesh collision shapes
      • Performance caveats
    • Collision shapes (3D)
      • Primitive collision shapes
      • Convex collision shapes
      • Concave or trimesh collision shapes
      • Performance caveats
    • Large world coordinates
      • Why use large world coordinates?
      • How large world coordinates work
      • Who are large world coordinates for?
      • Enabling large world coordinates
      • Compatibility between single-precision and double-precision builds
        • Known incompatibilities
      • Limitations
    • Troubleshooting physics issues
      • Objects are passing through each other at high speeds
      • Stacked objects are unstable and wobbly
      • Scaled physics bodies or collision shapes do not collide correctly
      • Thin objects are wobbly when resting on the floor
      • Cylinder collision shapes are unstable
      • VehicleBody simulation is unstable, especially at high speeds
      • Collision results in bumps when an object moves across tiles
      • Framerate drops when an object touches another object
      • Physics simulation is unreliable when far away from the world origin
  • Platform-specific
    • Android
      • Redot Android library
        • Using the Redot Android library
        • Redot Android plugins
        • Embedding Redot in existing Android projects
      • Redot Android plugins
        • Introduction
        • Android plugin
        • Building a v2 Android plugin
        • Packaging a v2 Android plugin
        • Using a v2 Android plugin
        • Reference implementations
        • Tips and Guidelines
      • Android in-app purchases
        • Usage
    • iOS plugins
      • Creating iOS plugins
        • Loading and using an existing plugin
        • Creating an iOS plugin
      • Plugins for iOS
        • Accessing plugin singletons
        • Asynchronous methods
        • Store Kit
        • Game Center
    • Web
      • The JavaScriptBridge Singleton
        • Interacting with JavaScript
        • Callbacks
        • Can I use my favorite library?
        • The eval interface
        • Downloading files
      • HTML5 shell class reference
        • Engine
        • Engine configuration
      • Custom HTML page for Web export
        • Setup
        • Starting the project
        • Customizing the behavior
        • Customizing the presentation
        • Debugging
    • Console support in Redot
      • Console porting process
      • Console publishing process
  • Plugins
    • Editor plugins
      • Installing plugins
        • Finding plugins
        • Installing a plugin
        • Enabling a plugin
      • Making plugins
        • About plugins
        • Creating a plugin
        • A custom node
        • Going beyond
        • Registering autoloads/singletons in plugins
      • Making main screen plugins
        • What this tutorial covers
        • Initializing the plugin
        • Main screen scene
        • Update the plugin script
        • Try the plugin
      • Import plugins
        • Introduction
        • Configuration
        • The EditorImportPlugin class
        • Options and presets
        • The import method
        • Platform variants and generated files
        • Trying the plugin
      • 3D gizmo plugins
        • Introduction
        • The EditorNode3DGizmoPlugin
        • Simple approach
        • Alternative approach
      • Inspector plugins
        • Setting up your plugin
        • Interacting with the inspector
        • Adding an interface to edit properties
      • Visual Shader plugins
    • Running code in the editor
      • What is @tool?
      • How to use @tool
      • Important information
      • Try @tool out
      • Editing variables
      • Getting notified when resources change
      • Reporting node configuration warnings
      • Running one-off scripts using EditorScript
      • Instancing scenes
  • Rendering
    • Using Viewports
      • Introduction
      • Input
      • Listener
      • Cameras (2D & 3D)
      • Scale & stretching
      • Worlds
      • Capture
      • Viewport Container
      • Rendering
      • Render target
    • Multiple resolutions
      • The problem of multiple resolutions
      • One size fits all
      • Base size
      • Resizing
      • Stretch settings
        • Stretch Mode
        • Stretch Aspect
        • Stretch Scale
        • Stretch Scale Mode
      • Common use case scenarios
        • Desktop game
        • Mobile game in landscape mode
        • Mobile game in portrait mode
        • Non-game application
      • hiDPI support
      • Reducing aliasing on downsampling
      • Handling aspect ratios
      • Field of view scaling
      • Scaling 2D and 3D elements differently using Viewports
    • Fixing jitter, stutter and input lag
      • What is jitter, stutter and input lag?
      • Distinguishing between jitter and stutter
      • Jitter
      • Stutter
        • Windows
        • Linux
        • macOS
        • Android
        • iOS
      • Input lag
        • Project configuration
        • Hardware/OS-specific
      • Reporting jitter, stutter or input lag problems
    • The Compositor
      • Compositor effects
  • Scripting
    • GDScript
      • GDScript reference
        • History
        • Example of GDScript
        • Language
        • Built-in types
        • Data
      • GDScript: An introduction to dynamic languages
        • About
        • Dynamic nature
        • Arrays
        • Dictionaries
        • For & while
        • While
        • Custom iterators
        • Duck typing
      • GDScript exported properties
        • Basic use
        • Grouping Exports
        • Strings as paths
        • Limiting editor input ranges
        • Floats with easing hint
        • Colors
        • Nodes
        • Resources
        • Exporting bit flags
        • Exporting enums
        • Exporting arrays
        • @export_storage
        • Setting exported variables from a tool script
        • Advanced exports
      • GDScript documentation comments
        • Documenting a script
        • Documenting script members
        • Complete script example
        • @deprecated and @experimental tags
        • BBCode and class reference
      • 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
        • Common unsafe operations and their safe counterparts
        • Cases where you can't specify types
        • Summary
      • GDScript warning system
      • GDScript format strings
        • Usage in GDScript
        • Multiple placeholders
        • Format specifiers
        • Padding
        • Escape sequence
        • Format method examples
    • C#/.NET
      • C# basics
        • Introduction
        • Prerequisites
        • Configuring an external editor
        • Creating a C# script
        • Project setup and workflow
        • Example
        • General differences between C# and GDScript
        • Current gotchas and known issues
        • Common pitfalls
        • Performance of C# in Redot
        • Using NuGet packages in Redot
        • Profiling your C# code
      • C# language features
        • Type conversion and casting
        • Preprocessor defines
      • C# style guide
        • Language specification
        • Formatting
        • Naming conventions
        • Member variables
        • Local variables
        • Implicitly typed local variables
        • Other considerations
      • C# diagnostics
        • Rules
      • Redot API for C#
        • C# API differences to GDScript
        • C# collections
        • C# Variant
        • C# signals
        • C# exported properties
        • C# global classes
      • C# platform support
    • GDExtension
      • What is GDExtension?
        • Introduction
        • Differences between GDExtension and C++ modules
        • Supported languages
        • Version compatibility
      • GDExtension C++ example
        • Introduction
        • Setting up the project
        • Building the C++ bindings
        • Creating a simple plugin
        • Compiling the plugin
        • Using the GDExtension module
        • Adding properties
        • Signals
        • Next steps
      • The .gdextension file
        • Introduction
        • Configuration section
        • Libraries section
        • Icons section
        • Dependencies section
      • GDExtension documentation system
        • Documentation styling
    • Core features
      • How to read the Redot API
        • Inheritance
        • Brief Description
        • Description
        • Tutorials
        • Properties
        • Methods
        • Signals
        • Enumerations
        • Constants
        • Property Descriptions
        • Method Descriptions
      • Debug
        • Overview of debugging tools
        • Debugger panel
        • The Profiler
        • Custom performance monitors
      • Idle and Physics Processing
      • Groups
        • Managing groups
      • Nodes and scene instances
        • Getting nodes
        • Node paths
        • Creating nodes
        • Instancing scenes
      • Overridable functions
      • Cross-language scripting
        • Instantiating nodes
        • Accessing fields
        • Calling methods
        • Connecting to signals
        • Inheritance
      • Creating script templates
        • Locating the templates
        • Default behaviour and overriding it
        • Default template
        • List of template placeholders
      • Evaluating expressions
        • Basic usage
        • Passing variables to an expression
        • Setting a base instance for the expression
        • Example script
        • Built-in functions
      • Change scenes manually
      • Instancing with signals
        • Shooting example
      • Pausing games and process mode
        • Introduction
        • How pausing works
        • Process Modes
        • Pause menu example
      • File system
        • Introduction
        • Implementation
        • project.godot
        • Path delimiter
        • Resource path
        • User path
        • Host file system
        • Drawbacks
      • Resources
        • Nodes and resources
        • External vs built-in
        • Loading resources from code
        • Loading scenes
        • Freeing resources
        • Creating your own resources
      • Singletons (Autoload)
        • Introduction
        • Autoload
        • Custom scene switcher
      • Using SceneTree
        • Introduction
        • MainLoop
        • SceneTree
        • Root viewport
        • Scene tree
        • Tree order
        • "Becoming active" by entering the Scene Tree
        • Changing current scene
      • Scene Unique Nodes
        • Introduction
        • Creation and usage
        • Same-scene limitation
        • Alternatives
  • Shaders
    • Introduction to shaders
      • Shaders in Redot
      • Shader types
      • Render modes
        • Vertex processor
        • Fragment processor
        • Light processor
    • Shading reference
      • Shading language
        • Introduction
        • Data types
        • Arrays
        • Constants
        • Structs
        • Operators
        • Flow control
        • Discarding
        • Functions
        • Varyings
        • Interpolation qualifiers
        • Uniforms
        • Built-in variables
        • Built-in functions
      • Shader preprocessor
        • Why use a shader preprocessor?
        • Directives
      • Spatial shaders
        • Render modes
        • Built-ins
        • Global built-ins
        • Vertex built-ins
        • Fragment built-ins
        • Light built-ins
      • CanvasItem shaders
        • Render modes
        • Built-ins
        • Global built-ins
        • Vertex built-ins
        • Fragment built-ins
        • Light built-ins
        • SDF functions
      • Particle shaders
        • Render modes
        • Built-ins
        • Global built-ins
        • Start and Process built-ins
        • Start built-ins
        • Process built-ins
        • Process functions
      • Sky shaders
        • Render modes
        • Built-ins
        • Global built-ins
        • Sky built-ins
      • Fog shaders
        • Built-ins
        • Global built-ins
        • Fog built-ins
    • Your first shader
      • Your first 2D shader
        • Introduction
        • Setup
        • Your first CanvasItem shader
        • Your first fragment function
        • Your first vertex function
        • Conclusion
      • Your first 3D shader
        • Where to assign my material
        • Setting up
        • Shader magic
        • Noise heightmap
        • Uniforms
        • Interacting with light
      • Your second 3D shader
        • Your first spatial fragment function
        • Animating with TIME
        • Advanced effects: waves
    • Shader materials
      • Introduction
      • Creating a ShaderMaterial
      • Converting to ShaderMaterial
    • Using VisualShaders
      • Creating a VisualShader
      • Using the Visual Shader Editor
      • Visual Shader node interface
      • Visual Shader nodes
        • Expression node
        • Reroute node
        • Fresnel node
        • Boolean node
        • If node
        • Switch node
    • Using compute shaders
      • Create a local RenderingDevice
      • Provide input data
      • Defining a compute pipeline
      • Execute a compute shader
      • Retrieving results
    • Screen-reading shaders
      • Introduction
      • Screen texture
      • Screen texture example
      • Behind the scenes
      • Back-buffer logic
      • Depth texture
      • Normal-roughness texture
      • Redefining screen textures
    • Converting GLSL to Redot shaders
      • GLSL
        • Shader programs
        • Vertex attributes
        • gl_Position
        • Varyings
        • Main
        • Macros
        • Variables
        • Coordinates
        • Precision
      • Shadertoy
        • Types
        • mainImage
        • Variables
        • Coordinates
      • The Book of Shaders
        • Types
        • Main
        • Variables
        • Coordinates
    • Shaders style guide
      • Formatting
        • Encoding and special characters
        • Indentation
        • Line breaks and blank lines
        • Blank lines
        • Line length
        • One statement per line
        • Comment spacing
        • Documentation comments
        • Whitespace
        • Floating-point numbers
      • Accessing vector members
      • Naming conventions
        • Functions and variables
        • Constants
        • Preprocessor directives
      • Code order
        • Local variables
    • Using a SubViewport as a texture
      • Introduction
      • Setting up the scene
      • Setting up the SubViewport
      • Applying the texture
      • Making the planet texture
      • Coloring the planet
      • Making an ocean
    • Custom post-processing
      • Introduction
      • Single pass post-processing
      • Multi-pass post-processing
    • Advanced post-processing
      • Introduction
      • Full screen quad
      • Depth texture
      • Example shader
      • An optimization
    • Making trees
      • Start with a tree
      • Paint with vertex colors
      • Write a custom shader for the leaves
      • Improving the shader
  • User interface (UI)
    • UI building blocks
      • Size and anchors
        • Centering a control
        • Layout Presets
      • Using Containers
        • Container layout
        • Sizing options
        • Container types
        • Creating custom Containers
      • Custom GUI controls
        • So many controls...
        • Drawing
        • Sizing
        • Input
      • Keyboard/Controller Navigation and Focus
        • Node settings
        • Necessary code
      • Control node gallery
    • GUI skinning and themes
      • Introduction to GUI skinning
        • Basics of themes
        • Customizing a control
        • Customizing a project
        • Beyond controls
      • Using the theme editor
        • Creating a theme
        • Theme editor overview
        • Manage and import items
      • Theme type variations
        • Creating a type variation
        • Using a type variation
      • Using Fonts
        • Dynamic fonts
        • Bitmap fonts
        • Loading a font file
        • Font outlines and shadows
        • Advanced font features
    • Control node tutorials
      • BBCode in RichTextLabel
        • Introduction
        • Using BBCode
        • Handling user input safely
        • Stripping BBCode tags
        • Performance
        • Using push_[tag]() and pop() functions instead of BBCode
        • Reference
        • Text effects
        • Custom BBCode tags and text effects
  • XR
    • Basic Tutorial
      • Setting up XR
        • Introduction to the XR system in Redot
        • Prerequisites for XR in Redot 4
        • OpenXR
        • Setting up the XR scene
      • Deploying to Android
        • Setup
        • Gradle Android build
        • Installing the vendors plugin
        • Enabling the vendors plugin
        • Creating the export presets
        • Running on your device from the Redot editor
      • A better XR start script
        • Signals for our script
        • Variables for our script
        • Our updated ready function
        • On session begun
        • On visible state
        • On focussed state
        • On stopping state
        • On pose recentered
      • AR / Passthrough
        • Environment blend modes
        • Configuring your background
        • OpenXR specific
        • Putting it together
        • Shadow to opacity
      • Where to go from here
        • XR Toolkits
    • Advanced topics
      • OpenXR Settings
        • Enabled
        • Default Action Map
        • Form Factor
        • View Configuration
        • Reference Space
        • Environment Blend Mode
        • Foveation Level
        • Foveation Dynamic
        • Submit Depth Buffer
        • Startup Alert
        • Extensions
      • The XR action map
        • The default action map
        • Action sets
        • Actions
        • Profiles
        • Our first controller binding
        • The simple controller
      • Room scale in XR
        • Origin centric solution
        • Step 1
        • Step 2
        • Step 3
        • Character body centric solution
        • Step 1
        • Step 2
        • Step 3
        • When the player walks to somewhere they shouldn't
        • Further suggestions for improvements
      • OpenXR composition layers
        • Introduction
        • Setting up the SubViewport
        • Adding a composition layer
        • Making the interface work
        • Hole punching
      • OpenXR hand tracking
        • Introduction
        • Demo project
        • The Hand Tracking API
        • The hand tracking data source
        • Handling user input
      • OpenXR body tracking
        • HTC Tracker support
    • Redot XR Tools
      • Introducing XR tools
        • Installing XR Tools
        • Basic hands
        • More information
      • Basic XR Locomotion
        • Adding our player body
        • Adding a floor
        • Direct movement
        • Teleport
        • More advanced movement features

Contributing

  • How to contribute
    • Fundraising
    • Technical contributions
  • Contribution workflow
    • Contributing code
    • Testing and reporting issues
      • Testing development versions
      • Filing an issue on GitHub
    • Contributing to the documentation
    • Contributing translations
    • Bisecting regressions
      • What is bisecting?
      • Using official builds to speed up bisecting
      • The Git bisect command
        • Determine the commit hashes
        • Build the engine
        • Run the engine
    • Bug triage guidelines
      • Issues management
        • Labels
        • Documentation labels
        • Milestones
    • Pull request workflow
      • Git source repository
      • Forking and cloning
      • Branching
      • Updating your branch
      • Making changes
      • Pushing changes to a remote
      • Issuing a pull request
      • Modifying a pull request
      • The interactive rebase
      • Rebasing onto another branch
      • Deleting a Git branch
    • Pull request review process
      • Code review and testing
        • 1. Confirm that the problem exists
        • 2. Test the PR and look for regressions
        • 3. Do a code review
        • 4. Iterate with the contributor and improve the PR
        • 5. Approve the pull request
      • Code style review
      • Merging pull requests
        • 1. Get feedback from the right people/teams
        • 2. Get feedback from the community
        • 3. Git checklist
        • 4. GitHub checklist
        • 5. Merge the pull request
    • Testing pull requests
      • Downloading a compiled build
        • If you have a GitHub account
        • If you don't have a GitHub account
      • Compiling a pull request branch from source
        • Downloading a zipped pull request branch
        • Checking out a pull request branch with git
  • Engine development
    • Best practices for engine contributors
      • Introduction
      • Language
      • Best Practices
        • #1: The problem always comes first
        • #2: To solve the problem, it has to exist in the first place
        • #3: The problem has to be complex or frequent
        • #4: The solution must be discussed with others
        • #5: To each problem, its own solution
        • #6: Cater to common use cases, leave the door open for the rare ones
        • #7: Prefer local solutions
        • #8: Don't use complex canned solutions for simple problems
    • Code style guidelines
      • C++ and Objective-C
        • Using clang-format locally
        • Header includes
      • Java
      • Python
        • Using ruff locally
        • Pre-commit hook
      • Comment style guide
    • C++ usage guidelines
      • Rationale
      • Disallowed features
        • Standard Template Library
        • auto keyword
        • Lambdas
        • #pragma once directive
    • Handling compatibility breakages
      • A practical example
    • Buildsystem and work environment
      • Configuring an IDE
        • Android Studio
        • CLion
        • Code::Blocks
        • KDevelop
        • Qt Creator
        • Rider
        • Visual Studio
        • Visual Studio Code
        • Xcode
      • Building from source
        • Getting the source
        • Introduction to the buildsystem
        • Compiling for Windows
        • Compiling for Linux, *BSD
        • Compiling for macOS
        • Compiling for Android
        • Compiling for iOS
        • Cross-compiling for iOS on Linux
        • Compiling for the Web
        • Compiling with .NET
        • Compiling with PCK encryption key
        • Optimizing a build for size
      • Debugging and profiling
        • Using C++ profilers
        • Using sanitizers
        • Debugging on macOS
        • Vulkan
        • Debugging the editor
    • Engine architecture
      • Engine core and modules
        • Redot's architecture diagram
        • Common engine methods and macros
        • Core types
        • Variant class
        • Object class
        • Inheritance class tree
        • Internal rendering architecture
        • 2D coordinate systems and 2D transforms
        • Scripting development
        • Custom modules in C++
        • Binding to external libraries
        • Custom Redot servers
        • Custom resource format loaders
        • Custom AudioStreams
        • Custom platform ports
        • Unit testing
      • Redot file formats
        • GDScript grammar
        • TSCN file format
      • Editor development
        • Introduction to editor development
        • Editor icons
        • Editor style guide
  • Writing documentation
    • Guidelines
      • Content guidelines
        • Guidelines and principles
      • Writing guidelines
        • 7 rules for clear English
        • How to write methods and classes
        • Common vocabulary to use in Redot's documentation
        • Keyboard shortcut guidelines
      • Creating documentation images and videos
        • Images
        • Videos
        • Adding a video to a documentation page
    • Writing the manual
      • Contributing to the documentation
        • Getting started
        • What is the Redot documentation
        • Contributing changes
        • Editing pages online
        • Adding new pages
        • License
      • Building the manual with Sphinx
        • Dealing with errors
        • Hints for performance
    • Class reference guides
      • Contributing to the class reference
        • The source of the class reference
        • What to contribute
        • Updating class reference when working on the engine
      • Class reference primer
        • How to edit class XML
    • Translating the documentation
      • Editor and documentation localization

Community

  • Asset Library
    • About the Asset Library
      • Types of assets
      • Frequently asked questions
        • Can paid assets be uploaded to the asset library?
    • Using the Asset Library
      • On the website
        • Overview
        • Searching
        • Breakdown of an asset
        • Registering and logging in
      • In the editor
    • Submitting to the Asset Library
      • Introduction
      • Submission guidelines
        • Requirements
        • Recommendations
      • Submitting
  • Community channels
    • Language-based communities
  • Tutorials and resources
    • Where to start
    • Video tutorials
    • Text tutorials
    • Devlogs
    • Resources
Redot Engine
  • Redot Engine 4.3 documentation in English
    • Index
    • Edit on GitHub
    Learn how to contribute!

Up to date

This page is up to date for Redot 4.3. If you still find outdated information, please create an issue.

Index

A | C | E | L | M | O | U

A

  • args (None attribute)

C

  • canvas (None attribute)
  • canvasResizePolicy (None attribute)

E

  • Engine() (class)
  • Engine.isWebGLAvailable() (Engine method)
  • Engine.load() (Engine method)
  • Engine.prototype.copyToFS() (Engine.prototype method)
  • Engine.prototype.init() (Engine.prototype method)
  • Engine.prototype.preloadFile() (Engine.prototype method)
  • Engine.prototype.requestQuit() (Engine.prototype method)
  • Engine.prototype.start() (Engine.prototype method)
  • Engine.prototype.startGame() (Engine.prototype method)
  • Engine.unload() (Engine method)
  • EngineConfig (None attribute)
  • executable (None attribute)

L

  • locale (None attribute)

M

  • mainPack (None attribute)

O

  • onExecute() (built-in function)
  • onExit() (built-in function)
  • onPrint() (built-in function)
  • onPrintError() (built-in function)
  • onProgress() (built-in function)

U

  • unloadAfterInit (None attribute)

© Copyright 2024-present by the Redot community, modified from an original work by Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0).

Built with Sphinx using a theme provided by Read the Docs.
Versions v: 4.3
Languages
en
Versions
stable
latest

Hosted by CloudFlare