For the purpose of this question, a "2D game engine" is defined as a framework for managing game state and behavior, integrated with 2D-specific middleware (at minimum, a rendering engine). This is based on Wikipedia's definition of a game engine, specialized to 2D while taking note of the second paragraph:
A game engine is the software, i.e. some algorithms, solely responsible for the game mechanics and is strictly speaking not the rendering engine. Like e.g. the physics engine, the rendering engine is just middleware. The rendering engine is responsible for the rendering or rather 3D rendering and not for the game mechanics.
Among other things, qualifying engines do not require an integrated development environment, any sort of visual editing or compositing of game assets, or a physics engine. Likewise, a high-level tool which allows assembly of 2D games from assets fits even if it has no coding interface. This definition is intentionally broad and inclusive, to match the scope of the question itself: other questions can satisfy more specific needs, while this one serves as a comprehensive summary and introduction.
|87 Recommended Products||Languages||Desktop targets||Mobile targets|
|#1 LÖVE· · ·||Lua(LuaJIT), C++, C||Windows; OSX; Linux||Android; iOS|
|#2 Godot· · ·||C++; GDScript||Windows; OSX; Linux; HTML5||iOS, Android, BB10|
|#3 libGDX· · ·||Java||Windows; OSX; Linux||iOS; Android; BlackBerry|
|#4 Monkey X· · ·||Monkey X||Windows; OSX; Linux||iOS; Android; WP|
|#5 Gideros· · ·||Lua||none||iOS; Android|