this is a post detailing my search for the most enjoyable way for a hobbyist game programmer to sweeten his free time with making a game.

My requirements: I looked at Flash first, I made a couple of small games but I'm doubtful of the performance. I would like to make a fairly large strategy game, with several hundred units fighting simultaneously, explosions and animations included. Also zoomable maps. I saw that Adobe has a new 3D API for Flash, but I don't know if that improves 2D performance aswell, I couldn't find anything related to that question on their MAX10 sessions. Would you say that Flash is a good technology for making large 2D games easily? I really like Actionscript, and I love how easy everything is in Flash. There are several engines available which make it even easier.

I just do this for fun, and it would be even better if there were proper animation/particle editors available and if the engine I were to use, would be available for multiple platforms. (so more people can play my game once finished). I'd like to have it available on many mobile platforms aswell. (because I love touch input for some reason)

I do know the XNA framework pretty well, but there are no good engines available for it, and it will only run on Windows, which is a huge turn off. Even bigger is, that you need to install the XNA redistributable each time you want to give the game to someone. If I use XNA, I would have to make all the tools myself, and I'd probably have to make them with WPF. (I'd love to make tools with Adobe AIR, but unfortunately the API's for image manipulation etc. are far worse in Flash, than they are in XNA/WPF.) Now, I'm aware that I could make my own engine that supports each of those platforms, but quite frankly, that would be too much work plowing through APIs. After all, I want to make a game, not an engine.

So the question becomes: Is there maybe a cross platform (free or free to develop?) engine available that I could use for 2D development? I prefer: C#, Actionscript. I don't mind using c++ if the toolset is above average, but I highly doubt that there is something out there like that. Please prove me wrong :) So summary: I'd like to use Flash, but I don't know if it scales well enough. I'm not a scripter, I want some real APIs that I can work with inside a proper IDE.

