godot/CHANGELOG.md

25 KiB
Raw Blame History

Changelog

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

The format is based on Keep a Changelog.

Unreleased

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.
  • 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 return statement,
    • Warnings can be disabled in the Project Settings or by writing special comments.
  • GDScript keyword class_name to 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 server platform 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() and max() to return the smallest and largest value respectively.
  • Dictionary method get(key[, default]) where default is 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() and get_audio_driver_count() to query audio driver information.
    • get_video_driver_count() and get_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 the TCP_NODELAY option.
  • 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 .escn scenes has been added for use with the new Blender exporter.
  • It is now possible to scale an OBJ mesh when importing.
  • popup_closed signal for ColorPickerButton.
  • 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 TileMode is 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.
  • GROW_DIRECTION_BOTH for 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() and File.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.
  • editor and standalone feature 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: Readded 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 use 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 is GDScript 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 a will be initialized to 0.
  • Named enums in GDScript no longer create script constants.
    • This means enum Name { VALUE } must now be accessed with Name.VALUE instead of VALUE.
  • Cyclic references to other scripts with preload() are no longer allowed.
    • load() should be used in at least one of the scripts instead.
  • switch, case and do are 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.dll with 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_finished signal 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_s and libstdc++ are now linked statically for better Linux binary portability.
  • The FPS cap set by force_fps in 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-math flag 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 \n and \t are 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 v member now correctly sets the s member.
  • 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 .import directory, 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 match keyword.
    • $ shorthand for get_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).
  • 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.
    • Community bindings for D, Nim and Python are available.
  • 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 .dmg disk 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=yes to the SCons command line.
      • Produces faster and sometimes smaller binaries.
      • Currently only supported with GCC and MSVC.
    • Added a progress percentage when compiling Godot.
    • .zip archives 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.cfg to project.godot.
    • This allows users to open a project by double-clicking the file if Godot is associated to .godot files.
  • Some methods from the OS singleton were moved to the new Engine singleton.
  • Switched from GLEW to GLAD for OpenGL wrapping.
  • Changed the SCons build flag for simple logs (colored=yesverbose=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

  • opacity and self_opacity are replaced by modulate and self_modulate in 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.