Recs.
Updated
Godot is a free, open-source, and MIT licensed game development environment for 2D and 3D games.
SpecsUpdate
Pros
Pro Fully dedicated 2D engine, no hacks
Godot has a mature 2D engine with many features used by modern 2D games.
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.
Pro Free and open source
Godot is licensed under MIT license. Anyone can grab the source from here, and compile the engine themselves.
Pro Editor and runtime are fully cross-platform
You can run Godot on all 3 major operating systems (Windows/Mac/Linux) and build your game to all available platforms from each without any platform-specific work needed. All platforms including Linux are supported first class.
Pro The list of supported languages is growing
Officially, Godot supported languages for now will be GDScript, C#(Mono), VisualScript and C++.
Pro Fun to use
An important aspect that can't be grasped without using the engine for a few days. The Interface is evolving nicely and making games is just fun.
Pro Easy to learn scripting language
Godot has their own scripting language called GDScript. The scripting language is easy to learn with Python-like syntax, but it is not Python. It's very powerful, easy to learn, and it's free of unnecessary things because it was custom built for optimized integration with the Godot Engine.
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 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 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 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 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.
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 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.
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 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 built-in way to import atlases
Godot does not have an easy and automatic way to import atlases created by other tools. However, there are plugins that can be used to import atlases from other engines.
Con 2DPhysics is weak compared to Box2d
Box2d has much more features.
Con NoAdmob or other AdNetwork support
Godot has no native support for implementing advertisements into your game.
Con Hard for a Unity user
Coming from a Unity background, Godot engine is hard.
Recommendations
Comments
Flagged Pros + Cons
Pro Runs on Linux
Not many game engines and especially not high end ones support Linux.
Pro Multi-platform deploy
Deploy games on desktop (Windows/OS X/Linux), mobile (iOS/Android/BlackBerry), and web (HTML5 via Emscripten).
Con Self-designed scripting language
You have to learn a new scripting language to use Godot. It's not hard to do so but it seems strange to use a language that's only used for this engine instead of implementing a more popular one such as JavaScript or Lua.
Out of Date Pros + Cons
Con Evolving bad documentation
The documentation is poorly written, has very few examples of real application, and even fewer design guidelines about how to program a game in the engine. Though it has gotten better starting from version 3.0.
Con Tileset management could be more efficient
The tileset creation and management is lacking common features found in more developed tileset managers. However, it features support for Tiled - the only downside being that it is an external program.
Con OSX app is a mess
Instead of one contained folder/file with an icon per normal it is a mess of files which is not at all suitable or distributable without further work after every compilation.
Con Many bugs
Due to the quite small community and dev team, the editor has plenty of built-in bugs.
Con Poor documentation
The documentation has been rather lacking in the past. It has gotten better but it's not quite there yet still.