After four years of development, the release of the free game engine Godot 4.0 has been published, suitable for creating 2D and 3D games. The engine supports an easy-to-learn scripting language for game logic, a graphical interface for game design, a one-click game deployment system, extensive animation capabilities, and physics simulation, an integrated debugger, and a performance bottleneck analysis system. The source code of the game engine, game design environment, and accompanying development tools (physics engine, audio server, 2D/3D rendering backends, etc.) is distributed under the MIT license.
The source code of the engine was opened in 2014 by OKAM studio after ten years of developing a professional-grade proprietary product that was used to create and publish many games for PC, gaming consoles, and mobile devices. The engine supports all popular desktop and mobile platforms (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), as well as web game development. Ready-to-run binary builds have been created for Linux, Android, Windows, and macOS.
The Godot 4.0 branch includes about 12,000 changes and 7,000 bugs fixed. Around 1,500 people participated in the engine development and documentation writing. Key changes include:
- Two new rendering backends (clustered and mobile) based on the Vulkan graphics API have been introduced, replacing the backends that rendered using OpenGL ES and OpenGL. A compatibility backend based on OpenGL, using a new rendering architecture, has been integrated for older and low-power devices. For dynamic rendering with lower resolution, AMD FSR (FidelityFX Super Resolution) super sampling technology has been implemented, employing spatial scaling and detail reconstruction algorithms to reduce image quality loss when scaling up and converting to a higher resolution. A Direct3D 12-based rendering engine has been implemented, which will improve support for Windows and Xbox platforms.

- The ability to work with the interface in a multi-window mode has been added (various panels and parts of the interface can be detached as separate windows).

- A new user interface editor and a new visual design widget have been added.

- A new theme editor has been added.

- The lighting and shadow management system has been completely rewritten, utilizing real-time global illumination technology SDFGI (Signed Distance Field Global Illumination). The quality of shadow rendering has been significantly improved.

- The GIProbe node used for lighting scenes with reflected light has been replaced with the VoxelGI node, optimized for real-time lighting processing in indoor scenes with small to medium interiors. For low-powered hardware, the option for pre-rendering light and shadows using light maps has been retained, with the GPU now utilized to speed up rendering.

- New rendering optimization techniques have been implemented. Automatic occlusion culling has been added, which dynamically identifies and removes models hidden behind other surfaces to enhance rendering performance and reduce CPU and GPU load.

- A SSIL (Screen Space Indirect Lighting) mode has been introduced to improve rendering quality on high-performance hardware by enhancing the processing of dark areas and indirect lighting. Additionally, more settings for simulating diffuse indirect lighting using the SSAO (Screen Space Ambient Occlusion) technique have been provided, including the ability to select the level of direct light influence.
- Realistic illumination units have been proposed, enabling the adjustment of light intensity and utilizing standard camera controls, such as aperture, shutter speed, and ISO, to manage the brightness of the final scene.
- New tools for level editing for 2D games have been added. Radical changes have been made to the 2D game development process. A new tilemap editor has been introduced, featuring support for layers, landscape auto-filling, randomized placement of plants, rocks, and various objects, and flexible object selection. The handling of tilemaps and tileset fragment sets for map construction has been unified. Automatic expansion of fragments in the set has been ensured to eliminate gaps between adjacent fragments. A new object placement function in the scene has been added, which can be used, for example, to place characters in the tile grid cells.
- In 2D rendering, the capability to use canvas groups has been implemented, allowing the mixing of overlapping canvas elements. For example, several sprites can be combined and blended with a background as if these sprites were a single element. The Clip Children property has been added, enabling the use of any 2D element as a mask. The 2D engine also includes an option to employ the MSAA (Multisample Anti-Aliasing) method to enhance image quality and create smoother edges.

- Lighting and shadow handling in 2D games has been improved. Performance has been significantly enhanced when using multiple light sources. The ability to simulate three-dimensionality through adjusting light levels on normal maps has been added, along with the creation of visual effects such as long shadows, halos, and sharp outlines.

