Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Godot 3.2 preliminary changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

[Unreleased] (3.2-dev at commit d4ac0ca15)

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 Pi or Tau can 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.
  • Improved visual scripting.
    • Visual scripting now uses an unified graph where all functions are represented.
    • Nodes can now be edited directly in the graph.
    • Support for fuzzy searching.
    • The tool mode 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 tool scripts.
    • 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.
  • 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, float and String).
  • 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 switch statements in the shader language.
  • Support for do {...} while (...) loops in the shader language.
    • Unlike while, the expression in the do block will always be run at least once.
  • Support for hexadecimal number literals in the shader language.
  • Ported several GLES3 shader functions such as round() to GLES2.
  • SHADOW_VEC shader 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. 0b101010 for 42).
  • 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 (.gd for GDScript, .cs for C#).
    • The path to the script templates directory can be changed in the Project Settings.
  • Ability to limit the minimum and maximum window size using OS.set_min_window_size() and OS.set_max_window_size().
  • Node.process_priority property to set or get a node's processing priority.
    • This was previously only available as Node.set_process_priority() (without an associated getter).
  • Node.editor_description property 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_outside property to keep a button pressed when moving the pointer outside while pressed.
  • Button.expand_icon property 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() and Tree.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_probe property to exclude specific lights from GIProbe computations.
  • TranslationServer method get_loaded_locales() to retrieve the list of languages with a translation loaded.
  • FRUSTUM 3D camera mode to create tilted frustums for mirror or portal effects.
  • Camera.project_position() now accepts an optional depth parameter.
  • CanvasItem.draw_rect() now has width and antialiased properties to match draw_line()'s functionality.
  • Engine.get_idle_frames() and Engine.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.
  • 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().
  • AStar functions set_point_disabled() and is_point_disabled() to selectively disable points.
  • Tween now emits a tween_all_completed signal when all tweens are completed.
  • Input.get_current_cursor_shape() to retrieve the current cursor shape.
  • InputEventAction now has a strength property 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() and String.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 like fposmod(), 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_fill and selection_stroke theme 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.transparent constant (equivalent to Color(1, 1, 1, 0)).
  • KinematicBody.get_floor_normal() and KinematicBody2D.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.
  • Mesh.get_aabb() is now exposed to scripting.
  • PhysicalBone.apply_impulse() and PhysicalBone.apply_central_impulse() methods to push ragdolls around.
  • ProjectSettings.load_resource_pack() now features an optional replace_files argument (defaulting to true), 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 returns true if the window is currently focused.
    • Tracking the focus state manually using NOTIFICATION_WM_FOCUS_IN and NOTIFICATION_WM_FOCUS_OUT is no longer needed to achieve this.
  • OS.low_processor_mode_sleep_usec is 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_code property.
  • VisualServer.get_video_adapter_name() and VisualServer.get_video_adapter_vendor() methods to retreive 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.
  • 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() and Script.get_property_default_value().
  • 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_extensions in 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 + 2 becomes 4).
  • 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.
  • "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_coords property in Sprite and Sprite3D to set/get the coordinates of the frame to display from the sprite sheet.
  • billboard property 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.
  • direction property in CPUParticles and ParticlesMaterial.
  • lifetime_randomness property 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_item vertices, 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_step editor 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_enabled and selecting_enabled LineEdit 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_icon set in scripts.
  • The nine_patch_stretch TextureProgress property now enables stretching when using a radial fill mode.
  • Support for loading and saving encrypted files in ConfigFile.
  • get_path() and get_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 .tres files.
  • 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=yes flag to link with LLD on Linux when compiling with Clang.
    • This results in faster iteration times when developing Godot itself or modules.
  • use_thinlto=yes flag to link with ThinLTO when using Clang.
  • Multicast support in PacketPeerUDP.
  • NetworkedMultiplayerEnet.server_relay property 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.timeout property (defaults to 0, which is disabled).
  • HTTPRequest.download_chunk_size property.
    • 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_PAUSED and NOTIFICATION_APP_RESUMED notifications 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 signtool on Windows and osslsigncode on other platforms.
  • Windows: Support for using Clang and ThinLTO when compiling using MinGW.
  • Windows/macOS: OS.set_native_icon() method to set an .ico or .icns window/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_PID window 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_OPTIONS environment 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_policy project 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).
  • 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.
  • Camera.project_position() now requires a second depth argument to determine the distance of the point from the camera.
    • To get the old behavior back, pass the Camera's near property value as the second argument.
  • Skeleton.set_bone_global_pose() was replaced by Skeleton.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.
  • 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_modulate constant, 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 far value (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_stretch is 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_degrees range 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.
  • Label's visible_characters property now takes spaces into account to be consistent with RichTextLabel.
  • SpinBoxes now calculate the entered value using the Expression class.
    • For example, writing 2 + 2 in a SpinBox then pressing Enter will result in 4.
  • 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.
  • 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 for if my_ref and my_ref.get_ref()).
  • 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.
  • 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 null instead of self.
  • Built-in scripts are no longer allowed to use class_name as 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_template property in each export preset to store the path to the custom export template (instead of custom_package for some platforms).
  • Tween methods' trans_type and ease_type arguments are now optional, defaulting to TRANS_LINEAR and EASE_IN_OUT respectively.
  • PCKPacker.pck_start() and PCKPacker.flush()'s alignment and verbose arguments (respectively) are now optional, defaulting to 0 and false.
  • 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-pack command-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=list can 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 panelf and panelnc styles.
  • 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.
  • The AMBIENT_LIGHT_DISABLED and SHADOWS_DISABLED flags 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 highp precision 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_vadjust custom 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_name that has the same name as a singleton will now display a clearer error message.
  • script is no longer allowed as a member variable name in GDScript, as that conflicts with the internal script property used by Object.
  • Assigning a variable with a function index will no longer evaluate the function twice.
    • For instance, doing a[function()] += 1 will no longer evaluate function() twice.
    • If the function has side effects, this may change the resulting program behavior.
  • 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_usec project setting no longer affects the editor.
  • Typed arrays and dictionaries no longer have their values shared across instances.
  • self and 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_Y and FLIP_Z constants 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, .tscn or .escn.
    • This makes it possible to parse command-line arguments in a standard fashion (--foo bar now 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.
  • The --audio-driver and --video-driver command-line arguments are now validated; an error message will be printed if an invalid value is passed.
  • The --check-only command-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 adb and 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() and OS.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.
@glinesbdev

This comment has been minimized.

Copy link

glinesbdev commented Sep 8, 2018

So after 3.1 is released, computers with a 32 bit architecture will no longer be able to run Godot?

@suptoasty

This comment has been minimized.

Copy link

suptoasty commented Sep 9, 2018

@glinesbdev the way i read it is that only mac os will no longer have 32-bit and fat godot support. and this commit helps godotengine/godot@f04958c support that. Your question makes it sound like all 32-bit will be removed

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Sep 10, 2018

@glinesbdev 32-bit will continue to be supported on Windows and Linux, but Apple dropped 32-bit support from macOS several years ago (the last macOS version available as 32-bit was 10.7, which is EOL since November 2014).

@flamendless

This comment has been minimized.

Copy link

flamendless commented Nov 3, 2018

I am really waiting for the opengl 2.0 compatibility

@aaronfranke

This comment has been minimized.

Copy link

aaronfranke commented Nov 5, 2018

Don't forget about Typed GDScript (var x : int etc)

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Nov 5, 2018

@aaronfranke It's already mentioned 🙂

  • Optional static typing in GDScript.
    • Does not currently improve performance, but helps write more robust code.
@CereEnder

This comment has been minimized.

Copy link

CereEnder commented Nov 14, 2018

Really excited about those improvements. Excited to see OpenGL2.0 too. Any new about WebGL?

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Nov 14, 2018

Any new about WebGL?

The plan is to remove WebGL 2.0 support and re-add WebGL 1.0 based on the OpenGL ES 2.0 renderer, which is faster and more compatible.

@peterorme

This comment has been minimized.

Copy link

peterorme commented Dec 16, 2018

Are there any updates about targeting single-board computers like the Raspberry Pi in Godot 3.1?

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Jan 2, 2019

@peterorme This will be possible again in 3.1 thanks to the OpenGL ES 2.0 renderer. You will still have to provide an export template for ARMv7 (which you can compile yourself), though. I can't make any guarantees about its performance on SBCs, but give it a try anyway 🙂

@motorsep

This comment has been minimized.

Copy link

motorsep commented Jan 3, 2019

Is there anything in this release for blazing fast PC VR and mobile VR (Oculus Rift/Oculus Go/Quest) ?

@Olm-e

This comment has been minimized.

Copy link

Olm-e commented Jan 3, 2019

@peterorme : it is already working : you can compile godot-master on Raspi3, I've done it and it works with 2D games at least ... ;)
(be sure to not compile Webm as it does crash the compilation, to have > 1Gb of pseudo-swap file, and be patient ;) )

