|
@@ -3,12 +3,12 @@
|
|
List of features
|
|
List of features
|
|
================
|
|
================
|
|
|
|
|
|
-This page aims to list all features currently supported by Godot.
|
|
|
|
|
|
+This page aims to list **all** features currently supported by Godot.
|
|
|
|
|
|
.. note::
|
|
.. note::
|
|
|
|
|
|
This page lists features supported by the current development version of
|
|
This page lists features supported by the current development version of
|
|
- Godot (4.0.alpha). Some of these features may not be available in the
|
|
|
|
|
|
+ Godot (4.0.rc). Some of these features may not be available in the
|
|
`current stable release series (3.x) <https://docs.godotengine.org/en/stable/about/list_of_features.html>`__.
|
|
`current stable release series (3.x) <https://docs.godotengine.org/en/stable/about/list_of_features.html>`__.
|
|
|
|
|
|
Features
|
|
Features
|
|
@@ -28,10 +28,13 @@ Platforms
|
|
- Official binaries are compiled on Ubuntu 14.04.
|
|
- Official binaries are compiled on Ubuntu 14.04.
|
|
- 32-bit binaries can be compiled from source.
|
|
- 32-bit binaries can be compiled from source.
|
|
|
|
|
|
|
|
+- Android 6.0 and later (editor support is experimental).
|
|
|
|
+- :ref:`Web browsers <doc_using_the_web_editor>`. Experimental in 4.0,
|
|
|
|
+ using Godot 3.x is recommended instead when targeting HTML5.
|
|
|
|
+
|
|
**Runs exported projects:**
|
|
**Runs exported projects:**
|
|
|
|
|
|
-- Android 4.4 and later.
|
|
|
|
-- iOS 10.0 and later.
|
|
|
|
|
|
+- iOS 11.0 and later.
|
|
- :ref:`Consoles <doc_consoles>`.
|
|
- :ref:`Consoles <doc_consoles>`.
|
|
|
|
|
|
Godot aims to be as platform-independent as possible and can be ported to new
|
|
Godot aims to be as platform-independent as possible and can be ported to new
|
|
@@ -78,32 +81,47 @@ Editor
|
|
- :ref:`Download projects from the asset library <doc_using_assetlib_editor>`
|
|
- :ref:`Download projects from the asset library <doc_using_assetlib_editor>`
|
|
in the project manager and import them directly.
|
|
in the project manager and import them directly.
|
|
|
|
|
|
|
|
+Rendering
|
|
|
|
+^^^^^^^^^
|
|
|
|
+
|
|
|
|
+3 rendering *methods* (running over 2 rendering *drivers*) are available:
|
|
|
|
+
|
|
|
|
+- **Forward+**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2
|
|
|
|
+ features). The most advanced graphics backend, suited for desktop platforms
|
|
|
|
+ only. Used by default on desktop platforms.
|
|
|
|
+- **Forward Mobile**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2
|
|
|
|
+ features). Less features, but renders simple scenes faster. Suited for mobile
|
|
|
|
+ and desktop platforms. Used by default on mobile platforms.
|
|
|
|
+- **Compatibility**, running over OpenGL 3.3 / OpenGL ES 3.0 / WebGL 2.0. The least
|
|
|
|
+ advanced graphics backend, suited for low-end desktop and mobile platforms.
|
|
|
|
+ Used by default on the web platform.
|
|
|
|
+
|
|
2D graphics
|
|
2D graphics
|
|
^^^^^^^^^^^
|
|
^^^^^^^^^^^
|
|
|
|
|
|
-Vulkan renderer.
|
|
|
|
-
|
|
|
|
- Sprite, polygon and line rendering.
|
|
- Sprite, polygon and line rendering.
|
|
|
|
|
|
- - High-level tools to draw lines and polygons such as Polygon2D and Line2D.
|
|
|
|
|
|
+ - High-level tools to draw lines and polygons such as
|
|
|
|
+ :ref:`class_Polygon2D` and :ref:`class_Line2D`, with support for texturing.
|
|
|
|
|
|
- AnimatedSprite2D as a helper for creating animated sprites.
|
|
- AnimatedSprite2D as a helper for creating animated sprites.
|
|
- Parallax layers.
|
|
- Parallax layers.
|
|
|
|
|
|
- Pseudo-3D support including preview in the editor.
|
|
- Pseudo-3D support including preview in the editor.
|
|
|
|
|
|
-- 2D lighting with normal maps and specular maps.
|
|
|
|
|
|
+- :ref:`2D lighting <doc_2d_lights_and_shadows>` with normal maps and specular maps.
|
|
|
|
|
|
- Point (omni/spot) and directional 2D lights.
|
|
- Point (omni/spot) and directional 2D lights.
|
|
- Hard or soft shadows (adjustable on a per-light basis).
|
|
- Hard or soft shadows (adjustable on a per-light basis).
|
|
- Custom shaders can access a real-time :abbr:`SDF (Signed Distance Field)`
|
|
- Custom shaders can access a real-time :abbr:`SDF (Signed Distance Field)`
|
|
- representation of the 2D scene, which can be used for improved 2D lighting
|
|
|
|
- effects including 2D global illumination.
|
|
|
|
|
|
+ representation of the 2D scene based on :ref:`class_LightOccluder2D` nodes,
|
|
|
|
+ which can be used for improved 2D lighting effects including 2D global illumination.
|
|
|
|
|
|
-- Font rendering using bitmaps, rasterization using FreeType or
|
|
|
|
- multi-channel signed distance fields (MSDF).
|
|
|
|
|
|
+- :ref:`Font rendering <doc_gui_using_fonts>` using bitmaps, rasterization using FreeType
|
|
|
|
+ or multi-channel signed distance fields (MSDF).
|
|
|
|
|
|
- - Bitmap fonts can be exported using tools like BMFont.
|
|
|
|
|
|
+ - Bitmap fonts can be exported using tools like BMFont, or imported from images
|
|
|
|
+ (for fixed-width fonts only).
|
|
- Dynamic fonts support monochrome fonts as well as colored fonts (e.g. for emoji).
|
|
- Dynamic fonts support monochrome fonts as well as colored fonts (e.g. for emoji).
|
|
Supported formats are TTF, OTF, WOFF1 and WOFF2.
|
|
Supported formats are TTF, OTF, WOFF1 and WOFF2.
|
|
- Dynamic fonts support optional font outlines with adjustable width and color.
|
|
- Dynamic fonts support optional font outlines with adjustable width and color.
|
|
@@ -112,24 +130,26 @@ Vulkan renderer.
|
|
those styles.
|
|
those styles.
|
|
- Dynamic fonts support oversampling to keep fonts sharp at higher resolutions.
|
|
- Dynamic fonts support oversampling to keep fonts sharp at higher resolutions.
|
|
- Dynamic fonts support subpixel positioning to make fonts crisper at low sizes.
|
|
- Dynamic fonts support subpixel positioning to make fonts crisper at low sizes.
|
|
|
|
+ - Dynamic fonts support LCD subpixel optimizations to make fonts even crisper at low sizes.
|
|
- Signed distance field fonts can be scaled at any resolution without
|
|
- Signed distance field fonts can be scaled at any resolution without
|
|
requiring re-rasterization. Multi-channel usage makes SDF fonts scale down
|
|
requiring re-rasterization. Multi-channel usage makes SDF fonts scale down
|
|
to lower sizes better compared to monochrome SDF fonts.
|
|
to lower sizes better compared to monochrome SDF fonts.
|
|
|
|
|
|
-- GPU-based particles with support for custom particle shaders.
|
|
|
|
|
|
+- GPU-based :ref:`particles <doc_particle_systems_2d>` with support for
|
|
|
|
+ :ref:`custom particle shaders <doc_particle_shader>`.
|
|
- CPU-based particles.
|
|
- CPU-based particles.
|
|
|
|
|
|
2D tools
|
|
2D tools
|
|
^^^^^^^^
|
|
^^^^^^^^
|
|
|
|
|
|
|
|
+- :ref:`TileMaps <doc_using_tilemaps>` for 2D tile-based level design.
|
|
- 2D camera with built-in smoothing and drag margins.
|
|
- 2D camera with built-in smoothing and drag margins.
|
|
- Path2D node to represent a path in 2D space.
|
|
- Path2D node to represent a path in 2D space.
|
|
|
|
|
|
- Can be drawn in the editor or generated procedurally.
|
|
- Can be drawn in the editor or generated procedurally.
|
|
- PathFollow2D node to make nodes follow a Path2D.
|
|
- PathFollow2D node to make nodes follow a Path2D.
|
|
|
|
|
|
-- 2D geometry helper class.
|
|
|
|
-- Line2D node to draw textured 2D lines.
|
|
|
|
|
|
+- :ref:`2D geometry helper class <class_Geometry2D>`.
|
|
|
|
|
|
2D physics
|
|
2D physics
|
|
^^^^^^^^^^
|
|
^^^^^^^^^^
|
|
@@ -137,35 +157,30 @@ Vulkan renderer.
|
|
**Physics bodies:**
|
|
**Physics bodies:**
|
|
|
|
|
|
- Static bodies.
|
|
- Static bodies.
|
|
|
|
+- Animatable bodies (for objects moving only by script or animation, such as doors and platforms).
|
|
- Rigid bodies.
|
|
- Rigid bodies.
|
|
-- Kinematic bodies.
|
|
|
|
|
|
+- Character bodies.
|
|
- Joints.
|
|
- Joints.
|
|
- Areas to detect bodies entering or leaving it.
|
|
- Areas to detect bodies entering or leaving it.
|
|
|
|
|
|
**Collision detection:**
|
|
**Collision detection:**
|
|
|
|
|
|
-- Built-in shapes: line, box, circle, capsule.
|
|
|
|
|
|
+- Built-in shapes: line, box, circle, capsule, world boundary (infinite plane).
|
|
- Collision polygons (can be drawn manually or generated from a sprite in the editor).
|
|
- Collision polygons (can be drawn manually or generated from a sprite in the editor).
|
|
|
|
|
|
3D graphics
|
|
3D graphics
|
|
^^^^^^^^^^^
|
|
^^^^^^^^^^^
|
|
|
|
|
|
-Vulkan renderer compatible with desktop and mobile platforms. Requires full support for
|
|
|
|
-Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
|
|
-
|
|
|
|
- HDR rendering with sRGB.
|
|
- HDR rendering with sRGB.
|
|
- Perspective, orthographic and frustum-offset cameras.
|
|
- Perspective, orthographic and frustum-offset cameras.
|
|
-- When using the Vulkan Clustered backend (default on desktop), a depth prepass
|
|
|
|
- is used to improve performance in complex scenes by reducing the cost of overdraw.
|
|
|
|
-
|
|
|
|
-- `OpenGL support planned for a future Godot 4.x release <https://godotengine.org/article/about-godot4-vulkan-gles3-and-gles2>`__.
|
|
|
|
-
|
|
|
|
- - If you need OpenGL support, use Godot 3.x which remains supported.
|
|
|
|
|
|
+- When using the Forward+ backend, a depth prepass is used to improve
|
|
|
|
+ performance in complex scenes by reducing the cost of overdraw.
|
|
|
|
+- :ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Forward Mobile.
|
|
|
|
|
|
**Physically-based rendering (built-in material features):**
|
|
**Physically-based rendering (built-in material features):**
|
|
|
|
|
|
- Follows the Disney PBR model.
|
|
- Follows the Disney PBR model.
|
|
-- Supports Lambert, Lambert Wrap (half-Lambert) and Toon diffuse shading modes.
|
|
|
|
|
|
+- Supports Burley, Lambert, Lambert Wrap (half-Lambert) and Toon diffuse shading modes.
|
|
- Supports Schlick-GGX, Toon and Disabled specular shading modes.
|
|
- Supports Schlick-GGX, Toon and Disabled specular shading modes.
|
|
- Uses a roughness-metallic workflow with support for ORM textures.
|
|
- Uses a roughness-metallic workflow with support for ORM textures.
|
|
- Uses horizon specular occlusion (Filament model) to improve material appearance.
|
|
- Uses horizon specular occlusion (Filament model) to improve material appearance.
|
|
@@ -187,10 +202,10 @@ Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
- Specular energy can be adjusted on a per-light basis.
|
|
- Specular energy can be adjusted on a per-light basis.
|
|
- Adjustable light "size" for fake area lights (will also make shadows blurrier).
|
|
- Adjustable light "size" for fake area lights (will also make shadows blurrier).
|
|
- Optional distance fade system to fade distant lights and their shadows, improving performance.
|
|
- Optional distance fade system to fade distant lights and their shadows, improving performance.
|
|
-- When using the Vulkan Clustered backend (default on desktop), lights are
|
|
|
|
|
|
+- When using the Forward+ backend (default on desktop), lights are
|
|
rendered with clustered forward optimizations to decrease their individual cost.
|
|
rendered with clustered forward optimizations to decrease their individual cost.
|
|
Clustered rendering also lifts any limits on the number of lights that can be used on a mesh.
|
|
Clustered rendering also lifts any limits on the number of lights that can be used on a mesh.
|
|
-- When using the Vulkan Mobile backend, up to 8 omni lights and 8 spot lights can
|
|
|
|
|
|
+- When using the Forward Mobile backend, up to 8 omni lights and 8 spot lights can
|
|
be displayed per mesh resource. Baked lighting can be used to overcome this limit
|
|
be displayed per mesh resource. Baked lighting can be used to overcome this limit
|
|
if needed.
|
|
if needed.
|
|
|
|
|
|
@@ -230,7 +245,7 @@ Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
- Screen-space indirect lighting (SSIL) at half or full resolution.
|
|
- Screen-space indirect lighting (SSIL) at half or full resolution.
|
|
Fully real-time and supports any kind of emissive light source (including decals).
|
|
Fully real-time and supports any kind of emissive light source (including decals).
|
|
- VoxelGI and SDFGI use a deferred pass to allow for rendering GI at half
|
|
- VoxelGI and SDFGI use a deferred pass to allow for rendering GI at half
|
|
- resolution to improve performance (while still having working MSAA support).
|
|
|
|
|
|
+ resolution to improve performance (while still having functional MSAA support).
|
|
|
|
|
|
**Reflections:**
|
|
**Reflections:**
|
|
|
|
|
|
@@ -240,10 +255,10 @@ Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
Parallax box correction can optionally be enabled.
|
|
Parallax box correction can optionally be enabled.
|
|
- Screen-space reflections with support for material roughness.
|
|
- Screen-space reflections with support for material roughness.
|
|
- Reflection techniques can be mixed together for greater accuracy or scalability.
|
|
- Reflection techniques can be mixed together for greater accuracy or scalability.
|
|
-- When using the Vulkan Clustered backend (default on desktop), reflection probes are
|
|
|
|
|
|
+- When using the Forward+ backend (default on desktop), reflection probes are
|
|
rendered with clustered forward optimizations to decrease their individual cost.
|
|
rendered with clustered forward optimizations to decrease their individual cost.
|
|
Clustered rendering also lifts any limits on the number of reflection probes that can be used on a mesh.
|
|
Clustered rendering also lifts any limits on the number of reflection probes that can be used on a mesh.
|
|
-- When using the Vulkan Mobile backend, up to 8 reflection probes can be displayed per mesh
|
|
|
|
|
|
+- When using the Forward Mobile backend, up to 8 reflection probes can be displayed per mesh
|
|
resource.
|
|
resource.
|
|
|
|
|
|
**Decals:**
|
|
**Decals:**
|
|
@@ -256,17 +271,17 @@ Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
complex skinned meshes with no performance penalty, even if the decal moves every frame.
|
|
complex skinned meshes with no performance penalty, even if the decal moves every frame.
|
|
- Support for nearest, bilinear, trilinear or anisotropic texture filtering (configured globally).
|
|
- Support for nearest, bilinear, trilinear or anisotropic texture filtering (configured globally).
|
|
- Optional distance fade system to fade distant lights and their shadows, improving performance.
|
|
- Optional distance fade system to fade distant lights and their shadows, improving performance.
|
|
-- When using the Vulkan Clustered backend (default on desktop), decals are
|
|
|
|
|
|
+- When using the Forward+ backend (default on desktop), decals are
|
|
rendered with clustered forward optimizations to decrease their individual cost.
|
|
rendered with clustered forward optimizations to decrease their individual cost.
|
|
Clustered rendering also lifts any limits on the number of decals that can be used on a mesh.
|
|
Clustered rendering also lifts any limits on the number of decals that can be used on a mesh.
|
|
-- When using the Vulkan Mobile backend, up to 8 decals can be displayed per mesh
|
|
|
|
|
|
+- When using the Forward Mobile backend, up to 8 decals can be displayed per mesh
|
|
resource.
|
|
resource.
|
|
|
|
|
|
**Sky:**
|
|
**Sky:**
|
|
|
|
|
|
- Panorama sky (using an HDRI).
|
|
- Panorama sky (using an HDRI).
|
|
- Procedural sky and Physically-based sky that respond to the DirectionalLights in the scene.
|
|
- Procedural sky and Physically-based sky that respond to the DirectionalLights in the scene.
|
|
-- Support for custom sky shaders, which can be animated.
|
|
|
|
|
|
+- Support for :ref:`custom sky shaders <doc_sky_shader>`, which can be animated.
|
|
- The radiance map used for ambient and specular light can be updated in
|
|
- The radiance map used for ambient and specular light can be updated in
|
|
real-time depending on the quality settings chosen.
|
|
real-time depending on the quality settings chosen.
|
|
|
|
|
|
@@ -279,7 +294,7 @@ Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
|
|
|
|
**Volumetric fog:**
|
|
**Volumetric fog:**
|
|
|
|
|
|
-- Global volumetric fog that reacts to lights and shadows.
|
|
|
|
|
|
+- Global :ref:`volumetric fog <doc_volumetric_fog>` that reacts to lights and shadows.
|
|
- Volumetric fog can take indirect light into account when using VoxelGI or SDFGI.
|
|
- Volumetric fog can take indirect light into account when using VoxelGI or SDFGI.
|
|
- Fog volume nodes that can be placed to add fog to specific areas (or remove fog from specific areas).
|
|
- Fog volume nodes that can be placed to add fog to specific areas (or remove fog from specific areas).
|
|
- Each fog volume can have its own custom shader.
|
|
- Each fog volume can have its own custom shader.
|
|
@@ -288,11 +303,13 @@ Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
**Particles:**
|
|
**Particles:**
|
|
|
|
|
|
- GPU-based particles with support for subemitters (2D + 3D), trails (2D + 3D),
|
|
- GPU-based particles with support for subemitters (2D + 3D), trails (2D + 3D),
|
|
- attractors (3D only) and collision (3D only).
|
|
|
|
|
|
+ attractors (3D only) and collision (2D + 3D).
|
|
|
|
|
|
- - Particle attractor shapes supported: box, sphere and 3D vector fields.
|
|
|
|
- - Particle collision shapes supported: box, sphere, baked signed distance field
|
|
|
|
|
|
+ - 3D particle attractor shapes supported: box, sphere and 3D vector fields.
|
|
|
|
+ - 3D particle collision shapes supported: box, sphere, baked signed distance field
|
|
and real-time heightmap (suited for open world weather effects).
|
|
and real-time heightmap (suited for open world weather effects).
|
|
|
|
+ - 2D particle collision is handled using a signed distance field generated in real-time
|
|
|
|
+ based on :ref:`class_LightOccluder2D` nodes in the scene.
|
|
- Trails can use the built-in ribbon trail and tube trail meshes, or custom
|
|
- Trails can use the built-in ribbon trail and tube trail meshes, or custom
|
|
meshes with skeletons.
|
|
meshes with skeletons.
|
|
- Support for custom particle shaders with manual emission.
|
|
- Support for custom particle shaders with manual emission.
|
|
@@ -326,7 +343,7 @@ Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
|
|
|
|
**Anti-aliasing:**
|
|
**Anti-aliasing:**
|
|
|
|
|
|
-- Temporal antialiasing (TAA).
|
|
|
|
|
|
+- Temporal :ref:`antialiasing <doc_3d_antialiasing>` (TAA).
|
|
- Multi-sample antialiasing (MSAA), for both :ref:`doc_2d_antialiasing` and :ref:`doc_3d_antialiasing`.
|
|
- Multi-sample antialiasing (MSAA), for both :ref:`doc_2d_antialiasing` and :ref:`doc_3d_antialiasing`.
|
|
- Fast approximate antialiasing (FXAA).
|
|
- Fast approximate antialiasing (FXAA).
|
|
- Super-sample antialiasing (SSAA) using bilinear 3D scaling and a 3D resolution scale above 1.0.
|
|
- Super-sample antialiasing (SSAA) using bilinear 3D scaling and a 3D resolution scale above 1.0.
|
|
@@ -334,29 +351,31 @@ Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
|
|
|
|
|
|
**Resolution scaling:**
|
|
**Resolution scaling:**
|
|
|
|
|
|
-- Support for rendering 3D at a lower resolution while keeping 2D rendering at
|
|
|
|
- the original scale. This can be used to improve performance on low-end systems
|
|
|
|
- or improve visuals on high-end systems.
|
|
|
|
|
|
+- Support for :ref:`rendering 3D at a lower resolution <doc_resolution_scaling>`
|
|
|
|
+ while keeping 2D rendering at the original scale. This can be used to improve
|
|
|
|
+ performance on low-end systems or improve visuals on high-end systems.
|
|
- Resolution scaling uses bilinear filtering or AMD FidelityFX Super Resolution
|
|
- Resolution scaling uses bilinear filtering or AMD FidelityFX Super Resolution
|
|
1.0 (FSR).
|
|
1.0 (FSR).
|
|
- Texture mipmap LOD bias is adjusted automatically to improve quality at lower
|
|
- Texture mipmap LOD bias is adjusted automatically to improve quality at lower
|
|
resolution scales. It can also be modified with a manual offset.
|
|
resolution scales. It can also be modified with a manual offset.
|
|
|
|
|
|
Most effects listed above can be adjusted for better performance or to further
|
|
Most effects listed above can be adjusted for better performance or to further
|
|
-improve quality. This can be helpful when using Godot for offline rendering.
|
|
|
|
|
|
+improve quality. This can be helpful when
|
|
|
|
+:ref:`using Godot for offline rendering <doc_creating_movies>`.
|
|
|
|
|
|
3D tools
|
|
3D tools
|
|
^^^^^^^^
|
|
^^^^^^^^
|
|
|
|
|
|
-- Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad, ribbon, tube.
|
|
|
|
-- Tools for :ref:`procedural geometry generation <doc_procedural_geometry>`.
|
|
|
|
|
|
+- Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad, torus, ribbon, tube.
|
|
|
|
+- :ref:`GridMaps <doc_using_gridmaps>` for 3D tile-based level design.
|
|
- :ref:`Constructive solid geometry <doc_csg_tools>` (intended for prototyping).
|
|
- :ref:`Constructive solid geometry <doc_csg_tools>` (intended for prototyping).
|
|
|
|
+- Tools for :ref:`procedural geometry generation <doc_procedural_geometry>`.
|
|
- Path3D node to represent a path in 3D space.
|
|
- Path3D node to represent a path in 3D space.
|
|
|
|
|
|
- Can be drawn in the editor or generated procedurally.
|
|
- Can be drawn in the editor or generated procedurally.
|
|
- PathFollow3D node to make nodes follow a Path3D.
|
|
- PathFollow3D node to make nodes follow a Path3D.
|
|
|
|
|
|
-- 3D geometry helper class.
|
|
|
|
|
|
+- :ref:`3D geometry helper class <class_Geometry3D>`.
|
|
- Support for exporting the current scene as a glTF 2.0 file, both from the editor
|
|
- Support for exporting the current scene as a glTF 2.0 file, both from the editor
|
|
and at run-time from an exported project.
|
|
and at run-time from an exported project.
|
|
|
|
|
|
@@ -366,8 +385,9 @@ improve quality. This can be helpful when using Godot for offline rendering.
|
|
**Physics bodies:**
|
|
**Physics bodies:**
|
|
|
|
|
|
- Static bodies.
|
|
- Static bodies.
|
|
|
|
+- Animatable bodies (for objects moving only by script or animation, such as doors and platforms).
|
|
- Rigid bodies.
|
|
- Rigid bodies.
|
|
-- Kinematic bodies.
|
|
|
|
|
|
+- Character bodies.
|
|
- Vehicle bodies (intended for arcade physics, not simulation).
|
|
- Vehicle bodies (intended for arcade physics, not simulation).
|
|
- Joints.
|
|
- Joints.
|
|
- Soft bodies.
|
|
- Soft bodies.
|
|
@@ -376,7 +396,7 @@ improve quality. This can be helpful when using Godot for offline rendering.
|
|
|
|
|
|
**Collision detection:**
|
|
**Collision detection:**
|
|
|
|
|
|
-- Built-in shapes: cuboid, sphere, capsule, cylinder.
|
|
|
|
|
|
+- Built-in shapes: cuboid, sphere, capsule, cylinder, world boundary (infinite plane).
|
|
- Generate triangle collision shapes for any mesh from the editor.
|
|
- Generate triangle collision shapes for any mesh from the editor.
|
|
- Generate one or several convex collision shapes for any mesh from the editor.
|
|
- Generate one or several convex collision shapes for any mesh from the editor.
|
|
|
|
|
|
@@ -398,7 +418,7 @@ Scripting
|
|
- Object-oriented design pattern with scripts extending nodes.
|
|
- Object-oriented design pattern with scripts extending nodes.
|
|
- Signals and groups for communicating between scripts.
|
|
- Signals and groups for communicating between scripts.
|
|
- Support for :ref:`cross-language scripting <doc_cross_language_scripting>`.
|
|
- Support for :ref:`cross-language scripting <doc_cross_language_scripting>`.
|
|
-- Many 2D and 3D linear algebra data types such as vectors and transforms.
|
|
|
|
|
|
+- Many 2D, 3D and 4D linear algebra data types such as vectors and transforms.
|
|
|
|
|
|
:ref:`GDScript: <toc-learn-scripting-gdscript>`
|
|
:ref:`GDScript: <toc-learn-scripting-gdscript>`
|
|
|
|
|
|
@@ -426,11 +446,14 @@ Scripting
|
|
- For scripting game logic, GDScript or C# are recommended if their
|
|
- For scripting game logic, GDScript or C# are recommended if their
|
|
performance is suitable.
|
|
performance is suitable.
|
|
|
|
|
|
-- Official bindings for C and C++.
|
|
|
|
|
|
+- Official GDExtension bindings for `C <https://github.com/godotengine/godot-headers>`__
|
|
|
|
+ and `C++ <https://github.com/godotengine/godot-cpp>`__.
|
|
|
|
|
|
- Use any build system and language features you wish.
|
|
- Use any build system and language features you wish.
|
|
|
|
|
|
-- Maintained D, Kotlin, Python, Nim, and Rust bindings provided by the community.
|
|
|
|
|
|
+- Actively developed GDExtension bindings for `D <https://github.com/godot-dlang/godot-dlang>`__,
|
|
|
|
+ `Haxe <https://hxgodot.github.io/>`__, `Python <https://github.com/touilleMan/godot-python>`__, and `Rust <https://github.com/godot-rust/gdextension>`__
|
|
|
|
+ bindings provided by the community. (Some of these bindings may be experimental and not production-ready.)
|
|
|
|
|
|
Audio
|
|
Audio
|
|
^^^^^
|
|
^^^^^
|
|
@@ -445,10 +468,12 @@ Audio
|
|
- Support for re-routable :ref:`audio buses <doc_audio_buses>` and effects
|
|
- Support for re-routable :ref:`audio buses <doc_audio_buses>` and effects
|
|
with dozens of effects included.
|
|
with dozens of effects included.
|
|
- Support for polyphony (playing several sounds from a single AudioStreamPlayer node).
|
|
- Support for polyphony (playing several sounds from a single AudioStreamPlayer node).
|
|
-- Support for real-time pitch scaling and random pitch.
|
|
|
|
|
|
+- Support for random volume and pitch.
|
|
|
|
+- Support for real-time pitch scaling.
|
|
- Support for sequential/random sample selection, including repetition prevention
|
|
- Support for sequential/random sample selection, including repetition prevention
|
|
when using random sample selection.
|
|
when using random sample selection.
|
|
- Listener2D and Listener3D nodes to listen from a position different than the camera.
|
|
- Listener2D and Listener3D nodes to listen from a position different than the camera.
|
|
|
|
+- Support for :ref:`procedural audio generation <class_AudioStreamGenerator>`.
|
|
- Audio input to record microphones.
|
|
- Audio input to record microphones.
|
|
- MIDI input.
|
|
- MIDI input.
|
|
|
|
|
|
@@ -478,7 +503,7 @@ Import
|
|
|
|
|
|
- glTF 2.0 *(recommended)*.
|
|
- glTF 2.0 *(recommended)*.
|
|
- ``.blend`` (by calling Blender's glTF export functionality transparently).
|
|
- ``.blend`` (by calling Blender's glTF export functionality transparently).
|
|
- - FBX (by calling fbx2gltf transparently).
|
|
|
|
|
|
+ - FBX (by calling `FBX2glTF <https://github.com/godotengine/FBX2glTF>`__ transparently).
|
|
- Collada (.dae).
|
|
- Collada (.dae).
|
|
- Wavefront OBJ (static scenes only, can be loaded directly as a mesh or imported as a 3D scene).
|
|
- Wavefront OBJ (static scenes only, can be loaded directly as a mesh or imported as a 3D scene).
|
|
|
|
|
|
@@ -489,7 +514,8 @@ Import
|
|
Input
|
|
Input
|
|
^^^^^
|
|
^^^^^
|
|
|
|
|
|
-- Input mapping system using hardcoded input events or remappable input actions.
|
|
|
|
|
|
+- :ref:`Input mapping system <doc_input_examples>` using hardcoded input events
|
|
|
|
+ or remappable input actions.
|
|
|
|
|
|
- Axis values can be mapped to two different actions with a configurable deadzone.
|
|
- Axis values can be mapped to two different actions with a configurable deadzone.
|
|
- Use the same code to support both keyboards and gamepads.
|
|
- Use the same code to support both keyboards and gamepads.
|
|
@@ -510,29 +536,30 @@ Input
|
|
Navigation
|
|
Navigation
|
|
^^^^^^^^^^
|
|
^^^^^^^^^^
|
|
|
|
|
|
-- A* algorithm in 2D and 3D.
|
|
|
|
-- Navigation meshes with dynamic obstacle avoidance.
|
|
|
|
|
|
+- A* algorithm in :ref:`2D <class_AStar2D>` and :ref:`3D <class_AStar3D>`.
|
|
|
|
+- Navigation meshes with dynamic obstacle avoidance in
|
|
|
|
+ :ref:`2D <doc_navigation_overview_2d>` and :ref:`3D <doc_navigation_overview_3d>`.
|
|
- Generate navigation meshes from the editor or at run-time (including from an exported project).
|
|
- Generate navigation meshes from the editor or at run-time (including from an exported project).
|
|
|
|
|
|
Networking
|
|
Networking
|
|
^^^^^^^^^^
|
|
^^^^^^^^^^
|
|
|
|
|
|
-- Low-level TCP networking using StreamPeer and TCP_Server.
|
|
|
|
-- Low-level UDP networking using PacketPeer and UDPServer.
|
|
|
|
-- Low-level HTTP requests using HTTPClient.
|
|
|
|
-- High-level HTTP requests using HTTPRequest.
|
|
|
|
|
|
+- Low-level TCP networking using :ref:`class_StreamPeer` and :ref:`class_TCPServer`.
|
|
|
|
+- Low-level UDP networking using :ref:`class_PacketPeer` and :ref:`class_UDPServer`.
|
|
|
|
+- Low-level HTTP requests using :ref:`class_HTTPClient`.
|
|
|
|
+- High-level HTTP requests using :ref:`class_HTTPRequest`.
|
|
|
|
|
|
- Supports HTTPS out of the box using bundled certificates.
|
|
- Supports HTTPS out of the box using bundled certificates.
|
|
|
|
|
|
-- High-level multiplayer API using UDP and ENet.
|
|
|
|
|
|
+- :ref:`High-level multiplayer <doc_high_level_multiplayer>` API using UDP and ENet.
|
|
|
|
|
|
- Automatic replication using remote procedure calls (RPCs).
|
|
- Automatic replication using remote procedure calls (RPCs).
|
|
- Supports unreliable, reliable and ordered transfers.
|
|
- Supports unreliable, reliable and ordered transfers.
|
|
|
|
|
|
-- WebSocket client and server, available on all platforms.
|
|
|
|
-- WebRTC client and server, available on all platforms.
|
|
|
|
-- Support for UPnP to sidestep the requirement to forward ports when hosting
|
|
|
|
- a server behind a NAT.
|
|
|
|
|
|
+- :ref:`WebSocket <doc_websocket>` client and server, available on all platforms.
|
|
|
|
+- :ref:`WebRTC <doc_webrtc>` client and server, available on all platforms.
|
|
|
|
+- Support for :ref:`UPnP <class_UPNP>` to sidestep the requirement to forward ports
|
|
|
|
+ when hosting a server behind a NAT.
|
|
|
|
|
|
Internationalization
|
|
Internationalization
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
@@ -546,28 +573,28 @@ Internationalization
|
|
- Use localized strings in your project automatically in GUI elements or by
|
|
- Use localized strings in your project automatically in GUI elements or by
|
|
using the ``tr()`` function.
|
|
using the ``tr()`` function.
|
|
- Support for pluralization and translation contexts when using gettext translations.
|
|
- Support for pluralization and translation contexts when using gettext translations.
|
|
-- Support for bidirectional typesetting, text shaping and OpenType localized forms.
|
|
|
|
|
|
+- Support for :ref:`bidirectional typesetting <doc_internationalizing_games_bidi>`,
|
|
|
|
+ text shaping and OpenType localized forms.
|
|
- Automatic UI mirroring for right-to-left locales.
|
|
- Automatic UI mirroring for right-to-left locales.
|
|
- Support for pseudolocalization to test your project for i18n-friendliness.
|
|
- Support for pseudolocalization to test your project for i18n-friendliness.
|
|
|
|
|
|
Windowing and OS integration
|
|
Windowing and OS integration
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
+- Spawn multiple independent windows within a single process.
|
|
- Move, resize, minimize, and maximize windows spawned by the project.
|
|
- Move, resize, minimize, and maximize windows spawned by the project.
|
|
- Change the window title and icon.
|
|
- Change the window title and icon.
|
|
- Request attention (will cause the title bar to blink on most platforms).
|
|
- Request attention (will cause the title bar to blink on most platforms).
|
|
- Fullscreen mode.
|
|
- Fullscreen mode.
|
|
|
|
|
|
- - Doesn't use exclusive fullscreen, which allows for fast alt-tabbing. The
|
|
|
|
- downside is that the screen resolution can't be changed this way. For 3D
|
|
|
|
- resolution scaling, use the appropriate project settings or the equivalent
|
|
|
|
- Viewport property. For 2D resolution scaling, use a second Viewport node
|
|
|
|
- to render the game world with a different size.
|
|
|
|
|
|
+ - Uses borderless fullscreen by default on Windows for fast alt-tabbing,
|
|
|
|
+ but can optionally use exclusive fullscreen to reduce input lag.
|
|
|
|
|
|
- Borderless windows (fullscreen or non-fullscreen).
|
|
- Borderless windows (fullscreen or non-fullscreen).
|
|
- Ability to keep a window always on top.
|
|
- Ability to keep a window always on top.
|
|
- Global menu integration on macOS.
|
|
- Global menu integration on macOS.
|
|
-- Execute commands in a blocking or non-blocking manner.
|
|
|
|
|
|
+- Execute commands in a blocking or non-blocking manner (including running
|
|
|
|
+ multiple instances of the same project).
|
|
- Open file paths and URLs using default or custom protocol handlers (if registered on the system).
|
|
- Open file paths and URLs using default or custom protocol handlers (if registered on the system).
|
|
- Parse custom command line arguments.
|
|
- Parse custom command line arguments.
|
|
- Any Godot binary (editor or exported project) can be
|
|
- Any Godot binary (editor or exported project) can be
|
|
@@ -578,13 +605,14 @@ Windowing and OS integration
|
|
Mobile
|
|
Mobile
|
|
^^^^^^
|
|
^^^^^^
|
|
|
|
|
|
-- In-app purchases on Android and iOS.
|
|
|
|
|
|
+- In-app purchases on :ref:`Android <doc_android_in_app_purchases>`
|
|
|
|
+ and :ref:`iOS <doc_plugins_for_ios>`.
|
|
- Support for advertisements using third-party modules.
|
|
- Support for advertisements using third-party modules.
|
|
|
|
|
|
XR support (AR and VR)
|
|
XR support (AR and VR)
|
|
^^^^^^^^^^^^^^^^^^^^^^
|
|
^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
-- Out of the box support for OpenXR.
|
|
|
|
|
|
+- Out of the box :ref:`support for OpenXR <doc_setting_up_xr>`.
|
|
|
|
|
|
- Including support for popular headsets like the Meta Quest and the Valve Index.
|
|
- Including support for popular headsets like the Meta Quest and the Valve Index.
|
|
|
|
|
|
@@ -601,14 +629,16 @@ The editor UI can easily be extended in many ways using add-ons.
|
|
|
|
|
|
- Buttons.
|
|
- Buttons.
|
|
- Checkboxes, check buttons, radio buttons.
|
|
- Checkboxes, check buttons, radio buttons.
|
|
-- Text entry using LineEdit (single line) and TextEdit (multiple lines).
|
|
|
|
-- Dropdown menus using PopupMenu and OptionButton.
|
|
|
|
|
|
+- Text entry using :ref:`class_LineEdit` (single line) and :ref:`class_TextEdit` (multiple lines).
|
|
|
|
+ TextEdit also supports code editing features such as displaying line numbers
|
|
|
|
+ and syntax highlighting.
|
|
|
|
+- Dropdown menus using :ref:`class_PopupMenu` and :ref:`class_OptionButton`.
|
|
- Scrollbars.
|
|
- Scrollbars.
|
|
- Labels.
|
|
- Labels.
|
|
-- RichTextLabel for :ref:`text formatted using BBCode <doc_bbcode_in_richtextlabel>`.
|
|
|
|
|
|
+- RichTextLabel for :ref:`text formatted using BBCode <doc_bbcode_in_richtextlabel>`,
|
|
|
|
+ with support for animated custom effects.
|
|
- Trees (can also be used to represent tables).
|
|
- Trees (can also be used to represent tables).
|
|
- Color picker with RGB and HSV modes.
|
|
- Color picker with RGB and HSV modes.
|
|
-- Containers (horizontal, vertical, grid, flow, center, margin, aspect ratio, draggable splitter, ...).
|
|
|
|
- Controls can be rotated and scaled.
|
|
- Controls can be rotated and scaled.
|
|
|
|
|
|
**Sizing:**
|
|
**Sizing:**
|
|
@@ -618,11 +648,13 @@ The editor UI can easily be extended in many ways using add-ons.
|
|
|
|
|
|
- :ref:`Stack <class_BoxContainer>` layouts.
|
|
- :ref:`Stack <class_BoxContainer>` layouts.
|
|
- :ref:`Grid <class_GridContainer>` layouts.
|
|
- :ref:`Grid <class_GridContainer>` layouts.
|
|
- - :ref:`Margin <class_MarginContainer>` and :ref:`centered <class_CenterContainer>`
|
|
|
|
- layouts.
|
|
|
|
|
|
+ - :ref:`Flow <class_FlowContainer>` layouts (similar to autowrapping text).
|
|
|
|
+ - :ref:`Margin <class_MarginContainer>`, :ref:`centered <class_CenterContainer>`
|
|
|
|
+ and :ref:`aspect ratio <class_AspectRatioContainer>` layouts.
|
|
- :ref:`Draggable splitter <class_SplitContainer>` layouts.
|
|
- :ref:`Draggable splitter <class_SplitContainer>` layouts.
|
|
|
|
|
|
-- Scale to multiple resolutions using the ``canvas_items`` or ``viewport`` stretch modes.
|
|
|
|
|
|
+- Scale to :ref:`multiple resolutions <doc_multiple_resolutions>` using the
|
|
|
|
+ ``canvas_items`` or ``viewport`` stretch modes.
|
|
- Support any aspect ratio using anchors and the ``expand`` stretch aspect.
|
|
- Support any aspect ratio using anchors and the ``expand`` stretch aspect.
|
|
|
|
|
|
**Theming:**
|
|
**Theming:**
|
|
@@ -667,6 +699,7 @@ File formats
|
|
- Can (de)serialize any Godot datatype, including Vector2/3, Color, ...
|
|
- Can (de)serialize any Godot datatype, including Vector2/3, Color, ...
|
|
|
|
|
|
- Read XML files using :ref:`class_XMLParser`.
|
|
- Read XML files using :ref:`class_XMLParser`.
|
|
|
|
+- Read and write ZIP files using :ref:`class_ZIPReader` and :ref:`class_ZIPPacker`.
|
|
- Pack game data into a PCK file (custom format optimized for fast seeking),
|
|
- Pack game data into a PCK file (custom format optimized for fast seeking),
|
|
into a ZIP archive, or directly into the executable for single-file distribution.
|
|
into a ZIP archive, or directly into the executable for single-file distribution.
|
|
- :ref:`Export additional PCK files<doc_exporting_pcks>` that can be read
|
|
- :ref:`Export additional PCK files<doc_exporting_pcks>` that can be read
|
|
@@ -675,6 +708,9 @@ File formats
|
|
Miscellaneous
|
|
Miscellaneous
|
|
^^^^^^^^^^^^^
|
|
^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
+- :ref:`Video playback <doc_playing_videos>` with built-in support for Ogg Theora.
|
|
|
|
+- :ref:`Movie Maker mode <doc_creating_movies>` to record videos from a running
|
|
|
|
+ project with synchronized audio and perfect frame pacing.
|
|
- :ref:`Low-level access to servers <doc_using_servers>` which allows bypassing
|
|
- :ref:`Low-level access to servers <doc_using_servers>` which allows bypassing
|
|
the scene tree's overhead when needed.
|
|
the scene tree's overhead when needed.
|
|
- :ref:`Command line interface <doc_command_line_tutorial>` for automation.
|
|
- :ref:`Command line interface <doc_command_line_tutorial>` for automation.
|
|
@@ -682,6 +718,8 @@ Miscellaneous
|
|
- Export and deploy projects using continuous integration platforms.
|
|
- Export and deploy projects using continuous integration platforms.
|
|
- `Shell completion scripts <https://github.com/godotengine/godot/tree/master/misc/dist/shell>`__
|
|
- `Shell completion scripts <https://github.com/godotengine/godot/tree/master/misc/dist/shell>`__
|
|
are available for Bash, zsh and fish.
|
|
are available for Bash, zsh and fish.
|
|
|
|
+ - Print colored text to standard output on all platforms using
|
|
|
|
+ :ref:`print_rich <class_@GlobalScope_method_print_rich>`.
|
|
|
|
|
|
- Support for :ref:`C++ modules <doc_custom_modules_in_c++>` statically linked
|
|
- Support for :ref:`C++ modules <doc_custom_modules_in_c++>` statically linked
|
|
into the engine binary.
|
|
into the engine binary.
|