list_of_features.rst 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784
  1. :allow_comments: False
  2. .. _doc_list_of_features:
  3. List of features
  4. ================
  5. This page aims to list **all** features currently supported by Godot.
  6. .. note::
  7. This page lists features supported by the current stable version of
  8. Godot. Some of these features are not available in the
  9. `3.x release series <https://docs.godotengine.org/en/3.6/about/list_of_features.html>`__.
  10. Platforms
  11. ---------
  12. .. seealso::
  13. See :ref:`doc_system_requirements` for hardware and software version requirements.
  14. **Can run both the editor and exported projects:**
  15. - Windows (x86 and ARM, 64-bit and 32-bit).
  16. - macOS (x86 and ARM, 64-bit only).
  17. - Linux (x86 and ARM, 64-bit and 32-bit).
  18. - Binaries are statically linked and can run on any distribution if compiled
  19. on an old enough base distribution.
  20. - Official binaries are compiled using the
  21. `Godot Engine buildroot <https://github.com/godotengine/buildroot>`__,
  22. allowing for binaries that work across common Linux distributions.
  23. - Android (editor support is experimental).
  24. - :ref:`Web browsers <doc_using_the_web_editor>`. Experimental in 4.0,
  25. using Godot 3.x is recommended instead when targeting HTML5.
  26. **Runs exported projects:**
  27. - iOS.
  28. - :ref:`Consoles <doc_consoles>`.
  29. Godot aims to be as platform-independent as possible and can be
  30. :ref:`ported to new platforms <doc_custom_platform_ports>` with relative ease.
  31. .. note::
  32. Projects written in C# using Godot 4 currently cannot be exported to the
  33. web platform. To use C# on that platform, consider Godot 3 instead.
  34. Android and iOS platform support is available as of Godot 4.2, but is
  35. experimental and :ref:`some limitations apply <doc_c_sharp_platforms>`.
  36. Editor
  37. ------
  38. **Features:**
  39. - Scene tree editor.
  40. - Built-in script editor.
  41. - Support for :ref:`external script editors <doc_external_editor>` such as
  42. Visual Studio Code or Vim.
  43. - GDScript :ref:`debugger <doc_debugger_panel>`.
  44. - Support for debugging in threads is available since 4.2.
  45. - Visual profiler with CPU and GPU time indications for each step of the
  46. rendering pipeline.
  47. - Performance monitoring tools, including
  48. :ref:`custom performance monitors <doc_custom_performance_monitors>`.
  49. - Live script reloading.
  50. - Live scene editing.
  51. - Changes will reflect in the editor and will be kept after closing the running project.
  52. - Remote inspector.
  53. - Changes won't reflect in the editor and won't be kept after closing the running project.
  54. - Live camera replication.
  55. - Move the in-editor camera and see the result in the running project.
  56. - Built-in offline class reference documentation.
  57. - Use the editor in dozens of languages contributed by the community.
  58. **Plugins:**
  59. - Editor plugins can be downloaded from the
  60. :ref:`asset library <doc_what_is_assetlib>` to extend editor functionality.
  61. - :ref:`Create your own plugins <doc_making_plugins>` using GDScript to add new
  62. features or speed up your workflow.
  63. - :ref:`Download projects from the asset library <doc_using_assetlib_editor>`
  64. in the Project Manager and import them directly.
  65. Rendering
  66. ---------
  67. Godot 4 includes three renderers:
  68. - **Forward+**. The most advanced renderer, suited for desktop platforms only.
  69. Used by default on desktop platforms. This renderer uses **Vulkan**, **Direct3D 12**,
  70. or **Metal** as the rendering driver, and it uses the **RenderingDevice** backend.
  71. - **Mobile**. Fewer features, but renders simple scenes faster. Suited for mobile
  72. and desktop platforms. Used by default on mobile platforms. This renderer uses
  73. **Vulkan**, **Direct3D 12**, or **Metal** as the rendering driver, and it uses
  74. the **RenderingDevice** backend.
  75. - **Compatibility**, sometimes called **GL Compatibility**. The least advanced
  76. renderer, suited for low-end desktop and mobile platforms. Used by default on
  77. the web platform. This renderer uses **OpenGL** as the rendering driver.
  78. See :ref:`doc_renderers` for a detailed comparison of the rendering methods.
  79. 2D graphics
  80. -----------
  81. - Sprite, polygon and line rendering.
  82. - High-level tools to draw lines and polygons such as
  83. :ref:`class_Polygon2D` and :ref:`class_Line2D`, with support for texturing.
  84. - AnimatedSprite2D as a helper for creating animated sprites.
  85. - Parallax layers.
  86. - Pseudo-3D support including preview in the editor.
  87. - :ref:`2D lighting <doc_2d_lights_and_shadows>` with normal maps and specular maps.
  88. - Point (omni/spot) and directional 2D lights.
  89. - Hard or soft shadows (adjustable on a per-light basis).
  90. - Custom shaders can access a real-time :abbr:`SDF (Signed Distance Field)`
  91. representation of the 2D scene based on :ref:`class_LightOccluder2D` nodes,
  92. which can be used for improved 2D lighting effects including 2D global illumination.
  93. - :ref:`Font rendering <doc_gui_using_fonts>` using bitmaps, rasterization using FreeType
  94. or multi-channel signed distance fields (MSDF).
  95. - Bitmap fonts can be exported using tools like BMFont, or imported from images
  96. (for fixed-width fonts only).
  97. - Dynamic fonts support monochrome fonts as well as colored fonts (e.g. for emoji).
  98. Supported formats are TTF, OTF, WOFF1 and WOFF2.
  99. - Dynamic fonts support optional font outlines with adjustable width and color.
  100. - Dynamic fonts support variable fonts and OpenType features including ligatures.
  101. - Dynamic fonts support simulated bold and italic when the font file lacks
  102. those styles.
  103. - Dynamic fonts support oversampling to keep fonts sharp at higher resolutions.
  104. - Dynamic fonts support subpixel positioning to make fonts crisper at low sizes.
  105. - Dynamic fonts support LCD subpixel optimizations to make fonts even crisper at low sizes.
  106. - Signed distance field fonts can be scaled at any resolution without
  107. requiring re-rasterization. Multi-channel usage makes SDF fonts scale down
  108. to lower sizes better compared to monochrome SDF fonts.
  109. - GPU-based :ref:`particles <doc_particle_systems_2d>` with support for
  110. :ref:`custom particle shaders <doc_particle_shader>`.
  111. - CPU-based particles.
  112. - Optional :ref:`2D HDR rendering <doc_environment_and_post_processing_using_glow_in_2d>`
  113. for better glow capabilities.
  114. 2D tools
  115. --------
  116. - :ref:`TileMaps <doc_using_tilemaps>` for 2D tile-based level design.
  117. - 2D camera with built-in smoothing and drag margins.
  118. - Path2D node to represent a path in 2D space.
  119. - Can be drawn in the editor or generated procedurally.
  120. - PathFollow2D node to make nodes follow a Path2D.
  121. - :ref:`2D geometry helper class <class_Geometry2D>`.
  122. 2D physics
  123. ----------
  124. **Physics bodies:**
  125. - Static bodies.
  126. - Animatable bodies (for objects moving only by script or animation, such as doors and platforms).
  127. - Rigid bodies.
  128. - Character bodies.
  129. - Joints.
  130. - Areas to detect bodies entering or leaving it.
  131. **Collision detection:**
  132. - Built-in shapes: line, box, circle, capsule, world boundary (infinite plane).
  133. - Collision polygons (can be drawn manually or generated from a sprite in the editor).
  134. 3D graphics
  135. -----------
  136. - HDR rendering with sRGB.
  137. - Perspective, orthographic and frustum-offset cameras.
  138. - When using the Forward+ renderer, a depth prepass is used to improve
  139. performance in complex scenes by reducing the cost of overdraw.
  140. - :ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Mobile.
  141. **Physically-based rendering (built-in material features):**
  142. - Follows the Disney PBR model.
  143. - Supports Burley, Lambert, Lambert Wrap (half-Lambert) and Toon diffuse shading modes.
  144. - Supports Schlick-GGX, Toon and Disabled specular shading modes.
  145. - Uses a roughness-metallic workflow with support for ORM textures.
  146. - Uses horizon specular occlusion (Filament model) to improve material appearance.
  147. - Normal mapping.
  148. - Parallax/relief mapping with automatic level of detail based on distance.
  149. - Detail mapping for the albedo and normal maps.
  150. - Sub-surface scattering and transmittance.
  151. - Screen-space refraction with support for material roughness (resulting in blurry refraction).
  152. - Proximity fade (soft particles) and distance fade.
  153. - Distance fade can use alpha blending or dithering to avoid going through
  154. the transparent pipeline.
  155. - Dithering can be determined on a per-pixel or per-object basis.
  156. **Real-time lighting:**
  157. - Directional lights (sun/moon). Up to 4 per scene.
  158. - Omnidirectional lights.
  159. - Spot lights with adjustable cone angle and attenuation.
  160. - Specular, indirect light, and volumetric fog energy can be adjusted on a per-light basis.
  161. - Adjustable light "size" for fake area lights (will also make shadows blurrier).
  162. - Optional distance fade system to fade distant lights and their shadows, improving performance.
  163. - When using the Forward+ renderer (default on desktop), lights are
  164. rendered with clustered forward optimizations to decrease their individual cost.
  165. Clustered rendering also lifts any limits on the number of lights that can be used on a mesh.
  166. - When using the Mobile renderer, up to 8 omni lights and 8 spot lights can
  167. be displayed per mesh resource. Baked lighting can be used to overcome this limit
  168. if needed.
  169. **Shadow mapping:**
  170. - *DirectionalLight:* Orthogonal (fastest), PSSM 2-split and 4-split.
  171. Supports blending between splits.
  172. - *OmniLight:* Dual paraboloid (fast) or cubemap (slower but more accurate).
  173. Supports colored projector textures in the form of panoramas.
  174. - *SpotLight:* Single texture. Supports colored projector textures.
  175. - Shadow normal offset bias and shadow pancaking to decrease the amount of
  176. visible shadow acne and peter-panning.
  177. - :abbr:`PCSS (Percentage Closer Soft Shadows)`-like shadow blur based on the
  178. light size and distance from the surface the shadow is cast on.
  179. - Adjustable shadow blur on a per-light basis.
  180. **Global illumination with indirect lighting:**
  181. - :ref:`Baked lightmaps <doc_using_lightmap_gi>` (fast, but can't be updated at runtime).
  182. - Supports baking indirect light only or baking both direct and indirect lighting.
  183. The bake mode can be adjusted on a per-light basis to allow for hybrid light
  184. baking setups.
  185. - Supports lighting dynamic objects using automatic and manually placed probes.
  186. - Optionally supports directional lighting and rough reflections based on spherical
  187. harmonics.
  188. - Lightmaps are baked on the GPU using compute shaders (much faster compared
  189. to CPU lightmapping). Baking can only be performed from the editor,
  190. not in exported projects.
  191. - Supports GPU-based :ref:`denoising <doc_using_lightmap_gi_denoising>`
  192. with JNLM, or CPU/GPU-based denoising with OIDN.
  193. - :ref:`Voxel-based GI probes <doc_using_voxel_gi>`. Supports
  194. dynamic lights *and* dynamic occluders, while also supporting reflections.
  195. Requires a fast baking step which can be performed in the editor or at
  196. runtime (including from an exported project).
  197. - :ref:`Signed-distance field GI <doc_using_sdfgi>` designed for large open worlds.
  198. Supports dynamic lights, but not dynamic occluders. Supports reflections.
  199. No baking required.
  200. - :ref:`Screen-space indirect lighting (SSIL) <doc_environment_and_post_processing_ssil>`
  201. at half or full resolution. Fully real-time and supports any kind of emissive
  202. light source (including decals).
  203. - VoxelGI and SDFGI use a deferred pass to allow for rendering GI at half
  204. resolution to improve performance (while still having functional MSAA support).
  205. **Reflections:**
  206. - Voxel-based reflections (when using GI probes) and SDF-based reflections
  207. (when using signed distance field GI). Voxel-based reflections are visible
  208. on transparent surfaces, while rough SDF-based reflections are visible
  209. on transparent surfaces.
  210. - Fast baked reflections or slow real-time reflections using ReflectionProbe.
  211. Parallax box correction can optionally be enabled.
  212. - Screen-space reflections with support for material roughness.
  213. - Reflection techniques can be mixed together for greater accuracy or scalability.
  214. - When using the Forward+ renderer (default on desktop), reflection probes are
  215. rendered with clustered forward optimizations to decrease their individual cost.
  216. Clustered rendering also lifts any limits on the number of reflection probes that can be used on a mesh.
  217. - When using the Mobile renderer, up to 8 reflection probes can be displayed per mesh
  218. resource. When using the Compatibility renderer, up to 2 reflection probes can
  219. be displayed per mesh resource.
  220. **Decals:**
  221. - :ref:`Supports albedo <doc_using_decals>`, emissive, :abbr:`ORM (Occlusion Roughness Metallic)`,
  222. and normal mapping.
  223. - Texture channels are smoothly overlaid on top of the underlying material,
  224. with support for normal/ORM-only decals.
  225. - Support for normal fade to fade the decal depending on its incidence angle.
  226. - Does not rely on runtime mesh generation. This means decals can be used on
  227. complex skinned meshes with no performance penalty, even if the decal moves every frame.
  228. - Support for nearest, bilinear, trilinear or anisotropic texture filtering (configured globally).
  229. - Optional distance fade system to fade distant decals, improving performance.
  230. - When using the Forward+ renderer (default on desktop), decals are
  231. rendered with clustered forward optimizations to decrease their individual cost.
  232. Clustered rendering also lifts any limits on the number of decals that can be used on a mesh.
  233. - When using the Mobile renderer, up to 8 decals can be displayed per mesh
  234. resource.
  235. **Sky:**
  236. - Panorama sky (using an HDRI).
  237. - Procedural sky and Physically-based sky that respond to the DirectionalLights in the scene.
  238. - Support for :ref:`custom sky shaders <doc_sky_shader>`, which can be animated.
  239. - The radiance map used for ambient and specular light can be updated in
  240. real-time depending on the quality settings chosen.
  241. **Fog:**
  242. - Exponential depth fog.
  243. - Exponential height fog.
  244. - Support for automatic fog color depending on the sky color (aerial perspective).
  245. - Support for sun scattering in the fog.
  246. - Support for controlling how much fog rendering should affect the sky, with
  247. separate controls for traditional and volumetric fog.
  248. - Support for making specific materials ignore fog.
  249. **Volumetric fog:**
  250. - Global :ref:`volumetric fog <doc_volumetric_fog>` that reacts to lights and shadows.
  251. - Volumetric fog can take indirect light into account when using VoxelGI or SDFGI.
  252. - Fog volume nodes that can be placed to add fog to specific areas (or remove fog from specific areas).
  253. Supported shapes include box, ellipse, cone, cylinder, and 3D texture-based density maps.
  254. - Each fog volume can have its own custom shader.
  255. - Can be used together with traditional fog.
  256. **Particles:**
  257. - GPU-based particles with support for subemitters (2D + 3D), trails (2D + 3D),
  258. attractors (3D only) and collision (2D + 3D).
  259. - 3D particle attractor shapes supported: box, sphere and 3D vector fields.
  260. - 3D particle collision shapes supported: box, sphere, baked signed distance field
  261. and real-time heightmap (suited for open world weather effects).
  262. - 2D particle collision is handled using a signed distance field generated in real-time
  263. based on :ref:`class_LightOccluder2D` nodes in the scene.
  264. - Trails can use the built-in ribbon trail and tube trail meshes, or custom
  265. meshes with skeletons.
  266. - Support for custom particle shaders with manual emission.
  267. - CPU-based particles.
  268. **Post-processing:**
  269. - Tonemapping (Linear, Reinhard, Filmic, ACES).
  270. - Automatic exposure adjustments based on viewport brightness (and manual exposure override).
  271. - Near and far depth of field with adjustable bokeh simulation (box, hexagon, circle).
  272. - Screen-space ambient occlusion (SSAO) at half or full resolution.
  273. - Glow/bloom with optional bicubic upscaling and several blend modes available:
  274. Screen, Soft Light, Add, Replace, Mix.
  275. - Glow can have a colored dirt map texture, acting as a lens dirt effect.
  276. - Glow can be :ref:`used as a screen-space blur effect <doc_environment_and_post_processing_using_glow_to_blur_the_screen>`.
  277. - Color correction using a one-dimensional ramp or a 3D LUT texture.
  278. - Roughness limiter to reduce the impact of specular aliasing.
  279. - Brightness, contrast and saturation adjustments.
  280. **Texture filtering:**
  281. - Nearest, bilinear, trilinear or anisotropic filtering.
  282. - Filtering options are defined on a per-use basis, not a per-texture basis.
  283. **Texture compression:**
  284. - Basis Universal (slow, but results in smaller files).
  285. - BPTC for high-quality compression (not supported on macOS).
  286. - ETC2 (not supported on macOS).
  287. - S3TC (not supported on mobile/Web platforms).
  288. **Antialiasing:**
  289. - Temporal :ref:`antialiasing <doc_3d_antialiasing>` (TAA).
  290. - AMD FidelityFX Super Resolution 2.2 :ref:`antialiasing <doc_3d_antialiasing>` (FSR2),
  291. which can be used at native resolution as a form of high-quality temporal antialiasing.
  292. - Multi-sample antialiasing (MSAA), for both :ref:`doc_2d_antialiasing` and :ref:`doc_3d_antialiasing`.
  293. - Fast approximate antialiasing (FXAA).
  294. - Super-sample antialiasing (SSAA) using bilinear 3D scaling and a 3D resolution scale above 1.0.
  295. - Alpha antialiasing, MSAA alpha to coverage and alpha hashing on a per-material basis.
  296. **Resolution scaling:**
  297. - Support for :ref:`rendering 3D at a lower resolution <doc_resolution_scaling>`
  298. while keeping 2D rendering at the original scale. This can be used to improve
  299. performance on low-end systems or improve visuals on high-end systems.
  300. - Resolution scaling uses bilinear filtering, AMD FidelityFX Super Resolution
  301. 1.0 (FSR1) or AMD FidelityFX Super Resolution 2.2 (FSR2).
  302. - Texture mipmap LOD bias is adjusted automatically to improve quality at lower
  303. resolution scales. It can also be modified with a manual offset.
  304. Most effects listed above can be adjusted for better performance or to further
  305. improve quality. This can be helpful when
  306. :ref:`using Godot for offline rendering <doc_creating_movies>`.
  307. 3D tools
  308. --------
  309. - Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad, torus, ribbon, tube.
  310. - :ref:`GridMaps <doc_using_gridmaps>` for 3D tile-based level design.
  311. - :ref:`Constructive solid geometry <doc_csg_tools>` (intended for prototyping).
  312. - Tools for :ref:`procedural geometry generation <doc_procedural_geometry>`.
  313. - Path3D node to represent a path in 3D space.
  314. - Can be drawn in the editor or generated procedurally.
  315. - PathFollow3D node to make nodes follow a Path3D.
  316. - :ref:`3D geometry helper class <class_Geometry3D>`.
  317. - Support for exporting the current scene as a glTF 2.0 file, both from the editor
  318. and at runtime from an exported project.
  319. 3D physics
  320. ----------
  321. **Physics bodies:**
  322. - Static bodies.
  323. - Animatable bodies (for objects moving only by script or animation, such as doors and platforms).
  324. - Rigid bodies.
  325. - Character bodies.
  326. - Vehicle bodies (intended for arcade physics, not simulation).
  327. - Joints.
  328. - Soft bodies.
  329. - Ragdolls.
  330. - Areas to detect bodies entering or leaving it.
  331. **Collision detection:**
  332. - Built-in shapes: cuboid, sphere, capsule, cylinder, world boundary (infinite plane).
  333. - Generate triangle collision shapes for any mesh from the editor.
  334. - Generate one or several convex collision shapes for any mesh from the editor.
  335. Shaders
  336. -------
  337. - *2D:* Custom vertex, fragment, and light shaders.
  338. - *3D:* Custom vertex, fragment, light, and sky shaders.
  339. - Text-based shaders using a :ref:`shader language inspired by GLSL <doc_shading_language>`.
  340. - Visual shader editor.
  341. - Support for visual shader plugins.
  342. Scripting
  343. ---------
  344. **General:**
  345. - Object-oriented design pattern with scripts extending nodes.
  346. - Signals and groups for communicating between scripts.
  347. - Support for :ref:`cross-language scripting <doc_cross_language_scripting>`.
  348. - Many 2D, 3D and 4D linear algebra data types such as vectors and transforms.
  349. :ref:`GDScript: <toc-learn-scripting-gdscript>`
  350. - :ref:`High-level interpreted language <doc_gdscript>` with
  351. :ref:`optional static typing <doc_gdscript_static_typing>`.
  352. - Syntax inspired by Python. However, GDScript is **not** based on Python.
  353. - Syntax highlighting is provided on GitHub.
  354. - :ref:`Use threads <doc_using_multiple_threads>` to perform asynchronous actions
  355. or make use of multiple processor cores.
  356. :ref:`C#: <toc-learn-scripting-C#>`
  357. - Packaged in a separate binary to keep file sizes and dependencies down.
  358. - Supports .NET 8 and higher.
  359. - Full support for the C# 12.0 syntax and features.
  360. - Supports Windows, Linux, and macOS. Since Godot 4.2, experimental support for Android and iOS is also available.
  361. - On the iOS platform only some architectures are supported: ``arm64``.
  362. - The web platform is currently unsupported. To use C# on that platform,
  363. consider Godot 3 instead.
  364. - Using an external editor is recommended to benefit from IDE functionality.
  365. **GDExtension (C, C++, Rust, D, ...):**
  366. - When you need it, link to native libraries for higher performance and third-party integrations.
  367. - For scripting game logic, GDScript or C# are recommended if their
  368. performance is suitable.
  369. - Official GDExtension bindings for `C <https://github.com/godotengine/godot-headers>`__
  370. and `C++ <https://github.com/godotengine/godot-cpp>`__.
  371. - Use any build system and language features you wish.
  372. - Actively developed GDExtension bindings for `D <https://github.com/godot-dlang/godot-dlang>`__,
  373. `Swift <https://github.com/migueldeicaza/SwiftGodot>`__, and `Rust <https://github.com/godot-rust/gdextension>`__
  374. bindings provided by the community. (Some of these bindings may be experimental and not production-ready).
  375. Audio
  376. -----
  377. **Features:**
  378. - Mono, stereo, 5.1 and 7.1 output.
  379. - Non-positional and positional playback in 2D and 3D.
  380. - Optional Doppler effect in 2D and 3D.
  381. - Support for re-routable :ref:`audio buses <doc_audio_buses>` and effects
  382. with dozens of effects included.
  383. - Support for polyphony (playing several sounds from a single AudioStreamPlayer node).
  384. - Support for random volume and pitch.
  385. - Support for real-time pitch scaling.
  386. - Support for sequential/random sample selection, including repetition prevention
  387. when using random sample selection.
  388. - Listener2D and Listener3D nodes to listen from a position different than the camera.
  389. - Support for :ref:`procedural audio generation <class_AudioStreamGenerator>`.
  390. - Audio input to record microphones.
  391. - MIDI input.
  392. - No support for MIDI output yet.
  393. **APIs used:**
  394. - *Windows:* WASAPI.
  395. - *macOS:* CoreAudio.
  396. - *Linux:* PulseAudio or ALSA.
  397. Import
  398. ------
  399. - Support for :ref:`custom import plugins <doc_import_plugins>`.
  400. **Formats:**
  401. - *Images:* See :ref:`doc_importing_images`.
  402. - *Audio:*
  403. - WAV with optional IMA-ADPCM compression.
  404. - Ogg Vorbis.
  405. - MP3.
  406. - *3D scenes:* See :ref:`doc_importing_3d_scenes`.
  407. - glTF 2.0 *(recommended)*.
  408. - ``.blend`` (by calling Blender's glTF export functionality transparently).
  409. - FBX (by calling `FBX2glTF <https://github.com/godotengine/FBX2glTF>`__ transparently).
  410. - Collada (.dae).
  411. - Wavefront OBJ (static scenes only, can be loaded directly as a mesh or imported as a 3D scene).
  412. - Support for loading glTF 2.0 scenes at runtime, including from an exported project.
  413. - 3D meshes use `Mikktspace <http://www.mikktspace.com/>`__ to generate tangents
  414. on import, which ensures consistency with other 3D applications such as Blender.
  415. Input
  416. -----
  417. - :ref:`Input mapping system <doc_input_examples>` using hardcoded input events
  418. or remappable input actions.
  419. - Axis values can be mapped to two different actions with a configurable deadzone.
  420. - Use the same code to support both keyboards and gamepads.
  421. - Keyboard input.
  422. - Keys can be mapped in "physical" mode to be independent of the keyboard layout.
  423. - Mouse input.
  424. - The mouse cursor can be visible, hidden, captured or confined within the window.
  425. - When captured, raw input will be used on Windows and Linux to
  426. sidestep the OS' mouse acceleration settings.
  427. - Gamepad input (up to 8 simultaneous controllers).
  428. - Pen/tablet input with pressure support.
  429. Navigation
  430. ----------
  431. - A* algorithm in :ref:`2D <class_AStar2D>` and :ref:`3D <class_AStar3D>`.
  432. - Navigation meshes with dynamic obstacle avoidance in
  433. :ref:`2D <doc_navigation_overview_2d>` and :ref:`3D <doc_navigation_overview_3d>`.
  434. - Generate navigation meshes from the editor or at runtime (including from an exported project).
  435. Networking
  436. ----------
  437. - Low-level TCP networking using :ref:`class_StreamPeer` and :ref:`class_TCPServer`.
  438. - Low-level UDP networking using :ref:`class_PacketPeer` and :ref:`class_UDPServer`.
  439. - Low-level HTTP requests using :ref:`class_HTTPClient`.
  440. - High-level HTTP requests using :ref:`class_HTTPRequest`.
  441. - Supports HTTPS out of the box using bundled certificates.
  442. - :ref:`High-level multiplayer <doc_high_level_multiplayer>` API using UDP and ENet.
  443. - Automatic replication using remote procedure calls (RPCs).
  444. - Supports unreliable, reliable and ordered transfers.
  445. - :ref:`WebSocket <doc_websocket>` client and server, available on all platforms.
  446. - :ref:`WebRTC <doc_webrtc>` client and server, available on all platforms.
  447. - Support for :ref:`UPnP <class_UPNP>` to sidestep the requirement to forward ports
  448. when hosting a server behind a NAT.
  449. Internationalization
  450. --------------------
  451. - Full support for Unicode including emoji.
  452. - Store localization strings using :ref:`CSV <doc_internationalizing_games>`
  453. or :ref:`gettext <doc_localization_using_gettext>`.
  454. - Support for generating gettext POT and PO files from the editor.
  455. - Use localized strings in your project automatically in GUI elements or by
  456. using the ``tr()`` function.
  457. - Support for pluralization and translation contexts when using gettext translations.
  458. - Support for :ref:`bidirectional typesetting <doc_internationalizing_games_bidi>`,
  459. text shaping and OpenType localized forms.
  460. - Automatic UI mirroring for right-to-left locales.
  461. - Support for pseudolocalization to test your project for i18n-friendliness.
  462. Windowing and OS integration
  463. ----------------------------
  464. - Spawn multiple independent windows within a single process.
  465. - Move, resize, minimize, and maximize windows spawned by the project.
  466. - Change the window title and icon.
  467. - Request attention (will cause the title bar to blink on most platforms).
  468. - Fullscreen mode.
  469. - Uses borderless fullscreen by default on Windows for fast alt-tabbing,
  470. but can optionally use exclusive fullscreen to reduce input lag.
  471. - Borderless windows (fullscreen or non-fullscreen).
  472. - Ability to keep a window always on top.
  473. - Global menu integration on macOS.
  474. - Execute commands in a blocking or non-blocking manner (including running
  475. multiple instances of the same project).
  476. - Open file paths and URLs using default or custom protocol handlers (if registered on the system).
  477. - Parse custom command line arguments.
  478. - Any Godot binary (editor or exported project) can be
  479. :ref:`used as a headless server <doc_exporting_for_dedicated_servers>`
  480. by starting it with the ``--headless`` command line argument.
  481. This allows running the engine without a GPU or display server.
  482. Mobile
  483. ------
  484. - In-app purchases on :ref:`Android <doc_android_in_app_purchases>`
  485. and :ref:`iOS <doc_plugins_for_ios>`.
  486. - Support for advertisements using third-party modules.
  487. XR support (AR and VR)
  488. ----------------------
  489. - Out of the box :ref:`support for OpenXR <doc_setting_up_xr>`.
  490. - Including support for popular desktop headsets like the Valve Index, WMR headsets, and Quest over Link.
  491. - Support for :ref:`Android-based headsets <doc_deploying_to_android>` using OpenXR through a plugin.
  492. - Including support for popular stand alone headsets like the Meta Quest 1/2/3 and Pro, Pico 4, Magic Leap 2, and Lynx R1.
  493. - Other devices supported through an XR plugin structure.
  494. - Various advanced toolkits are available that implement common features required by XR applications.
  495. GUI system
  496. ----------
  497. Godot's GUI is built using the same Control nodes used to make games in Godot.
  498. The editor UI can easily be extended in many ways using add-ons.
  499. **Nodes:**
  500. - Buttons.
  501. - Checkboxes, check buttons, radio buttons.
  502. - Text entry using :ref:`class_LineEdit` (single line) and :ref:`class_TextEdit` (multiple lines).
  503. TextEdit also supports code editing features such as displaying line numbers
  504. and syntax highlighting.
  505. - Dropdown menus using :ref:`class_PopupMenu` and :ref:`class_OptionButton`.
  506. - Scrollbars.
  507. - Labels.
  508. - RichTextLabel for :ref:`text formatted using BBCode <doc_bbcode_in_richtextlabel>`,
  509. with support for animated custom effects.
  510. - Trees (can also be used to represent tables).
  511. - Color picker with RGB and HSV modes.
  512. - Controls can be rotated and scaled.
  513. **Sizing:**
  514. - Anchors to keep GUI elements in a specific corner, edge or centered.
  515. - Containers to place GUI elements automatically following certain rules.
  516. - :ref:`Stack <class_BoxContainer>` layouts.
  517. - :ref:`Grid <class_GridContainer>` layouts.
  518. - :ref:`Flow <class_FlowContainer>` layouts (similar to autowrapping text).
  519. - :ref:`Margin <class_MarginContainer>`, :ref:`centered <class_CenterContainer>`
  520. and :ref:`aspect ratio <class_AspectRatioContainer>` layouts.
  521. - :ref:`Draggable splitter <class_SplitContainer>` layouts.
  522. - Scale to :ref:`multiple resolutions <doc_multiple_resolutions>` using the
  523. ``canvas_items`` or ``viewport`` stretch modes.
  524. - Support any aspect ratio using anchors and the ``expand`` stretch aspect.
  525. **Theming:**
  526. - Built-in theme editor.
  527. - Generate a theme based on the current editor theme settings.
  528. - Procedural vector-based theming using :ref:`class_StyleBoxFlat`.
  529. - Supports rounded/beveled corners, drop shadows, per-border widths and antialiasing.
  530. - Texture-based theming using :ref:`class_StyleBoxTexture`.
  531. Godot's small distribution size can make it a suitable alternative to frameworks
  532. like Electron or Qt.
  533. Animation
  534. ---------
  535. - Direct kinematics and inverse kinematics.
  536. - Support for animating any property with customizable interpolation.
  537. - Support for calling methods in animation tracks.
  538. - Support for playing sounds in animation tracks.
  539. - Support for Bézier curves in animation.
  540. File formats
  541. ------------
  542. - Scenes and resources can be saved in :ref:`text-based <doc_tscn_file_format>` or binary formats.
  543. - Text-based formats are human-readable and more friendly to version control.
  544. - Binary formats are faster to save/load for large scenes/resources.
  545. - Read and write text or binary files using :ref:`class_FileAccess`.
  546. - Can optionally be compressed or encrypted.
  547. - Read and write :ref:`class_JSON` files.
  548. - Read and write INI-style configuration files using :ref:`class_ConfigFile`.
  549. - Can (de)serialize any Godot datatype, including Vector2/3, Color, ...
  550. - Read XML files using :ref:`class_XMLParser`.
  551. - :ref:`Load and save images, audio/video, fonts and ZIP archives <doc_runtime_loading_and_saving>`
  552. in an exported project without having to go through Godot's import system.
  553. - Pack game data into a PCK file (custom format optimized for fast seeking),
  554. into a ZIP archive, or directly into the executable for single-file distribution.
  555. - :ref:`Export additional PCK files<doc_exporting_pcks>` that can be read
  556. by the engine to support mods and DLCs.
  557. Miscellaneous
  558. -------------
  559. - :ref:`Video playback <doc_playing_videos>` with built-in support for Ogg Theora.
  560. - :ref:`Movie Maker mode <doc_creating_movies>` to record videos from a running
  561. project with synchronized audio and perfect frame pacing.
  562. - :ref:`Low-level access to servers <doc_using_servers>` which allows bypassing
  563. the scene tree's overhead when needed.
  564. - :ref:`Command line interface <doc_command_line_tutorial>` for automation.
  565. - Export and deploy projects using continuous integration platforms.
  566. - `Shell completion scripts <https://github.com/godotengine/godot/tree/master/misc/dist/shell>`__
  567. are available for Bash, zsh and fish.
  568. - Print colored text to standard output on all platforms using
  569. :ref:`print_rich <class_@GlobalScope_method_print_rich>`.
  570. - Support for :ref:`C++ modules <doc_custom_modules_in_cpp>` statically linked
  571. into the engine binary.
  572. - Engine and editor written in C++17.
  573. - Can be :ref:`compiled <doc_introduction_to_the_buildsystem>` using GCC,
  574. Clang and MSVC. MinGW is also supported.
  575. - Friendly towards packagers. In most cases, system libraries can be used
  576. instead of the ones provided by Godot. The build system doesn't download anything.
  577. Builds can be fully reproducible.
  578. - Licensed under the permissive MIT license.
  579. - Open development process with :ref:`contributions welcome <doc_ways_to_contribute>`.
  580. .. seealso::
  581. The `Godot proposals repository <https://github.com/godotengine/godot-proposals>`__
  582. lists features that have been requested by the community and may be implemented
  583. in future Godot releases.