Godot (game engine)


Godot is a cross-platform, free and open-source game engine released under the permissive MIT license. It was initially developed in Buenos Aires by Argentine software developers Juan Linietsky and Ariel Manzur for several companies in Latin America prior to its public release in 2014. The development environment runs on many platforms, and can export to several more. It is designed to create both 2D and 3D games targeting PC, mobile, web, and virtual, augmented, and mixed reality platforms and can also be used to develop non-game software.

Features

Godot allows video game developers to create both 3D and 2D games using multiple programming languages, such as C++, C# and GDScript. It makes use of a hierarchy of nodes to facilitate the development experience. Classes can be derived from a node type to create more specialized node types that inherit behavior. Nodes are organized inside of "scenes", which are reusable, instantiable, inheritable, and nestable groups of nodes. Nodes are connected by signals, which can transmit data objects. All game resources, including scripts and graphical assets, are saved as part of the computer's file system. This storage solution is intended to facilitate collaboration between game development teams using software version control systems.

Supported platforms

The engine supports deployment to multiple platforms and allows specification of texture compression and resolution settings for each platform. The website provides binaries only for the editor platforms, and exporting projects to other platforms is done within the Godot editor.
The Godot editor, used for creating Godot games, supports the following platforms:
Projects supported for export include:
The Godot engine can be run on consoles, although popular consoles are not officially supported since it is not compatible with the engine's open-source license. Games can be ported to consoles through third-party companies, including W4 Games, a commercial company founded by Godot coders. For CPU architectures, Godot officially supports x86 on all desktop platforms and has official ARM support on macOS, Linux, mobile platforms, and standalone Meta platforms.
Godot also supports a mobile XR port for Meta Quest devices running Horizon OS, allowing developers to create immersive applications directly on the headset without the use of a traditional computer.

Scripting

Godot supports a variety of programming languages for making games, including the integrated language GDScript, C++ and C#. Additionally, the engine includes GDNative, a facility for creating bindings with other languages. Officially-supported GDNative/GDExtension languages include C and C++. Community-supported languages include Rust, Nim, and JavaScript. Visual coding was originally supported by the built-in language VisualScript, designed to be a visual equivalent to GDScript. VisualScript was removed from the core engine in Godot 4.0. Godot games running in the browser can interface with the browser's JavaScript code.
The Godot editor includes a text editor with auto indentation, syntax highlighting and code completion and folding. It also features a debugger with the ability to set breakpoints and program stepping.

GDScript

Godot has its own built-in scripting language, GDScript, a high-level, gradually typed programming language which is syntactically similar to Python. Unlike Python, GDScript is optimized for Godot's scene-based architecture and can specify strict typing of variables. Godot's developers have stated that many alternative third-party scripting languages such as Lua, Python, and Squirrel were tested before deciding that using a custom language allowed for superior optimization and editor integration.
GDScript is a continuously evolving scripting language, and changes and additions to it have been implemented for each major new release of Godot. Typed arrays and typed dictionaries were added in 4.0 and 4.4 respectively. The optional static types allow the C++ back end to apply optimizations that result in notably increased performance; statically typed GDScript has been observed to run more than 40% faster in release builds.
A simple "Hello world" program can be written like so:

func _ready:
print

A simple variable can be written as:

var Hello = 12
var bye = 13

And a constant can be written as:

const HELLO = 12
const BYE = 13

An example of a more complex program that generates the Fibonacci sequence is:

func _ready:
var nterms = 5
print
for i in range:
print
func fibonacci:
if n <= 1:
return n
else:
return fibonacci + fibonacci

Rendering

Godot 3.x's graphics engine uses either OpenGL ES or Vulkan is supported in newer versions; Metal support also exists on Apple platforms. The engine supports normal mapping, specularity, dynamic shadows using shadow maps, baked and dynamic global illumination, and full-screen post-processing effects like bloom, depth of field, high-dynamic-range rendering, and gamma correction. A simplified shader language, similar to GLSL, is also incorporated. Shaders can be used for materials and post-processing. Alternatively, they can be created by manipulating nodes in a visual editor.
Godot also includes a separate 2D graphics engine that can operate independently of the 3D engine, but both can also work at the same time on the same display, so as to make complex mixes between 2D and 3D. The 2D engine supports features such as lights, shadows, shaders, tile sets, parallax scrolling, polygons, animations, physics, and particles. It is also possible to mix 2D and 3D using a 'viewport node'.
To support the UI and 2D Vector graphics assets support, Godot has integrated a 3rd party library, ThorVG.