@ZZKJInc

This comment has been minimized.

Copy link

ZZKJInc commented Jan 5, 2019

Still no terrain object. Even though the screenshot provided for 3.1 shows a terrain.

@Jummit

This comment has been minimized.

Copy link

Jummit commented Jan 6, 2019

@ZZKJInc 3d terrain is too high level and would add something most people would not use, which is against Godot's philosophy.
If you want a 3d terrain editor, use this plugin: https://github.com/Zylann/godot_terrain_plugin

@skarmiglione

This comment has been minimized.

Copy link

skarmiglione commented Jan 8, 2019

Hello! where can i see the status about c#?

@uldall

This comment has been minimized.

Copy link

uldall commented Jan 18, 2019

@vini-guerrero

This comment has been minimized.

Copy link

vini-guerrero commented Jan 18, 2019

Are there any tutorials on the websockets feature? I saw the documentation but couldn’t make it work properly yet...

@Olm-e

This comment has been minimized.

Copy link

Olm-e commented Jan 28, 2019

@motorsep : I read "Improved buffer writing performance on Windows and Linux." and could see great improvement in fps on previously crawling scenes, specifically with shadows, now getting 90fps where I had 15 ... :) (on linux and vive openvr)
so yes, some blazing VR is now more possible on PC (still pay attention to your project setup, disabling VSync, hiding 3d window when editing, etc... )

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Apr 7, 2019