Just for information, I looked at several alternatives, I'm actually looking for a long time already. You'd help me a lot to make a decision finally.

  • Feature-wise the Flatredball engine would be ideal. But I tried their tools, and quite frankly, they are horrible. Absolutely unusable, I'd need to make my own for sure. I didn't look at their API, but if their tools are so bad, I'm not inclined to look further.

  • Unity3D. This one is quite nice, but I really don't need 3D, and it is quite ...a lot of work to learn. I also don't like that it is so expensive to use for different platforms and that I can only code for it through scripting. You have to buy each platform separately. The editor usability is average, the product overall is good enough for most purposes, but learning it myself would be overkill.

  • Shiva 3D. It looks good enough, but again: I don't really need 3D. The editor usability is a little worse than Unity3D in my opinion and it wasn't clear to me how to start programming. I think it requires C++ for coding, so that's a negative too. I want to have fun, and c# is fun ;)

  • SDL. Quite frankly, I'd still need to port to all those different SDL implementations. And I don't like OpenGL style programming, it's just plain ugly. And it needs c++, I know that there might be some wrappers available, but I don't like to use wrappers, because...

  • Irrlicht. A lot of features, but support seems to be low and it is aimed at enthusiasts. C# bindings get dropped repeatedly. I'm not an engine enthusiast, I just want to make a game. I don't see this happening with Irrlicht.

  • Ogre3D. Way too much work, it's just a graphics engine. Also no multiple platform support and c++.

  • Torque2D. Costs something to use, and I didn't hear a lot of good things about support and documentation. Also costs extra for each platform.

  • \$\begingroup\$ The FRB SDK Tools are bad (Glue in particular, I'm not using it) but saves you time writing them and the file formats are simple if writing your own tools is a must. The API ain't that bad and seems suitable for this scope, the biggest problem right now is the lack of an XNA 4.0 port for PC and Xbox. Also, XNA redist and other prereqs can be part of the install - and using clickonce you can have auto-update and deployment ready to go. \$\endgroup\$ – Oskar Duveborn Mar 2 '11 at 11:22
  • \$\begingroup\$ Well, my point is that I wouldn't use them, and therefore the tools are useless. They keep crashing on me in addition to their bad UI / general feel. What if it turns out that they miss a certain feature? Even if they were open source, I wouldn't want to go anywhere near those codebases. Seems harsh, but I really just want some relaxed programming, and FRB seems like a fruitcake of frustration. Just imagine: I tried the particle editor and couldn't even find the button to open an image file. Which is arguably the single most important feature everything else builds upon. \$\endgroup\$ – Maxi Mar 2 '11 at 11:30
  • \$\begingroup\$ Not a full answer, but Flash scales better than you might otherwise think. If you blit to a bitmapdata canvas instead of using the display stack, and do some other simple optimizations, you can squeeze a whole lot more out it than it seems with a more naive solution. \$\endgroup\$ – Gregory Avery-Weir Mar 2 '11 at 14:01
  • \$\begingroup\$ The listitem in the Particle Editor is simply called "texture" on the emitter properties panel ^^ There're tutorials on all the tools so non-coding content-creators can help out. But yes, the UIs are really horrible from an interaction design standpoint. \$\endgroup\$ – Oskar Duveborn Mar 2 '11 at 14:47
  • 1
    \$\begingroup\$ In regard to XNA being Windows only, there is an open source implementation of XNA's API called MonoGame that will run on all sorts of non-Windows platforms: cocoa-mono.org/archives/400/… I haven't used it myself but it does exist. \$\endgroup\$ – chaosTechnician Jan 13 '12 at 19:42

Pygame is by far my favorite. Since programming in python means you will program fast and since 2D things are fast to do, pygame will be fun...

  • \$\begingroup\$ As a bonus if you decide that you want to move to the 3d world, there's pyglet that wraps GL in snake-skin ;) \$\endgroup\$ – Wayne Werner Jan 12 '12 at 22:48

I've been using LÖVE for some time now and I like it a lot. You would have to learn Lua, but it is a fun little language to learn anyway. The people at the forum are extremely helpful.

  • \$\begingroup\$ What's the performance? what IDE can I use? \$\endgroup\$ – Maxi Mar 2 '11 at 11:55
  • 1
    \$\begingroup\$ I second this. We used Lua and LOVE for our Global Game Jam game and it worked out fantastically. They've put together a lot of really great open source libraries under one common API, and every release keeps getting better. The performance is great (Lua is blazing fast!), and a lot of advanced OpenGL features like FBOs are exposed, which is rare for a lot of 2D engines. On top of all that goodness, it's cross-platform (Win/Mac/Linux). I'd definitely give it a good look. \$\endgroup\$ – Bob Somers Mar 2 '11 at 14:08
  • 1
    \$\begingroup\$ @Maxi: With love you just need an editor, and a console where you can write love . \$\endgroup\$ – egarcia Mar 2 '11 at 15:04
  • 2
    \$\begingroup\$ Did Russians make a game with that? It would From Russia with Love :P \$\endgroup\$ – Bart van Heukelom Mar 7 '11 at 22:06

I decided to go with Flash. The new Molehill 3D API can be used to draw 2D sprites in 3D space a lot faster as well. I see no reason why Flash shouldn't be fast enough for the game I described earlier. I'll have to build the tools myself, but I would have probably needed to do that anyway. Using AIR to build tools is also pretty neat in my opinion. Flash also has the widest reach with platforms, which is cool.

  • \$\begingroup\$ Try Cocos2d-x. It's what I'm using for my indie game development. \$\endgroup\$ – Stephen Furlani Mar 2 '11 at 20:52
  • 1
    \$\begingroup\$ Flash is probably a good choice, since there are very good (mature) tools and libraries for flash out there. The Molehill API will take a heavy load off the CPU (previously everything was handled by the CPU). You have to think about distribution of your game though. Flash usually means a browser-based game... \$\endgroup\$ – bummzack Mar 3 '11 at 9:36
  • \$\begingroup\$ And take care about mobile gaming, flash and mobiles are such a poor combination. \$\endgroup\$ – Gustavo Maciel Jan 12 '12 at 22:29
  • \$\begingroup\$ "And take care about mobile gaming, flash and mobiles are such a poor combination.". @Gtoknu, any reason why? \$\endgroup\$ – NemoStein Jan 13 '12 at 19:19
  • \$\begingroup\$ @NemoStein Try to search over youtube some flash running in mobiles. Also, adobe discontinued his development of flash to android, and there's no flash for iOS. \$\endgroup\$ – Gustavo Maciel Jan 13 '12 at 22:11


  • \$\begingroup\$ While useful, SFML is only a graphics / network / sound API, not quite a full featured game engine (although it is fairly close). \$\endgroup\$ – a_m0d Sep 30 '11 at 19:28

Try Cocos2d-x. It's what I'm using for my indie game development.

It's a tried and true OpenGL (ES) platform which has sound, physics, and even a little 3D that has been out for the iPhone for a while now, and is just coming to other platforms.


Since you said you like Actionscript but are looking for cross platform, take a look at HaXe + NME. HaXe is a language similar to Actionscript, but can compile to Flash, Javascript, PHP, or C++. NME is a library similar to Flash's graphics library, but runs on other platforms too. This combination allows you to compile to many different platforms.

I've not used NME yet but my first test with HaXe+Molehill (just a few days ago) produced 60fps when rendering 10,000 16x16 rotating sprites on my laptop. I've only been using HaXe for a few days and don't have enough experience with it to be sure it's the right thing for you, but it's worth a look.


I'm personally a huge fan of Allegro 5, but it is a C API. Still and all, it's a simple API that get's out of your way and provides access to:

  • 2D graphics (backed by OpenGL or D3D, depending upon platfom)
  • Sound
  • Fonts (including both bitmap and TTF)
  • Input (mouse & keyboard)
  • PhysicsFS (file system virtualization)
  • Image loading

5.1 will be adding shader support, as well.

SDL 1.3 is also shaping up quite well. Sam seems to be done making the major API changes, and what is already in is pretty stable already. Still ... it's not even beta yet, and Allegro 5.0 is released.

Granted, for more complex and advanced games you'd probably want to pair Allegro 5 with some sort of physics library (Box2D, for example). Still, you can get a very long way, and have a pile of fun, with nothing more than what Allegro 5, the C or C++ standard library, and your own code.


Not the answer you're looking for? Browse other questions tagged or ask your own question.