- A volumetric fog effect has been introduced, utilizing a temporal reprojection technique to achieve a realistic appearance and high performance.

- Cloud shaders have been added, allowing for the dynamic generation of clouds that change in real-time.

- Support for "decals" has been implemented, a method for projecting material onto surfaces.
- Effects based on particles have been added for the entire game space, leveraging the GPU and supporting attractors, collisions, trails, and emitters.
- The interface capabilities for visually editing shaders have been enhanced.

- The shader language has been expanded to include support for structures, preprocessor macros, shader substitution (include operator), unified arrays, and the use of "varying" for transferring data from the fragment handler to the lighting handler.
- The ability to apply compute shaders that use the GPU to accelerate algorithms has been added.
- The GDScript scripting language has improved its static typing system, introduced new syntax for property definitions, proposed the keywords await and super, added map/reduce operations, implemented a new annotation system, and allowed the use of unicode characters in variable names and function names. A tool for automatic documentation generation has been added. Performance and stability of the GDScript runtime have been enhanced. The development environment now allows displaying multiple errors at once and has introduced new warnings for typical issues.

- The capabilities for game logic development in C# have been expanded. Support for .NET 6 and C# 10 has been added. 64-bit types are used for scalar values. Many APIs have been transitioned from int and float types to long and double. The ability to define signals in the form of C# events has been provided. Development of GDExtensions in C# has become possible.
- Experimental support for GDExtensions has been added, which can be used to extend the engine's capabilities without the need to recompile or alter the code.
- A default custom physics engine, Godot Physics, has been proposed, optimized for tasks typical of computer games, and brought to feature parity with the previously used Bullet engine (for instance, Godot Physics includes new collision shape handling, heightmap support, and the ability to use SoftBody nodes for simulating clothing). Performance optimizations have been made, and multithreading has been expanded to distribute the load across different CPU cores during physics simulations in 2D and 3D environments. Many simulation issues have been resolved.
- A new text rendering system has been proposed that provides greater control over text clipping and wrapping while ensuring high clarity at any screen resolution.
- Tools for localization and translation work have been expanded.
- A separate dialog for importing 2D and 3D resources has been added, supporting preview and adjustment of settings for the imported scene, materials, and physical properties.

- New widgets have been added to the editor, such as an undo panel and a new color selection and palette update dialog.

- The inspection interface has been updated, control panel along with the scene and script editor. Syntax highlighting has been improved, the ability to display multiple cursors has been added, and tools for editing JSON and YAML formats have been provided.
- The animation editor has been enhanced, now supporting shape blending and improved processes based on Bézier curves. The code for 3D animation has been rewritten to support compression for reduced memory consumption. The system for blending animations and creating transition effects has been updated. There are expanded capabilities for creating complex animations. Animation libraries have been introduced for storing and reusing created animations.

- A movie-making mode has been added, performing frame-by-frame rendering of the scene at maximum quality for creating cutscenes and recording videos.
- Support for 3D headsets and virtual reality platforms has been expanded. The main engine now includes support for the OpenXR standard, which defines a universal API for creating virtual and augmented reality applications. Support for all popular 3D headsets, including SteamVR, Oculus, and Monado, has been provided on Windows and Linux.
- The stability of the subsystem for organizing network play has been enhanced, and the process of developing multiplayer games has been simplified.
- The sound system capabilities have been expanded, with polyphony support integrated, an API for speech synthesis added, and the ability to loop sound implemented.
- The Godot interface can now run on Android tablets and in web browsers.

- A new game building system has been added for various CPU architectures. For example, you can now build for Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook, and Asahi Linux.
- Changes that break compatibility have been made to the API. Transitioning from Godot 3.x to Godot 4.0 will require reworking applications, but a long support cycle for the Godot 3.x branch will be provided, depending on user demand for the old API.

Source: opennet.ru

