I updated this changelog for the current state of 3.2-dev (up to godotengine/godot@3dabe86).

By the way, if you have Tig installed, you can use tig +10000 3.1-stable..master --no-merges to preview all commits that have been done since 3.1's release in a convenient way.

@Antokolos

This comment has been minimized.

Copy link

Antokolos commented Apr 8, 2019

I don't mean to be pressing and all that, but please take a note at this few issues:

  1. Shaders caching: without that feature we'll be experiencing freezes any time new material will appear in the camera
    godotengine/godot#13954
    "Ouch. I don't know why this isn't as high of a priority as literally (in the literal sense) anything else in 3.1. Having your game freeze every time a new object that hasn't been used yet enters the screen is an enormous deal-breaker for most people, and asking people to use hacky solutions that work sometimes is honestly pretty awful." (c)
  2. LOD is not working:
    godotengine/godot#8806
  3. 3D occluders. It is REALLY, REALLY important and MUST HAVE feature for any 3D engine.
    godotengine/godot#9786
    All this features are extremely important for 3D games' optimization. Gamers don't care if the game was created in Godot or in Unreal Engine, but gamers care a lot about 60 FPS. So, please, place all these features (with or without Vulkan, it is really not that important) on the top of the list for 3D in 3.2.
@samvila

This comment has been minimized.

Copy link

samvila commented Apr 10, 2019

How about this?: godotengine/godot#24086

@xcrdev

This comment has been minimized.

Copy link

xcrdev commented Jun 12, 2019

Are there plans to add audiostreamopus back in?

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Jun 12, 2019

@xcrdev See godotengine/godot#19303. Someone needs to step up to do it 🙂

@girng

This comment has been minimized.

Copy link

girng commented Oct 6, 2019

My goodness, awesome!

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.

Any examples of this? This sounds nice.

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Oct 6, 2019

@girng This is used in lawnjelly's smoothing add-on :)

@girng

This comment has been minimized.

Copy link

girng commented Oct 6, 2019

@Calinou nice. Thanks for the link. That's awesome LOL

edit: Wait, shouldn't this be what the core physics engine should do? Or am I missing something lol

@kone9

This comment has been minimized.

Copy link

kone9 commented Oct 6, 2019

Woo son muchas cosas nuevas

@Giakaama

This comment has been minimized.

Copy link

Giakaama commented Oct 8, 2019

