Recs.
Updated
Godot is free (libre), open source, MIT license, no royalties, 2D, 3D game engine full-featured. You can make any kind of complex games.
SpecsUpdate
Pros
Pro Exports to multiple platforms
Supports Windows/Linux/OSX, Android/iOS/HTML5 and game consoles via third-party companies (3DS/PS Vita/Wii U/Xbox/PS4).
Pro Overall very easy to use
Granted, some buttons and features may be a little hard to find, but that is a problem that is present in almost all feature-packed software, and Godot engine is far from the hardest to understand game engine.
The user interface feels soft to the eyes, and many things can be intuitively figured out. The developers are also working hard to overhaul the API, and make it even more user friendly, with visual scripting planed for the near future.
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 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 Built-in physics
Add physics to 2D and 3D scenes, through rigid and static bodies, characters, raycasts, vehicles and more.
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 Object oriented
The philosophy behind everything, from scenes to scripts is object oriented.
Pro Unified game editor interface
All the game developing work is done inside one program: the engine editor. This feature is something only high-end engines have. Even the scripting is done in the same program. No need for Eclipse or other front-end editors.
Scene management, animation, scripting, and much more can be done in the same application, so you need only media editors and Godot to make games.
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 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 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 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 Low amount of tutorials and documentation
There are tutorials and there is also a documentation, but as a novice you might wish there were more.
Con Users are forced to use Github for reporting bugs and suggesting features
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 It is not qualified to be ranked first
It has abandoned bullet to use its own poor physical and graphics engine, poor node system, and poor support for C#. the Vulkan is very immature, and 4.0 contains more bugs, leaving only the advantage of open source.
They do not have 2DIK or particle collisions, which has a significant impact on the development of 2D games.
Because liquid cannot splash onto the ground, the wrist cannot naturally bend with the mouse position.
You have to write my own code, which undoubtedly increases the workload.
They do not support direct export of console games, and they must hire a third-party company at a high price.
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.
To give a 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 Very bad documentation
The documentation is poorly written, and has very few examples of real application and even fewer design guidelines about how to program a game in the engine.
Con Primarily supports own proprietary language (GD Script)
While it's 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 Most of the existing examples are hard to open, and find out what causes that
Con Won't work on very old computers
Computers with OpenGL inferior to 3.3 won't be supported anymore on Godot 3.0 and superior, this means all computers that are about more than 10 years old.
While this may not seem that big of a deal for a 3D engine the 2D counterpart can work fairly easily on older computers without sweating a fret and is so almost exclusively a maintenance issue that could be altogether avoided.
Recommendations
Comments
Flagged Pros + Cons
Pro Scene Based editing
Godot gives you the ability to create scenes to make your life easier, with reusable objects and things you want to incorporate in your games. This makes the game making processvery streamlined and organized.
Pro Doesn't need to be installed into the system
Godot is very portable I can download the file from my website then put it on a USB and run it on my other Computer without any troublesome errors about Installing the software
Pro Scene based editing
Godot gives you the ability to create scenes to make your life easier, with reusable objects and things you want to incorporate in your games. This makes the game making processvery streamlined and organized.
Pro Unified solution, allowing to use single application for everything
Scene management, animation, scripting and many more can be done in the same application, so you need only media editors and Godot to make games.
Out of Date Pros + Cons
Pro The list of supported languages is growing
Officially, Godot supported languages for now will be GDScript, C#(Mono), VisualScript and C++.
Pro Godot4 released but it is still just a best toy level of software
There are successful games that is built with godot however you will find they are quite far away from well-made games in system level. The main problem is Godot itself is just a really good toy at the moment. That's what makes people love it. But you will face many problem as you develop your game further.
GDScript is good python copy but just a toy language that only works in Godot and does not contain good features of other programming language.
The node system is great. But the bridge(Autoload) is just not right. Autoload is not a real singletone.they just keeping some node from the launch. So everything is synchronous at the end.
Con False positive
Windows .exe exports are really hated by antivirus software, and often come out as false positives.
This is probably due to the upx .exe compression. You could try to unupx the executable to 24+ MB.
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.
Con Not so good 3D game engine
Although the 3D game engine in Godot provides marvelous tools, it is incapable of producing reflection materials, or proper metal PBR. The engine also tends to get bloated incredibly easily.
*note: the rendering engine is supposed to be rewritten some time in the future to use Vulkan and fix these issues.
Con Slow built-in physics
In 3D, or through a GD scipt, physics run quite slowly in Godot (have a considerable impact on frame rate). However, the devs are working on the big 3.0 update for 3D, which should be finished in a month or two, and you can always code in C++ in Godot (if you know how). C# is also being implemented.
Con NoAdmob or other AdNetwork support
Godot has no native support for implementing advertisements into your game.