Recs.
Updated
Godot is a free, open-source, and MIT licensed game development environment for 2D and 3D games.
SpecsUpdate
Pros
Pro Free and open source
Godot is licensed under MIT license. Anyone can grab the source from https://github.com/godotengine/godot, and compile the engine themselves.
Pro Friendly towards Version Control Systems
The engine is build not only to support version control but to really use it. Scene files for example which usually get compiled into some sort of unreadable data stay in a text format - that way you can actually see your changes in a version control system like Git.
Pro Easy to learn scripting language
Godot has their own scripting language called GDscript. The scripting language is easy to learn with python-like format, but it is not python. More like a mix of Javascript, PHP, C++. It's very powerful, easy to learn, and it's free of unnecessary things because it's designed for this purpose.
It can be used to add custom behaviors to any object by extending it with scripting, using the built-in editor with syntax highlighting and code completion.
A built-in debugger with breakpoints and stepping can be used and graphs for possible bottlenecks can be checked.
Pro Active development
This engine barely released one year ago has more than 1000 forks on github and about 100 developers. Not only that just a bit of browsing trough issues you will quickly find out the dev community loves new esp free technology and does not shy away from completely rewriting parts of the engine. The audio engine is being completely rewritten to use threads and so forth.
Pro Simple and readable codebase
The engine's source code is easy to read and understand with a self-documenting approach to code design. You don't have to wait months or years for other people to fix an engine bug that is important to your game. Often times, you can spend an hour or two of your own time to fix whatever problems you encounter yourself.
Pro Internationalization of the editor
You can change the language shown in menus - Godot translations.
Pro Built-in documentation linked to the internal ScriptEditor
The editor has a fully searchable index of class API documentation for everything the engine offers (NOT just a web interface). You can easily open the documentation for any class by Ctrl-clicking the class's name in the in-engine text editor for scripts.
Pro Easily expanded scripting system
With 3.0's addition of NativeScript and PluginScript via GDNative, developers can easily define bindings for new scripting languages. In addition to the primarily supported C++, GDScript, VisualScript, and C# languages, the community has contributed D, Nim, and Python as well with more on the way.
Pro Under constant development
This engine barely released one year ago has more than 1000 forks on github and about 100 developers. Not only that just a bit of browsing trough issues you will quickly find out the dev community loves new esp free technology and does not shy away from completely rewriting parts of the engine. The audio engine is being completely rewritten to use threads and so forth.
Cons
Con Primarily supports own language (GD Script)
Although C# is also supported by Godot, it is only supported by a separate version, and Mono must be downloaded separately. While GDScript is very accessible, and if you know Python you'll pick it up fast, having to learn a new language to fully make use of the platform can be a bit discouraging. And for those learning to code as well as learning Godot for the first time, many would rather learn a language they can 'take with them' when they explore other platforms in the future.
Con Strange terminology at its base
Scenes can be made up of other scenes. That makes some sense. But even the smallest object (or prefab or asset) in a scene -- such as that spoon on the table or the marble on the floor -- is still called a scene... except when it's called a node. This is a bit odd for those coming from other engines. With all the great decisions behind the basic design of this engine, the choice of this term from all the potential other terms out there seems really out of place and only serves as a constant reminder that not everything about Godot is great.
Con No console targets
Given that you can target both desktops and consoles with the same code base in other engines, the lack of support for consoles in Godot is pretty hard to get past if targeting desktops for a game. But asking for an open-source engine to target consoles is probably too much to ask. But it would be interesting to see some legacy consoles targeted even if current ones cannot be.
Con Difficult to optimize
Godot has an OOP architecture. Everything is an object internally and data is spread among many classes, thus it's difficult to optimize (i.e. not cache friendly, difficuly to vectorize or paralellize, etc).
Read about "Data Oriented Design" for more info about the problems and solutions.
Con GDScript is quite immature language
GDScript is copy of python and the real problem is, it is not python. Which means it cannot have all the power and new features that is available in Python or other programming language.
It does have some good features but it is not good enough for what you need if you want to deep dive into game development. You can just feel that by the godot team is solving that matter by supporting mono version. Because C# is popular in other game engine and it contains all the new features that is available from new programming language.
If i give you very simple example for why GDScript is immature, GDScript does not support asynchronous programming. Which is very efficient for performance of your game.
You may mention about multi-threading because asynchronous programming is one way of multi-threading. However If you try that in Godot, you cannot multi-threading where you want to implement asynchronous system. For example, Autoload (Fake singleton) where you want to manage data in real time. Autoload is not real singleton. It is not a separated thread that manage data. Therefore everything is synchronous in autoload. Even though you create new thread from Autoload script, your game will just stop and wait for your thread to finish its task...
Con Godot 3/4 split
The recent release of Godot 4 brings new features, but isn't yet fully documented, and performance may not be as optimized.