Will NOTIFICATION_WM_QUIT_REQUEST will be available on Android ?

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Oct 8, 2019

@Giakaama According to Handling quit requests in the documentation, it should already be available on Android.

Note that pressing the Home button isn't considered to be a quit request, as the application will be merely suspended (instead of killed).

Edit: The MainLoop documentation states that NOTIFICATION_WM_QUIT_REQUEST is only implemented on desktop platforms, which means the documentation page contradicts it. I'll open a pull request to update it accordingly.

@follower

This comment has been minimized.

Copy link

follower commented Oct 9, 2019

Can I suggest a more positive & inclusive wording replace "...when working with artists to make it harder for them to mess things up" in this document?

Perhaps some variation of one of these:

  • "...when working with artists to help prevent inadvertent changes".
  • "...when working with artists to help prevent inadvertent code-related changes".
  • "...when working with artists to help prevent inadvertent non-art-related changes".
  • "...when working with artists to enable a friendlier workflow for them".
  • "...when working with artists to provide them a tool tailored to their needs".
  • "...when working with artists to provide them a tool tailored to their role".

Thanks.

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Oct 9, 2019

@follower I changed it to:

  • This is helpful for education, or when working with artists to help prevent inadvertent changes.
@follower

This comment has been minimized.

Copy link

follower commented Oct 9, 2019

@Calinou Thanks!

@jahd2602

This comment has been minimized.

Copy link

jahd2602 commented Oct 10, 2019

I don't know how to pull request a Gist but there is a typo:
NOIFICATION_APP_PAUSEDNOTIFICATION_APP_PAUSED

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Oct 10, 2019

@jahd2602 Thanks for reporting it. I fixed it 🙂

Even though any gist is a Git repository, there's no way to open pull requests for a gist.

@lancewrath

This comment has been minimized.

Copy link

lancewrath commented Oct 14, 2019

will there be a headless server for mono in 3.2?

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Oct 15, 2019

@lancewrath There are plans to distribute official headless Mono binaries. It should be possible to build them yourself already, see Compiling with Mono in the documentation (use platform=server).

@lancewrath

This comment has been minimized.

Copy link

lancewrath commented Oct 16, 2019

@Calinou Ah thanks i wasn't aware of the server option in the platform var.

I didn;t really see in the Change logs but will the [Export] functionality in C# support support Arrays, i think at the very least the Resource[] and NodePath[] class arrays are a big must IMO.

@Giakaama

This comment has been minimized.

Copy link

Giakaama commented Oct 26, 2019

@Giakaama According to Handling quit requests in the documentation, it should already be available on Android.

Note that pressing the Home button isn't considered to be a quit request, as the application will be merely suspended (instead of killed).

Edit: The MainLoop documentation states that NOTIFICATION_WM_QUIT_REQUEST is only implemented on desktop platforms, which means the documentation page contradicts it. I'll open a pull request to update it accordingly.

Regarding this, So when killing an app on android the NOTIFICATION_WM_QUIT_REQUEST should be called ? On 3.1 doesn't work .

@TheNeedJedi

This comment has been minimized.

Copy link

TheNeedJedi commented Oct 27, 2019

add Terrain Editor 3d!!

@kuroodo

This comment has been minimized.

Copy link

kuroodo commented Nov 6, 2019

Ability to convert a Sprite to a Mesh2D, Polygon2D, CollisionPolygon2D or LightOccluder2D.

Wasn't this added already in 3.1.1? I was definitely using it the other day on 3.1.1.
godotengine/godot#27553

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Nov 6, 2019

@kuroodo It was, but this changelog mentions all changes from Godot 3.1 to 3.2 (not 3.1.1 to 3.2). This is because some changes may only land in point releases, so a linear changelog wouldn't make sense for us.

@paxetgloria

This comment has been minimized.

Copy link

paxetgloria commented Dec 11, 2019

@ZZKJInc 3d terrain is too high level and would add something most people would not use, which is against Godot's philosophy.
If you want a 3d terrain editor, use this plugin: https://github.com/Zylann/godot_terrain_plugin
@Jummit, how can you possibly know that "most people would not use" it?

@Jummit

This comment has been minimized.

Copy link

Jummit commented Dec 11, 2019

I can say for sure that more than 50 percent of Godot users will not use 3D Terrain. This is because Godot is currently mostly used for 2D games. I don't get all the fuss about adding high level features to Godot; being able to add them as addons has no downsides.

