Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[3.1] - 2019-03-13
Added
- OpenGL ES 2.0 renderer.
- Visual shader editor.
- New PBR output nodes.
- Conversion between Vector3 and scalar types is now automatic.
- Ability to create custom nodes via scripting.
- Ports can now be previewed.
- 3D soft body physics.
- 3D ragdoll system.
- Constructive solid geometry in 3D.
- 2D meshes and skeletal deformation.
- Various improvements to KinematicBody2D.
- Support for snapping the body to the floor.
- Support for RayCast shapes in kinematic bodies.
- Support for synchronizing kinematic movement to physics, avoiding an one-frame delay.
- WebSockets support using libwebsockets.
- UPnP support using MiniUPnP.
- Revamped inspector.
- Improved visualization and editing of numeric properties.
- Vector and matrix types can now be edited directly (no pop-ups).
- Subresources can now be edited directly within the same inspector.
- Layer names can now be displayed in the inspector.
- Proper editing of arrays and dictionaries.
- Ability to reset any property to its default value.
- Improved animation editor.
- Simpler, less cluttered layout.
- New Bezier, Audio and Animation tracks.
- Several key types can be previewed directly in the track editor.
- Tracks can now be grouped and filtered on a per-node basis.
- Copying and pasting tracks between animations is now possible.
- New Capture mode to blend from a node's current value to the first key in a track.
- Improved animation tree and new state machine.
- More visual feedback in the blend tree editor.
- 1D and 2D blend spaces are now supported.
- Ability to write custom blending logic.
- Support for root motion.
- New FileSystem dock.
- Unified view of folders and files in the same panel.
- Files can now be marked as favorites, not only folders.
- Files now have icons representing their type, or thumbnail previews when relevant.
- New search field to filter entries in the tree.
- OpenSimplexNoise and NoiseTexture resources.
- Optional static typing in GDScript.
- Does not currently improve performance, but helps write more robust code.
- Warning system in GDScript.
- Reports potential code issues such as:
- unused variables,
- standalone expressions,
- discarded return values from functions,
- unreachable code after a
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
PopupMenu
s.
- 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.
- Support for audio capture from microphones.
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=yes
→ verbose=no
).
- The HTML5 platform now uses WebGL 2.0 (instead of 1.0).
- Redesigned the Godot logo to be more legible at small sizes.
Deprecated
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.