diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a0310f904b9..b111eca07ded 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,251 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). +## [Unreleased] + +### Added + +- OpenGL ES 2.0 renderer. +- [Visual shader editor.](https://godotengine.org/article/visual-shader-editor-back) + - 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.](https://godotengine.org/article/soft-body) +- [3D ragdoll system.](https://godotengine.org/article/godot-ragdoll-system) +- [Constructive solid geometry in 3D.](https://godotengine.org/article/godot-gets-csg-support) +- [2D meshes and skeletal deformation.](https://godotengine.org/article/godot-gets-2d-skeletal-deform) +- [Various improvements to KinematicBody2D.](https://godotengine.org/article/godot-31-will-get-many-improvements-kinematicbody) + - 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](https://libwebsockets.org/). +- [Revamped inspector.](https://godotengine.org/article/godot-gets-new-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.](https://godotengine.org/article/godot-gets-brand-new-animation-editor-cinematic-support) + - 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.](https://godotengine.org/article/godot-gets-new-animation-tree-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.](https://godotengine.org/article/godot-gets-new-filesystem-dock-3-1) + - 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.](https://godotengine.org/article/simplex-noise-lands-godot-31) +- [Optional static typing in GDScript.](https://godotengine.org/article/optional-typing-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.](http://docs.godotengine.org/en/latest/getting_started/step_by_step/scripting_continued.html#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. +- `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](https://godotengine.org/article/why-we-broke-your-pr), resulting in increased engine performance. +- The [mbedtls](https://tls.mbed.org/) library is now used instead of OpenSSL. +- 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. +- 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. +- Named enums in GDScript no longer create script constants. + - This means `enum Name { VALUE }` must now be accessed with `Name.VALUE` instead of `VALUE`. +- 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 + +- **macOS:** Support for 32-bit and fat binaries. + +### Fixed + +- [`move_and_slide()` now behaves differently at low velocities](https://github.com/godotengine/godot/issues/21683), 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. +- 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. +- 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 @@ -137,4 +382,5 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). - HTML5 export using asm.js. - Only WebAssembly is supported now, since all browsers supporting WebGL 2.0 also support WebAssembly. +[Unreleased]: https://github.com/godotengine/godot/compare/3.0-stable...HEAD [3.0]: https://github.com/godotengine/godot/compare/2.1-stable...3.0-stable