Looking back on my old comment, I'll change my oppinion: Replacing the GridMap node with a Terrain node would be great.

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Dec 11, 2019

@Jummit GridMap serves a very different purpose from terrain, as it's more or less a 3D TileMap. Many popular games still use GridMap-like structures today 🙂

@Jummit

This comment has been minimized.

Copy link

Jummit commented Dec 11, 2019

Many popular games still use GridMap-like structures today slightly_smiling_face

Interesting, I didn't know that! I always thought it was a Godot only thing. Can you show some examples?

@lodu44

This comment has been minimized.

Copy link

lodu44 commented Dec 11, 2019

I think so little use 3d, it's precisely after that it does not allow optimization, with the level of distance that are missing and are cruelly lacking.

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Dec 11, 2019

@Jummit Games like Trackmania come to mind here. All official and user-made tracks are made by placing pre-made blocks on a 3D grid (with a system similar to autotiling to handle connections).

@lodu44 LOD and occlusion culling will be implemented in 4.0, as part of the new Vulkan renderer.

@smt923

This comment has been minimized.

Copy link

smt923 commented Dec 14, 2019

I can say for sure that more than 50 percent of Godot users will not use 3D Terrain. This is because Godot is currently mostly used for 2D games. I don't get all the fuss about adding high level features to Godot; being able to add them as addons has no downsides.

you're right about addons, but people probably aren't using Godot for 3D because it's lacking 3D features that other 3D engines have out of the box, it'd be a good idea to make these as easy to use as possible so more people might try Godot, see that it now has feature parity to other 3D engines and start using it for 3D, I've chosen Unity or UE4 over Godot for things purely because Godot doesn't match the terrain, ai and navmesh tools of the other engines

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Dec 19, 2019

@kuroodo Sorry for the late response, but the feature you mentioned was cherry-picked into 3.1.1. This means it's both available in 3.1.1 and the current 3.2 betas.

This particular changelog all tracks changes from 3.1 to 3.2, not just from the latest 3.1 patch release to 3.2.

@ShlomiRex

This comment has been minimized.

Copy link

ShlomiRex commented Jan 17, 2020

amazing! Keep up the good work!

@RichardR01

This comment has been minimized.

Copy link

RichardR01 commented Jan 19, 2020

Has there been any improvements, for 3D, in shadowing and a fix for the fire flies in reflective materials? Also we need FXAA antialiasing, IMO, as MXAA produces artifacts and does not do a good job at removing the jaggies. I get better results having it off.

Shadows produce artifacts depending on the orientation of the light and camera and look pretty bad in general. Also, in the material shaders, for SpatialMaterials, refraction does not work. It makes transparent objects opaque and the scale slider does nothing. (I assume because this is meant for a texture?) On that note, it should not be scale, but IOR for Index of Refraction.

I didn't want to come here to complain but I am finding it hard to get any information on how people deal with these issues, and I feel they need to be brought into the light. If there is no plans on fixing/supporting 3D for Godot, why not just make Godot strictly 2D? If I could help in the development of Godot, I would; but I am just a bad artist who blames his tools (for good reason), and am quite frustrated.

MSAA artifacts (bad aliasing)
https://i.imgur.com/BgQ8EnZ.jpg

Shadow artifacts
https://i.imgur.com/SP0O9sq.jpg

Bad shadowing
https://i.imgur.com/QGU36MG.jpg

Reflected firefly starburst
https://i.imgur.com/wA91Bzs.jpg

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Jan 19, 2020

@RichardR01 There is a FXAA shader available here. It works with both the GLES3 and GLES2 renderers. As for the MSAA artifacts on the screenshot, this seems to be due to screen-space reflections; try disabling them.

Shadows produce artifacts depending on the orientation of the light and camera and look pretty bad in general.

Try disabling contact shadows. These are known to create artifacts and generally decrease performance.

Also, try playing around with the bias values in the light nodes. If your game is based around a camera that never moves or a camera that moves constantly at a high speed (e.g. a racing game), you can set the DirectionalLight depth range to Optimized instead of Stable. This will increase the effective shadow resolution, at the cost of stability when the camera moves.

