There are many free 2D game development environments. Some are whole languages, some are media libraries, some are engines, and some are editors with integrated engines. Which ones are most helpful for game prototyping? How important are previous programming experience and target game style when choosing? Analyzing a zillion similar tools is probably a little silly (see some advice on the topic), but let's take a crack at writing the same minigame in a bunch of them anyway to see if that answers any questions…
12
The test minigame, overall | LÖVE |
APIs | LÖVE, Unity |
black boxmovement and response modules (
behaviors,
actuators,and the like) seems harder than writing code from scratch. Built-in modules for more complicated or generic things like physics, particles, collisions, and path-finding are more interesting.
Infinitemap: the only limit on map size is that the
current positionvariable might overflow.
friction.
Play the Construct 2 version of the minigame
LÖVE (love2d) (engine) is simple, small, and fast. Lua was easy to work with, and the minigame ran smoothly. Writing the minigame went quickly because there were no cameras, maps, or game entities to think about. On the flip side, games that need maps, generalized collision detection, and sprite animations might take more work in LÖVE than in an integrated editor. More… |
|
Game Editor (engine, editor) has fast actor creation and destruction times and built-in collision detection, but the limited scripting language and GUI-dependent script editing were inconvenient. It's cool that Game Editor can make games for iOS and Android, but it's not too important for prototyping. I'd rather have a standard, widely-used scripting language. More… |
|
Novashell (engine, editor) has some cool features, but only a few of them were helpful when making such a simple game. Brains, profiles, multiple maps, cameras, and the |
|
Unity (3D engine, editor) is noticeably more polished than Game Editor or Novashell across API, documentation, engine, and editor. It's probably the most popular tool I've tested so far, and that is definitely an advantage. On the other hand, it has many more features than needed for this minigame, it's closed source, and it has a comparatively huge install size. Also, setting up a 2D game in 3D space took a little extra work, but that's pretty much just a one-time cost. More… |
|
Blender (3D engine, editor) worked well for this minigame. The API is more compact than Unity's, but not as polished. Despite some rough edges in the engine and documentation, porting the minigame to Blender was pretty easy, and the end result runs smoothly. At least within the limited scope of the minigame, Blender felt about as capable as Unity. More… |
|
Scratch (engine, editor) differs a bit from the previous tools on the list because it's designed for educational use. Accordingly it has a very small vocabulary, even intentionally lacking procedures (edit: Scratch 2.0 beta includes procedures). This simplicity means that some of the minigame features like the infinite playfield required entirely new solutions. Despite the purely graphical programming language, the code for the Scratch version of the game is in some places more concise and prettier than the other versions. But for prototyping, faster solutions are probably preferable to prettier solutions, so I'll leave Scratch to the educational users. More… |
|
GameMaker (for Windows) (engine, editor) likely ranks as one of the most commonly recommended 2D game creation tools. Like Game Editor, GameMaker offers both point-and-click programming as well as textual scripting, but GameMaker has a prettier interface. For example GameMaker shows a folder view of assets, objects, maps, and scripts, while Game Editor hides these various items in nested dialog windows. Also like Game Editor, GameMaker uses a custom scripting language that feels limited compared to |
|
GameMaker: Studio (free) (engine, editor) trades some of the limitations of the old Windows GameMaker Lite version for a different set of restrictions. Thanks to the minigame's simplicity, the limitations on number of sprites, objects, and scripts didn't cause trouble. For more complicated games the limitations could easily be a deal-breaker. More… |
|
Construct 2 (engine, editor) has similar features to GameMaker and Game Editor, so porting the minigame wasn't too much trouble, but the drag-and-drop script editing slowed me down. I like the focus on HTML5, and the exported game seems to work well. More… |
|
Stencyl (engine, editor) expands on the snapping block programming style of Scratch with a wider range of block types plus two ways to package complicated block stacks into reusable pieces (Behaviors and Custom blocks). Stencyl's drag-and-drop programming has a decent number of features, and the free version doesn't restrict complexity like GameMaker: Studio or Construct 2. Even so I still prefer textual programming. Stencyl does offer textual (ActionScript 3.0) scripting, but I haven't yet compared that to libraries like Flixel or Flashpunk. The exported SWF works fine under Ubuntu or the stand-alone Flash Player 10.3, but in recent versions of the Flash plug-in for Windows 7 Firefox, the arrow keys send lots of extra |
|
The Games Factory 2 (Newgrounds Edition) (engine, editor) feels quite similar to Construct 2 (not entirely by coincidence), so most of the porting was straightforward copying. Some small complications arose from the lack of sub-events and hash tables and the need to use a special |
|
MonoGame (engine) is a cross-platform, open source implementation of XNA Game Studio. MonoGame uses a popular programming language (C#), meaning that suites like Visual Studio and Xamarin Studio provide advanced IDE features for it. Now that I've seen how these features work, I'm tempted to go back and take a closer look at the other IDEs. As for the engine itself, MonoGame might not be quite as friendly as LÖVE or Unity, but it has many of the same advantages: speed, flexibility, and an organized API. More… |
game enginespage. Does not include a comparison table.
Submit a comment or correction
Tool | Language | Distribution platforms | Open source | Categories | Version tested | Testing OS | Minimum install size (Windows, approx., non-essential files deleted) |
---|---|---|---|---|---|---|---|
LÖVE | Lua | Windows, Linux, Mac | Y | engine | 0.7.2 | Ubuntu Oneiric (amd64) | < 5 MB |
Game Editor | C-like or GUI scripting | Windows, Linux, Mac, Android, iOS | Y | Integrated: engine, map editor | 1.4.0 | Ubuntu Oneiric (i386 libs, amd64 kernel) | < 5 MB |
Novashell | Lua | Windows, Linux (not maintained), Mac | Y | Integrated: engine, map editor | 22 Oct., 2011 Windows build | Windows 7 (32-bit) | < 5 MB |
Unity | JavaScript-like, C#, or Boo | Windows, Mac, Android, iOS, and more | N | Integrated: engine, 3D map editor | 3.5.2f2 | Windows 7 (32-bit) | > 350 MB |
Blender | Python or GUI scripting | Windows, Linux, Mac | Y | Integrated: engine, 3D map editor, 3D modeler | 2.62, 2.63a, 2.64 | Ubuntu Precise (amd64), Windows 7 (32-bit) | < 70 MB |
Scratch | GUI scripting | Windows, Linux, Mac, web player | Y | Integrated: engine, map editor, sprite editor | 1.4 | Windows 7 (32-bit), Ubuntu Precise (amd64) | < 10 MB |
GameMaker | GameMaker Language or GUI scripting | Windows | N | Integrated: engine, map editor, sprite editor | 8.1 Lite | Windows 7 (32-bit) | < 15 MB and requires .NET 2.0 |
GameMaker: Studio | GameMaker Language or GUI scripting | Windows, Mac, Android, iOS, HTML5 | N | Integrated: engine, map editor, sprite editor | 1.1.164 Free | Windows 7 (32-bit) | < 25 MB and requires .NET 2.0 |
Construct 2 | GUI scripting | HTML5 | N | Integrated: engine, map editor, sprite editor | 108.2 Free | Windows 7 (32-bit) | < 35 MB |
Stencyl | GUI scripting or ActionScript 3 | Flash | N | Integrated: engine, map editor | 2.1.0 | Windows 7 (32-bit), Ubuntu Precise (amd64) | < 150 MB, including 85 MB for the JRE |
The Games Factory 2 | GUI scripting | Flash | N | Integrated: engine, map editor, sprite editor | 2.0 Newgrounds Edition | Windows 7 (32-bit) | < 13 MB |
MonoGame | C# | Windows, Mac, Linux, Android, iOS, Windows Phone | Y | engine | 3.0.1 | Windows 7 (32-bit), Ubuntu Precise (amd64) | < 5 MB and requires .NET or Mono |
XNA Game Studio | C# | Windows, Windows 7 Phone | N | engine | 4.0 Refresh | Windows 7 (32-bit) | < 3 MB and requires .NET and DirectX |
Tool | Source language | Physics or Collisions | Input | Windowing | Graphics | Audio |
---|---|---|---|---|---|---|
LÖVE | C++ | Box2D | SDL | SDL | OpenGL | OpenAL |
Game Editor | C++ | Kyra (v. 1.4.0) and Box2D (v. 1.5, in development) | SDL | SDL | Kyra, OpenGL | SDL_mixer |
Novashell | C++ | Box2D | ClanLib | ClanLib | ClanLib | ClanLib |
Blender | C++ | Bullet | Xlib, SDL, User32 (Windows), Carbon (OS X), or Cocoa (OS X) | Xlib, SDL, GDI (Windows), Carbon (OS X), or Cocoa (OS X) | OpenGL | |
Unity | PhysX | |||||
Scratch | Squeak Smalltalk | Built-in (ScratchSpriteMorph touchingColor: ) |
Squeak Morphic | Squeak | ||
GameMaker | Delphi (citation) | DirectX 8.0 (citation) | ||||
GameMaker: Studio | Delphi and C++ (citation) | Box2D | ||||
Construct 2 | Box2DWeb (citation) | |||||
Stencyl | Java | Box2D | Flixel | Flixel | ||
The Games Factory 2 | ||||||
MonoGame | C# | Simple built-in collisions (Rectangle , BoundingBox ) |
OpenTK, MonoMac, SharpDX, Xamarin.iOS, Xamarin.Android | |||
MonoGame, additional depending on platform | Tao.Sdl | Windows Forms Windows.Graphics.Display | Tao.Sdl | |||
XNA Game Studio | C# | Simple built-in collisions (Rectangle , BoundingBox ) |
DirectX |
03 Jul 2013 | Alternating light–dark table rows |
29 Jun 2013 | A little proofreading |
23 Apr 2013 | XNA and MonoGame minimal install sizes |
04 Apr 2013 | Page was getting unwieldy, so moved detailed assessments of the tools to individual pages |
02 Apr 2013 | MonoGame/XNA Game Studio |
10 Mar 2013 | The Games Factory 2. Removed Novashell as favorite map editor because I haven't been testing the map editors much. |
03 Mar 2013 | Stencyl, underlying languages and libraries table, and some other small updates |
21 Jan 2013 | Blender bug reported |
08 Jan 2013 | Comments link, play icons, some rewording |
09 Dec 2012 | GameMaker, GameMaker: Studio, Construct 2 |
14 Nov 2012 | Corrections: Unity does not require .NET. TilePics do work for the minigame in Novashell. |
08 Nov 2012 | Added Scratch |
17 Oct 2012 | Longer quick reviews |
07 Oct 2012 | Added Blender |
23 Sep 2012 | Posted |