This page will link to my experiments in testing a number of different 2D Game Development APIs & engines which I will just call 2D frameworks for short.

I have been using Unity for 2D work since November 2013. Before Unity2D I developed using C# & XNA, Blitz, C++ & DirectX, C & Allegro on Windows PC, and AMOS, Blitz and C & Gamesmith on the the Amiga. One thing you may notice all of these have in common is they are simply programming languages with an API for drawing graphics, playing sounds and checking for collisions (usually in the form of a simple overlapping rectangle function call).

Personally, I think I will be much more productive if I go back to my code-oriented approach. Truthfully, I’d prefer a code only approach. Several modern game dev systems, including Unity, require you to set up certain things inside a visual environment. More than that, they generally consist of a full game engine. For me, this combination makes developing 2D games more convoluted than it ever was in the past. It is my hope that returning to a code-oriented framework will remove this overhead and allow me to develop as quickly as I used to.

I will be downloading and testing development in each of the following (unless I find something that is awesome right off the bat – but for now I expect I will need to try all of these):

  • Angel2D …………. 07/25/2015 Successfully compiled Angel, built the demo exes and created a Visual Studio 2013 Solution Template that is available for download.
  • SFML ………………. 07/25/2015 Did a quick check and this also does not support development of web games.
  • Monkey X ……… 08/01/2015 Finished my initial investigation and have demos available. I like it!
  • CocosSharp ……. 08/02/2015 Could not find anything about this supporting development of web games.
  • MonoGame ……… 08/02/2015 Could not find anything about this supporting development of web games.
  • HaxeFlixel …….. 08/07/2015 Finished my initial investigation and have demos available. I like it!
  • GLBasic …………… 08/07/2015  Finished my initial investigation. My GLBasic Tiled Map Loader and Tile Map Renderer are available for download. This one I will revisit in 6 months.
  • Marmalade SDK .. 08/11/2015 Appears to require a completely separate approach to Web from the others. Might revisit and test firsthand sometime down the road.
  • Canvas Engine …  08/10/2015 Checked into this and it appears to be HTML games only.
  • CitrusEngine …… 08/10/2015 Checked into this and seems to be Flash oriented. Might revisit.
  • Flambe …………… 08/10/2015  Checked into this and seems it only supports web and mobile.

I actually spent 4.5 hours searching the Internet last night just to identify as many potential candidates as possible. Then a couple of people on the Unity forums suggested others. After checking into all of these potential 2D Game Dev APIs and throwing out the ones that did not meet my criteria (code-oriented non-visual and supporting Windows, Mac, Linux and Web) I ended up with the short list you see above.

Today I will begin downloading, learning and testing each of these.

At the end of all of these experiments I will finally know if 2D Game Dev (for me personally) is faster in Unity or one of the items listed above.

Update 08/01/2015 : I stumbled across GLBasic tonight. Added it to the list above to check out. Also removed a few others that appeared to be redundant. I see no sense in checking out OpenFL or Flixel when I am currently investigating HaxeFlixel.


Update 08/11/2015 8:47 PM
Okay, I have finished checking into many different frameworks and the winners for desktop & web game development are Monkey X & HaxeFlixel.  For desktop development (and mobile) game development I recommend also checking out GLBasic.  Monkey X and HaxeFlixel also support mobile game development. It is not something I covered because I am not interested in mobile game development. At least not now.

So… now I will proceed to phase two: Building a full (albeit simple with only 2 stages) game in both HaxeFlixel and Monkey X and see how long it takes to do in each of these.

I think I might prototype the game in GLBasic for Windows desktop. Why?

  • I liked GLBasic in the short amount of time I spent with it and would like to spend some more time working with the language.
  • By prototyping in GLBasic to define the game design basics and technical implementation Monkey X, HaxeFlixel nor Unity will have an advantage over each other. If I first built the game in Monkey X then HaxeFlixel  then Unity, Unity would have the clear advantage of building on the experience of the other two and same for doing the Monkey X or HaxeFlixel versions last.

Thinking about it more… making the same game 3 times of course the third implementation will still have some advantages over the second. In an effort to keep things fair I think will develop the Unity, Monkey X and HaxeFlixel games simultaneously. First I will do one piece in Monkey X and then I will implement that piece in HaxeFlixel and then in Unity. For the second piece, I will implement first in HaxeFlixel and then in Unity and then Monkey X. The next piece I will implement first in Unity, then in Monkey X and then HaxeFlixel. Just continue cycling like that. In this way, all three versions of the game will have the same potential to gain from the previous experience of implementing in the other frameworks first.

All I need to do is use a timer for my dev sessions so I can record the time required for each piece in each framework. I think this is the best way for me to accurately assess the effort and time to develop in each of the three frameworks.

Okay, sounds like a plan!

First thing I am just going to knock out some simple graphics. Certainly doesn’t need to be fancy. Just need some stuff to move around the screen.

*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *

Update 08/27/2015 9:31 PM
On August 13th I started on the GLBasic implementation of Mars Explorer. During these 15 days I’ve spent 25 hours on this project.

My GLBasic Game Development Log is updated daily (except for rare cases where I skip a day) with a blurb describing what I did and a video showing the current state of the project.

I am now done with the GLBasic implementation of my game!

This should be the longest of all of the versions because, as noted in my dev log, for the GLBasic version I had to design the game, create the assets, do the technical design (program structure, systems) and so forth.


08/29/2015 6:40 PM  GLBasic Version of Mars Explorer Released!

I just finished a 2-hour clean-up session on this project.

Basically, I just wrapped up all of the main program code in the MarsExplorer main code module into a new GameManager class. Then tested many times to make sure I broke nothing in the process.

Then added some more comments to the main MarsExplorer code module. Changed a few hard-coded values to constants (points and player lives), deleted commented out code, removed unused graphics assets from the folders.

Built the exe. Created a zip file for the Windows binary version. Then zipped up the source as well.

Uploaded to my website and created a download page for the files.

So here we are… total project time 34 hours.

Although this is just a very simple project I hope you enjoy the game.

I also hope you find the source code educational and otherwise helpful in your own game projects.

You can download these from my GLBasic Projects Page.

*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *

Update 09/19/2015 1:56 PM
On September 5th I started on the Monkey X implementation of Mars Explorer. During these 15 days I’ve spent 25 hours on this project.

My Monkey X Mars Explorer Development Log is updated daily (well updated often at least) with a blurb describing what I did and a video showing the current state of the project.

I am now done with the Monkey X implementation of my game!

This version ended up taking nearly as much time as the GLBasic version did (32 hours here versus 34 hours there). I think perhaps just the learning curve in making my first real Monkey X program and figuring out the way to structure the program and so forth made it so this had the same overhead as when I tackled the GLBasic version.

All things taken into account, I consider this Monkey X development test a success. I was able to learn the language and create a good foundation for an arcade game in 32 hours. That is very reasonable I think. I am sure that had I made this version first it would have easily taken at least 34 hours. Having already done the GLBasic version I already knew exactly what I was making and that takes time!