As for the bad shadow filtering, try decreasing the directional shadow size in the Project Settings. There are known issues with the filtering when the size is set too high.

Finally, the firefly starbursts should be alleviated by increasing the radiance size in the Environment resource.

Also, in the material shaders, for SpatialMaterials, refraction does not work.

Does it work in the Material Testers demo (which is in this repository)? If not, it may be an issue with your graphics hardware. Otherwise, it's likely a configuration issue somewhere in the SpatialMaterial (check the one in the demo).

On that note, it should not be scale, but IOR for Index of Refraction.

We don't claim to be physically accurate, so I'm not sure if that's a good idea 🙂

If the scale doesn't match IOR, it may be possible to change this for 4.0, but we need to see whether it would incur a performance cost.

If there is no plans on fixing/supporting 3D for Godot, why not just make Godot strictly 2D?

We're not flawless, we're work-in-progress. 3D will be much improved in 4.0, but we already consider it to be usable for many projects in 3.x. Godot 3.2 will make it significantly better by improving the asset pipeline.

@ibsantos

This comment has been minimized.

Copy link

ibsantos commented Jan 21, 2020

Any plans to add support for opening encrypted and/or compressed arbitrary files (via File.open_encrypted, File.open_encrypted_with_pass, File.open_compressed)? Currently I think only resources exported by godot are accepted by those methods, otherwise an error = 15 (unrecognized) is returned. There are already some issues on this topic, like #32881 and #28999, for instance.

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Jan 21, 2020

@ibsantos Someone needs to step up to implement this feature 🙂

@emo10001

This comment has been minimized.

Copy link

emo10001 commented Jan 22, 2020

So with the integration of Assimp, does this mean we'll be able to import .X models? It's a supported file type according to the Assimp site. Also, direct importing of blend files? Because that would be awesome!

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Jan 22, 2020

@emo10001 I don't remember the exact list of model formats in Godot's implementation of Assimp. I was definitely able to import MDL, MD2, MD3 and MD5MESH formats at least. I guess it'd be nice to provide a testbed project so the support for various model formats can be checked easily.

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Jan 22, 2020

On another note, this changelog is now merged into Godot 3.2 🎉

Stay tuned for the upcoming Godot 4.0 changelog!

@emo10001

This comment has been minimized.

Copy link

emo10001 commented Jan 27, 2020

@Calinou hey I was just thinking about the Assimp integration with it's focus on FBX. I certainly don't claim to know all the industry buzz, but hasn't there always been issues with FBX due to it being proprietary? Has the Godot team found a way around that? Or has then been some agreement or change to FBX that would allow it?

Thanks!

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Jan 27, 2020

@emo10001 I believe Assimp's FBX support is the fruit of reverse engineering. It doesn't rely on Autodesk's proprietary SDK. In 3.2, we've had an Assimp contributor work on improving Assimp's integration with Godot (and Assimp's FBX support itself).

@eltharionx

This comment has been minimized.

Copy link

eltharionx commented Jan 28, 2020

@Calinou
No mention of this game breaking change with this update from v3.1.2stable to v3.2RC4:

v3.1.2stable
AStar
int get_closest_point ( Vector3 to_position ) const

v3.2RC4
AStar
int get_closest_point ( Vector3 to_position, bool include_disabled=false ) const

With the new default include_disabled=false, and the expected behavior to be defaulted to true... it breaks backward compatibility. Recommend highlighting as potential breaking change in ChangeLog.

@Calinou

This comment has been minimized.

Copy link
Owner Author

Calinou commented Jan 28, 2020

@eltharionx This shouldn't be a breaking change actually per godotengine/godot#32249.

@eltharionx

This comment has been minimized.

Copy link

eltharionx commented Jan 28, 2020

@Calinou Understood that there is a fix for this. I guess it's "breaking" in the sense that one may need to go back into their code and update all their get_closest_point( x ) to get_closest_point( x, true). Specifically, I needed to do this, and only was able to figure this out the long way since there was no mention in it here in this ChangeLog.

@akien-mga

This comment has been minimized.

Copy link

akien-mga commented Jan 28, 2020

@eltharionx Actually you're right, it's not godotengine/godot#32249 which is breaking, but the previous PR that prompted the need for this argument: godotengine/godot#30112.

This is probably fine with false as default value, but it does break compatibility and should be identified as such indeed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.