264 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[4.1.4] - 2024-04-17
Added
C#/.NET
- Implemented
{project}placeholder for external dotnet editor (GH-81847).
Documentation
- Add an example for
Dictionary.merge(), mention lack of recursion (GH-81622). - Add docs for DRAW_ORDER_REVERSE_LIFETIME constant (GH-82866).
- Fill out Material documentation and clarify
render_priorityandnext_passsorting (GH-83931). - Document changing the window's resizable status at runtime (GH-84886).
- Add description for rendering/limits/spatial_indexer/threaded_cull_minimum_instances (GH-86246).
- Add missing descriptions to TextServer's constants (GH-86895).
- Add missing descriptions for Image's documentation (GH-86997).
- Add missing descriptions to PrimitiveMesh and SoftBody3D (GH-87011).
Editor
- "Whole Words" search can detect word boundaries inside the search term (GH-82694).
GUI
- Translate TextEdit placeholder (GH-83946).
Import
- Support unspecified linear size in DDS files (GH-86336).
Porting
- Linux: Handle export preset forward compat with 4.3+ platform name (GH-89047).
- Android: Add
POST_NOTIFICATIONSpermission to the list of permissions available in the Export dialog (GH-90377).
XR
- Compile OpenXR into MacOS build (GH-79614).
Changed
3D
- Hide CSGShape's
debug_collision_shapewhen it is invisible (GH-84174).
Animation
- Improve retarget auto-mapping algorithm (GH-81843).
Audio
- Only warn once about OGG seeking issues (GH-81704).
Buildsystem
- SCons: Re-disable exceptions for Android, iOS, and Web (GH-84328).
- Use Python venv if detected when building VS project (GH-84593).
- Add unsigned char cast ifdef to work around
-Wtype-limitswarnings (GH-85500). - Web: Pin Emscripten to 3.1.39 on CI (GH-84717).
Core
- Set language encoding flag when using
ZIPPacker(GH-78732). - Do not replace starting digit with underscore when making identifier (GH-82786).
Documentation
- Clarify
PackedByteArray.decompress*limitations with external data (GH-81689). - Specify the behavior of
get_tree()when the node is not in the scene tree (GH-82863). - Clarify
NOTIFICATION_SCROLL_BEGIN/ENDbehavior (GH-83636). - Improve and clarify texture filtering documentation (GH-83907).
- Clarify behavior of RayCast when
get_collision_point()is used inside a collision shape (GH-84085). - Update
add_submenu_itemdoc to mention that submenu should already exist (GH-84283). - Improve documentation for
CameraAttributesPhysical.exposure_shutter_speed(GH-85599). - Remove pointer to deprecated class page from Skeleton3D (GH-86326).
- Improve RichTextLabel
install_effect()documentation (GH-86331). - Mention
CollisionPolygon2D.polygonis local to the given CollisionPolygon2D (GH-87024). - Include
animation.lengthin Animation example (GH-87180).
Editor
- Ensure binds are duplicated with
Nodesignals (GH-75382). - Ignore directory entries in TPZ (GH-79374).
- Don't apply frame delay project setting to the editor (GH-82929).
- Enable new addon after hiding ProjectSettings (GH-83576).
- Remove margins from editor scrollbars (GH-83868).
- Provide more context when scene fails to load (GH-85083).
Export
- Improve headings for the export mode in the Export dialog (GH-79725).
- Update the validation logic for the package name (GH-84676).
- Preserve the output from the gradle build command (GH-84779).
GUI
- Enable scrolling of output with UI scale changes (GH-82079).
- SystemFont: Check name when selecting the best matching face from a collection (GH-82712).
- Redraw
TreeItemon more changes (GH-87415).
Rendering
- Make the rendering method dropdown also affect mobile if compatible (GH-72461).
- Clamp ReflectionProbe Max Distance to 262,144 to fix rendering issues (GH-82415).
- Apply some low-hanging fruit optimizations to Vulkan RD (GH-85532).
Thirdparty
- Sync controller mappings DB with SDL2 community repo.
- CA root certificates updated to 2024-03-11 bundle from Mozilla.
- mbedTLS updated to version 2.28.8.
- r128: Update to include latest fix for intrinsics being incorrect included (GH-84537).
- zlib/minizip updated to version 1.3.1.
Removed
GDExtension
- Remove Android specific abis from the export preset feature list (GH-84720).
Fixed
2D
- Fix UV editor not using texture transform (GH-84076).
3D
- Fix PlaneMesh tangents for 'Face X' orientation (GH-84097).
- Fix CSGShape
debug_collision_shapecrash (GH-84338).
Animation
- Fix rename animation in SpriteFramesEditor (GH-79600).
- Fix crash when clicking on "Interpolation Mode" with nonexistent node path (GH-81779).
- Fix invalid return from some more
_get/_set(GH-84060). - Fix invalid 3-to-4 renames of
add_animationtoadd_animation_library(GH-86647). - Fix spurious infinite loop warnings in AnimationStateMachine (GH-89575).
Audio
- Fix Dummy audio driver initialization issue on WASAPI output device initialization failure (GH-87010).
Buildsystem
- Fix invalid Python escape sequences (GH-85818).
- macOS: Fix MoltenVK SDK detection after file location changes in 1.3.275.0 (GH-87305).
C#/.NET
- Fix
Transform3D.InterpolateWithapplying rotation before scale (GH-89843).
Core
- Fix allocation size overflow check in
CowData(GH-81917). - Fix invalid return from some
_get/_set(GH-84054). - Prevent
encode_variantdoingmemcpyfromnullptr(GH-84155). - Prevent crash on conversion of invalid data in
Image(GH-84782). - Fix translation remapping check for imported resources (GH-84791).
- Prevent read-after-free in the queued CallableCustomStaticMethodPointer, fixes
slot >= slot_maxerrors in release templates (GH-85280). - Fix crash when hashing empty
CharString(GH-85389). - Prevent infinite recursion when printing errors (GH-85397).
Documentation
- Fix description of
Animation::copy_track(GH-83441). - Fix typo in ConcavePolygonShape2D/3D description (GH-84111).
- Fix several reported issues in String's documentation (GH-86639).
- Fix incorrect VehicleWheel3D Roll Influence description (GH-86672).
Editor
- Fix missing arrows in integer vector properties (GH-79021).
- Fix undo methods for DELETE in EditorAutoloadSettings (GH-79832).
- Fix wrong shader rename in 3-to-4 project converter (GH-83708).
- Fix UV editor not showing polygon correctly (GH-84116).
- Fix texture region editor not selecting restored snap mode (GH-84762).
GDScript
- Fix
_get_debug_tooltipcrash if tooltip string is too large (GH-81018). - Fix DAP breakpoints being cleared on closed scripts (GH-84898).
GUI
- Fix storing invalid item height values in
ItemList(GH-82660). - Ensure input event is valid in
PopupMenu::activate_item_by_event(GH-83952). - Fix remapped font reloading on locale change (GH-84873).
- VideoPlayer: Fix reloading translation remapped stream (GH-84794).
Import
- Fix memory corruption and assert failures in convex decomposition (GH-85631).
- Prevent overriding file info of another file when reimport creates extra files (GH-85922).
- Fix
BasisUniversalETC RA as RG transcoding (GH-86916). - GLTF: Fix three bugs which prevented extracted textures from being refreshed (GH-86504).
- Fix crash when previewing a scene with a mesh as the root node (GH-87781).
- Fix setting animation save paths on import breaking on Windows (GH-90003).
Input
- Android: Fix joypad trigger value range (GH-81322).
Multiplayer
- Fix
complete_authnotifying the wrong peer (GH-86257).
Navigation
Networking
- Fix missing return in
StreamPeerTCP::pollwhen connection isSTATUS_CONNECTED(GH-90741).
Particles
- Fix several Material texture parameter updates (GH-84303).
Physics
- Fix body leaving area gravity influence (GH-82961).
- Fix CollisionObject3D Gizmo not updated after calling
shape_owner_*functions (GH-84610).
Porting
- Fix bug where maximized->fullscreen->windowed mode stays maximized (GH-84504).
- Android: Fix editor crash issue when pressing Back (GH-84414).
- Android: Fix disabling splash screen Show Image (GH-84491).
- Linux: Fix size_t template issue on OpenBSD by using int consistently (GH-84017).
Rendering
- Fix transparent viewport backgrounds with custom clear color (GH-79876).
- Fix clear color on mobile renderer (GH-80933).
- Fix VoxelGI MultiMesh and CSG mesh baking (GH-81616).
- Fix bad parameter for
rendering_methodcrashes Godot (GH-84241). - Transform mesh's AABB to skeleton's space when calculating mesh's bounds (GH-84451).
- Prevent crash in
_nvapi_disable_threaded_optimizationwhen attached to renderdoc (GH-85121). - Fix typo in BaseMaterial3D conversion from 3.x SpatialMaterial (GH-85269).
- Fix Polygon2D to Skeleton2D transform calculation (GH-86557).
- Disable scissor test after rendering batches in compatibility renderer (GH-87489).
- GLES3: Avoid freeing proxy textures clearing owner's data (GH-82430).
- GLES3: Fix iOS Simulator by removing incorrect
system_fbooverwrite (GH-84955). - GLES3: Skip batches with zero instance count while rendering canvas (GH-85778).
Shaders
- Fix int to uint implicit cast error when use mat3 uniform in compatibility renderer (GH-81494).
4.1.3 - 2023-11-01
See the release announcement for details.
Added
Core
- Support loading of translations on threads (GH-78747).
Documentation
- Add missing RenderingDevice method descriptions (GH-80716).
GDScript
- Add check for
super()methods not being implemented (GH-81808).
Input
- Add missing YEN, SECTION and OPENURL names to keycode mappings (GH-81054).
- Add XInput device ID for wireless Series 2 Elite controller (GH-82508).
Rendering
- Mobile: Uncomment code required for fog rendering on clear color (GH-79776).
Changed
2D
- Allow using floating-point bone sizes and outline widths in the 2D editor (GH-79434).
- Convert TileSet Atlas Merge input images to RGBA8 to match output, if needed (GH-80943).
3D
- Make CSGShape follow curve's tilt in Path mode (GH-79355).
- Initialize View Frame Time estimates to match 120 FPS (GH-80124).
Animation
- Improve and clarify paused Tweens (GH-79879).
- Avoid emitting signals if the animation is not ready to be processed (GH-80367).
- Ensure methods skipped by
AnimationPlayer::seekare not called (GH-80708).
Buildsystem
- Updated compiler version detection (GH-82325, GH-82352).
- SCons: Use CXXFLAGS to disable exceptions (GH-83618).
Editor
- Always double-quote path when launching Windows File Explorer (GH-78963).
Import
- Limit mesh complexity in LOD generation to prevent crashing (GH-80467).
- Update Blender export flags for 3.6 (GH-81194).
Thirdparty
- mbedTLS updated to version 2.18.5.
- zlib/minizip updated to version 1.3.
- Sync controller mappings DB with SDL2 community repo.
Fixed
2D
- Fix "a number is required" error when printing RID (GH-80122).
- Fix TileMap editor so that pressing control deselects cells correctly (GH-81925).
- Fix animated tile time-slice calculation accumulating float errors (GH-82360).
3D
- GridMap: Ensure the visibility is updated when entering the tree (GH-81106).
Animation
- Fix incorrect cast when animating
int(GH-81296). - Fix animation keyframes being skipped when played backwards (GH-81452).
- Fix BoneAttachment3D signal connection (GH-81695).
- Fix
SkeletonIK3Deditor preview when changing active node (GH-82391).
Audio
- Fix pausing stream on entering tree (GH-83779).
C#/.NET
Core
- Clear the previously set state when configuring for a new scene root node (GH-79201).
- Fix example for
Object._setdocumentation (GH-80475). - Fix comparison of
Callables with binds (GH-81131). - Fix for non-deterministic behavior in PCKPacker (GH-81280).
- Fix not being able to set Node process priority in certain cases (GH-82358).
Editor
- Fix conversion of hex color strings in project converter (GH-74026).
- Fix indentation in script templates (GH-78675).
- Fix "Go to parent folder" in
EditorFileDialog(GH-80821). - Fix paste value emptying an array on some right click location (GH-80977).
- Fix missing dependency warning popup (GH-82244, GH-83024).
- Fix garbled text in editor toasters (GH-82913).
- AssetLib: Fix long plugin names breaking the UI (GH-80555).
Export
- iOS: Fix build on Xcode 14 and older (GH-83088).
GDExtension
- Fix incorrect virtual function in
VideoStream.set_paused(GH-79710). - Fix
variant_iter_get()actually callingiter_next()(GH-83681).
GDScript
- Check
get_node()shorthand in static functions (GH-78552). - Fix completion option location not found (GH-80283).
- Fix
get_methodfrom named lambda (GH-80506). - Fix
GDScriptCache::get_full_scripteating parsing errors because of early exit (GH-83540). - LSP: Fix connection error when launched in a separate thread (GH-80686).
- LSP: Fix autocomplete quote handling (GH-81833).
GUI
- Fix native popups auto-closing when interacting with non-client area (GH-79456).
- Fix scrolling
PopupMenuon keyboard/controller input (GH-80271). - Fix
OptionButtonminimum size when "Fit Longest Item" is enabled (GH-80366). - Fix 2D/3D viewport context switching issues when script editor is floating (GH-80647).
- Fix
TreeItemrange slider not working properly (GH-81174).
Import
- Fix reimporting scene with default values selected (GH-79907).
- Fix grayscale DDS loading (GH-81134).
- Fix ImporterMesh bone weight handling during lightmap unwrap (GH-81854).
- Avoid crash when generating LODs on meshes with non-finite vertices (GH-82285).
Multiplayer
- Fix watch properties not being correctly removed (GH-81033).
Navigation
- Fix pathfinding funnel adding unwanted point (GH-79228).
Particles
- Fix particle shader deterministic random values (GH-80638).
- Fix
GPUParticles2Doffset stutter (GH-80984). - Fix errors when freeing GPUParticles (GH-82431).
Physics
- Fix missing clear for some
set_exclude*query parameter methods (GH-82043).
Porting
- Android: Fix input routing logic when using a hardware keyboard (GH-80932).
- Android: Fix logic for deferred window input events being inverted (GH-83301).
- Android: Update the
launchModefor theGodotAppactivity (GH-83954). - Linux: Use EWMH for
DisplayServerX11::_window_minimize_check()implementation (GH-80036). - macOS: Fix borderless mode on macOS 13.6+ (GH-82357).
- Web: Fix JavaScript callback memory leak issue (GH-81105).
- Windows: Do not force redraw window background on mouse pass-through region change (GH-80153).
- Windows: Fix not applying NVIDIA profile to new executables (GH-81251).
Rendering
- Initialize MSDF parameters in BaseMaterial3D with default (GH-79983).
- Fix validation error when enabling SSIL alone (GH-80315).
- Ensure
POINT_SIZEtakes effect in the canvas item shader (GH-80323). - Fix volumetric fog NaN values in textures from starting at a zero Vector2 (GH-80992).
- Fix VoxelGI CameraAttributes exposure normalization handling (GH-81067).
- Fix special case of cluster render (GH-81081).
- Fix VoxelGI static light pairing (GH-81124).
- Fix LightmapGI baking with GridMap (GH-81545).
- Fix
SubViewportwithUPDATE_WHEN_VISIBLEnot working properly in exported project (GH-81607). - Fix massive validation errors when enabling TAA + MSAA (GH-81775).
- Fix LightmapGI shading sometimes being unlit or black (GH-81951).
- Fix ShaderGlobalsOverride property handling (GH-82100).
- Fix cluster artifacts and negative light (GH-82546).
- Fix undeclared identifier
global_variablesin the fog shader (GH-82877). - Avoid default fallback material when using
world_vertex_coords(GH-82886). - Fix VoxelGI bake memory leak (GH-83035).
- Fix disabling depth prepass break opaque materials (GH-83371).
- GLES3: Fix clear color's alpha value will affects 2D editor (GH-81395).
- GLES3: Fix instanced rendering color and custom data defaults (GH-81575).
- Mobile: Fix issue with four subpasses always been requested (GH-80368).
- Mobile: Fix missing decal mask (GH-80911).
- Vulkan: Fix multithreaded compute list and GPU particle processing (GH-79849).
XR
- Properly skip frame render when the XR runtime is not yet ready (GH-82752).
- Fix
GPUParticles3Don the Meta Quest 2 with OpenGL renderer (GH-83756).
4.1.2 - 2023-10-04
See the release announcement for details.
Added
Core
- Add check to ensure registered classes are declared (GH-81020).
Rendering
- Add motion vector support for GPU 3D Particles (GH-80688).
Shaders
- Allow more hint types for uniform arrays (GH-79100).
- Add autocomplete for filter/repeat hints on uniform arrays (GH-79402).
Changed
3D
- Change property hint range for camera attributes exposure multiplier (GH-79138).
Buildsystem
- Disable C++ exception handling (off by default in 4.1) (GH-80612).
- libpng: Enable intrinsics on x86/SSE2, ppc64/VSX, and all arm/NEON (GH-78325).
- Linux: Allow unbundling OpenXR (GH-73443).
- MSVC: Pass build options configuration to Visual Studio projects (GH-79238).
- MSVC: Make incremental linking optional (GH-80482, GH-81144).
- MSVC: Enable
/WXon LINKFLAGS for MSVC withwerror=yes(GH-80711).
C#/.NET
- Hide hostfxr not found error (GH-81690).
Editor
- Don't use splash minimum display time in editor (GH-79388).
- Automatically add path to built-in scripts (GH-79920).
- Uncollapse favorites by default in the editor FileSystem dock (GH-79971).
- Use
ui_text_submitinstead ofui_acceptto confirm and close text prompts (GH-81189). - Make editor camera speed indicator use
m/sandm(GH-81810).
GUI
- Enable transparent background for GUI tooltips (GH-81669).
Input
- Prevent double input events on gamepad when running through steam input (GH-76045).
- Ensure
joy_connection_changedis emitted on the main thread (GH-80432). - Android: Set
echoproperty for the physical keyboard events (GH-79089).
Networking
- Web: Always return -1 as body length in HTTPClientWeb (GH-79846).
Porting
- Web: Disable raycast module by default (no occlusion culling) (GH-81716).
- X11: Do not fail DisplayServer init if non-essential extensions are missing (GH-80240).
Rendering
- Enable depth writes during shadow pass and depth pass, disable during color pass (GH-80070).
- Remove GPU readback from
NoiseTexture3D.get_format()(GH-80407). - Clamp Volumetric Fog Length property to prevent rendering issues (GH-80485).
- Propagate error correctly when max texture size for lightmaps is too small (GH-81543).
- GLES3: Reset anisotropic filtering when changing texture filtering mode (GH-79568).
- GLES3: Don't call
glTexParameter*for invalid filter and repeat modes (GH-79685).
Thirdparty
- FreeType updated to version 2.13.2.
- ICU4C updated to version 73.2.
- libpng updated to version 1.6.40.
- libwebp updated to version 1.3.2.
- mbedtls updated to version 2.28.4.
- miniupnpc updated to version 2.2.5.
- openxr updated to version 1.0.28.
- tinyexr updated to version 1.0.7.
Fixed
2D
- Fix Camera2D crash when edited scene root is null (GH-79645).
- Fix
CanvasModulatelogic for modulating the canvas (GH-79747).
3D
- Fix VoxelGI saving VoxelGIData as a built-in file, despite being prompted to save it to an external file (GH-78772).
- Fix Curve3D baking up vectors for nontrivial curves (GH-81885).
Animation
- Fix
Animation::subtract_variantfor affine transforms (GH-79279). - Fix
AnimationNodeTransitionwith negative time scale (GH-79403). - Remove animation tracks with correct indices (GH-81651).
Audio
- Fix audio stream generators getting freed accidentally (GH-81508).
Buildsystem
- Fix Python 3.12 SyntaxError with regex escape sequences (GH-82290).
- macOS/iOS: Workaround build issue with new Xcode 15 linker (GH-81968, GH-82458).
- Web: Workaround Emscripten 3.1.42+ LTO regression (GH-81340).
C#/.NET
- Fix deserialization of delegates that are 0-parameter overloads (GH-78877).
- Add missing
useModelFrontparameter to GodotSharp Basis and Transform (GH-79082). - Fix double unregistration on dispose of Array (GH-81230).
- Fix Visual Studio 2022 for Mac compatibility (GH-81802).
Core
- Fix range error for
Array.slice(GH-79103). - Fix byte to float color conversion in
DisplayServerWindows::screen_get_pixel(GH-79350). - Fix recursion level check for array stringification (GH-79370).
- Fix global transform validity for
Node2DandControl(GH-80105). - Fix recursion level check for
VariantWriter::write()with objects (GH-81123). - Fix string conversion for -0.0 float values (GH-81328).
- Crypto: Fix
generate_random_bytesfor large chunks (GH-81884).
Editor
- Fix history mismatch (GH-78827).
- Improve resolution of script type icons (GH-79203, GH-81336).
- Fix arg count checks in
SceneDebugger(GH-79655). - Make the single window mode check more strict (GH-79793).
- Fix crash when using "Close All Tabs" (GH-79917).
- Fix a crash when plugin tries to call
make_mesh_previewson enable (GH-81121).
Export
- Fix Windows console wrapper and icon being swapped (GH-80357).
GDExtension
- Fix version check for GDExtension (GH-80591).
- Fix overriding
_export_begin,_export_fileand_export_endfrom GDExtension (GH-80999).
GDScript
- Fix conflict between property and group names (GH-78254).
- Properly track extents of constants (GH-79301).
- Fix dumping of signal API parameters (GH-81599).
GUI
- Fix RichTextLabel character line and paragraph index getters (GH-76759).
- Fix text overlapping icon in
Tree(GH-78756). - Fix delay on tab resizing when (un)hovering tabs (GH-78777).
- Fix
Treeperformance regression by using cache (GH-79325). - Fix Button clipping when internal margins exist (GH-79455).
- Make `OptionButton`` resize when disabling "Fit to Longest Item" (GH-79494).
- Fix
root_node_layout_directionproject setting being incorrectly exposed as a range (GH-79611). - Fix
Buttontext when the overrun behavior is other than "No Trimming" (GH-80402). - Fix
CodeEditcompletion being very slow in certain cases (GH-80472). - Fix crash when hiding subwindow during popup of new subwindow (GH-80780).
- RTL: Improve performance by using list iterators for item/paragraph removal (GH-80857).
- Fix setting TabContainer's
font_hovered_colortheme property (GH-81040). - Fix ItemList not updating when icon scale changes (GH-81268).
Import
- Use image index instead of texture index for
source_images(GH-80314).
Navigation
- Fix NavigationObstacle2D debug position (GH-79392).
- Make NavigationRegion3D baking NavMesh on the main thread not finish deferred (GH-79465).
- Fix NavMesh
map_update_idreturning 0 results in errors (GH-80189).
Networking
- Prevent crash when accessing
NodeMultiplayer from thread (GH-79332). - ENet: Better handle truncated socket messages (GH-79699).
- ENet: Properly set transfer flags when using custom channels (GH-80293).
Porting
- macOS: Fix uncapped frame rate for windows in the non-active workspaces (GH-79572).
- Web: Fix file permissions for the web platform (affects every Unix-like platform) (GH-79866).
- Web: Fix
JavaScriptBridge.eval()never returning PackedByteArray (GH-81015).
Rendering
- Fix crash when calling
get_video_adapter_*in a thread (GH-79528). - Unbind the framebuffer when updating meshes (GH-79772).
- Fix motion vectors being corrupted when using
precision=double(GH-80257). - Fix integer underflow when rounding up in VoxelGI (GH-80356).
- Improve handling of motion vectors for multimesh instances (GH-80414).
- Clear SDFGI textures when created (GH-80889).
- Fix integer value for
GL_MAX_UNIFORM_BLOCK_SIZEoverflowing (GH-80909). - Add half-pixel offset to lightmapper rasterization (GH-81872).
- GLES3: Fix multimesh rendering when using colors or custom data (GH-79660).
- GLES3: Fix memory access error for
MultiMesh(GH-80788). - GLES3: Fix
glMapBufferRangereturn null whenr_index + last_item_index > max_instance(GH-81036). - Vulkan: Fix texture update (GH-80781).
- Vulkan: Fix crash with many Omni/SpotLights, Decals or ReflectionProbes (GH-80845).
Shaders
- Fix shader type detection (GH-79287).
- Fix Shader and ShaderInclude resource loading (GH-80705).
- Fix empty shader resource loading (GH-81300).
XR
- Fix issue with accessing hand tracking without timing info (GH-78817).
4.1.1 - 2023-07-17
See the release announcement for details.
Added
Animation
- Add 3.x compatibility for animation loop mode (GH-79155).
GUI
- Add compatibility properties to
TouchScreenButton(GH-78940).
Changed
2D
- Improve string drawing in the tiledata editor (GH-78522).
- Make sure the shortcut key respects the context in
TileSetAtlasSourceEditor(GH-78920).
Buildsystem
- Linux: Allow unbundling brotli to use system library (GH-79101).
- Linux: Link libsquish directly when unbundling, .pc file unreliable (GH-79105).
C#/.NET
- Update the RiderPathLocator to support the JetBrains Toolbox 2.0 (GH-78832).
- Compare symbol names without null flow state (GH-79094).
- Add null check before calling
UnregisterGodotObject(GH-79151).
Core
- Check parameter validity in
Object::set_script(GH-46125). - Improve error message for
Node.set_owner(GH-79000).
Editor
- Focus current node after connecting (GH-54071).
- Fix tooltip of enum value without description (GH-78524).
- Use bullet points in shader editor creation dialog (GH-78631).
- Sort project tags before saving (GH-78775).
- Project converter: Use same rendering driver as Project Manager (GH-78795).
- Add tooltip description wrapping in scene tree and plugin settings (GH-79090).
- Improve user-friendliness of project version mismatch messages (GH-79118, GH-79299).
GUI
- Ensure that
_drop_physics_mouseoveronly happens when necessary (GH-78078). - Update FileDialog button activity when
file_modeis changed (GH-79211). - Hide/show
AcceptDialog's button spacer on button visibility changed (GH-79274).
Porting
- macOS/iOS: Set MoltenVK logging level based on
--verboseflag (GH-79061). - Windows: Flash both the window caption and taskbar button on
request_attention(GH-78263).
Rendering
- Clear specular buffer if sky mode is canvas and screen space effects are used (GH-78624).
- Take eye offset into account for depth in StandardMaterial3D (GH-79049).
Fixed
2D
- Fix
Camera2D.rotatingnot being converted and reversed properly (GH-79264).
3D
- Fix Camera3D
project_*methods not accounting for frustum offset (GH-75806). - Fix 3D viewport grid disappearing on scene tab changes (GH-78694).
Animation
- Fix infinite loop state check in
AnimationStateMachine(GH-79141). - Fix
tween_propertyonBasisto properly update its value (GH-79426).
Buildsystem
- Linux: Fix build with
use_sowrap=noand various warnings/errors (GH-79097).
C#/.NET
- Fix command line exporting (GH-79173).
Core
- Fix zero-sized WorkerThreadPool not processing group tasks (GH-78845).
- Fix
Node::add_siblingparent check (GH-78847). - Fix error when non-ASCII characters in resource pack path (GH-78935).
- Fix erroneous
pad_zeros()warning (GH-79202). - Fix
PackedScene::get_last_modified_time()always returns0(GH-79237).
Editor
- Fix dropping files from
res://tores://(GH-78914). - Do not change a node unique name to the same name (GH-78925).
- Collapse bottom panel if there is no active tab (GH-79078).
- Fix
ui_cancelaction not closingFindReplaceBar(GH-79079). - Emit
history_changedon merged UndoRedo actions (GH-79484).
Export
- Fix export options of scripted
EditorExportPlugins (GH-79025).
GDScript
- Fix regression with GDScript enum descriptions now showing up in documentation (GH-78953).
GUI
- Fix cursor behavior for multiselect in Tree while holding CTRL (GH-71024).
- Fix disabled slider highlighting (GH-78776).
- Fix invalid minimum size for translated messages in option button (GH-78835).
- Fix incorrect property names in
FontFile::_get_property_list()(GH-78907). - Revert "Fix focusloss of non-exclusive
AcceptDialogwithclose_on_escape" (GH-79084).
Import
- Fix property hint class name type string restriction and replace mode (GH-79139).
Navigation
- Fix closest possible navigation path position (GH-79004).
Networking
- Fix
rpccalls with binds (GH-78551).
Particles
- Initialize particles instance buffer in case it is used before being updated (GH-78852).
- Unify error condition for particles trail lifetime (GH-79270).
Physics
- Fix rigid body
contact_monitorproperty description (GH-79250).
Porting
- Fix formatting of
dlopenerror messages (GH-78802). - Fix the fallback logic of
OS::shell_show_in_file_manager(GH-79087). - Linux/BSD: Avoid freeze when interacting with menus on Wayland (GH-79143).
- Linux/BSD: Fix
move_to_trashwrongly reporting files as not found (GH-79284). - Windows: Fix setting initial non-exclusive window mode (GH-79016).
Rendering
- Fix threading bug in Vulkan rendering device (GH-78794).
- Fix sanitizers reports about octahedral tangents in RenderingServer (GH-78902).
Shaders
- Fix invalid shader compilation when using
hint_normal_roughness_texturein mobile backend (GH-78839). - Fix using uint suffix at the hex number declaration in shaders (GH-78906).
- Fix shader language float literal precision truncation (GH-78972).
- Fix comments and indentation in
.gdshaderincfiles (GH-79158).
4.1 - 2023-07-06
See the release announcement for details.
Added
2D
- Add "Center View" button to 2D editor (GH-57252).
- Add proper snapping to tile polygon editor (GH-70488).
3D
- Add the ability to look-at in model-space (GH-76082).
- Add move control points button to Path3D Editor (GH-77860).
Animation
- Implement
AnimationNodeSub2and allow less or greater value in mathematicalAnimationNode(GH-76616). - Add
TRANS_SPRINGmode toTween(GH-76899).
Buildsystem
- Add support for single compilation unit builds (GH-77170).
C#/.NET
- Add fine-grained disabling of SourceGenerators (GH-71049).
- Add global class support (GH-72619).
- Add
[Obsolete]attribute to deprecated members (GH-77904). - Add version defines to help users deal with breaking changes (GH-78249, GH-78466).
- Add compatibility overloads (GH-78452).
Core
- Add frame delta smoothing option (GH-52314).
- Refactor Node processing to allow Scene multi-threading (GH-75901).
- Add a square fill mode to GradientTexture2D (GH-76151).
- Expose
ProjectSettings.set_as_basic()to scripting (GH-77417). - Expose
ProjectSettings.set_as_internal()to scripting (GH-77668). - Let user scripts disable thread safety checks (GH-78000).
Editor
- Add editor setting for spin slider sensibility (GH-50671).
- Add multi-window code and shader editors (GH-62378).
- Improve editor state persistence (GH-72277).
- Properly remember snapping options per-project (GH-74682).
- Add project tags (GH-75047).
- Improve editor state initialization (GH-75563).
- Android: Add the
scale_gizmo_handleseditor setting for touchscreens (GH-75718). - Make create folder popup support nested folders (GH-76084).
- Display enum value descriptions in the editor inspector help tooltips (GH-76238).
- Add indicator for
StringNameproperties (GH-77521). - Add relative path support for
EditorPlugin.add_autoload_singleton(GH-78109).
Export
- Allow EditorExportPlugins to provide export options (GH-72895).
- Add readable descriptions and validation warnings to the export options (GH-74644).
GDExtension
- Improve editor support for icons of custom, scripted, and GDExtension classes (GH-75472).
- Add a backwards compatibility system for GDExtension (GH-76446).
- Allow GDExtensions to add editor plugins (GH-77010).
- Add GDExtension
@sinceattribute (GH-78518).
GDScript
- Allow to reference a class constructor as a
Callable(GH-73657). - Allow boolean operators for all Variant types (GH-74741).
- Add support for static variables in GDScript (GH-76264).
GUI
- Add support for multiline cells to
Tree(GH-61714). - Expose horizontal/vertical
custom_stepas editor property for theScrollContainer(GH-70868). - Implement
screen_get_pixelmethod for LinuxBSD/X11, macOS and Windows (GH-74087). - Implement vertical icon alignment for buttons (GH-74369).
- Expose all auto-wrap modes in
TextEdit(GH-74813). - Expose
TextServerjustification flags toLabel,Label3D,TextMesh, andRichTextLabel(GH-75250). - Expose dialog parent-and-popup logic to the API (GH-76025).
- Add support for tab stops to
Label(GH-76129). - Add support for tab stops to
RichTextLabel(GH-76401). - Expose
Window.get_window_id()(GH-77288). - Implement
TreeItem.add_child(GH-77446). - Add method to check if native window is focused (GH-78262).
Import
- Expose more compression formats in Image and fix compress check (GH-76014).
- Add support for extending GLTF with more texture formats and support WebP (GH-76895).
- Add support for non-standard OBJ vertex entries (GH-77042).
Input
- Detect host OS and use macOS keys on Mac hosts on Web (GH-75451).
Navigation
- Expose NavigationAgent path postprocessing and pathfinding algorithm options (GH-75326).
- Add agent pause mode to
NavigationServer(GH-75888). - Add NavigationPolygon
cell_sizeproperty (GH-78172).
Networking
- Implement "watched" properties (reliable/on change) (GH-75467).
- Add support for platform-specific CA bundles (GH-76836).
Porting
- Implement and expose
OS.shell_show_in_file_manager()(GH-69698, GH-76428). - Add
audio/general/text_to_speechproject setting to enable/disable TTS (GH-77132). - Android: Allow concurrent buffering and dispatch of input events (GH-76399).
- Android: Add editor setting to control the window used to run the project (GH-77676).
- Android: Allow exporting release builds without a debug keystore (GH-78123).
- Linux/BSD: Add a default error handler for X11 to avoid crashes (GH-75099).
Rendering
- Add shader cache to GLES3 (GH-76092).
- Implement Vulkan pipeline caching (GH-76348).
- Add NoiseTexture3D (GH-76486).
Shaders
- Add
EXPOSUREbuilt-in to spatial shaders (GH-71364). - Add
LIGHT_IS_DIRECTIONALbuilt-in for spatial shaders (GH-76290).
XR
- Add support for getting and setting display refresh rate in WebXR (GH-72938).
Changed
2D
- Improve the
Gradient2Deditor (GH-70940). - Overhaul the
Curveeditor (GH-74959). - Draw materials in tile atlas view (GH-77909).
Animation
- Improve SpriteFrameEditor frame addition ordering (GH-68091).
Buildsystem
- SCons: Move platform logo/run icon to
exportfolder (GH-78435).
C#/.NET
- Make include scripts contents an export option (GH-72896).
- Truncate instead of round in Vector2/3/4 to Vector2I/3I/4I conversion (GH-75477).
Core
- The strings returned by
ResourceLoader::get_dependencies()now include paths in addition to UIDs (GH-73131). - Optimize Node children management (GH-75627).
- Deprecate
NOTIFICATION_MOVED_IN_PARENTforNOTIFICATION_CHILD_ORDER_CHANGED(GH-75701). - Optimize
Node::add_childvalidation (GH-75760). - Replace invalid characters in node names by underscores instead of removing them (GH-75760).
- Optimize
Object::get_class_name(GH-75797). - Ensure
RID,Callable, andSignalare stored as strings (GH-78517).
Editor
- Remove constrained view in the 2D editor (GH-47628).
- Enhance FileSystem dock tooltips (GH-63263).
- Get rid of mouse wheel switch in scene tabs (GH-70800).
- Reorganize context menu in FileSystem dock to put more used options higher (GH-73519).
- Improve file move and copy operations (GH-75330).
- Preserve scene unique names when saving branch as scene (GH-76609).
- Allow showing messages from threads in "Editor Log" (GH-77080).
Export
- Store sensitive export options in dedicated credentials file (GH-76165).
- Check if the required texture format is imported in the export dialog (GH-78456).
GDExtension
- Rework GDExtension interface from a struct to loading function pointers (GH-76406).
- Standardize Object ptrcall encoding on
Object **(GH-77410).
GDScript
- Improve GDScript documentation generation & behavior (GH-72095).
- Sort code autocompletion with rules (GH-75746).
- Allow
Strings andStringNames match each other in amatchstatement (GH-78389).
GUI
- Add a warning when accessing theme prematurely and fix surfaced issues (GH-73475).
- Make main editor window border margin controllable by theme (GH-74767).
- Make sure to normalize subtags when parsing BBCode (GH-75622).
- Add an option for ButtonGroups to be unpressed (GH-76279).
- Make
TextureButtonandButtonupdate on texture change (GH-77159). - Use defined key mapping for closing popups and dialogs (GH-77297).
Import
- Split editor-specific import metadata for textures (GH-75949).
- Use DXT1 when compressing PNGs with RGB format (GH-76516).
- Respect
compress_binary_resourceseditor setting on scene import (GH-76630). - Disable texture format import overrides by default (GH-77105, GH-78147).
- Ensure that "detect 3D" is only called when using 3D shaders (GH-78199).
Input
- Create a virtual mouse move event after moving child nodes in tree (GH-66625).
- Propagate shortcut events to
SubViewports (GH-76926). - Improve touchpad and mouse support for the Android editor (GH-77498).
- Generate missing values instead of disabling options (GH-77900).
Navigation
- Rework Navigation avoidance (GH-69988).
- Make navigation mesh edge connections optional (GH-75601).
- Prevent unnecessary navigation map synchronizations (GH-75678).
- Update NavigationObstacle API (GH-78081).
Networking
- mbedTLS: Disable weak crypto and TLS versions (GH-76905).
- Allow
ENetConnectionto send a packet to an arbitrary destination (GH-77627).
Physics
- Propagate previously unused
NOTIFICATION_WORLD_2D_CHANGED, make CanvasItem/CollisionObject2D use it (GH-57179).
Porting
- Android: Downgrade android gradle plugin to version 7.2.1 (GH-76325).
- macOS: Bump min. version to 10.13, and remove deprecated code (GH-76394).
- Windows: Support long path in file access (GH-76739).
Rendering
- Disable NVIDIA's threaded OpenGL optimization on Windows (GH-71472).
- Use
MODELVIEW_MATRIXwhen on double precision (GH-75462). - Move sky luminance scaling to before fog is applied (GH-75812).
- Clamp normal when calculating 2D lighting to avoid artifacts (GH-76240).
- Rework particle turbulence (GH-77154).
- (Re-)Implement
Light3D.shadow_reverse_cull_face(GH-77238). - Take 3D resolution scaling into account for mesh LOD (GH-77294).
Thirdparty
- astcenc updated to version 4.4.0.
- basis_universal updated to version 1.16.4.
- brotli updated to version ed1995b6b.
- doctest updated to version 2.4.11.
- FreeType updated to version 2.13.0.
- HarfBuzz updated to version 7.3.0.
- ICU4C updated to version 73.1.
- MbedTLS updated to version 2.28.3.
- PCRE2 updated to version 10.42.
- recast updated to version 1.6.0.
- ThorVG updated to version 0.9.0.
- tinyexr updated to version 1.0.5.
- wslay updated to version 0e7d106ff.
- Vulkan and related libraries updated to version 1.3.250.0.
- zstd updated to version 1.5.5.
- CA root certificates updated to 2023-06-02 bundle from Mozilla.
Removed
C#/.NET
- Discontinue
GodotNuGetFallbackFolder(GH-73984).
Input
- Deprecate
push_unhandled_input(GH-77452).
Fixed
2D
- Fix click-selecting Sprites with repeated texture (GH-78566).
- Tilemaps: Fix rendering odd-sized tiles (GH-74814).
- Tilemaps: Fix tile resizing towards atlas boundary (GH-76152).
- Tilemaps: Fix crashes when painting a large area in a tilemap (GH-76548).
- Tilemaps: Fix TileMap draw preview when switching CanvasItem editor tool (GH-78467).
- Tilemaps: Fix TileSet set as local to scene (GH-78477).
- Tilemaps: Update indices after removing custom data layers (GH-78492).
3D
- Fix
PathFollowdirection and add Z forward option (GH-72842). - Improve CSG robustness (GH-74771).
- Fix 3D viewport front/rear axis and "Focus" button (GH-76052).
- Fix infinite loop in CSG
Build2DFaces::_find_edge_intersections(GH-76521). - Fix
CSGPolygon3Din path mode disappearing at runtime (GH-77118).
Animation
- Fix
get_bone_pose_global_no_override()returning incorrect values (GH-77194). - Fix for SkeletonIK3D interpolation and bone roll (GH-77469).
- Only reset
rest_dirtyafter ALL bone transforms have finished update (GH-78025).
Audio
- Fix AudioListener2D ignoring rotation for positional audio (GH-69027).
- Fix trim when importing WAV (GH-75261).
- Fix crash in the Android editor when creating
AudioStreamMicrophone(GH-77686).
C#/.NET
- Fix exception when using base types of extension-based types from C# (GH-75955).
- Fix C# glue generation for enums with negative values (GH-77018).
- Mostly fix hash of ManagedCallable (GH-77199).
Core
- Fix multi-threaded resource loading (GH-74405, GH-77143).
- Fix recursive
Node.find_children(GH-75459). - Fix invalid 2D global position when read outside tree (GH-75509).
- Prevent errors when using ViewportTexture (GH-75751).
- Properly update NodePaths with batch rename (GH-76376).
- Fix multiple issues in
WorkerThreadPool(GH-76945, GH-76999). - Fix
StringNamecomparison (GH-77197). - Fix grayscale alpha for
Image::convertFORMAT_L8using REC.709 (GH-77456). - Fix external resource ids lost (GH-77749).
Editor
- Fix "View Owners" dialog not acknowledging that some resources aren't scenes (GH-68697).
- Fix typed array export (GH-73256).
- Various fixes to the 3-to-4 project conversion tool (GH-75002, GH-75900, GH-77615, GH-78097).
- Prevent quoted args in
editor/main_run_argsfrom being split at spaces (GH-75444). - Fix connect signal dialog not allowing Unicode method name (GH-75814).
- Avoid error spam on first opening of a not yet imported project (GH-77276). 75900), GH-77615, GH-78097).
Export
- Make sure script cache is created after reimport (GH-75798).
GDExtension
- Fix GDExtension Variant type conversion (GH-75758).
- Fix wrapping Objects in GDExtension that aren't exposed (GH-78061).
- Fix
Ref<>.is_valid()for ScriptInstanceExtension (GH-78392). - Use
Uninitialized*Ptrfor constructors/converters using placement new (GH-78419).
GDScript
- Fix access to identifiers that are reserved keywords (GH-62830).
- Fix typed arrays not working with concatenation operator
+(GH-73540). - Fix missing warning for shadowing of built-in types (GH-74842).
GUI
- Fix deselecting behavior in Tree (GH-71307, GH-71405).
- Fix RichTextLabel wrong selection offsets (GH-71742, GH-71747).
- Fix a blocking black rectangle that appears during color picking (GH-74962).
- Fix blurry borders on antialiased StyleBoxFlat (GH-76132).
- Fix
MenuBaritem order in RTL layout (GH-77519). - Fix input handling for unfocusable embedded windows (GH-77842).
- Fix VideoStreamPlayer seamless loop (GH-77856).
- Fix editor log flicker (GH-77973).
- Ensure that controls update all their sizing information when required (GH-78009).
- Fix passive mouse hovering for physics (GH-78017).
Import
- Fix Basis Universal compressing with normal maps (GH-62718).
- Fix OBJ mesh importer smoothing handling (GH-75315).
- Fix Silhouette used incorrect index (GH-76499).
- Fix GLTFSkin binding for the
godot_skinproperty (GH-77413). - Fix exporting MeshInstances without a Skeleton in the GLTF module (GH-77545).
- Fix center of mass when importing GLTF physics bodies (GH-77602).
Input
- Fix guide button detection with XInput and Xbox Series controllers (GH-73200).
- Fix just pressed and released with short presses (GH-77055).
- Fix mouse position with screen transform (GH-77923).
- Fix IME focus in Popup on Windows and macOS (GH-77977, GH-78029).
Networking
- Fix incorrect value returned by
HTTPClient.get_response_body_lengthon Web (GH-77648). - Fix delta variables index decoding (GH-78709).
Physics
- Fix various issues with PhysicsDirectBodyState3D contacts (GH-58880).
- Improve rigid body CCD against moving bodies (GH-76138).
Porting
- Android: Fix UI responsiveness to touch taps (GH-75703).
- Android: Fix double tap & drag on Android (GH-76791).
- Android: Fix issue causing the last edited project to open while switching to another one (GH-78129).
- iOS: Fix loading of GDExtension dylibs auto converted to framework (GH-76510).
- iOS: Fix orientation change in runtime (GH-78132).
- Linux/BSD: Fix the sliding window problem (GH-76040).
- Linux/BSD: Fix temporary file permissions (GH-78347).
- Windows: Fix queuing utterances in rapid succession in TTS (GH-75880).
- Windows: Fix minimize button missing in non-resizable projects (GH-77770).
Rendering
- Fix GLES3 rendering on Android studio emulator (GH-74945).
- Fix "Light Only" mode of
CanvasItemMaterial(GH-75181). - Fix GLES texture uniform array binding (GH-75313).
- Fix the limit for interpolation with respect to metallic and calculations in the SSR Fresnel Shlick (GH-75368).
- Fix GLES3 GPUParticles3D not working in HTML export (GH-75795).
- Fix voxel GI issues (GH-76437, GH-76550).
- Fix reflections in mobile renderer (GH-76692).
- Fix modulation propagation for Y-sorted
CanvasItems (GH-77079). - Fix LightmapGI dynamic object lighting (GH-77089).
- Fix calculation of skinned AABB for unused bones (GH-77265).
- Fix various issues with blend modes in the OpenGL 3 renderer (GH-77409).
- Fix Subtract blend mode of Forward+ and Mobile renderers (GH-77520).
- Fix LCD blend mode color caching in OpenGL (GH-77946).
- Ensure filter/repeat is cached by Viewport texture in GL Compatibility renderer (GH-78285).
- Copy texture filter/repeat modes when replacing a texture in the GL Compatibility backend (GH-78287).
- Fix volumetric fog in stereo by projection vertex in combined space (GH-78436).
- Use a filter with mipmaps when initializing textures with mipmaps in GL Compatibility renderer (GH-78720).
Shaders
- Fix shader preprocessor cyclic include handling (GH-77608).
XR
- Fix OpenXR Passthrough mode (GH-78135).
- Apply reprojection in multiview for our cluster lookup (GH-78499).
- Fix incorrect depth buffer option in OpenXR (GH-78550).
4.0 - 2023-03-01
The Godot 4.0 release was our biggest released to date, spanning 4 years of development, more than 12,000 merged Pull Requests, and 1,500 individual contributors!
It's so big that the task of writing a detailed, curated changelog of the most relevant changes like we've done for previous 3.x releases didn't seem realistic.
Instead, please refer to following resources:
- Release announcement
- Git changelog (by authors)
- Git changelog (chronological)
- Migration guide for Godot 3 users
3.5 - 2022-08-05
See the release announcement for details.
Added
3D
- Add
process_modeproperty to InterpolatedCamera (GH-41402). - Add Label3D node and Sprite3D material render priority (GH-61276).
- Add TextMesh and expose dynamic font vector outlines (GH-61281).
- Add
global_translationandglobal_rotationto Spatial (GH-63058).
Animation
- Add option to paste animation as duplicate (GH-60226).
- New SceneTreeTween backported from Godot 4.0's Tween (GH-60581).
Audio
- Allow configuring loop mode on WAV import (GH-59170).
- Add support for 64-bit IEEE float WAV encoding (GH-61169).
Buildsystem
- Add support for PowerPC family (GH-54490).
- Add Visual Studio 2022 support with fallback to 2019 (GH-57609).
- Add
fast_unsafeoption for faster rebuilds (GH-57806). - Refactor Linux linker options with
linker=<bfd|gold|lld|mold>(GH-63283).
Core
- Support deep comparison of Array and Dictionary (GH-42625).
- Add a project setting to disable the boot splash image (GH-47568).
- Add
OS.is_process_running()method (GH-51682). - Add
Image.fill_rect()method (GH-52457). - Allow pinning property values + Consistent property defaults (GH-52943).
- Add a Time singleton (GH-54056).
- Expose
String.get_slice()method (GH-54453). - Backport some APIs in math structs:
AABBandRect2get_center(),Vector2andVector3limit_length()(GH-54614). - Add GradientTexture2D (GH-54824).
- Add compile-time options to use handles and tracked handles to RID, to find erroneous usage patterns and leaks (GH-54907, GH-55719).
- Add
OS.crash()method for testing system crash handler (GH-55614). - Expose
String.join()method (GH-56369). - Add project setting to change scene file casing (GH-56909).
- Add
OS.has_clipboard()to check clipboard content (GH-56950). - Add a signal to notify when children nodes enter or exit tree (GH-57541, GH-62241).
- Add visibility to CanvasLayer (GH-57900).
- Add
OS.get_processor_name()method (GH-58157). - Add optional default value to
get_meta()(GH-58608). - Add
OS.get_screen_refresh_rate()method (GH-58812). - Add
Dictionary.merge()method (GH-59883). - Add
fill()method to Array and Pool*Array (GH-60426). - Expose
Semaphore.try_wait()(GH-60502). - Add scene unique nodes (GH-60527).
- Expose
OS.move_to_trash()(GH-60542). - Allow AStar/AStar2D with zero point weight (GH-60812).
- Add search methods for Pool*Arrays:
has(),count(),find(),rfind()(GH-60856). - Add interpolation modes to Gradient (GH-60982).
- Add option to keep or skip carriage return (CR) in
File.get_as_text(), optimize implementation (GH-63733).
Editor
- Allow pinning property values (GH-52944).
- Add option to only redraw vital updates (GH-53463, GH-61965).
- Add push, pull, fetch and improved diff view to VCS UI (GH-53900).
- Implement Alt + Mouse wheel to adjust FOV in the 3D editor viewport (GH-54207).
- Many fixes to built-in scripts support (GH-54579, GH-54662, GH-54889, GH-55286, GH-55611, GH-55728).
- Add "Replace in Files" functionality to text editors (GH-55232).
- Draw the filled part of the slider on float EditorSpinSliders (GH-55521).
- Sort and group theme properties in docs, improve formatting for theme and enums (GH-55526).
- Make overridden properties link to parent definition (GH-55560).
- Add drag and drop for NodePaths (GH-55761).
- Only show Particles2D visibility rect on selected nodes (GH-55782).
- Add option to filter the stack variables of GDScript debugger (GH-58861).
- Add property name style toggle to Inspector (GH-59313).
- Add option to paste animation as duplicate (GH-60226).
- Add an inspector preview for BitMap (GH-60700).
- Add
--debug-servercommand line option to listen for incoming connections (GH-60819). - Add readable export errors (GH-61624).
GDNative
- Add Core API 1.3 with methods:
Dictionary.merge(),Pool*Arrayhas()andsort(),PoolStringArray.join(),String join(),num_uint64()andnum_uint64_capitalized()(GH-55650, GH-55826, GH-63136).
GUI
- Add option to make selection unique to TextEdit, LineEdit, RichTextLabel (GH-54353, GH-62221).
- Add drag and drop to TextEdit, LineEdit, RichTextLabel (GH-55355).
- Add drag start/end signals for Slider (GH-55775).
- RichTextLabel: Add BBCode
[lb]and[rb]escape sequences for square brackets (GH-56586). - Add alignment options to Button icons (GH-57771).
- Add type variations to Theme (GH-57942).
- Add FlowContainer (GH-57960).
- Add WOFF2 font support and brotli decoder (GH-59522).
- RichTextLabel: Add
deselect()andget_selected_text()methods (GH-59894, GH-59926). - LineEdit: Add selection getter methods (GH-60176).
- Add a skew property to StyleBoxFlat (GH-60592).
Input
- Input: Allow for mapping scancodes to current layout (GH-56015).
Localization
- Make property paths and categories translatable (GH-58634).
- Add property name style toggle to Inspector (GH-59313).
- Add binary MO translation file support (GH-59522).
Mono (C#)
- Add support for file-scoped namespace declaration (GH-56427).
Navigation
- Add NavigationServer with obstacle avoidance using RVO2 (GH-48395).
- Lots of fixes and improvements to the new NavigationServer (Many GitHub PRs).
- Backport more NavigationServer features to make it more flexible (GH-61996).
Networking
- Add
set_extra_headers()to WebSocketServer (GH-40975). - Add proxy support for HTTPClient and the editor (GH-55988).
- Add NetworkedMultiplayerCustom so high-level multiplayer backends can be added from scripts (GH-63163).
Physics
- Add fixed timestep interpolation for 3D (GH-52846).
- The 2D equivalent will be added later on.
- Expose
intersect_pointin 3D physics server (GH-54577). - VehicleWheel can now return the surface it's colliding with (GH-55723).
- Add physics material to GridMap (GH-56006).
- Add KinematicBody
moving_platform_apply_velocity_on_leaveproperty (GH-56569).
Porting
- Android: Add full support for Android scoped storage (GH-51815).
- Android: Initial port of the Godot editor (GH-57747).
- Android: Update editor default display scale, allow resizing windows (GH-59868, GH-59861, GH-59880).
- Android: Add method to obtain display cutouts (GH-60552).
- HTML5: Add preliminary support for GDNative+Threads build (GH-61989).
- Depends on cutting edge Emscripten 3.1.14, no templates provided for this export type for now.
- HTML5: Add support for
Input.vibrate_handheld()(GH-63573). - Linux: Add support for primary clipboard (GH-54026).
- macOS: Implements ad-hoc signing from Linux/Windows (GH-51550).
- macOS: Add signing of directory structure when exporting for macOS (GH-56250).
- Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) (GH-54625).
- Windows: Add support for handling network share paths (GH-61985).
- Add stylus inverted/eraser support to InputEventMouseMotion event (desktop platforms) (GH-62723).
Rendering
- Add
material_overlayproperty to MeshInstance (GH-50823). - Add a Viewport property to use full floating-point precision in HDR (GH-51708).
- Asynchronous shader compilation + caching (ubershader) (GH-53411).
- Allow changing directional shadows at runtime (GH-54165).
- Allow using transparent background Viewports with post processing effects (GH-54585).
- Add OccluderShapePolygon (GH-57361).
- Add support for saving multiple Images in BakedLightmap (GH-58102).
- VisibilityNotifier: Add
max_distancefeature (GH-61544).
Shaders
- Expose
VERTEX_IDandINSTANCE_IDto user created shaders (GH-54751). - Add
constqualifier support for function arguments in shaders (GH-55103). - Add random initial color feature for all Particles nodes (GH-55788).
- Add hints and default values to VisualShader uniform nodes (GH-56466).
- Allow pass varyings as out param to the function, when it's possible (GH-56478).
- Many improvements backported from
master(GH-56794).
XR
- WebXR: Rendering and touch events now supported on smartphone AR (GH-55869, GH-56819).
- WebXR: Allow mapping VR controller joystick/button IDs to match other AR/VR interfaces (GH-59994).### Changed
Changed
Audio
- Instance audio streams before
AudioServer::lockcall (GH-59413).
Buildsystem
- Make compilation database generation optional (GH-57820).
- Default
num_jobsto max CPUs minus 1 if not specified (GH-63087). - Toolchains update for official builds.
Core
- Increase
VARIANT_ARG_MAXto 8 (GH-54188). - Change RID comparison operators to use RID_Data id instead of address (GH-59234).
- Crash handler: Use
print_errorto include backtrace in logs (GH-60782). - Allow AStar/AStar2D zero point weight (GH-60812).
- Command line arguments
--versionand--helpreturn exit code 0 instead of 255 (GH-62550). - Sort SpriteFrames animations alphabetically (GH-62977).
Editor
- Hide
.gdignore'd folders in file dialogs (GH-46638). - Improve ColorPicker presets (GH-54439).
- Improved region-select in the 3D editor viewport (GH-58252).
- Make property paths and categories translatable (GH-58634).
- Create onready variables when dropping nodes and holding Ctrl (GH-60879).
- Only switch to node when node dragging it (GH-61162).
- Increase the editor profiler frame history default and maximum limit (GH-61482).
- Don't switch to 2D/3D viewports when selecting nodes while in Script Editor (GH-63344).
Export
- Improve embedded PCK loading and exporting (GH-60580).
- Return 0 exit code when command line export succeeds with warnings (GH-62907).
GDScript
- Infer variable types on release (GH-57851).
- Don't coerce default values to the export hint type (GH-58686).
- Enable method type information on release builds (GH-59793).
- Keep builtin method info on release builds (GH-61117).
GUI
- Make TabContainer's tabs better blend with the panel when using the default theme (GH-56774).
- Make the menu from Menu/OptionButton have its first option focused when triggered by a keyboard or gamepad (GH-57643).
- Make Tree once again draw relationship lines for items offscreen (GH-60282).
- Make various improvements to OptionButton (GH-61102).
- Improve RichTextLabel table filling (GH-61904).
Import
- Remove hardcoded names in generated objects in scene importer (GH-47279).
Input
- Increase joystick max button number to 128 (GH-56666).
- Windows and macOS support up to 128, Linux supports up to 80, and Android supports up to 36.
- Use mouse event relative motion to calculate mouse speed (GH-56755).
- Drop mouse focus and over when gui input is globally disabled (GH-59100).
- This is optional and controlled by the
gui/common/drop_mouse_on_gui_input_disabledproject setting. For compatibility, this setting is disabled by default on pre-3.5 projects and enabled by default for new projects.
- This is optional and controlled by the
- Add "(Physical)" label to physical scancodes in
InputEventKey.as_text()(GH-62633). - Re-enable input accumulation disabled by error in 3.4 (GH-62826).
- If this changes behavior in a way that doesn't fit your project, you can change it back with
Input.use_accumulated_input = false.
- If this changes behavior in a way that doesn't fit your project, you can change it back with
Mono (C#)
- Don't box params on Native->C# calls with Variant params (GH-53942).
String.Capitalize()now matches the behavior of the coreString.capitalize()(GH-57076).
Navigation
- Navigation APIs fully refactored to make use of the new NavigationServer with collision avoidance (see "Added" section). While we aimed to keep the APIs as compatible as possible, this is a breaking change and might impact how existing Navigation setups behave.
- The Navigation and Navigation2D nodes were kept for compatibility but are now deprecated. Their functionality is replaced by the NavigationServer and Navigation2DServer.
- Consider gridmap collisions in navigation bake (GH-57173).
Networking
- ENet poll optimizations, fragmented unreliable transfer (GH-53130).
- Make WebSocket hostname resolution non-blocking (GH-57649).
- Increase the maximum number of concurrent DNS queries from 32 to 256 (GH-59520).
- Use a floating-point number for the
timeoutproperty in HTTPRequest (GH-60402).
Physics
- Bullet: Return contact points in world space in
collide_shape(GH-59470). - Bullet: Do not set gravity and damping when Custom Integrator is enabled (GH-62708).
Porting
- Android: Default target API level updated to 32 (GH-51815).
- Android: Upgrade NDK to r23 LTS (GH-61692).
- HTML5: Enable mbedTLS module for Crypto object (GH-61402).
- iOS: Improve icon / loading screen export (GH-56861).
- iOS: Vibrate using haptics engine on supported devices (GH-60398).
- Linux: Use application name as PulseAudio device name (GH-54654).
- Linux: Read and store joypad events in a separate thread (GH-56126).
- macOS: Fix translation detection for editor and template (GH-52945, GH-57577).
- macOS: Redraw window during resize and modal popups (GH-54757).
- Windows: Improve console handling and execute (GH-55987).
- This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn't open with a console by default, but you can see console output if you start it from a console yourself. You can create a batch script or shortcut to automatically start Godot from a console as in previous releases.
- Windows: Keep editor at normal priority (GH-59665).
- Windows: Try to convert
OS::execute()output to Unicode (GH-60920).
Rendering
- Prevent use of Opaque Pre-Pass's threshold on top of Alpha Scissor (GH-45372).
- Improve the appearance of simple parallax in SpatialMaterial (GH-51433).
- Use early bailing to improve 3D shadow filtering performance in GLES3 (GH-54160).
- Faster editor line drawing - Path2D and
draw_line(GH-54377). - Bind mesh merging functionality in MeshInstance (GH-57661).
- Sort transparent objects based on camera position when using perspective camera (GH-60381).
- GLES2: Unpack blend shape arrays when necessary (GH-60829).
- Portals: Show gridmaps using global mode (GH-60851).
- CPU lightmapper: Account for ambient light settings when baking lights (GH-62260).
- GLES3: Ignore support for S3TC texture compression on Android and iOS devices (GH-62909).
- Few devices support this compression while they all support ETC2. Godot exports ETC2 by default and doesn't take into account that mobile devices could need S3TC.
Thirdparty
- Bullet updated to version 3.24.
- FreeType updated to version 2.12.1.
- libogg updated to version 1.3.5.
- libvorbis updated to version 1.3.7.
- libwebp updated to version 1.2.2.
- MbedTLS updated to version 2.28.1 (security update).
- PCRE2 updated to version 10.40.
- tinyexr updated to version 1.0.1.
- zlib/minizip updated to version 1.2.12 (security update).
- zstd updated to version 1.5.0.
- CA root certificates updated to 2022-07-19 bundle from Mozilla.
- SDL GameControllerDB updated to 2022-08-02 git snapshot.
XR
- Updated Meta hand tracking version (GH-60639).
Removed
Porting
- Android: Drop broken 32-bit framebuffer setting (GH-54431).
Shaders
- Removed support for
1for0ffloat literal syntax which is invalid in GLSL (GH-55623). Floats should be written with a decimal separator (1.0for0.f).
Fixed
2D
- Fixes to Camera2D position and first update (GH-63084, GH-63581).
- Fix CanvasItem not exiting its canvas group on canvas exit (GH-63234).
3D
- Fix hardcoded raycast distance in viewport object picking (GH-54369).
- Properly handle CSGShape parent and visibility updates (GH-58938).
Animation
- Fix cubic interpolation when looping (GH-58651).
- Fix AnimatedSprite doesn't emit
animation_finishedwhen changing playback direction (GH-61085).
Audio
- Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778).
Core
- Rationalize Node removals and deletions (GH-55514, GH-56519).
- Fix incorrect RID cleanup in Rasterizers (GH-55669, GH-55701).
- Fix wrong RGBA channel mapping when saving OpenEXR (GH-56715).
- Fix
AtlasTexturenesting (GH-56795). - Clear owners when pruning even out of the tree (GH-59063).
- Fix
wrapfto correct wrap values with 0.1 stepping (GH-61812). - Fix platform-specific issues with
OS.set_current_screen()(GH-63192).
Editor
- Unify determination of default property values (GH-52944).
- Ignore external editor for built-in scripts (GH-54578).
- Fix decoding UTF-8 filenames on unzipping (GH-56517).
- Fix inspecting nested dictionaries/arrays when debugging (GH-60737).
- Fix editor-only visibility for lights (GH-62335).
GDNative
- Fix StringName equal and less operators (GH-63104).
GDScript
- Don't ignore type mismatch in setter function (GH-54117).
- Clear pending function states when reloading GDScript (GH-56296).
- Fix variable type inference on release (GH-57851).
- Fix wrong parentheses for function call autocompletion in LSP (GH-59482).
- Fix autocompletion showing core class names with an underscore (GH-62731).
GUI
- GraphEdit: Fix toggling minimap with
minimap_enabled(GH-57239). - GraphEdit: Fix valid connections being reversed (GH-60124).
- GridContainer: Fix not ignoring top-level children (GH-60221).
- Label: Fix autowrap for CJK text (GH-60294).
- LineEdit: Fix clear button for asymmetric stylebox (GH-61496).
- Popup: Allow changing
exclusivewhen already popped (GH-61483). - RichTextLabel: Fix underlines and strikethrough not respecting visible character (GH-37656).
- RichTextLabel: Fix shadow color when text has transparency (GH-59054).
- RichTextLabel: Fix implementation of
remove_line()(GH-60618). - TextureButton: Fix focus texture logic (GH-56472).
- TextureProgress: Fix nine patch in circular mode (GH-54345).
Import
- Fix import hints breaking node paths in animations (GH-56956).
- glTF: Skip unsupported Draco-compressed glTF 3D format (GH-56613).
- glTF: Fix texture filename decoding (GH-57685).
- glTF: Allow more than 4 joints but warn and ignore them (GH-61912).
- glTF: Fix light intensity and attenuation import (GH-62747).
Input
- Fix InputEvent action exact match (GH-54174).
Mono (C#)
- Fix C#
get_all_delegatesmethod for generic classes (GH-55564). - Fix getting properties state when reloading C# (GH-56300).
- Fix Android AAB export failing to load native libs (GH-57420).
- Fix
Transform.Translatedmethod affecting the original transform (GH-63685).
Networking
- Fix HTTP limitation for large
content-length(GH-56331).
Physics
- Bullet: Update Area overlaps when Area properties or shapes change (GH-42306).
- Bullet: Trigger RigidBody space override updates when Area properties change (GH-42374).
- Bullet: Add shape data to Area overlap data (GH-42712).
- Bullet: Fix Continuous Collision Detection being wrongly enabled by default (GH-43801).
- Bullet: Ignore collision contact points with distance = 0 (GH-44726).
- Bullet: Fix shape index in multiple physics queries (GH-55533).
- Bullet: KinematicBody compound shape collision fix (GH-56801).
- Bullet: Skip compound shapes without child shapes in
recover_from_penetration(GH-59864). - Bullet: Do not set gravity and damping when Custom Integrator is enabled (GH-62708).
- Fixes a lot of issues with KinematicBody collisions at the intersection between meshes when using Bullet.
- GodotPhysics: Fix Area monitorable in 2D and 3D (GH-41699).
- GodotPhysics: Handle test body motion with 0 margin (GH-55762).
- Fix wrong collision reported on
move_and_collide()(GH-59439). - Fix the calculation of the angular velocity (GH-63190).
Porting
- Android: Only rotate sensor values for sensors that need them rotated (GH-55184).
- Android: Fix flickering issues with low processor mode (GH-59606).
- Android: Fix the logic to restart the Godot application (GH-61332).
- Android: Fix broken scroll gesture on UI (GH-62290).
- Android: Address slow copy performance when using the
FileAccessFilesystemJAndroidimplementation (GH-63223, GH-63480). - HTML5: Change default cursor from
autotodefault(GH-62608). - HTML5: Make locale string match other platforms (GH-63043).
- iOS: Fix simultaneous touches for different touch types (GH-60224).
- iOS: Flush accumulated input events (GH-62842).
- Linux: Fix tablet tilt values returning bad values (GH-56439).
- Linux: Fix
window_maximizednot working reliably (GH-59767). - Linux: Properly check for fullscreen toggle made through the Window Manager (GH-62543).
- macOS: Fix OpenGL color space on HDR displays (GH-60197).
- UWP: Fix exporting GDNative DLLs (GH-61262).
- UWP: Flush buffered input events (GH-63341).
- Windows: Fix wrong OEM key mappings for brackets and braces (GH-56588).
- Windows: Fix
String.http_escape()non-standard behavior with MinGW (GH-61655). - Improve architecture tags in
OS.has_feature()and make it work on MSVC (GH-61740). - Improve
OS.set_current_screen()on all desktop platforms (GH-63192).
Rendering
- Many fixes to octahedral vertex attribute specification (GH-54768, GH-56161, GH-58838).
- GLES3: Fix atlassed lightmaps not visible (GH-55676).
- Fix GPU particles transform feedback error for WebGL 2 (GH-56465).
- Fixed normals when using smoothed normals on CSG shapes (GH-58208, GH-59002, GH-59039).
- Fix alpha scissor shadow casting support (GH-58959).
- GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832).
Shaders
- Fix particle texture animation speed when using random lifetime (GH-55717).
- Fix invalid code generation when using
VisualShaderNodeUniformRef(GH-63105).
3.4 - 2021-11-05
See the release announcement for details.
Added
2D
3D
- Implement octahedral map normal/tangent attribute compression (GH-46800).
- Add a
center_offsetproperty to both plane primitive and quad primitive (GH-48763). - Options to clean/simplify convex hull generated from mesh (GH-50328).
- Allow unclamped colors in
Sprite3D(GH-51462).
Animation
Core
- Add frame delta smoothing option (GH-48390).
- This option is enabled by default (
application/run/delta_smoothing).
- This option is enabled by default (
- Add option to sync frame delta after draw (GH-48555).
- This option is experimental and disabled by default (
application/run/delta_sync_after_draw).
- This option is experimental and disabled by default (
- Expose OS data directory getter methods (GH-49732).
- Provide a getter for the project data directory (GH-52714).
- Add an option to make the project data directory non-hidden (GH-52556, GH-53779).
- Add support for numeric XML entities to
XMLParser(GH-47978). - Add option for BVH thread safety (GH-48892).
- Add
Engine.print_error_messagesproperty to disable printing errors (GH-50640). - Implement
OS.get_locale_language()helper method (GH-52740). - Allow using global classes as project
MainLoopimplementation (GH-52438). - Add an
Array.pop_at()method to pop an element at an arbitrary index (GH-52143). - Expose enum related methods in ClassDB (GH-52572).
- Add
Thread.is_alive()method to check if the thread is still doing work (GH-53490). - Allow for platform
Threadimplementation override (GH-52734). - Add support for generating
OpenSimplexNoisenoise images with an offset (GH-48805).
Crypto
- Add
AESContext, RSA public keys, encryption, decryption, sign, and verify (GH-48144). - Add
HMACContext(GH-48869).
Editor
- Automatic remote debugger port assignment (GH-37067).
- Auto-reload scripts with external editor (GH-51828).
- Use QuickOpen to load resources in the inspector (GH-37228).
- Allow to create a node at specific position (GH-50242).
- Add the ability to reorder array elements from the inspector (GH-50651).
- Assign value to property by dropping to scene tree (GH-50700).
- Allow dropping property path into script editor (GH-51629).
- Save branch as scene by dropping to filesystem (GH-52503).
- Allow creating nodes in Animation Blend Tree by dragging from in/out ports (GH-52966).
- Allow dragging multiple resources onto exported array variable at once (GH-50718).
- Add zoom support to
SpriteFrameseditor plugin (GH-48977). - Add
EditorResourcePickerandEditorScriptPickerclasses for plugins (and internal editor use) (GH-49491). - Add up/down keys to increment/decrement value in editor spin slider (GH-53090).
- Implement camera orbiting shortcuts (GH-51984).
- Add ability to copy group name (GH-53162).
- Implement a
%command%placeholder in the Main Run Args setting (GH-35992). - Add keyboard shortcuts to the project manager (GH-47894).
- Add history navigation in the script editor using extra mouse buttons (GH-53067).
GDScript
- Allow
warning-ignorein the same line as the respective warning (GH-47863). - LSP: Implement
didSavenotify and rename request (GH-48616). - LSP: Add support for custom host setting (GH-52330).
- LSP: Implement
applyEditfor signal connecting (GH-53068).
GUI
- Button: Add focus font color to
Buttonand derivatives (GH-54264). - ButtonGroup: Add a
pressedsignal (GH-48500). - CheckBox: Add disabled theme icons (GH-37755).
- ColorPicker: Display previous color and allow selecting it back (GH-48611, GH-48623).
- DynamicFont: Allow using WOFF fonts (GH-52052).
- GraphEdit: Make zoom limits and step adjustable (GH-50526).
- ScrollBar: Add
increment_pressedanddecrement_pressedicons (GH-51805). - TextureButton: Add
flip_handflip_vproperties (GH-30424). - TextureProgress: Add offset for progress texture (GH-38722).
- Theme: Various improvements to the Theme API (GH-49487).
- Theme: Add support for partial custom editor themes (GH-51648).
- Theme: Add API to retrieve the default font, and optimize property change notification (GH-53397).
Import
- Backport improved glTF module with scene export support (GH-49120).
- Implement lossless WebP encoding (GH-47854).
- Add anisotropic filter option for
TextureArrays (GH-51402). - Add "Normal Map Invert Y" import option for normal maps (GH-48693).
- Add optional region cropping for
TextureAtlasimporter (GH-52652).
Input
- Add support for physical scancodes, fixes non-latin layout scancodes on Linux (GH-46764).
- Add
action_get_deadzone()method to InputMap (GH-50065). - Allow getting axis/vector values from multiple actions (GH-50788).
- Allow checking for exact matches with action events (GH-50874).
- Exposed setters for sensor values (GH-53742).
- Expose
Input::flush_buffered_events()(GH-53812). - Allow input echo when changing UI focus (GH-44456).
Localization
- Add support for translating the class reference (GH-53511).
- Includes Chinese (Simplified) and Spanish translations with high completion ratio, and initial translations for French, Japanese, and German.
- Allow overriding
get_messagewith virtual method (GH-53207).
Mono (C#)
- iOS: Cache AOT compiler output (GH-51191).
- Add editor keyboard shortcut (Alt+B) for Mono Build solution button (GH-52595).
- Add support to export enum strings for
Array<string>(GH-52763). - Support arrays of
NodePathandRID(GH-53577). - Support marshaling generic
Godot.Object(GH-53582).
Networking
- Add support for multiple address resolution in DNS requests (GH-49020).
- Implement
String::parse_url()for parsing URLs (GH-48205). - Add
get_buffered_amount()toWebRTCDataChannel(GH-50659). - Add
dtls_hostnameproperty to ENet (GH-51434).
Physics
- Enable setting the number of physics solver iterations (GH-38387, GH-50257).
- Heightmap collision shape support in Godot Physics 3D (GH-47349).
- Add support for Dynamic BVH as 2D physics broadphase (GH-48314).
- Expose
body_test_motionin 3D physics server (GH-50103). - Add option to sync motion to physics in 3D
KinematicBody(GH-49446). - Expose collider RID in 2D/3D kinematic collision (GH-49476).
- Support for disabling physics on
SoftBody(GH-49835). - Backport new methods for
KinematicBodyandKinematicCollision(GH-52116). - Expose
SoftBodypin methods for scripting (GH-52369).
Porting
- Android: Add partial support for Android scoped storage (GH-50359).
- Android: Add initial support for Play Asset Delivery (GH-52526).
- Android: Implement per-pixel transparency (GH-51935).
- Android: Add basic user data backup option (GH-49070).
- Android: Add support for prompting the user to retain app data on uninstall (GH-51605).
- HTML5: Export as Progressive Web App (PWA) (GH-48250).
- HTML5: Implement Godot <-> JavaScript interface (GH-48691).
- HTML5: Implement AudioWorklet without threads (GH-52650).
- HTML5: Implement video driver selection for Web editor (GH-53991).
- HTML5: Add easy to use download API (GH-48929).
- iOS: Add pen pressure support for Apple Pencil (GH-47469).
- iOS: Add option to automatically generate icons and launch screens (GH-49464).
- iOS: Support multiple
plisttypes in plugin (GH-49802). - iOS: Implement missing OS
set/get_clipboard()methods (GH-52540). - Linux: Add initial support for the RISC-V architecture (GH-53509).
- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks (GH-46860).
- macOS: Add notarization support when exporting for macOS on a macOS host (GH-49276).
- Add support for ARM64 architecture for the Embree raycaster (Apple M1, Linux aarch64) (GH-48455).
- Note that the OIDN denoiser is still not available on this architecture.
Rendering
- GLES2: Add basic support for CPU blendshapes (GH-48480, GH-51363).
- GLES2: Allow using clearcoat, anisotropy and refraction in SpatialMaterial (GH-51967).
- GLES2: Implement
Viewport.keep_3d_linearfor VR applications to convert output to linear color space (GH-51780). - GLES3: Allow repeat flag in viewport textures (GH-34008).
- GLES3: Add support for contrast-adaptive sharpening in 3D (GH-47416).
- Add an editor setting to configure number of threads for lightmap baking (GH-52952).
- Add ring emitter for 3D particles (GH-47801).
- Add rooms and portals-based occlusion culling (GH-46130).
- Add a new high quality tonemapper: ACES Fitted (GH-52477).
- Add soft shadows to the CPU lightmapper (GH-50184).
- Add high quality glow mode (GH-51491).
- Add new 3D point light attenuation as an option (GH-52918).
- Import option to split vertex buffer stream in positions and attributes (GH-46574).
- Add horizon specular occlusion (GH-51416).
Shaders
- Add support for structs and fragment-to-light varyings (GH-48075).
- Add support for global const arrays (GH-50889).
- Make
TIMEavailable in custom functions by default (GH-49509).
VisualScript
- Allow dropping custom node scripts in VisualScript editor (GH-50696).
- Expose visual script custom node type hints (GH-50705).
- Improve and streamline
VisualScriptFuncNodesCallSetGet(GH-50709).
XR
- Add
VIEW_INDEXvariable in shader to know which eye/view we're rendering for (GH-48011).
Changed
2D
- Make the most recently added current
Camera2Dtake precedence (GH-50112).
3D
- Implement individual mesh transform for
MeshLibraryitems (GH-52298).
Buildsystem
- Refactor module defines into a generated header (GH-50466).
Core
- Promote object validity checks to release builds (GH-51796).
- Add detailed error messages to release builds (used to be debug-only) (GH-53405).
- Add Node name to
print()of all nodes, makesObject::to_string()virtual (GH-38819). - Thread callbacks can now take optional parameters (GH-38078, GH-51093).
- Harmonize output of
OS.get_locale()between platforms (GH-40708). - Optimize hash comparison for integer and string keys in Dictionary (GH-53557).
- Improve the console error logging appearance: (GH-49577).
- Implement missing stringification for
PoolByteArrayandPoolColorArray(GH-53655). AStar.get_available_point_id()returns 0 instead of 1 when empty (GH-48958).- Compare connections by object ID, making
.tscnorder deterministic (GH-52493).
Editor
- Refactor
Themeitem management in the theme editor (GH-49512). - Overhaul the theme editor and improve user experience (GH-49774).
- Improve 2D editor zoom logic (GH-50490, GH-50499).
- Make several actions in the Inspector dock more obvious (GH-50528).
- Improve the editor feature profiles UX (GH-49643).
- Improve the UI/UX of the Export Template Manager dialog (GH-50531).
- Improve FileSystem dock sorting (GH-50565).
- Improve the 3D editor manipulation gizmo (GH-50597).
- Increase object snapping distances in the 3D editor (GH-53727).
- Refactor layer property editor grid (GH-51040).
- Improve the animation bezier editor (GH-48572).
- Fix logic for showing
TileMapdebug collision shapes (GH-49075). - Add custom debug shape thickness and color options to
RayCast(GH-49726). - Handle portrait mode monitors in the automatic editor scale detection (GH-48597).
- Remove high radiance sizes from the editor due to issues on specific GPUs (GH-48906).
GUI
- GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling (GH-47173).
- Button: Don't change hovering during focus events (GH-47280).
- DynamicFont: Re-add support for kerning (GH-49377).
- LineEdit: Double click selects words, triple click selects all the content (GH-46527).
- LinkButton: Button text is now automatically translated like other Controls (GH-52138).
- Theme: StyleBox fake anti-aliasing improvements (GH-51589).
Import
- Optimize image channel detection (GH-47396).
Localization
- Only include editor translations above a threshold to save on binary size (GH-54020).
Mono (C#)
- macOS: Mono builds are now universal builds with support for both
x86_64andarm64architectures (GH-49248). - Improve C# method listing (GH-52607).
- Avoid modifying
csprojglobbing includes (GH-54262). - Deprecate
Xformmethods removed in 4.0, the*operator is preferred (GH-52762).
Networking
- Enable range coder compression by default in
NetworkedMultiplayerENet(GH-51525).
Physics
- Port Bullet's convex hull computer to replace
QuickHull(GH-48533). - Return RID instead of Object ID in
area-/body_shape_entered/-exitedsignals (GH-42743). - Optimize area detection and
intersect_shapequeries with concave shapes (GH-48551). - Optimize raycast with large Heightmap shape data (GH-48709).
- Reload kinematic shapes when changing
PhysicsBodymode to Kinematic (GH-53118). - Wake up 2D and 3D bodies in impulse and force functions (GH-53113).
- Compile Bullet with threadsafe switch on (GH-53183).
Porting
- Android: Target API level 30, raise min API level to 19 (GH-50359).
- Android: Improve input responsiveness on underpowered Android devices (GH-42220).
- Android: Upgrade Android Gradle to version 7.2, now requires Java 11 (GH-53610).
- HTML5: Debug HTTP server refactor with SSL support (GH-48250).
- HTML5: Use 64KiB chunk size in JS
HTTPClient, for consistency with native platforms (GH-48501). - HTML5: Raise default initial memory to 64 MiB (GH-50422).
- HTML5: Use browser mix rate by default on the Web (GH-52723).
- HTML5: Refactor event handlers, drop most Emscripten HTML5 dependencies (GH-52812).
- iOS: Disable half float on GLES2 via platform override (GH-54229).
- macOS: Prefer .app bundle icon over the default one (GH-48686).
Rendering
VisualServernow sorts based on AABB position (GH-43506).- Make Blinn and Phong specular consider albedo and specular amount (GH-51410).
Shaders
- Default shader specular render mode to
SCHLICK_GGX(GH-51401).
Thirdparty
- Bullet uppdated to version 3.17.
- Embree updated to version 3.13.0.
- MbedTLS updated to version 2.16.11 (security update).
- NanoSVG updated to 2021-09-03 git snapshot (security update).
- CA root certificates updated to 2021-07-05 bundle from Mozilla.
- SDL GameControllerDB updated to 2021-10-29 git snapshot.
XR
- Only update render target directly if ARVR mode is off (GH-54258).
Removed
Porting
- Android: Remove non-functional native video OS methods (GH-48537).
- iOS: Remove duplicate orientation setting in the export preset (GH-48943).
Fixed
2D
- TileSet: Fix selection of spaced atlas tile when using priority (GH-50886).
3D
- CSGSphere: Fix UV mapping (GH-49195).
- CSGPolygon: Fix multiple issues (GH-49314).
- CSGPolygon: Fixes and features: Angle simplification, UV tiling distance, interval type (GH-52509).
- GridMap: Fix erasing octants in the wrong order (GH-50052).
- PathFollow: Fix forward calculation for the position at the end of the curve (GH-50986).
- SphereMesh: Fix the normals when the sphere/hemisphere is oblong (GH-51995).
- Update mesh AABB when software skinning is used (GH-53144).
Animation
- Fix Tween active state and repeat after
stop()and thenstart()(GH-47142). - Fix SkeletonIK root bones being twisted incorrectly when rotated (GH-48251).
- Fix issues with
BlendSpace2DBLEND_MODE_DISCRETE_CARRY(GH-48375). - Fixed issue where bones become detached if multiple SkeletonIK nodes are used (GH-49031).
- Fix non functional 3D onion skinning (GH-52664).
- Fix Animation Playback Track not seeking properly (GH-38107).
- Fix bugs in
AnimationNodeTransition's behavior (GH-52543, GH-52555). - Fix rendering centered odd-size texture for
AnimatedSprite/AnimatedSprite3D(GH-53052).
Audio
- Fix cubic resampling algorithm (GH-51082).
Core
- Make all file access 64-bit (
uint64_t) (GH-47254).- This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
- Fix negative delta arguments (GH-52947).
- Complain if casting a freed object in a debug session (GH-51095).
- Fix read/write issues with
NaNandINFin VariantParser (GH-47500). - Fix sub-resource storing the wrong index in cache (GH-49625).
- Save binary
ProjectSettingskey length properly (GH-49649). - Fix ZIP files being opened with two file descriptors (GH-42337).
- Fix
Transform::xform(Plane)functions to handle non-uniform scaling (GH-50637). - Fix renaming directories with
Directory.rename()(GH-51793). - Fix path with multiple slashes not being corrected on templates (GH-52513).
- Fix
String.get_base_dir()handling of Windows top-level directories (GH-52744). - Fix potential crash when creating thread with an invalid target instance (GH-53060).
- Fix behavior of
CONNECT_REFERENCE_COUNTEDoption for signal connections (GH-47442). - Fix swapped axes in
OpenSimplexNoise.get_image()(GH-30424).- Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in
get_image().
- Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in
- Fix loading packed scene with editable children at runtime (GH-49664).
- Quote and escape
ConfigFilekeys when necessary (GH-52180). - Write node groups on a single line when saving a
.tscnfile (GH-52284).
Editor
- Rationalize property reversion (GH-51166).
- Fix Marshalls infinite recursion crash in debugger (GH-51068).
- Fix slow load/save of scenes with many instances of the same script (GH-49570).
- Properly update
NodePaths in the editor in more cases when nodes are moved or renamed (GH-49812). - Fix scale sensitivity for 3D objects (GH-52665).
- Fix preview grid in
SpriteFrameseditor's "Select Frames" dialog (GH-52461). - Fix
MeshInstance2Dedit rect (GH-54070).
GDScript
- Ignore property groups and categories in GDScript code completion (GH-54272).
- Fix parsing multi-line
preloadstatement (GH-52521). - Speedup running very big GDScript files (GH-53507).
- LSP: Fix
SymbolKindreporting wrong types andget_node()parsing (GH-50914, GH-51283). - LSP: Report
new()as_init& fix docstrings on multiline functions (GH-53094).
GUI
- GraphNode: Properly handle children with "Expand" flag (GH-39810).
- Label: Fix valign with stylebox borders (GH-50478).
- RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280).
- RichTextLabel: Fix character horizontal offset calculation (GH-52752).
- RichTextLabel: Honor content margin when drawing font shadow (GH-54054).
- RichTextLabel: Fix meta link detection when used inside a fill tag (GH-54114).
- TabContainer: Fix moving dropped tab to incorrect child index (GH-51177).
- Tabs: Fix invisible tabs not being ignored (GH-53551).
- TextureProgress: Improve behavior with nine patch (GH-45815).
- Theme: Fix potential crash with custom themes using BitMap fonts (GH-53410).
Import
- Fix loading RLE compressed TGA files (GH-49603).
- Fix issue in
TextureAtlasimport of images with wrong size (GH-42103). - Fix potential crash importing invalid BMP files (GH-46555).
- glTF: Improved error handling around invalid images and invalid meshes (GH-48904, GH-48912).
- glTF: Fix incorrect skin deduplication when using named binds (GH-48913).
Input
- Fix game controllers ignoring the last listed button (GH-48934).
Mono (C#)
- iOS: Fix
P/Invokesymbols being stripped by the linker, resulting inEntryPointNotFoundExceptioncrash at runtime (GH-49248). - macOS: Automatically enable JIT entitlements for the Mono exports (GH-50317).
- Fix reloading
toolscripts in the editor (GH-52883). - Fix C# bindings generator for default value types (GH-49702).
- Ignore paths with invalid chars in
PathWhich(GH-50918). - Fix
List<T>marshaling (GH-53628). - Fix
hint_stringfor enum arrays (GH-53638). - Keep order for C# exported members (GH-54199).
Networking
- Fix parsing some IPv6 URLs for WebSocket (GH-48205).
WebsocketPeeroutbound buffer fixes and buffer size query (GH-51037).- Fix IP address resolution incorrectly locking the main thread (GH-51199).
Physics
- Fix 2D and 3D moving platform logic (GH-50166, GH-51458).
- Various fixes to 2D and 3D
KinematicBodymove_and_slideandmove_and_collide(GH-50495). - Improved logic for
KinematicBodycollision recovery depth (GH-53451). - Fix
RayShaperecovery intest_body_ray_separation(GH-53453). - Apply infinite inertia checks to Godot Physics 3D (GH-42637).
- Fix and clean disabled shapes handling in Godot physics servers (GH-49845).
- Fix
KinematicBodyaxis lock (GH-45176). - Don't override
KinematicCollisionreference when still in use in script (GH-52955). - Fix ragdoll simulation when parent was re-added to scene (GH-48823).
- Ignore disabled shapes for mass property calculations (GH-49699).
Porting
- Android: Add GDNative libraries to Android custom Gradle builds (GH-49912).
- Android: Resolve issue where the Godot app remains stuck when resuming (GH-51584).
- Android: Properly validate
godot_project_name_stringfor Android special chars (GH-54255). - HTML5: Fix bug in AudioWorklet when reading output buffer (GH-52696).
- HTML5: Release pressed events when the window is blurred on HTML5 platform (GH-52973).
- Linux: Fix input events random delay on X11 (GH-54313).
- Linux: Fix implementation of
move_to_trash(GH-44021). - Linux: Fix crash when using ALSA MIDI with PulseAudio (GH-48350).
- Linux: Fix
Directory::get_space_left()result (GH-49222). - macOS: Allow "on top" windows to enter fullscreen mode (GH-49017).
- macOS: Fix editor window missing events on macOS Monterey (GH-54474).
- macOS: Fix custom mouse cursor not set after mouse mode change (GH-49848).
- macOS: Fix
Directory::get_space_left()result (GH-49222). - macOS: Fix Xbox controllers in Bluetooth mode on macOS (GH-51117).
- macOS: Fix incorrect mouse position in fullscreen (GH-52374).
- macOS: Add entitlements required by OIDN JIT for the editor build (GH-54067).
- Windows: Fix platform file access to allow file sharing with external programs (GH-51430).
- Windows: Fix code signing with
osslsigncodefrom Linux/macOS (GH-49985). - Windows: Send error logs to
stderrinstead ofstdout, like done on other OSes (GH-39139). - Windows: Fix
OS.shell_open()not returning errors (GH-52842). - Windows: Allow renaming to change the case of Windows directories (GH-43068).
- Windows: Disable WebM SIMD optimization with YASM which triggers crashes (GH-53959).
Rendering
- GLES2: Fix ambient light flickering with multiple refprobes (GH-53740).
- GLES3: Fix draw order of transparent materials with multiple directional lights (GH-47129).
- GLES3: Fix multimesh being colored by other nodes (GH-47582).
- GLES3: Only add emission on base pass (GH-53938).
- GLES3: Fudge irradiance map lookup to avoid precision issues (GH-54197).
- Fixed
rotate_yproperty of particle shaders (GH-46687). - Fixed behavior of velocity spread in particles (GH-47310).
- Fixes depth sorting of meshes with transparent textures (GH-50721).
- Fix flipped binormal in
SpatialMaterialtriplanar mapping (GH-49950). - Fix
CanvasItembounding rect calculation in some cases (GH-49160). - Clamp negative colors regardless of the tonemapper to avoid artifacts (GH-51439).
- Fix Y billboard shear when rotating camera (GH-52151).
- Add half frame to
floor()for animated particles UV to compensate precision errors (GH-53233). - Prevent shaders from generating code before the constructor finishes (GH-52475).
3.3 - 2021-04-21
See the release announcement for details.
Added
Audio
Build system
- Add
production=yesoption to set optimal options for production builds.- Users making custom builds should use this option which is equivalent to
use_lto=yes debug_symbols=no use_static_cpp=yes. - Note for Linux builds:
use_static_cpp=yesandudev=yesare now the default values, so you needlibudevandlibstdc++-staticdevelopment packages to build in optimal conditions.
- Users making custom builds should use this option which is equivalent to
- Add
optimize=noneto disable C/C++ compiler optimizations for release builds.- This can be used to speed up compile times when working on the engine itself and when debug checks/features aren't desired.
Core
- New dynamic BVH for rendering and the GodotPhysics backends.
- If you experience a regression in either physics or rendering, you can try these Project Settings to revert back to the previous Octree-based approach and possibly fix the issue. In either case, be sure to report the problem on GitHub.
- Ability to restore RandomNumberGenerator state.
- TileMap
show_collisionproperty to show/hide collision shapes in the editor and at run-time. Array.append_array()method to append an array at the end of another array.OS.get_thread_caller_id()method to print the ID of the thread the code is currently running on.Image.load_bmp_from_buffer()method to load BMP images at run-time.Image.resize_to_po2()now accepts an optional "interpolation" parameter, defaulting to bilinear filtering.- Nearest-neighbor filtering can be used for pixel art textures, and will be used automatically when resizing non-power-of-two textures for non-filtered textures in GLES2.
OS.set_environment()method to set environment variables.String.to_wchar()method to get a PoolByteArray corresponding to a string'swchardata.String.naturalnocasecmp_to()method to perform natural case-insensitive string comparison for sorting purposes.application/run/flush_stdout_on_printproject setting to enable per-line flushing of the standard output stream in release builds.
Editor
- Infinite 3D editor grid (further improvements).
- New 3D rotation gizmo.
- Support for copy-pasting nodes.
- Detect external modification of scenes and prompt for reloading.
- New editor to configure default import presets.
- The 3D viewport's View Information pane now displays the viewport resolution.
EditorInterface.get_editor_scale()method to retrieve the editor scale factor.- This can be used for hiDPI support in editor plugins.
- The
EditorInterface.edit_node()method is now exposed. - HTML5: New web editor, available as a Progressive Web App.
GUI
- Minimap support in GraphEdit.
- New AspectRatioContainer Control node.
- TextEdit's bookmark, breakpoint and "mark safe line" functions are now exposed to scripting.
Import
Input
- Support for buttons and D-pads mapped to half axes.
- Support for new SDL game controller keywords (used by PS5 controller support).
- Add driving joystick type to Windows joystick handling.
- Mouse event pass-through support for the window.
Mono (C#)
Physics
- Support for pause-aware picking.
- This breaks compatibility, but is not enabled by default for existing projects. See the project setting
physics/common/enable_pause_aware_picking. It will be enabled by default for new projects created with 3.3.
- This breaks compatibility, but is not enabled by default for existing projects. See the project setting
- CollisionObject can now display collision shape meshes.
- Bullet: CollisionPolygon
marginproperty. - GodotPhysics: Cylinder collision shape support.
- This is experimental in 3.3, and will likely receive fixes in future Godot releases.
Porting
- Android: Support for exporting as Android App Bundle.
- Android: Support for subview embedding.
- Android: Support for notch cutouts on Android 9.0 and later.
- Android: Support for mouse events.
- Android: Support for keyboard modifiers and arrow keys.
- Android: Implement
OS.get_screen_orientation(). - HTML5: AudioWorklet support for multithreaded HTML5 builds.
- HTML5: Optional GDNative support.
- HTML5: Resizable canvas option to disable viewport resizing.
- HTML5: Optional automatic WebGL 2.0 -> 1.0 fallback when WebGL 2.0 support is not available.
- To benefit from this feature, enable the Rendering > Quality > Driver > Fallback To Gles2 project setting as you would on other platforms.
- HTML5: loDPI fallback support for improved performance on hiDPI displays (at the cost of visuals).
- To keep the previous behavior, Allow Hidpi must be enabled in the Project Settings before exporting the project.
- iOS: Plugin support, with a similar interface to Android plugins.
- iOS: Add a touch delay project setting.
- iOS: Implemented native loading screen.
- Linux: PulseAudio and ALSA libraries are now dynamically loaded, as well as libudev.
- This allows running official Godot binaries on systems that don't have PulseAudio installed.
- Linux/macOS: Implement the
--no-windowcommand line argument for parity with Windows. - macOS: macOS ARM64 support in official binaries for Apple M1 chip (only standard build for now).
Rendering
- 2D batching for GLES3 (it was implemented for GLES2 in 3.2.2), and improvements to GLES2's batching.
- New experimental buffer orphan/stream project settings to improve 2D performance on specific platforms.
- New software skinning for MeshInstance to replace the slow GPU skinning on devices that don't support the fast GPU skinning (especially mobile).
- Configurable amount of lights per object, now defaulting to 32 instead of 8.
- New CPU lightmapper.
- Uses a raytracing approach with optional denoising.
- Environment lighting is now supported.
- Lightmaps are now stored in an atlas when baking if GLES3 is the current backend at the time of baking.
- Bicubic lightmap sampling is now used to improve the final appearance, both in GLES3 and GLES2. It's enabled by default on desktop platforms.
- Anisotropic filtering now works when using the GLES2 backend.
- FXAA property in Viewport and associated project setting for GLES3 and GLES2.
- Upsides: Faster than MSAA, smooths out alpha-tested materials and specular aliasing.
- Downsides: Lower quality than MSAA and makes the 3D viewport blurrier.
- Debanding property in Viewport and associated project setting for GLES3.
- Significantly reduces visible banding in 3D. The effect is mainly visible on smooth gradients, solid surfaces and in heavy fog.
- Only effective when HDR is enabled in the Project Settings (which is the default).
- New
METALLICbuilt-in for thelight()function in the shader language.- This is also exposed in the visual shader editor.
- Add setting for shadow cubemap max size.
XR (Augmented Reality / Virtual Reality)
- Add a
set_interface()method. - Expose the depth buffer to GDNative.
- Allow supplying a depth buffer from an ARVR plugin.
- HTML5: WebXR support for VR games.
Changed
Core
- Deleted object access now raises an error instead of a warning.
- Improved error messages when passing nonexistent node paths to
get_node(). - Optimized transform propagation for hidden 3D nodes.
- Modernized multi-threading APIs.
- This might cause regressions in projects that use multiple threads. Please report such issues on GitHub.
- Suggestions are now printed when attempting to use a nonexistent input action name.
- SVG images can now be used as a project icon.
- Tweaked log file names for consistency between Mono and non-Mono builds.
- Tweaked command line
--print-fpsdisplay to display milliseconds per frame timings in addition to FPS. - OpenSimplexNoise is now guaranteed to give consistent results across platforms.
- This change breaks compatibility: you get different results even for the same seed.
Editor
- Improved inspector subresource editing visibility.
- Improved the 3D selection box appearance for better visibility.
- The 3D selection box color can be changed in the Editor Settings.
- Increased default opacity for 3D manipulator gizmos for better visibility.
- Improved visibility for the dashed line in the TextureRegion editor.
- Pressed CheckButtons are now colored in blue for easier recognition.
- The autokeying icon in the animation editor is now red when pressed to emphasize its "recording" status.
- Scroll bars are now thicker and have a subtle background to better hint where they start and stop.
- Undo/redo log messages now give more context when performing actions in the 2D editor.
- The editor now uses 75% scaling by default on small displays (such as 1366×768).
- This can be reverted by setting the editor scale to 100% in the Editor Settings.
- The editor now uses 150% scaling by default on 4K monitors, regardless of their DPI.
- This can be adjusted by setting the editor scale to the desired value in the Editor Settings.
- Rename Node is now bound to F2.
- To account for this change, switching between editors using keyboard shortcuts now requires holding down Ctrl.
- Editor shortcuts can be changed back to the previous values in the Editor Settings' Shortcuts tab.
- Changed the Search Help shortcut from Shift + F1 to F1.
- Changed the FileSystem dock Copy Path shortcut from Ctrl + C to Ctrl + Shift + C.
- Changed 3D editor's Primary Grid Steps setting from 10 to 8.
- This uses a power-of-two value by default.
- Increased the default
profiler_frame_max_functionsto 512.- This fixes many instances where functions didn't appear in the script profiler.
- The inspector now allows using a comma as a decimal separator.
- Editor plugins are now searched for recursively.
- Increased the page size for array/dictionary editors in the inspector from 10 to 20.
- The value can now be increased further in the Editor Settings at the cost of slower node switching times in the inspector.
- The "Auto" editor setting hints for editor scale and font hinting now display the value they apply.
- Tweaked property hints for SpatialMaterial depth properties to allow greater control and quality.
- Pause Mode and Script are no longer collapsed in categories in the inspector.
- Asset library: The Retry button now only appears if the download has failed.
- Asset library: Search now starts automatically after entering text.
- Asset library: Moved the Asset Library API URLs to the Editor Settings.
- Project manager: Drag-and-dropping a ZIP archive to the project manager window will now prompt for importing it.
- Project manager: Display loading text while the project is opening.
- Project manager: The Open Project Folder button is now more visible.
GUI
- Range now returns a ratio of 1.0 if the minimum and maximum value are equal.
- ColorPicker now keeps the hue value when the saturation or value is set to zero.
- The Control virtual method
_make_custom_tooltip()should now return aControlinstead of anObject.- Scripts overriding this method will have to be updated.
Import
- Allow a greater range of characters in glTF bone names.
- glTF import now uses vertex colors by default.
- Fix ETC compressor
lossy_qualityhandling.- High
lossy_qualityvalues will now incur significantly longer compression times, but will also improve the resulting texture quality.
- High
Mono (C#)
- The
copy_mono_rootSCons build option now defaults toyes. - Official builds now use Mono 6.12.0.122.
Networking
- Increase the default HTTPClient download chunk size to 64 KiB.
- This improves download speeds significantly, including for the in-editor export template downloader.
- This change also affects HTTPRequest.
Rendering
- Shadows now have a proper soft appearance in GLES2 when using the PCF13 shadow filter.
- The Ensure Correct Normals render mode and associated SpatialMaterial property are now supported in GLES2.
- Real-time lights no longer affect objects that receive baked lighting if Bake Mode is set to All.
- YSort rendering order is now more deterministic.
Physics
- 2D collision shapes are now displayed with outlines when Debug > Visible Collision Shapes is enabled.
Porting
- Android: Update logic to sign prebuilt APKs with
apksignerinstead ofjarsigner, as required for Android API 30. - Android: Disable the
requestLegacyExternalStorageattribute when there are no storage permissions. - HTML5: Improved gamepad support by using an internal implementation of the Gamepad API.
- HTML5 Changed HTML shell templates. See updated documentation.
- Linux: Binaries are now stripped of string and symbol tables, reducing their size significantly.
- Editor: 9 MB less (standard) and 35 MB less (Mono).
- Templates: 5-6 MB less (standard) and 30 MB less (Mono).
- macOS: Add entitlements configuration and export template
.dylibsigning to the export. - macOS: Code signing on export is now enabled by default. If no identity is specified, an ad hoc certificate is generated and used automatically.
- This is done because applications must be signed to be run on macOS Big Sur, even for private use.
- Self-signed certificates work for private use, but they will be considered untrusted on other people's computers.
- macOS: Add a Replace Existing Signature export option to fix signing on export with broken OSXCross ad-hoc linker signatures.
- This is enabled by default.
- macOS: Improve Mono distribution in .app bundle to allow codesigning exported projects.
- macOS: Binaries are now stripped of string and symbol tables, which reduces their size significantly:
- Editor: 14 MB less (standard) and 9 MB less (Mono).
- Templates: 9-10 MB less (standard) and 6 MB less (Mono).
- macOS: Official editor binaries are now signed and notarized.
Removed
Import
- Removed the now-redundant ResourceImporterCSV importer.
- This is superseded by the new "keep" import mode feature.
Fixed
Audio
- Use higher-quality resampling for Ogg Vorbis and MP3 sounds.
- This fixes bitrate-like artifacts when playing low-frequency sounds.
- Fix pops when using
play()in AudioStreamPlayer2D and AudioStreamPlayer3D.
Core
- Fix Editable Children issues with node renaming, moving, duplicating and instancing.
- Freed Objects no longer delay to
nullin debug builds. - Various fixes to Variant and Reference pointers.
- Optimized octree and fixed a leak.
- Fix crash when opening a ZIP data pack.
OS.delay_msec()andOS.delay_usec()with a negative value no longer freeze the engine and return an error message instead.- Various fixes to CSG mesh generation. There should be less instances of holes being created in CSG meshes.
Editor
- Fix exporting if the temporary export directory doesn't exist yet.
- Objects can no longer be added to the Project Settings since they can't be serialized correctly.
- Fix hidden nodes being selectable in the 2D editor in specific cases.
- Implementing clearing of diagnostics in the GDScript language server, fixing issues with errors lingering after files were deleted.
- The Export PCK/ZIP action now obeys the export path configured in the export preset as expected.
GDScript
GUI
- Fix artifacts in DynamicFont when scaling with filtering enabled.
- DynamicFonts are now loaded to memory on all platforms to avoid locking files.
- Fix fallback emoji font color.
- ColorPicker button text and tooltips now appear as expected in exported projects.
- Fix RichTextLabel losing its
textdue to being replaced with empty BBCode when custom effects are defined. - Fix incorrect editor background color when using a transparent editor theme color.
Import
- Relax node and bone naming constraints in glTF.
- To preserve compatibility with models imported in 3.2, a
use_legacy_namesimport setting was added.
- To preserve compatibility with models imported in 3.2, a
- Fix parsing Base64-encoded buffer and image data in glTF.
- Fix handling of normalized accessor property in glTF.
Mono (C#)
- Fix targeting .NETFramework with .NET 5.
- Fix System.Collections.Generic.List marshaling.
- Fix support for Unicode identifiers.
- Fixes to Mono on WebAssembly.
Network
Physics
- Multiple fixes to one-way collisions.
- Fix
test_body_motionrecovery and rest info. - GodotPhysics: Fix incorrect moment of inertia calculations for built-in 3D collision shapes.
- Many physics fixes for both 2D and 3D.
Porting
- Android: Fix splash screen loading.
- iOS: Fix multiple issues with PVRTC import, disable ETC1.
- iOS: Fixes to keyboard input, including better IME support.
- Linux: Fix keyboard input lag and clipboard delay issues.
- Linux: Fix audio corruption when using the ALSA driver.
- Linux: Fix PRIME hybrid graphics detection on Steam.
- macOS: Fix mouse position in captured mode.
- macOS: Improve
get_screen_dpi()reliability for non-integer scaling factors. - Windows: Fix debugger not getting focused on break.
Rendering
- Various fixes to 3D light culling.
- DirectionalLight's Cull Mask property is now effective.
- Fix large Sprite3D UV wobbling with low-resolution textures.
- Fix impact of
lifetime_randomnesson properties using a curve. - Fix 2D normal maps when using batching + NVIDIA workaround.
- Fix PanoramaSky artifacts on Android in GLES2.
- Fix glow on devices with only 8 texture slots in GLES2.
- Use a separate texture unit for
light_texturein GLES2. - Fix reflection probes in WebGL 1.0 (GLES2 on HTML5).
- Fix screen-space reflections tracing the environment in GLES3.
- Fade screen-space reflections towards the inner margin in GLES3.
- Ensure Reinhard tonemapping values are positive in GLES3.
3.2 - 2020-01-29
Added
- Support for pseudo-3D depth in 2D.
- Support for importing 3D scenes using Assimp.
- Many formats are supported, including FBX.
- Support for generating audio procedurally and analyzing audio spectrums.
- WebRTC support.
- Includes support for the high-level multiplayer API.
- Supports NAT traversal using STUN or TURN.
- Support for automatically building Android templates before exporting.
- This makes 3rd-party SDK integration easier.
- Support for texture atlases in 2D.
- Major improvements to the visual shader system (News post 1, News post 2).
- Redesigned visual shader editor with drag-and-drop capability.
- Textures can be dragged from the FileSystem dock to be added as nodes.
- Most functions available in GLSL are now exposed.
- Many constants such as
PiorTaucan now be used directly. - Support for boolean uniforms and sampler inputs.
- New Sampler port type.
- New conditional nodes.
- New Expression node, allowing shader code to be written in visual shaders.
- Support for plugins (custom nodes).
- Custom nodes can be drag-and-dropped from the FileSystem dock.
- Ability to copy and paste nodes.
- Ability to delete multiple nodes at once by pressing Delete.
- The node creation menu is now displayed when dragging a connection to an empty space on the graph.
- GLES3-only functions are now distinguished from others in the creation dialog.
- Ability to preview the code generated by the visual shader.
- Ability to convert visual shaders to text-based shaders.
- See the complete list of new functions.
- Redesigned visual shader editor with drag-and-drop capability.
- Improved visual scripting.
- Visual scripting now uses a unified graph where all functions are represented.
- Nodes can now be edited directly in the graph.
- Support for fuzzy searching.
- The
toolmode can now be enabled in visual scripts. - New Deconstruct node to deconstruct a complex value into a scalar value.
- Miscellaneous UI improvements.
- Support for enabling/disabling parts of the editor or specific nodes.
- This is helpful for education, or when working with artists to help prevent inadvertent changes.
- Language server for GDScript.
- This can be used to get better integration with external editors.
- Version control integration in the editor.
- This integration is VCS-agnostic (GDNative plugins provide specific VCS support).
- Improved GridMap editor.
- The copied mesh is now displayed during pasting.
- The duplication/paste indicator is now rotated correctly around the pivot point.
- Ability to cancel paste and selection by pressing Escape.
- Erasing is now done using RMB instead of Shift + RMB.
- Freelook can still be accessed by pressing Shift + F.
- Improved MeshLibrary generation.
- When appending to an existing MeshLibrary, previews are now only generated for newly-added or modified meshes.
- Tweaked the previews' camera angle and light directions for better results.
- Materials assigned to the MeshInstance instead of the Mesh are now exported to the MeshLibrary.
- This is useful when exporting meshes from an imported scene (such as glTF), as it allows materials to persist across re-imports.
- Improved Control anchor and margin workflow.
- Network profiler.
- Improved NavigationMesh generation.
- GridMaps can now be used to bake navigation meshes.
- EditorNavigationMeshGenerator can now be used in
toolscripts. - Support for generating navigation meshes from static colliders.
- When using static colliders as a geometry source, a layer mask can be specified to ignore certain colliders.
- The generator no longer relies on the global transform, making it possible to generate navmeshes on nodes that are not in the scene tree.
- Navigation gizmos are now updated after every new bake.
- Support for skinning in 3D skeletons.
- CameraServer singleton to retrieve images from mobile cameras or webcams as textures.
- A crosshair is now displayed when using freelook in the 3D editor.
- Project camera override button at the top of the 2D and 3D editors.
- When enabled, the editor viewport's camera will be replicated in the running project.
- RichTextLabel can now be extended with real-time effects and custom BBCodes.
- Effects are implemented using the ItemFX resource.
[img=<width>x<height>]tag to resize an image displayed in a RichTextLabel.- If
<width>or<height>is 0, the image will be adjusted to keep its original aspect.
- If
- Revamped node connection dialog for improved ease of use.
- The Signals dock now displays a signal's description in a tooltip when hovering it.
- Input actions can now be reordered by dragging them.
- Animation frames can now be reordered by dragging them.
- Ruler tool to measure distances and angles in the 2D editor.
- "Clear Guides" menu option in the 2D editor to remove all guides.
- The 2D editor grid now displays a "primary" line every 8 lines for easier measurements.
- This value can be adjusted in the Configure Snap dialog.
- Projects can now have a description set in the Project Settings.
- This description is displayed as a tooltip when hovering the project in the Project Manager.
- All Variant types can now be added as project settings using the editor (instead of just
bool,int,floatandString). - Pressing Ctrl + F now focuses the search field in the Project Settings and Editor Settings.
- Quick Open dialog (Shift + Alt + O) to open any resource in the project.
- Unlike the existing dialogs, it's not limited to scenes or scripts.
- Ability to convert a Sprite to a Mesh2D, Polygon2D, CollisionPolygon2D or LightOccluder2D.
- MultiMeshInstance2D node for using MultiMesh in 2D.
- PointMesh primitive.
- Drawn as a rectangle with a constant size on screen, which is cheaper compared to using triangle-based billboards.
- 2D polygon boolean operations and Delaunay triangulation are now available in the Geometry singleton.
- New convex decomposition using the V-HACD library.
- Can decompose meshes into multiple convex shapes for increased accuracy.
- Support for grouping nodes in the 3D editor.
- "Slow" modifier in freelook (accessed by holding Alt).
- The 2D editor panning limits can now be disabled in the Editor Settings.
- "Undo Close Tab" option in the scene tabs context menu.
- The editor is now capped to 20 FPS when the window is unfocused.
- This decreases CPU/GPU usage if something causes the editor to redraw continuously (such as particles).
- The editor's FPS cap can now be adjusted in the Editor Settings (both when focused and unfocused).
- Version information is now displayed at the bottom of the editor.
- This is intended to make the Godot version easily visible in video tutorials.
- Support for constants in the shader language.
- Support for local and varying arrays in the shader language.
- Support for
switchstatements in the shader language. - Support for
do {...} while (...)loops in the shader language.- Unlike
while, the expression in thedoblock will always be run at least once.
- Unlike
- Support for hexadecimal number literals in the shader language.
- Ported several GLES3 shader functions such as
round()to GLES2. SHADOW_VECshader parameter to alter 2D shadow computations in custom shaders.- Filter search box in the remote scene tree dock.
- Ability to expand/collapse nodes recursively in the scene tree dock by holding Shift and clicking on a folding arrow.
- Support for depth of field, glow and BCS in the GLES2 renderer.
- MSAA support in the GLES2 renderer.
- Ability to render viewports directly to the screen in the GLES2 renderer.
- This can be faster on low-end devices, but it comes at a convenience cost.
- Project settings to set the maximum number of lights and reflections in the GLES3 renderer.
- Decreasing these values can lead to faster shader compilations, resulting in lower loading times.
- Heightmap collision shape for efficient terrain collisions.
- AStar2D class, making A* use easier in 2D.
- Disabled collision shapes can now be added directly, without having to disable them manually after one step.
- Context menu options to close other scene tabs, scene tabs to the right, or all scene tabs.
- The audio bus volumes can now be snapped by holding Ctrl while dragging the slider.
- Hovering an audio bus' volume slider now displays its volume in a tooltip.
- Values in the Gradient and Curve editors can now be snapped by holding Ctrl.
- Precise snapping can be obtained by holding Shift as well.
- Support for snapping when scaling nodes in the 2D editor.
- Precise snapping in the 3D editor when holding Shift.
- "Align Rotation with View" in the 3D editor.
- Unlike "Align Transform with View", only the selected node's rotation will be modified.
- "Align Selection with View" has been renamed to "Align Transform with View".
- All 3D gizmos now make use of snapping if enabled.
- CSG shapes are now highlighted with a translucent overlay when selected.
- Shapes in Union mode will use a blue overlay color by default.
- Shapes in Subtraction mode will use an orange overlay color by default.
- Shapes in Intersection mode will use a white overlay color.
- Ability to move a vertex along a single axis when holding Shift in polygon editors.
- Support for binary literals in GDScript (e.g.
0b101010for42). - AutoLoads can now be used as a type in GDScript.
- Ability to define script templates on a per-project basis.
- Template files should be placed into a
script_templates/directory in the project and have an extension that matches the language (.gdfor GDScript,.csfor C#). - The path to the script templates directory can be changed in the Project Settings.
- Template files should be placed into a
- Ability to limit the minimum and maximum window size using
OS.set_min_window_size()andOS.set_max_window_size(). Node.process_priorityproperty to set or get a node's processing priority.- This was previously only available as
Node.set_process_priority()(without an associated getter).
- This was previously only available as
Node.editor_descriptionproperty for documentation purposes.- When hovering a node with a description in the scene tree dock, the description will be displayed in a tooltip.
Button.keep_pressed_outsideproperty to keep a button pressed when moving the pointer outside while pressed.Button.expand_iconproperty to make a button's icon expand/shrink with the button's size.Popup.set_as_minsize()method to shrink a popup to its minimum size.Tree.get_icon_modulate()andTree.set_icon_modulate()methods to change an icon's color in a Tree.Tree.call_recursive()method to call a method on a TreeItem and its children recursively.Light.use_gi_probeproperty to exclude specific lights from GIProbe computations.- TranslationServer method
get_loaded_locales()to retrieve the list of languages with a translation loaded. FRUSTUM3D camera mode to create tilted frustums for mirror or portal effects.CanvasItem.draw_rect()now haswidthandantialiasedproperties to matchdraw_line()'s functionality.Engine.get_idle_frames()andEngine.get_physics_frames()to get the number of idle and physics frame iterations since the project started.- Unlike
Engine.get_frames_drawn(),Engine.get_idle_frames()will be incremented even if the render loop is disabled.
- Unlike
Engine.get_physics_interpolation_fraction()to get the fraction through the current physics tick at the time of the current frame.- This can be used to implement fixed timestep interpolation.
- Support for shadow-to-opacity in 3D to render shadows in augmented reality contexts.
- Ability to change a Position2D gizmo's size.
- New Vector2 and Vector3 methods:
move_toward()to retrieve a vector moved towards another by a specified number of units.direction_to()to retrieve a normalized vector pointing from a vector to another.- This is a shorter alternative to
(b - a).normalized().
- This is a shorter alternative to
- AStar functions
set_point_disabled()andis_point_disabled()to selectively disable points. - Tween now emits a
tween_all_completedsignal when all tweens are completed. Input.get_current_cursor_shape()to retrieve the current cursor shape.InputEventActionnow has astrengthproperty to simulate analog inputs.String.repeat()method to repeat a string several times and return it.String.count()method to count the number of occurrences of a substring in a string.String.humanize_size()method to display a file size as an human-readable string.String.strip_escapes()to strip non-printable escape characters from a string, including tabulations and newlines (but not spaces).String.sha1_text()andString.sha1_buffer()methods to return a string's SHA-1 hash.- Line2D
clear_points()method to clear all points. - Line2D now has a "Width Curve" property to make its width vary at different points.
assert()now accepts an optional second parameter to display a custom message when the assertion fails.posmod()built-in GDScript function that behaves likefposmod(), but returns an integer value.smoothstep()built-in GDScript function for smooth easing of values.lerp_angle()built-in GDScript function to interpolate between two angles.ord()built-in GDScript function to return the Unicode code point of an 1-character string.PoolByteArray.hex_encode()method to get a string of hexadecimal numbers.Font.get_wordwrap_string_size()method to return the rectangle size needed to draw a word-wrapped text.Camera.get_camera_rid()method to retrieve a Camera's RID.Array.slice()method to duplicate a subset of an Array and return it.- The GraphEdit box selection colors can now be changed by tweaking the
selection_fillandselection_stroketheme items. - Toggleable HSV mode for ColorPicker.
- ColorPicker properties to toggle the visibility and editability of presets.
- The default ColorPicker mode (RGB, HSV, RAW) can now be changed in the Editor Settings.
- ColorPicker now displays an indicator to denote "overbright" colors (which can't be displayed as-is in the preview).
- Hovering a Color property in the editor inspector now displays a tooltip with the exact values.
Color.transparentconstant (equivalent toColor(1, 1, 1, 0)).KinematicBody.get_floor_normal()andKinematicBody2D.get_floor_normal()to retrieve the collided floor's normal.VehicleWheel.get_rpm()method to retrieve a vehicle wheel's rotations per minute.- Per-wheel throttle, brake and steering in VehicleBody.
GeometryInstance.set_custom_aabb()to set a custom bounding box (used for view frustum culling).FuncRef.call_funcv()to call a FuncRef with an array containing arguments.- In contrast to
FuncRef.call_func(), only a single array argument is expected.
- In contrast to
Mesh.get_aabb()is now exposed to scripting.PhysicalBone.apply_impulse()andPhysicalBone.apply_central_impulse()methods to push ragdolls around.ProjectSettings.load_resource_pack()now features an optionalreplace_filesargument (defaulting totrue), which controls whether the loaded resource pack can override existing files in the virtual filesystem.SpinBox.apply()method to evaluate and apply the expression in the SpinBox's value immediately.ConfigFile.erase_section_key()method to remove a single key from a ConfigFile.OS.execute()now returns the process' exit code when blocking mode is enabled.OS.is_window_focused()method that returnstrueif the window is currently focused.- Tracking the focus state manually using
NOTIFICATION_WM_FOCUS_INandNOTIFICATION_WM_FOCUS_OUTis no longer needed to achieve this.
- Tracking the focus state manually using
OS.low_processor_mode_sleep_usecis now exposed as a property.- This makes it possible to change its value at runtime, rather than just defining it once in the Project Settings.
SceneTree.quit()now accepts an optional argument with an exit code.- If set to a value greater than or equal to 0, it will override the
OS.exit_codeproperty.
- If set to a value greater than or equal to 0, it will override the
VisualServer.get_video_adapter_name()andVisualServer.get_video_adapter_vendor()methods to retrieve the user's graphics card model and vendor.VisualServer.multimesh_create()is now exposed to scripting.- Ability to override how scripted objects are converted to strings by defining a
_to_string()method. - Export hints for 2D and 3D physics/render layers.
- Editor plugins can now add new tabs to the Project Settings.
- Standalone ternary expression warning in GDScript.
- Variable shadowing warning in GDScript.
- Will be displayed if:
- a block variable shadows a member variable,
- a subclass variable shadows a member variable,
- a function argument shadows a member variable.
- Will be displayed if:
- Script reflection methods are now exposed to GDScript.
- See
Script.get_script_property_list(),Script.get_script_method_list(),Script.get_script_signal_list(),Script.get_script_constant_map()andScript.get_property_default_value().
- See
randfn(mean, deviation)method to generate random numbers following a normal Gaussian distribution.- Ability to read the standard error stream when using
OS.execute()(disabled by default). - Option to disable boot splash filtering (nearest-neighbor interpolation).
- The GridMap editor now offers a search field and size slider.
- DynamicFont resources now have a thumbnail in the editor.
- Minimap in the script editor.
- Bookmarks in the script editor for easier code navigation.
- Filter search box for the script list and member list.
- Singletons and
class_name-declared classes are now highlighted with a separate color in the script editor. - The editor help now displays class properties' default and overridden values.
- The script editor's Find in Files dialog can now search in user-defined file types (
editor/search_in_file_extensionsin the Project Settings). - The script editor search now displays the number of matches.
- The script editor search now selects the current match for easier replacing.
- "Evaluate Expression" contextual option in the script editor.
- This option evaluates the selected expression and replaces it (e.g.
2 + 2becomes4).
- This option evaluates the selected expression and replaces it (e.g.
- Autocompletion support for
change_scene(). - Ability to skip breakpoints while debugging.
- Drag-and-drop support in the TileSet editor.
- Ability to attach scripts to nodes by dragging a name from the script list to a node in the scene tree.
- Icons are now displayed next to code completion items, making their type easier to distinguish.
- TileMap property
centered_texturescan be used to center textures on their tile, instead of using the tile's top-left corner as position for the texture. - "Ignore" flag to ignore specific tiles when autotiling in the TileMap editor.
- Keyboard shortcuts to rotate tiles in the TileMap editor.
- Default shortcuts are A (rotate left), S (rotate right), X (flip horizontally), Y (flip vertically).
- Ability to keep a node's local transform when reparenting it by holding Shift.
- Basis constants
IDENTITY,FLIP_X,FLIP_Y,FLIP_Z. - Ability to create sprite frames in AnimatedSprite from a sprite sheet.
frame_coordsproperty in Sprite and Sprite3D to set/get the coordinates of the frame to display from the sprite sheet.billboardproperty in Sprite3D.- Reimplemented support for editing multiple keys at once in the animation editor.
- Support for FPS snapping in the Animation editor.
- Autokeying in the Animation editor.
- Keyframes will be created automatically when translating, rotating or scaling nodes if a track exists already.
- Keys must be inserted manually for the first time.
- AnimationNodeBlendTreeEditor improvements.
- Ability to exclude multiple selected nodes at once.
- Context menu to add new nodes (activated by right-clicking).
- The AnimationPlayer Call Method mode is now configurable.
- Method calls can be "deferred" or "immediate", "deferred" being the default.
- OccluderPolygon2D is now draggable in the editor.
- The tooltip position offset is now configurable.
- The default cursor used when hovering RichTextLabels can now be changed.
- "Dialog Autowrap" property in AcceptDialog to wrap the label's text automatically.
- The 2D editor's panning shortcut can now be changed.
- The shortcuts to quit the editor can now be changed.
- Support for emission masks in CPUParticles2D.
directionproperty in CPUParticles and ParticlesMaterial.lifetime_randomnessproperty in CPUParticles and ParticlesMaterial.- CPUParticles now uses a different gizmo icon to distinguish them from Particles.
- "Restart" button to restart particle emission in the editor.
- AnimatedSprites' animations can now be played backwards.
- TextureRects can now have their texture flipped horizontally or vertically.
- StyleBoxFlat shadows can now have an offset.
- StyleBoxFlat now computes UV coordinates for its
canvas_itemvertices, which can be used in custom shaders. - Profiler data can now be exported to a CSV file.
- The 2D polygon editor now displays vertex numbers when hovering vertices.
- RectangleShapes now have a third handle to drag both axes at once.
- Global class resources are now displayed in the Resource property inspector.
- Double-clicking an easing property in the inspector will now make the editor display a numeric field.
- This makes it easier to enter precise values for properties such as light attenuation.
interface/editor/default_float_stepeditor setting to configure floating-point values' default step in the Inspector.- Audio buses are now stylized to look like boxes that can be dragged.
- The default audio bus layout file path can now be changed in the Project Settings.
- The LineEdit and TextEdit controls now display their contextual menu when pressing the Menu key.
shortcut_keys_enabledandselecting_enabledLineEdit and TextEdit properties to disable keyboard shortcuts and selecting text.- The LineEdit "disabled" font color can now be changed.
- The TextEdit "readonly" font color can now be changed.
- LineEdit can now have its
right_iconset in scripts. - The
nine_patch_stretchTextureProgress property now enables stretching when using a radial fill mode. - Support for loading and saving encrypted files in ConfigFile.
get_path()andget_path_absolute()are now implemented in FileAccessEncrypted.- "Disabled" attenuation model for AudioStreamPlayer3D, making the sound not fade with distance while keeping it positional.
- AudioEffectPitchShift's FFT size and oversampling are now adjustable.
- TextEdit's tab drawing and folding is now exposed to GDScript.
- Orphan node monitor in the Performance singleton.
- Counts the number of nodes that were created but aren't instanced in the scene tree.
- Ability to change eye height in VR.
- CSV files can now be imported as non-translation files.
- Scene resources such as materials can now be imported as
.tresfiles. - Support for importing 1-bit, 4-bit and 8-bit BMP files.
- Size dimensions must be a multiple of 8 for 1-bit images and 2 for 4-bit images.
use_lld=yesflag to link with LLD on Linux when compiling with Clang.- This results in faster iteration times when developing Godot itself or modules.
use_thinlto=yesflag to link with ThinLTO when using Clang.- Multicast support in PacketPeerUDP.
NetworkedMultiplayerEnet.server_relayproperty to disable server relaying.- This can be used to increase security when building a fully-authoritative server.
- Automatic timeout for TCP connections (defaults to 30 seconds, can be changed in the Project Settings).
HTTPRequest.timeoutproperty (defaults to 0, which is disabled).HTTPRequest.download_chunk_sizeproperty.- This value can be adjusted to reduce the allocation overhead and file writes when downloading large files.
- The default value was increased for faster downloads (4 KB → 64 KB).
- WebSocket improvements.
- Support for SSL in WebSocketServer.
- WebSocketClient can now use custom SSL certificates (except on HTML5).
- WebSocketClient can now define custom headers.
- The editor now features a built-in Web server for testing HTML5 projects.
- Button to remove all missing projects in the Project Manager.
- Reimplemented support for embedding project data in the PCK file.
- Ability to take editor screenshots by pressing Ctrl + F12.
- Editor plugins can now set the current active editor as well as toggle the distraction-free mode.
- Android: Support for adaptive icons.
- All icon densities are now generated automatically by the exporter.
- Only 3 images now need to be supplied to support all icon formats and densities (legacy icon, adaptive foreground, adaptive background).
- Android: Support for the Oculus Mobile SDK.
- Android: Support for requesting permissions at runtime.
- Android:
NOTIFICATION_APP_PAUSEDandNOTIFICATION_APP_RESUMEDnotifications are now emitted when the app is paused and resumed. - Android: Support for pen input devices.
- Android/iOS: Support for vibrating the device.
- HTML5: Partial clipboard support.
- iOS: Support for ARKit.
- iOS:
OS.get_model_name()now returns a value with the device name. - iOS: The Home indicator is now hidden by default to avoid being in the way of the running project.
- It can be restored in the Project Settings.
- Windows: Ability to toggle the console window in the Editor Settings.
- Windows: Project setting to enable Vsync using the compositor (DWM), disabled by default.
- On some hardware, this may fix stuttering issues when running a project in windowed mode.
- Windows: Support for code signing using
signtoolon Windows andosslsigncodeon other platforms. - Windows: Support for using Clang and ThinLTO when compiling using MinGW.
- Windows/macOS:
OS.set_native_icon()method to set an.icoor.icnswindow/taskbar icon at runtime. - Windows/macOS/X11: Support for graphic tablet pen pressure and tilt in InputEventMouseMotion.
- macOS: LineEdit now supports keyboard shortcuts commonly available on macOS.
- macOS: Multiple instances of the editor can now be opened at once.
- macOS: Recent and favorite projects are now listed in the project manager dock menu.
- macOS: The list of open scenes is now displayed in the editor dock menu.
- macOS: Support for modifying global and dock menus.
- macOS: Improved support for code signing when exporting projects.
- macOS: Support for defining camera and microphone usage descriptions when exporting a project.
- macOS/X11: A zsh completion file for the editor is now available.
- X11: The instance PID is now set as the
_NET_WM_PIDwindow attribute, so that external programs can easily access it. - Mono: Support for exporting to Android and HTML5.
- Mono: Support for using Rider as an external editor.
- Mono: Support for attaching external profilers like dotTrace using the
MONO_ENV_OPTIONSenvironment variable. - Mono: New DynamicGodotObject class to access dynamic properties from scripts written in GDScript.
- Mono: Support for resource type hints in exported arrays.
- Mono: New
mono/unhandled_exception_policyproject setting to keep running after an unhandled exception. - Mono: New Godot constants to conditionally react to system variables at compile-time.
- Mono: Support for Visual Studio 2019's MSBuild.
Changed
- Tween and Timer now display an error message if they are started without being added to the scene tree first.
- Tweaked Timer's wait time property hint to allow values with 3 decimals and above 4096.
- Functions called from a signal can no longer disconnect the node from the signal they're connected to (unless using
call_deferred()). - Tabs and space indentation can no longer be mixed in the same GDScript file.
- Each file must now use only tabs or spaces for indentation (not both).
assert()in GDScript must now always be used with parentheses.assert(true)is still valid, butassert trueisn't valid anymore.- This is to account for the optional second parameter that defines a custom message.
- The "Trim" and "Normalize" WAV import options are now disabled by default.
- This makes the default behavior more consistent with Ogg import.
- Ogg samples now have an icon in the editor, like WAV samples.
- Camera2D drag margins are now disabled by default.
- If porting a project from Godot 3.1 where drag margins were used, these must be enabled manually again.
- The Camera2D Offset property now ignores the Limit property.
- To get the old behavior back, move the camera itself instead of changing the offset.
Camera.project_position()now requires a seconddepthargument to determine the distance of the point from the camera.- To get the old behavior back, pass the Camera's
nearproperty value as the second argument.
- To get the old behavior back, pass the Camera's
Skeleton.set_bone_global_pose()was replaced bySkeleton.set_bone_global_pose_override().- UDP broadcasting is now disabled by default and must be enabled by calling
set_broadcast_enabled(true)on the PacketPeerUDP instance. - The editor and project manager now open slightly faster.
- Improved the Project Manager user interface.
- New, simpler design with more space available for the project list.
- Improved reporting of missing projects.
- The search field is now focused when starting the Project Manager if there is at least one project in the list.
- The search field now searches in both the project name and path.
- If the search term contains a
/, the whole path will be used to match the search them. Otherwise, only the last path component will be searched in.
- If the search term contains a
- Refactored the Project Manager to be more efficient, especially with large project lists.
- Images in the Project Manager and Asset Library are now resized with Lanczos filtering for a smoother appearance.
- The editor now uses the font hinting algorithm that best matches the OS' default.
- Hinting is set to "None" on macOS, and set to "Light" on Windows and Linux.
- This can be changed in the Editor Settings.
- The editor window dimming when a popup appears is now less intense (60% → 50%).
- The animation was also removed as it made the editor feel sluggish at lower FPS.
- Several editor menus have been reorganized for consistency and conciseness.
- Undo/Redo now supports more actions throughout the editor.
- Increased the height of the ItemList editor popup.
- This makes it easier to edit large amounts of items.
- Opening a folder in FileDialog will now scroll back to the top.
- Folder icons in FileDialog can now be displayed with a different color using the
folder_icon_modulateconstant, making them easier to distinguish from files.- Folder icons in editor file dialogs are now tinted with the accent color.
- Improved colors in the light editor theme for better readability and consistency.
- Improved A* performance significantly by using a binary heap and OAHashMap.
- Tweaked the AABB transform algorithm to be ~1.2 times faster.
- Optimized the variant reference function, making complex scripts slightly faster.
- Disabled high-quality voxel cone tracing by default.
- This makes GIProbe much faster out of the box, at the cost of less realistic reflections.
- Lowered the default maximum directional shadow distance (200 → 100).
- This makes directional shadow rendering consistent between the editor and running project when using the default Camera node settings.
- Tweaked the default depth fog maximum distance to be independent of the Camera's
farvalue (0..100).- This makes fog display consistent between the editor and a running project.
- Tweaked the default height fog values to be more logical (0..100 → 10..0).
- This means height fog will be drawn from top-to-bottom, instead of being drawn from bottom-to-top.
- Significantly improved SSAO performance by using a lower sample count.
- SSAO now uses 3×3 blurring by default, resulting in less visible noise patterns.
- When "Keep 3D Linear" is enabled, colors are no longer clamped to [0, 1] when using Linear tonemapping.
- This allows rendering HDR values in floating-point texture targets for further processing or saving HDR data into files.
- The lightmap baker now calculates lightmap sizes dynamically based on surface area.
- Improved 3D KinematicBody performance and reliability.
- Orbiting in the 3D editor can now be done while holding Alt, for better compatibility with graphics tablets.
- Keys and actions are now released when the window loses focus.
- Tweens can now have a duration of 0.
- Particles and CPUParticles' Sphere emission shape now uses an uniform density sphere.
Viewport.size_override_stretchis now exposed as a property (rather than just setter/getter methods).- One-click deploy to Android now requires just one click if only one device is connected.
- The Project Manager will now infer a project name from the project path if the name was left to the default value.
- The WebSockets implementation now uses the smaller wslay library instead of libwebsockets.
- Box selections in the editor now use a subtle outline for better visibility.
- Most 2D lines are now antialiased in the editor.
- CheckButtons now use a simpler design in the editor.
- Messages originating from the editor are now faded in the editor log.
- This makes messages printed by the project stand out more.
- Folding arrows in the editor inspector are now displayed at the left for consistency with other foldable elements.
- Hovering or dragging guides in the 2D editor will now turn the cursor into a "resizing" shape.
- The editor update spinner is now hidden by default.
- It can be enabled again in the Editor Settings.
- The "Update Always" option is now editor-wide instead of being project-specific.
- ColorPicker, OptionButton and MenuButton now use toggle mode, making them appear pressed when clicked.
- The ColorPicker preview was moved below the picker area to be closer to the sliders.
- Increased the Light2D height range from -100..100 to -2048..2048.
- Lower and higher values can be entered manually too.
- Decreased the
rotation_degreesrange in various nodes to -360..360 to be easier to adjust using the slider.- Lower and higher values can still be entered manually, which is useful for animation purposes.
- The default RichTextLabel color is now
#ffffff, matching the default Label color for better consistency. - SpinBoxes now calculate the entered value using the Expression class.
- For example, writing
2 + 2in a SpinBox then pressing Enter will result in4.
- For example, writing
- Saved resources no longer contain dependency indices and metadata such as node folding, resulting in more VCS-friendly files.
- The script editor's line length guideline is now enabled by default.
- The script editor state (such as breakpoints or the current line) is now preserved across editor sessions.
- The script editor's "Auto Brace Complete" setting is now enabled by default.
- The scripts panel toggle button is now located at the bottom-left of the script editor (instead of the File menu).
- Editor plugins can now be enabled without having an init script defined.
- Custom nodes added by plugins now have a translucent script icon in the scene tree dock.
EditorInterface.get_current_path()to get the full path currently displayed in the FileSystem dock in an editor plugin.- Copy constructors are now allowed for built-in types in GDScript.
- This allows constructs such as
Vector2(Vector2(12, 34)), which may be useful to simplify code in some cases.
- This allows constructs such as
weakref(null)is now allowed in GDScript.- This makes checking for a valid reference more concise, as
if my_ref.get_ref()is now sufficient (no need forif my_ref and my_ref.get_ref()).
- This makes checking for a valid reference more concise, as
- The number of signal connections and groups is now displayed in a tooltip when hovering the associated buttons in the scene tree dock.
- The right mouse button can now be used to pan in the 2D editor.
- This is to improve usability when using a touchpad.
- The middle mouse button can still be used to pan in the 2D editor.
- Zooming is now allowed while panning in the 2D editor.
- When the "Scroll To Pan" editor setting is enabled, the 2D editor can now be zoomed in by holding Ctrl and scrolling the mouse wheel.
- Zoom percentages in the 2D editor are now relative to the editor scale if the editor scale is higher than 100%.
- The 2D editor now displays the current zoom percentage.
- The zoom percentage can be clicked to reset the zoom level to 100%.
- Improved sorting options in the Asset Library.
- Images now load faster in the Asset Library.
- A loading placeholder is now displayed while icons are loading in the Asset Library.
- Images failing to load in the Asset Library display a "broken file" icon.
- Improved the Asset Library page loading transitions.
- Tweaked the Asset Library detail page layout for better readability.
- Audio mixer faders now use a non-linear algorithm to better fit human hearing.
- Tooltips now appear faster when hovering elements in the editor (0.7 seconds → 0.5 seconds).
- Increased the low-processor usage mode's default maximum refresh rate (125 FPS → 144 FPS).
- This makes the editor feel slightly smoother on 144 Hz displays.
- Tree scrolling when dragging now uses a larger drag margin, making drag-and-drop more convenient.
- Holding Ctrl now toggles snapping in GraphEdit.
- Improved the timeline's appearance in the animation editor.
- Improved snapping in the animation editor.
- Snapping can be toggled temporarily by holding the Ctrl key.
- Snapping can be made more precise by holding the Shift key.
- Timeline snapping is now toggled by the Snap setting (like when moving keyframes).
- Keyframes are now easier to select in the animation editor.
- Selected keyframes now appear slightly larger in the animation editor.
- Boolean and color keyframe icons are now aligned to other keyframes in the animation editor.
- The Animation editor's line widths are now resized to match the editor scale.
- BPTC compression is now available for all HDR image formats.
Image.save_exr()to save an image in EXR format, which supports high bit depths.- Improved path and polygon editors.
- New handle icons for path and polygon points.
- Smooth path point and curve tangents now use different icons to be distinguished from sharp points.
- Tangent lines are now gray in the Path2D and Path editors.
- Path2D lines are now antialiased.
- Increased the TileSet and polygon UV editor's maximum zoom levels (400% → 1600%).
- Decreased the maximum allowed StyleBoxFlat corner detail (128 → 20).
- This prevents slowness and glitches caused by using overly detailed corners.
- 3D collision shapes and RayCasts are now drawn in gray when disabled.
- Improved RayCast2D and one-way collision drawing.
- Disabled RayCast2Ds are now displayed in gray.
- One-way collision arrows are now orange by default, making them easier to distinguish them from RayCast2Ds.
- Tweaked RayCast2D and one-way collision line shapes to look more like arrows.
- Improved rendering in the curve editor.
- The grid is now rendered correctly when using a light theme.
- The main line and edge line colors have been swapped for better visibility.
- Tangent line widths are now resized to match the editor scale.
- Improved rendering in the performance monitor.
- Dark colors are now used on light backgrounds for better visibility.
- Graph lines are now thinner and opaque.
- Graph line widths are now resized to match the editor scale.
- Rounded values now display trailing zeroes to make their precision clearer.
- TileMap support for transform operations on cell textures bigger than the cell size has been reworked to properly support isometric tiles.
- Breaks compatibility with some TileMaps from previous Godot versions. An opt-in
compatibility_modeproperty can be used to restore the previous behavior.
- Breaks compatibility with some TileMaps from previous Godot versions. An opt-in
- Some TileMap editor options were moved to the toolbar.
- The TileMap editor now displays coordinate information in the 2D viewport's bottom-left corner.
- This fixes the TileMap editor width changing when hovering tiles in a small window.
- Brackets are now only inserted when necessary when autocompleting methods in the script editor.
- Improved dialogs when saving or removing an editor layout.
- Whitespace-only selections no longer cause the script editor to highlight all occurrences.
- Saving a script will now add a newline at the end of file if none was present already.
- Reorganized sections in the editor help to be in a more logical order.
- The editor help now uses horizontal margins if the screen is wide enough.
- This makes sure lines keep a reasonable length for better readability.
- Increased line spacing in the editor help and asset library descriptions.
- The editor help now displays bold text using a bold font (instead of using a monospace font).
- The editor help now displays code using a slightly different color to be easier to distinguish.
- The editor help now displays types after parameter names to follow the GDScript static typing syntax.
- Editor help is now accessed using Shift + F1, for consistency with other applications.
- Contextural help is now accessed using Alt + F1 to accommodate for this change.
- The script editor's Find in Files dialog is now always available, even when no script is opened.
- Pressing Shift + Enter in the script editor Find dialog will now go to the previous match.
- Improved the node deletion confirmation message.
- If there is only one node to delete, its name is displayed in the message.
- If there is more than one node to delete, the number of nodes to delete is displayed.
- Improved the "Snap Object to Floor" functionality in the 3D editor.
- An error message is now displayed if no nodes could be snapped.
- Increased the maximum snapping height (10 → 20).
- Increased the maximum snapping tolerance (0.1 → 0.2).
- 2D/3D selections, rotations and selected texts are now highlighted with the editor theme's accent color.
- 3D light gizmos are now tinted using the light's color, making navigation easier while using the unshaded display mode.
- Improved the 3D light and AudioStreamPlayer3D gizmos to better represent their depth in the 3D world.
- Tweaked the 3D manipulator gizmo's colors for better visibility.
- Tweaked the 2D and 3D axis colors for consistency with gizmo colors.
- Increased the default 3D manipulator gizmo opacity (0.2 → 0.4).
- The multiline text editor popup dialog's width is now capped on large displays.
- This prevents lines from becoming very long, which could hamper text readability.
- Non-printable escape characters are now stripped when pasting text into a LineEdit.
- The TextEdit caret color now matches the default font color, making it easier to see.
- Empty exported NodePath properties now return
nullinstead ofself. - Built-in scripts are no longer allowed to use
class_nameas it wasn't working properly. - The second parameter of
substr()is now optional and defaults to-1. - More editor actions can now have shortcuts assigned (such as Revert Scene or Export).
- The project export path may now be written in a relative path.
- Directories will be created recursively if the target directory doesn't exist.
- Items in the FileSystem dock can now be deselected by clicking empty space.
- "Set as Main Scene" context option for scenes in the FileSystem dock.
- The unused class variable GDScript warning is now disabled by default due to false positives.
- Warning-ignore comments now allow whitespace after the
#character. - Improved error reporting in the Particles emission point creation dialog.
- The number of warnings and errors that can be received in the remote debugger is now capped per second rather than per frame.
- The default limit is 100 errors and 100 warnings per second, making it possible for the script editor to report up to 100 warnings before having messages hidden.
- UTF-8 characters are now supported in input action names.
- All platforms now use the
custom_templateproperty in each export preset to store the path to the custom export template (instead ofcustom_packagefor some platforms). - Tween methods'
trans_typeandease_typearguments are now optional, defaulting toTRANS_LINEARandEASE_IN_OUTrespectively. PCKPacker.pck_start()andPCKPacker.flush()'salignmentandverbosearguments (respectively) are now optional, defaulting to0andfalse.- Exported PCK files now contain the Godot patch version in their header.
- This can be used by external tools to detect the Godot version more accurately.
- Exporting a project PCK or ZIP from the command line must now be done with the new
--export-packcommand-line argument.- This was done to remove the ambiguity when exporting a project to macOS from the command line.
- Updated FreeType to 2.10, which changes how font metrics are calculated.
- This may affect the appearance of some Controls, see this issue for details.
- The SCons build system now automatically detects the host platform.
platform=<platform>is no longer required when compiling for the host platform.platform=listcan be used to list the supported target platforms.
- Windows: Drive letters in file paths are now capitalized.
- macOS: Control + H and Control + D in TextEdit now delete the character at the left and right of the cursor (respectively).
- macOS: Command + Left in TextEdit now moves the cursor to the first non-whitespace character.
- macOS: Non-resizable windows are now allowed to enter fullscreen mode.
- macOS: The editor's title bar now uses dark mode on Mojave.
- X11:
OS.set_window_postion()now takes window decorations into account.
Removed
- Unused Panel
panelfandpanelncstyles. - thekla_atlas dependency, as light baking now relies on xatlas for UV unwrapping.
- Rating icons in the Asset Library, as this feature isn't implemented in the backend.
- Some editor languages are no longer available due to missing support for RTL and text shaping in Godot:
- Affected languages are Arabic, Bengali, Persian, Hebrew, Hindi, Malayalam, Sinhalese, Tamil, Telugu and Urdu.
- These languages will be re-added once Godot supports RTL and text shaping.
- Android: ARMv6 support.
- iOS: ARMv7 support.
- ARMv7 export templates can still be compiled from source to support the iPhone 5 and older.
Fixed
- The Project Manager now remembers the sorting option that was previously set.
- The editor and project manager now have a minimum window size defined.
- This prevents controls from overlapping each other by resizing the window to a very small size.
- Fixed radiance map generation, resulting in improved 3D performance and visual quality.
- Fixed issues with PBR environment mapping.
- Materials should now look closer to what they look like in Substance Designer/Painter.
- Depth of field now affects transparent objects.
- Radiance is now generated when using a clear color sky.
- Contact shadows no longer display when shadow casting is disabled.
- Larger data types can now be constructed by swizzling in the shader language.
- For instance,
vec2 test2 = vec2(0.0, 1.0); vec3 test3 = test2.xxx;now works as in GLSL.
- For instance,
- The
AMBIENT_LIGHT_DISABLEDandSHADOWS_DISABLEDflags now work when using the GLES2 renderer. - The Keep background mode now works when using the GLES2 renderer.
- Several fixes to the GLES2 renderer:
- Fixed transparency order.
- Fixed vertex lighting being too bright.
- Fixed occasional light flickering.
- Fixed shadows cast from transparent materials.
- Fog is no longer computed on unshaded materials.
- This matches the GLES3 renderer's behavior.
- GLES2 shader uniforms now use
highpprecision by default.- This prevents linking issues on some Android devices.
- Negative OmniLights and SpotLights now work as expected.
- The 3D editor's View Information pane now displays statistics correctly when using the GLES2 renderer.
- Textures compressed with ETC now support transparency by falling back to RGBA4444 or LA8.
- Alternate display modes are now marked as disabled in the editor when using the GLES2 renderer, as these are only supported when using GLES3.
- Fixed several inconsistencies between Particles and CPUParticles.
- Fixed particles scale randomization.
- Particles are now set to emit correctly when restarting.
- CheckBox and CheckButton now use the
check_vadjustcustom constant to adjust the icon Y position as intended. - Fixed various issues with tab-related icons.
- Fixed issues in WebM colorspace corrections, resulting in better color output.
- CSG is now taken into account when generating navigation meshes.
- Curve2D and Curve3D interpolated values now behave as expected.
- Numeric slider grabbers in the editor inspector now update when scrolling using the mouse wheel.
- Scene modifications are no longer lost when renaming a file in the FileSystem dock.
- "Show in FileSystem" now clears the current search, so that the selected item can be seen immediately.
- LineEdit and TextEdit's context menus no longer display editing options if they are read-only.
- SpinBox mouse events are now correctly triggered by its LineEdit part.
- Per-word navigation in LineEdit and TextEdit now handles UTF-8 characters correctly.
- LineEdit placeholders, Tabs' names and WindowDialog titles now react correctly to translation changes.
- Fixed UI navigation when using gamepad analog sticks.
- Buttons' state is now reset when they exit the scene tree.
- This prevents them from lingering in a "hovered" or "pressed" state.
- Tooltips now disappear when hiding the node they belong to.
- Encoded packet flags are no longer sent in the ENet multiplayer protocol, as ENet itself already sends that data.
- This saves 4 bytes per packet.
- Audio trimming is now less aggressive, cutting at -50 dB instead of -30 dB.
- Audio trimming now has a small fade-out period, preventing audible pops.
- Audio mix rate and output latency settings are now consistently applied on all platforms.
- Fixed multichannel panning for AudioStreamPlayer3D.
- Opening a recent built-in script will now load the associated scene automtaically since doing so is required to edit the script.
- Declaring a class with
class_namethat has the same name as a singleton will now display a clearer error message. scriptis no longer allowed as a member variable name in GDScript, as that conflicts with the internalscriptproperty used by Object.- Assigning a variable with a function index will no longer evaluate the function twice.
- For instance, doing
a[function()] += 1will no longer evaluatefunction()twice. - If the function has side effects, this may change the resulting program behavior.
- For instance, doing
- GDScript type checks are now enabled in release export templates.
- The Label font shadow now draws the font outline as well (if the base font has one).
Font.draw_char()now draws the font outline as well (if the base font has one).- The editor no longer redraws continuously when selecting a Control in a Container.
- Added some missing feature tags to the Project Settings "Override For..." menu.
- The
low_processor_mode_sleep_usecproject setting no longer affects the editor. - Typed arrays and dictionaries no longer have their values shared across instances.
selfand object types can now be indexed as a dictionary again (like in Godot 3.0 and prior).- Fixed
to_lower()conversion with Cyrillic characters. - The Find in Files replace dialog now allows empty replacement texts.
- The bottom panel no longer disappears when opening the theme editor on small displays.
- The script editor's color picker now changes only one color if multiple colors are present on the same line.
- The script editor's line length guideline is now drawn behind text.
- The script editor's line length guideline is now drawn at the correct position when font hinting is disabled.
- The script editor now automatically indents a line if the previous one ends with
[or(.- This makes it possible to wrap arrays or function declarations/calls without pressing Tab every line.
- Fixed autocompletion in the script editor.
- The script editor can now autocomplete enum values.
- The script editor can now autocomplete node paths starting with
$"or$'.
- Custom script editor templates can now use type hints.
- Shift operators with a number not between 0 and 63 (inclusive) will now result in a compile-time error in GDScript.
- Warnings no longer count towards the "Too many errors!" message.
- AnimationTrackEdit now displays invalid value keys again (as it did in 3.0).
- Fixed the display of function/audio/animation tracks in the blend tree animation filter.
- The editor shortcuts menu no longer displays all unassigned shortcuts when searching for a substring of "None".
- The editor's performance monitor now displays memory/file sizes larger than 2 GB correctly.
- The editor debugger now displays keyboard shortcuts when hovering the "Step Into", "Step Over", "Break" and "Continue" buttons.
- The editor debugger now always handles connections.
- Subsequent connections will be dropped immediately to avoid locking.
- Large rotation offset/snap values no longer appear to be cut off in the Configure Snap dialog.
- Documentation tooltips in the editor now wrap to multiple lines correctly.
- Locked 3D nodes are no longer selectable in the 3D viewport, matching the 2D editor's behavior.
- All 3D gizmos now notify changes correctly, which means the inspector now displays up-to-date properties after using them.
- The 3D manipulator gizmo's size is now capped at low viewport heights, preventing it from outgrowing the viewport's bounds.
- The editor filesystem now refreshes on file changes if the project is located on an exFAT filesystem.
- Fixed many cases of colors not changing correctly when switching the editor from a dark theme to a light theme (or vice versa) without restarting.
- The Show in File Manager context menu option now works with files marked as favorite.
- The random number generator's seed is now properly set up.
- Antialiased and rounded StyleBoxFlat corners now handle different border widths correctly.
- The StyleBox preview now accounts for shadows and content margins.
- This fixes the preview going out of bounds in the inspector.
- Text resources no longer contain an extraneous line break at the end of file.
- Transform's
FLIP_YandFLIP_Zconstants now work as expected. - Fixed importing BMP images.
- The positional command-line argument is now only considered to be a scene path if it ends with
.scn,.tscnor.escn.- This makes it possible to parse command-line arguments in a standard fashion (
--foo barnow works, not just--foo=bar). - This also makes it possible to use file associations or drag-and-drop and have the positional argument parsed by the project.
- This makes it possible to parse command-line arguments in a standard fashion (
- The
--audio-driverand--video-drivercommand-line arguments are now validated; an error message will be printed if an invalid value is passed. - The
--check-onlycommand-line argument now returns a non-zero exit code if an invalid script is passed using--script. - Exporting a project via the command-line now returns a non-zero exit code if an error occurred during exporting.
- Console output is no longer colored when standard output isn't a TTY.
- This prevents Godot from writing ANSI escape codes when redirecting standard output or standard error to a file.
- Android: Gamepads are now correctly detected when the application starts.
- Android: Fix some keyboards being detected as gamepads and not working as a result.
- Android: The editor now detects if the device is connected using wireless
adband will debug using Wi-Fi in this case. - HTML5: Fixed the pointer position on hiDPI displays.
- HTML5:
OS.get_system_time_msec()now returns the correct value like on other platforms. - iOS: On iOS 11 or later, gestures near screen edges are now handled by Godot instead of the OS.
- Windows: Line endings are now converted to CRLF when setting clipboard content.
- Windows: Getting the path to the Downloads directory using
OS.get_system_dir()now works correctly.- This fixes line endings being invisible when pasting into other applications.
- macOS:
OS.get_real_window_size()andOS.set_window_size()are now handled correctly on hiDPI displays. - X11:
OS.get_window_position()now returns absolute coordinates. - X11: Fixed audio playing on the wrong speakers when using PulseAudio on 5.1 setups.
- X11:
OS.set_window_maximized()now gives up after 0.5 seconds.- This makes the editor no longer freeze on startup when using fvwm.
3.1 - 2019-03-13
Added
- OpenGL ES 2.0 renderer.
- Visual shader editor.
- New PBR output nodes.
- Conversion between Vector3 and scalar types is now automatic.
- Ability to create custom nodes via scripting.
- Ports can now be previewed.
- 3D soft body physics.
- 3D ragdoll system.
- Constructive solid geometry in 3D.
- 2D meshes and skeletal deformation.
- Various improvements to KinematicBody2D.
- Support for snapping the body to the floor.
- Support for RayCast shapes in kinematic bodies.
- Support for synchronizing kinematic movement to physics, avoiding an one-frame delay.
- WebSockets support using libwebsockets.
- UPnP support using MiniUPnP.
- Revamped inspector.
- Improved visualization and editing of numeric properties.
- Vector and matrix types can now be edited directly (no pop-ups).
- Subresources can now be edited directly within the same inspector.
- Layer names can now be displayed in the inspector.
- Proper editing of arrays and dictionaries.
- Ability to reset any property to its default value.
- Improved animation editor.
- Simpler, less cluttered layout.
- New Bezier, Audio and Animation tracks.
- Several key types can be previewed directly in the track editor.
- Tracks can now be grouped and filtered on a per-node basis.
- Copying and pasting tracks between animations is now possible.
- New Capture mode to blend from a node's current value to the first key in a track.
- Improved animation tree and new state machine.
- More visual feedback in the blend tree editor.
- 1D and 2D blend spaces are now supported.
- Ability to write custom blending logic.
- Support for root motion.
- New FileSystem dock.
- Unified view of folders and files in the same panel.
- Files can now be marked as favorites, not only folders.
- Files now have icons representing their type, or thumbnail previews when relevant.
- New search field to filter entries in the tree.
- OpenSimplexNoise and NoiseTexture resources.
- Optional static typing in GDScript.
- Does not currently improve performance, but helps write more robust code.
- Warning system in GDScript.
- Reports potential code issues such as:
- unused variables,
- standalone expressions,
- discarded return values from functions,
- unreachable code after a
returnstatement, - …
- Warnings can be disabled in the Project Settings or by writing special comments.
- Reports potential code issues such as:
- GDScript keyword
class_nameto register scripts as classes. - Simple expression language independent from GDScript, used by inspector boxes that accept numeric values.
- Can also be used in projects.
- C# projects can now be exported for Windows, Linux, and macOS targets.
- The
serverplatform is back as it was in Godot 2.1.- It is now again possible to run a headless Godot instance on Linux.
- Support for BPTC texture compression on desktop platforms.
- New properties for SpatialMaterial.
- Dithering-based distance fade, for fading materials without making them transparent.
- Disable ambient light on a per-material basis.
- Option to link Mono statically on Windows.
- Unified class and reference search in the editor.
- Revamped TileSet editor with support for undo/redo operations.
- Various quality-of-life improvements to the Polygon2D and TextureRegion editors.
- RandomNumberGenerator class that allows for multiple instances at once.
- Array methods
min()andmax()to return the smallest and largest value respectively. - Dictionary method
get(key[, default])wheredefaultis returned if the key does not exist. - Node method
print_tree_pretty()to print a graphical view of the scene tree. - String methods
trim_prefix(),trim_suffix(),lstrip(),rstrip(). - OS methods:
get_system_time_msecs(): Return the system time with milliseconds.get_audio_driver_name()andget_audio_driver_count()to query audio driver information.get_video_driver_count()andget_video_driver_name()to query renderer information.center_window(): Center the window on the screen.move_window_to_foreground(): Move the window to the foreground.
- StreamPeerTCP method
set_no_delay()to enable theTCP_NODELAYoption. - EditorPlugin method
remove_control_from_container(). - Ability to set Godot windows as "always on top".
- Ability to create windows with per-pixel transparency.
- New GLSL built-in functions in the shader language:
radians()degrees()asinh()acosh()atanh()exp2()log2()roundEven()
- New command-line options:
--build-solutions: Build C# solutions without starting the editor.--print-fps: Display frames per second to standard output.--quit: Quit the engine after the first main loop iteration.
- Debugger button to copy error messages.
- Support for
.escnscenes has been added for use with the new Blender exporter. - It is now possible to scale an OBJ mesh when importing.
popup_closedsignal forColorPickerButton.- Methods that are deprecated can now print warnings.
- Input actions can now provide an analog value.
- Input actions can now be mapped to either a specific device or all devices.
- DNS resolution for high-level networking.
- Servers can now kick/disconnect peers in high-level networking.
- Servers can now access IP and port information of peers in high-level networking.
- High-level multiplayer API decoupled from SceneTree (see
SceneTree.multiplayer_api/SceneTree.custom_multiplayer_api), can now be extended. Input.set_default_cursor_shape()to change the default shape in the viewport.- Custom cursors can now be as large as 256×256 (needed to be exactly 32×32 before).
- Support for radio-looking items with icon in
PopupMenus. - Drag and drop to rearrange Editor docks.
- TileSet's
TileModeis now exposed to GDScript. OS.get_ticks_usec()is now exposed to GDScript.- Normals can now be flipped when generated via
SurfaceTool. - TextureProgress bars can now be bilinear (extending in both directions).
- The character used for masking secrets in LineEdit can now be changed.
- Improved DynamicFont:
- DynamicFonts can now use high-quality outlines generated by FreeType.
- DynamicFonts can now have their anti-aliasing disabled.
- DynamicFonts can now have their hinting tweaked ("Normal", "Light" or "None").
- Colored glyphs such as emoji are now supported.
- Universal translation of touch input to mouse input.
- AudioStreamPlayer, AudioStreamPlayer2D, and AudioStreamPlayer3D now have a pitch scale property.
- Support for MIDI input.
- Support for audio capture from microphones.
GROW_DIRECTION_BOTHfor Controls.- Selected tiles can be moved in the tile map editor.
- The editor can now be configured to display the project window on the previous or next monitor (relative to the editor).
- If either end is reached, then the project will start on the last or first monitor (respectively).
- Signal in VideoPlayer to notify when the video finished playing.
Image.bumpmap_to_normalmap()to convert bump maps to normal maps.File.get_path()andFile.get_path_absolute().- Unselected tabs in the editor now have a subtle background for easier identification.
- The depth fog's end distance is now configurable independently of the far plane distance.
- The alpha component of the fog color can now be used to control fog density.
- The 3D editor's information panel now displays the camera's coordinates.
- New options to hide the origin and viewport in the 2D editor.
- Improved 3D editor grid:
- The grid size and number of subdivisions can now be configured.
- Its primary and secondary colors can now also be changed.
- Ctrl now toggles snapping in the 3D viewport.
- Find & replace in files (Ctrl + Shift + F by default).
- Batch node renaming tool (Ctrl + F2 by default).
- More editor scaling options to support HiDPI displays.
- Type icons can now be enabled in the editor again.
- Buttons in the editor to open common directories in the OS file manager:
- project data directory,
- user data directory,
- user settings directory.
- Projects can now be sorted by name or modification date in the project manager.
- Projects can now be imported from ZIP archives in the project manager.
- Improved autocompletion.
- Keywords are now present in autocompletion results.
editorandstandalonefeature tags to check whether the project is running from an editor or non-editor binary.android_add_asset_dir("...")method to Android module Gradle build configuration.- iOS: Support for exporting to the iPhone X.
- iOS: Re-added support for in-app purchases.
Changed
- Built-in vector types now use copy-on-write mode as originally intended, resulting in increased engine performance.
- The mbedtls library is now used instead of OpenSSL.
- Renamed several core files.
- Third-party modules may have to be updated to reflect this.
- SSL certificates are now bundled in exported projects unless a custom bundle is specified.
- Improved buffer writing performance on Windows and Linux.
- Removed many debugging prints in the console.
- Export templates now display an error dialog if no project was found when starting.
- DynamicFont oversampling is now enabled by default.
- Nodes' internal logic now consistently uses internal physics processing.
- Allow attaching and clearing scripts on multiple nodes at once.
- Default values are no longer saved in scene and resource files.
- The selection rectangle of 2D nodes is now hidden when not pertinent (no more rectangle for collision shapes).
- SSE2 is now enabled in libsquish, resulting in improved S3TC encoding performance.
- Tangent and binormal coordinates are now more consistent across mesh types (primitive/imported), resulting in more predictable normal map and depth map appearance.
- Better defaults for 3D scenes.
- The default procedural sky now has a more neutral blue tone.
- The default SpatialMaterial now has a roughness value of 1 and metallic value of 0.
- The fallback material now uses the same values as the default SpatialMaterial.
- Text editor themes are now sorted alphabetically in the selection dropdown.
- The 3D manipulator gizmo now has a smoother, more detailed appearance.
- The 3D viewport menu button now has a background to make it easier to read.
- QuadMeshes are now built using two triangles (6 vertices) instead of one quad (4 vertices).
- This was done because quads are deprecated in OpenGL.
- Controls inside containers are no longer movable or resizable but can still be selected.
- The
isGDScript keyword can now be used to compare a value against built-in types. - Exported variables with type hints are now always initialized.
- For example,
export(int) var awill be initialized to0.
- For example,
- Named enums in GDScript no longer create script constants.
- This means
enum Name { VALUE }must now be accessed withName.VALUEinstead ofVALUE.
- This means
- Cyclic references to other scripts with
preload()are no longer allowed.load()should be used in at least one of the scripts instead.
switch,caseanddoare no longer reserved identifiers in GDScript.- Shadowing variables from parent scopes is no longer allowed in GDScript.
- Function parameters' default values can no longer depend on other parameters in GDScript.
- Indentation guides are now displayed in a more subtle way in the script editor.
- Indentation guides are now displayed when indenting using spaces.
- Multi-line strings are now highlighted as strings rather than as comments in the script editor.
- This is because GDScript does not officially support multiline comments.
- Increased the script editor's line spacing (4 pixels → 6 pixels).
- Increased the caret width in the script editor (1 pixel → 2 pixels).
- The project manager window is now resized to match the editor scale.
- The asset library now makes use of threading, making loading more responsive.
- Line spacing in the script editor, underlines and caret widths are now resized to match the editor scale.
- Replaced editor icons for checkboxes and radio buttons with simpler designs.
- Tweaked the editor's success, error, and warning text colors for better readability and consistency.
- Android: Custom permissions are now stored in an array and their amount is no longer limited to 20.
- Custom permissions will have to be redefined in projects imported from older versions.
- Android: Provide error details when an in-app purchase fails.
- Linux:
OS.alert()now uses Zenity or KDialog if available instead of xmessage. - Mono: Display stack traces for inner exceptions.
- Mono: Bundle
mscorlib.dllwith Godot to improve portability.
Removed
- Removed the RtAudio backend on Windows in favor of WASAPI, which is the default since 3.0.
- macOS: Support for 32-bit and fat binaries.
Fixed
move_and_slide()now behaves differently at low velocities, which makes it function as originally intended.- AnimatedSprite2D's
animation_finishedsignal is now triggered at the end of the animation, instead of as soon as the last frame displays. - Audio buses can now be removed in the editor while they are used by AudioStreamPlayer2D/3D nodes.
- Do not show the project manager unless no project was found at all.
- The animation editor time offset indicator no longer "walks" when resizing the editor.
- Allow creation of a built-in GDScript file even if the filename suggested already exists.
- Show tooltips in the editor when physics object picking is disabled.
- Button shortcuts can now be triggered by gamepad buttons.
- Fix a serialization bug that could cause TSCN files to grow very large.
- Gizmos are now properly hidden on scene load if the object they control is hidden.
- Camera gizmos in the 3D viewport no longer look twice as wide as they actually are.
- Copy/pasting from the editor on X11 will now work more reliably.
libgcc_sandlibstdc++are now linked statically for better Linux binary portability.- The FPS cap set by
force_fpsin the Project Settings is no longer applied to the editor.- Low FPS caps no longer cause the editor to feel sluggish.
- hiDPI is now detected and used if needed in the project manager.
- The Visual Studio Code external editor option now recognizes more binary names such as
code-oss, making detection more reliable. - The
-ffast-mathflag is no longer used when compiling Godot, resulting in increased floating-point determinism. - Fix spelling of
apply_torque_impulse()and deprecate the misspelled method. - Escape sequences like
\nand\tare now recognized in CSV translation files. - Remove spurious errors when using a PanoramaSky without textures.
- The lightmap baker will now use all available cores on Windows.
- Bullet physics now correctly calculates effective gravity on KinematicBodies.
- Setting the color
vmember now correctly sets thesmember. - RichTextLabels now correctly determine the baseline for all fonts.
- SpinBoxes now correctly calculate their initial size.
- OGG streams now correctly signal the end of playback.
- Android exporter no longer writes unnecessary permissions to the exported APK.
- Debugger "focus stealing" now works more reliably.
- Subresources are now always saved when saving a scene.
- Many fixes related to importers (glTF, Collada, audio), physics (Bullet), Mono/C#, GDNative, Android/iOS.
- Mono: Many fixes and improvements to C# support (including a
[Signal]attribute). - WebAssembly: Supply proper CORS headers.
Security
- Fixed a security issue relating to deserializing Variants.
3.0 - 2018-01-29
Added
- Physically-based renderer using OpenGL ES 3.0.
- Uses the Disney PBR model, with clearcoat, sheen and anisotropy parameters available.
- Uses a forward renderer, supporting multi-sample anti-aliasing (MSAA).
- Parallax occlusion mapping.
- Reflection probes.
- Screen-space reflections.
- Real-time global illumination using voxel cone tracing (GIProbe).
- Proximity fade and distance fade (useful for creating soft particles and various effects).
- Lightmapper for lower-end desktop and mobile platforms, as an alternative to GIProbe.
- New SpatialMaterial resource, replacing FixedMaterial.
- Multiple passes can now be specified (with an optional "grow" property), allowing for effects such as cel shading.
- Brand new 3D post-processing system.
- Depth of field (near and far).
- Fog, supporting light transmittance, sun-oriented fog, depth fog and height fog.
- Tonemapping and Auto-exposure.
- Screen-space ambient occlusion.
- Multi-stage glow and bloom, supporting optional bicubic upscaling for better quality.
- Color grading and various adjustments.
- Rewritten audio engine from scratch.
- Supports audio routing with arbitrary number of channels, including Area-based audio redirection (video).
- More than a dozen of audio effects included.
- Rewritten 3D physics using Bullet.
- UDP-based high-level networking API using ENet.
- IPv6 support for all of the engine's networking APIs.
- Visual scripting.
- Rewritten import system.
- Assets are now referenced with their source files, then imported in a transparent manner by the engine.
- Imported assets are now cached in a
.importdirectory, making distribution and versioning easier. - Support for ETC2 compression.
- Support for uncompressed Targa (.tga) textures, allowing for faster importing.
- Rewritten export system.
- GPU-based texture compression can now be tweaked per-target.
- Support for exporting resource packs to build DLC / content addons.
- Improved GDScript.
- Pattern matching using the
matchkeyword. $shorthand forget_node().- Setters and getters for node properties.
- Underscores in number literals are now allowed for improved readability (for example,
1_000_000). - Improved performance (+20% to +40%, based on various benchmarks).
- Pattern matching using the
- Feature tags in the Project Settings, for custom per-platform settings.
- Full support for the glTF 2.0 3D interchange format.
- Freelook and fly navigation to the 3D editor.
- Built-in editor logging (logging standard output to a file), disabled by default.
- Improved, more intuitive file chooser in the editor.
- Smoothed out 3D editor zooming, panning and movement.
- Toggleable rendering information box in the 3D editor viewport.
- FPS display can also be enabled in the editor viewport.
- Ability to render the 3D editor viewport at half resolution to achieve better performance.
- GDNative for binding languages like C++ to Godot as dynamic libraries.
- Editor settings and export templates are now versioned, making it easier to use several Godot versions on the same system.
- Optional soft shadows for 2D rendering.
- HDR sky support.
- Ability to toggle V-Sync while the project is running.
- Panorama sky support (sphere maps).
- Support for WebM videos (VP8/VP9 with Vorbis/Opus).
- Exporting to HTML5 using WebAssembly.
- C# support using Mono.
- The Mono module is disabled by default, and needs to be compiled in at build-time.
- The latest Mono version (5.4) can be used, fully supporting C# 7.0.
- Support for rasterizing SVG to images on-the-fly, using the nanosvg library.
- Editor icons are now in SVG format, making them better-looking at non-integer scales.
- Due to the library used, only simpler SVGs are well-supported, more complex SVGs may not render correctly.
- Support for oversampling DynamicFonts, keeping them sharp when scaled to high resolutions.
- Improved StyleBoxFlat.
- Border widths can now be set per-corner.
- Support for anti-aliased rounded and beveled corners.
- Support for soft drop shadows.
- VeryLoDPI (75%) and MiDPI (150%) scaling modes for the editor.
- Improved internationalization support for projects.
- Language changes are now effective without reloading the current scene.
- Implemented missing features in the HTML5 platform.
- Cursor style changes.
- Cursor capturing and hiding.
- Improved styling and presentation of HTML5 exports.
- A spinner is now displayed during loading.
- Rewritten the 2D and 3D particle systems.
- Particles are now GPU-based, allowing their use in much higher quantities than before.
- Meshes can now be used as particles.
- Particles can now be emitted from a mesh's shape.
- Properties can now be modified over time using an editable curve.
- Custom particle shaders can now be used.
- New editor theme, with customizable base color, highlight color and contrast.
- A light editor theme option is now available, with icons suited to light backgrounds.
- Alternative dark gray and Arc colors are available out of the box.
- New adaptive text editor theme, adjusting automatically based on the editor colors.
- Support for macOS trackpad gestures in the editor.
- Exporting to macOS now creates a
.dmgdisk image if exporting from an editor running on macOS.- Signing the macOS export now is possible if running macOS (requires a valid code signing certificate).
- Exporting to Windows now changes the exported project's icon using
rcedit(requires WINE if exporting from Linux or macOS). - Improved build system.
- Support for compiling using Visual Studio 2017.
- SCons 3.0 and Python 3 are now supported (SCons 2.5 and Python 2.7 still work).
- Link-time optimization can now be enabled by passing
use_lto=yesto the SCons command line.- Produces faster and sometimes smaller binaries.
- Currently only supported with GCC and MSVC.
- Added a progress percentage when compiling Godot.
.ziparchives are automatically created when compiling HTML5 export templates.
- Easier and more powerful way to create editor plugins with EditorPlugin and related APIs.
Changed
- Increased the default low-processor-usage mode FPS limit (60 → 125).
- This makes the editor smoother and more responsive.
- Increased the default 3D editor camera's field of view (55 → 70).
- Increased the default 3D Camera node's field of view (65 → 70).
- Changed the default editor font (Droid Sans → Noto Sans).
- Changed the default script editor font (Source Code Pro → Hack)
- Renamed
engine.cfgtoproject.godot.- This allows users to open a project by double-clicking the file if Godot is associated to
.godotfiles.
- This allows users to open a project by double-clicking the file if Godot is associated to
- Some methods from the
OSsingleton were moved to the newEnginesingleton. - Switched from GLEW to GLAD for OpenGL wrapping.
- Changed the SCons build flag for simple logs (
colored=yes→verbose=no). - The HTML5 platform now uses WebGL 2.0 (instead of 1.0).
- Redesigned the Godot logo to be more legible at small sizes.
Deprecated
opacityandself_opacityare replaced bymodulateandself_modulatein all 2D nodes, allowing for full color changes in addition to opacity changes.
Removed
- Skybox support.
- Replaced with panorama skies, which are easier to import.
- Opus audio codec support.
- This is due to the way the new audio engine is designed.
- HTML5 export using asm.js.
- Only WebAssembly is supported now, since all browsers supporting WebGL 2.0 also support WebAssembly.