Other features

Godot contains an animation system with a GUI for skeletal animation, blending, animation trees, morphing, and real-time cutscenes. Almost any variable defined or created on a game entity can be animated. Godot has its own in-house physics engine, and as of Godot 4.x allows third parties to integrate their own physics via GDExtension. In Godot 3.x, the Bullet physics engine is included and used by default. With Godot 4.4, the Jolt Physics engine was added, though not used as the default engine until the release of Godot 4.6.

History

Closed source era (2001–2014)

Juan 'reduz' Linietsky and Ariel 'punto' Manzur co-founded Codenix in 1999, a game development consulting company. As early as 2001, they began work on an engine then code-named "Larvotor" which was licensed to third-party companies in Argentina. Over the course of the following ten years, the engine was renamed to "Legacy", "NG3D", "Larvita" and finally to "Godot". The name "Godot" was chosen in reference to Samuel Beckett's play Waiting for Godot, as it represents the never-ending wish of adding new features in the engine, which would get it closer to an exhaustive product, even though it never would. Linietsky and Manzur joined OKAM and the company worked with a number of studios in the closed-source era including Square Enix. Linietsky indicated that their work was hampered by political and economic instability in Argentina at the time however.

Free and open source era (2014–present)

By 2014 Linietsky was planning on moving away from Argentina, and he released the source code for Godot to the public on GitHub under the MIT License. Godot joined the Software Freedom Conservancy on 4 November 2015. On 22 June 2016, Godot received a $20,000 Mozilla Open Source Support "Mission Partners" award to be used to add WebSockets, WebAssembly and WebGL 2.0 support.
The 3.0 update for Godot involved addressing a long list of desired features requiring a major refactor of the engine that had been commercially impossible while in the closed-source era. With Miguel de Icaza's support, Godot received a $24,000 donation from Microsoft in 2017 to implement C# as a scripting language in Godot. A Patreon was launched, which enabled Linietsky and Verschelde to work on the project full time. The 3.0 version launched in 2018. The 3.1 update added an OpenGL ES 2.0 renderer aimed at mobile hardware, as mobile support for ES 3.0 by manufacturers was then limited.
In 2019 two teams were formed, with Linietsky's team focusing on the Vulkan branch and Verschelde's team covering further updates to the 3.x branch. Linietsky indicated that part of the issue was that the 3.x branch was built with older architectural principles in mind, such as single-core processors. Thus, the intention was to redevelop the core architecture for 4.0 and account for modern principles. In 2020, Godot received a $250,000 Epic Games award to improve graphics rendering and the engine's built-in game development language, GDScript, which was used to pay Linietsky and George Marques for two years while freeing donation money for other purposes. The 4.0 branch released in alpha form in early 2022, and was polished over the course of the year.
That August, Linietsky and several other members of the Godot team established W4 Games to offer commercial services based on the engine, including console ports that cannot be included in its open-source codebase. In November, Godot announced plans to transition from the SFC to its own newly-formed Godot Foundation.
The full release of the 4.0 update with Vulkan support occurred in 2023, as well as the arrival of the Godot engine on the Epic Games Store. The version on Epic is identical to others in terms of both content and licensing, with the storefront simply used as a means of distribution and for updating. However, the.NET/C# support version of the engine is not available on Epic Games Store, nor Itch and Steam as well. In September, Unity Technologies announced major changes to licensing for the Unity engine including the addition of "runtime fees" that would charge users on installation of Unity games. As a result, some developers switched from Unity to Godot, and Re-Logic donated $100,000 to Godot, and further announced that it would be donating $1,000 a month going forward, in the interest of supporting an open-source alternative to Unity. Two years later, Emilio Coppola of the Godot Foundation stated that the amount of contributions "doubled" as a result of the shift.
In 2025, the Godot Foundation released an initial beta of the Godot Asset Store, intended as a replacement to the extant asset library.