Godot is a cross-platform, free and open-source game engine released under the MIT license. It was initially developed by Argentine software developers Juan Linietsky and Ariel Manzur[5] for several companies in Latin America prior to its public release.[6] The development environment runs on multiple operating systems including Linux, BSDs, macOS, and Microsoft Windows. It is designed to create both 2D and 3D games targeting PC, mobile, and web platforms. It can also been used to create non game software, including editors.
Features
Godot aims to offer a fully integrated game development environment. It allows developers to create a game, needing no other tools beyond those used for content creation (visual assets, music, etc.). The engine's architecture is built around the concept of a tree of "nodes". Nodes are organized inside of "scenes", which are reusable, instanceable, inheritable, and nestable groups of nodes. All game resources, including scripts and graphical assets, are saved as part of the computer's file system (rather than in a database). This storage solution is intended to facilitate collaboration between game development teams using software version control systems.[7]
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:
- Desktop platforms Linux, macOS, and Windows, distributed on the website, on Steam, and on Itch.[8][9][10] BSD is also supported, but must be compiled manually.[11]
- Web platform HTML5, WebAssembly with the web editor.[12]
- Android phones and tablets (experimental, available as of Godot 3.5 beta 3).[13]
The engine supports exporting projects to many more platforms, including all of the editor platforms. Currently supported platforms as of Godot 3.4.4[2] are:
- Mobile platforms Android, iOS
- Desktop platforms Linux, macOS, Microsoft Windows (Universal Windows Platform), BSD (must be compiled manually[11])
- Web platform HTML5, WebAssembly.[14]
- Virtual/Extended reality platforms HTC Vive, Valve Index, Oculus Rift, Oculus Go, Oculus Quest, all Microsoft MR headsets, Apple's ARKit and many more.[4]
Even though the Godot engine can be run on consoles, Godot does not support it officially as it is an open-source project rather than a licensed company and they cannot publish platform-specific code under open-source license. However, it is still possible to port games to consoles thanks to services provided by third-party companies.[15]
For CPU architectures, Godot officially supports x86 on all desktop platforms (both 32-bit and 64-bit where available) and has official ARM support on macOS, mobile platforms, and standalone Oculus platforms (both 32-bit and 64-bit where available). The web platform uses 32-bit WebAssembly. Support for ARM, RISC-V, and PowerPC Linux is unofficial and experimental.
Scripting
Godot supports a variety of programming languages for making games, including the integrated language GDScript, C++[18] and C#. Additionally, the engine includes GDNative, a facility for creating bindings with other languages. Officially-supported GDNative languages include C and C++.[19] Community-supported languages include Rust, Nim, JavaScript, Haskell, Clojure, Swift, and D.[20] Visual coding is also supported, via the built-in language VisualScript, designed to be a visual equivalent to GDScript.[21]
The Godot editor includes a text editor with auto indentation, syntax highlighting and code completion. It also features a debugger with the ability to set breakpoints and program stepping.
GDScript
Godot has its own built-in scripting language, GDScript,[22] a high-level, dynamically 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. In version 4.0, a new feature called Typed array[23] was implemented on GDScript. This allows users to easily change a regular array to typed and vice-versa without changing much code.[22]
A simple "Hello world" program can be written like so:
More complex programs, such as this one generating a Fibonacci sequence, are also possible:
Rendering
Godot's graphics engine uses OpenGL ES 3.0 for all supported platforms; otherwise, OpenGL ES 2.0 is used. Future support for Vulkan is being developed, that also includes the possibility of support for Metal using MoltenVK.[24] The engine supports normal mapping, specularity, dynamic shadows using shadow maps, baked and dynamic Global Illumination, and full-screen post-processing effects like bloom, DOF, HDR, 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. 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'.
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.[25] The engine uses Bullet for 3D physics simulation.[26]
Additional features include:
- Performance analysis graphs
- Light baking
- Multithreading
- Plugins system
- Render targets
- Video playback using the Theora codec
- Audio playback of Ogg Vorbis, MP3 and WAV codecs
- Particle system
- Texture import/export/compress pipeline
- Navmesh support
- Graphical user interface
- Keyboard, mouse, gamepad and touchscreen support
nice
ReplyDelete