Game Engine Choices for Indie Developers 2009

This post is going to get a bit technical, so if you’re easily bored by the gritty details of game development you might want to go somewhere else right now. Maybe to Cute Overload or something.

My latest game, Wildhollow, is released and I have some great ideas for my next game. Let’s just say that it might include puzzles, RPG elements and some online functionality. Oh, and superheroes or monsters too. Not really sure which yet. Either way, in order to get the game done I need to decide what to implement it in. Sheeplings, Spandex Force and Wildhollow were all developed in BlitzMax, an object oriented BASIC language that’s extremely easy to develop cross-platform games in.

As long as your cross-platform needs are Windows, Mac or Linux, that is.

As an indie casual games developer I find myself wanting to maximize my potential market (of course), and that means maximizing the number of platforms I can distribute games too. To make things easier for me I’ve constructed this table of feasible game engines/libraries as things are now in 2009:

Engine Name Language Windows Mac Web iPhone Android Xbox 360 Linux
Android SDK Java (X) (X) (X) X (X)
BlitzMax Misc X X X
ClanLib C++ X X X
Cocos 2D Obj-C X
Flixel Flash (X) (X) X
Game Maker Misc X
HaXe Misc (X) (X) X (X)
Haaf’s Game Engine C++ X
LWJGL Java X X (X) X
PopCap Framework C++ X
PTK Engine C++ X X
PushButton Engine Flash (X) (X) X
Pygame Python X X X
Simple DirectMedia Layer C++ X X X X
Silverlight Misc X (X) (X) (X)
Slick Java X X (X) (X) X
Torque 2D C++ X X (X) X
Unity C#/JS X X (X) X
XNA Game Studio C# X X

Note that I said feasible engines and libraries. This is not close to a complete list, but they are the ones I’m considering. I can list some criteria:

  • There must be decent performance, which means preferably no software rendering
  • All Windows only, Xbox only, etc libraries are of no use to me. I’ve listed a few anyway just for consideration
  • I want to be able to create mostly 2D games in an efficient manner. 3D engines are often bloated and unusable. Unity may be free but it’s of no use to me, for example
  • Finally, I have a prioritized order of platform preference. You may note that the columns in the table are ordered rather strangely. That’s because I’m going from most important to least important platform

A quick glance at the table shows that there’s no single engine or library that fulfills all my needs. An X demarks that the platform is supported, and an (X) means that limited support is possible. That could mean that it’s possible but requires a lot of messing around (e.g. HaXe for iPhone), or that the solution isn’t practical (e.g. Java web applets aren’t very useful), or that it requires unreasonable things (e.g. Unity on the web requires a specific plugin).

Most engines and libraries support Windows and Mac, so that’s not really a problem. The real problem comes with my third platform of choice: the web. And by the web I mean that it should run seamlessly for most users. Which means that Java is doubtful (too…clunky, and portals won’t accept it), and that leaves only Flash. Which, of course, is mostly incompatible with “normal” programming languages and engines.

This is not an easy decision…

Tags: , , , , ,

11 Responses to “Game Engine Choices for Indie Developers 2009”

  1. Andrew Wooldridge Says:

    I believe that Unity is the #1 3d game platform on iphone, so I’m pretty sure you can put an x in that iphone column. However I know Unity does some amazing 2D games — look at Paper Moon http://blurst.com/paper-moon/

    I would highly recommend giving Unity a 2nd look.

    http://infiniteunity3d.com/unity-3d-for-flash-developers-tutorial-series-and-cheat-sheet/

  2. Karja Says:

    I’m adding an X where it belongs – thanks for letting me know! Still, there are two major problems with Unity:

    1) The web plugin makes its web presence non-existent in my view. If I want to make web games it has to be Flash – otherwise they won’t get accepted by any portals at all. Java and Unity are right out, for that reason.
    2) Disregarding that, Unity is also focused on using the IDE. Seriously, I can’t devote any time to learn using stuff like that. Learning a programming language is a cinch, but getting productive with a GUI takes ages. Also, reliance on an IDE means that I’m completely locked in to that technology and can’t reuse anything anywhere else.

    So, Unity is not for me. I’ve downloaded it and got so far as to present a 2D background after messing around with the camera for AGES. That’s just not working for me – I’ll leave that to the people who know how to use a 3D engine.

  3. Thomas Grové Says:

    Dear Miro,

    I am from Unity and wanted to clear up a few misconceptions.

    First, I noticed that you didn’t put an X in the iPhone column for Unity. Unity is in fact the most popular engine on the iPhone, with over 400 games published to the app store using Unity.

    Second, I wanted to address 2D games; there are two great solutions for doing 2D asset games within Unity:
    The first is the technique used by Mika Mobile to create their best selling iPhone game (in the top 10 selling games of 2009) Zombieville USA and their recently released OMG Pirates! They talk a bit about their technique in the following two links:
    http://forum.unity3d.com/viewtopic.php?t=37123
    http://www.thecareergamer.com/?p=513

    The other is an affordable Unity middleware solution for sprite based characters, entitled Sprite Manager 2 by Above and Beyone Software. You can watch videos of it in action at the following link:
    http://www.anbsoft.com/middleware/sm2/

    Third, Flash also requires a specific plugin.

    Lastly, I wanted to mention that we have Wii support and Xbox 360 support is on the way!

    I hope you will take the time to give Unity a second look. The base version is now completely free and available for download at http://unity3d.com/

    Thanks!

    - Thomas Grové

  4. Thomas Grové Says:

    Sorry, I had this page open all day but didn’t get around to writing my response until tonight. I forgot to refresh and so didn’t notice that you had already addressed the iPhone bit.

    Let me briefly respond the your criticisms in comment 2:
    1) We’ve got 16.5 million installs of our web plugin and counting. We’re also very interested in broadening our browser penetration. There are already some portals who do accept Unity content and we’re working on getting it acceptable on all portals. There is also more and more Unity content popping up on social networking sites.

    2) I can understand your frustration; it is the opposite for me, learning the GUI is a cinch but learning a new programming language is intimidating! Maybe you could team up with an artist or a designer who could handle most of the visual stuff while you focused on the gameplay code?

    Furthermore, if you ever wanted to repurpose your stuff later on, you’d have all of your art assets and your c# or javascript wouldn’t be too hard to modify.

    All that being said, you’ve got to do whatever works for you! Best of luck with your future creations!

    - Thomas

  5. Karja Says:

    Thanks for the comments and sorry for missing iPhone! I hate to be a pessimist, but I have a slightly different view of things:

    1) 2D games are possible with Unity, but even with the Sprite Manager or other solutions it is not easy to do. As a small developer I have to focus on getting results quickly – I can’t afford to adapt my methods to the tool. If Unity had a “2D mode” it would be excellent. A few commands to set up the screen/camera in “2D mode”, a few commands for flexible sprite blitting, code-based methods to easily load sprites and so on – things like that is what’s needed.

    2) Flash requires a plugin, of course; but it’s the de-facto standard that just about everyone has installed. That’s not true for Unity. 16,5 million is a great accomplishment but still not of any use unless “everyone” has it.

    3) It’s great that portals are considering Unity! But if I release a game in six months and it’s not accepted by the major portals I’m not going to be consoled by the fact that they’re considering it, or working on it – I need the game to generate revenue instantly so that I can use it to work on my next game. So, unless I see “we accept Unity games” on major portals it’s still not any good.

    4) Teaming up with someone is something that always sounds good, and I agree that it would be good. I’ve tried several times to find an artist partner – but never gotten any response to that. So I’ve come to the conclusion that artists want to get paid; not be partners on casual game projects. So, the IDE is still a major issue for me – see #1. (Oh, and C#/JS code is rarely used anywhere else so it would require a complete re-write of the game code if I wanted to port the game. Also, the major issue is that parts of the game aren’t defined in code – it’s handled in the IDE. Setting up cameras, handling assets etc. That makes it completely un-reusable.)

    Finally, I did try to not be tooo biased in the actual blog post, but maybe I should have written “game engine choices for indie developers with little funding, a day job that takes most of their time, complete focus on code and not IDE based solutions, and who want to get results very quickly” instead, to make things clearer. No article like this is completely objective, but mine is – of course – definitely centered on my needs.

    What I’m trying to say is: I can’t see how Unity would work for me, but thanks VERY much for replying and clearing up these issues! I’m sure that Unity is a perfect tool for some people; for indies that are in a different situation than I.

  6. Jon Howard (techdojo) Says:

    Karja – I think your last point is very important, whilst Unity maybe “free” there is a significant cost involved if you actually want to publish on the iPhone and or other “consoles”.

    I’m not decrying unity here, I think it’s a wonderful setup (and as someone who’s used the $20 GameMaker app to produce a lot of content – I think of it as a 3D GameMaker on Steroids) but for part time dev’rs $1500+ can make a big difference when there is a “code only” approach that’s truly free – excluding the obvious $99 Apple Setup fee which is applicable in both cases.

    Obviously this is iPhone centric but I think the point is still valid.

    Jon…

  7. Jon Howard (techdojo) Says:

    Hmm – not wishing to be picky but isn’t the scripting in Unity based on Javascript and not C++ ???

    Jon…

  8. Karja Says:

    Jon, pickiness is good! I’ve changed it from C++ to C#/JS now (since C# was mentioned in the comments above). To be honest, I didn’t investigate those parts very much. I disregarded Unity before I even got to code something in it.

    I agree completely that Unity seems to be a (very advanced!) 3D GameMaker-like thing, and that the $1500 is a big blow for part timers. Personally I feel that if I found a tool/engine that would enable me to cut down development time by several months it would be worth spending a lot of money on. But that the thing: Unity demands -more- time from me; it has wonderful capabilities, but in order to utilize them I would need to spend months and months on learning new skills.

  9. Linus Lindholm Says:

    Make your own engine! Or wait a century or two for our SMUG engine (http://linus.lolektivet.se/archives/74) to become production quality. ;)

  10. Web and Downloadable Game Engine Choices 2009 | Cynical Stuff - Casual games development and cynical observations Says:

    [...] Log in « Game Engine Choices for Indie Developers 2009 [...]

  11. MrPhil Says:

    I knew you’d be interested in the Unity 3 announcement: http://www.marketwire.com/press-release/Unity-Technologies-Unveils-Third-Generation-of-Its-Powerful-Development-Platform-1128176.htm

    Adding support for XBOX 360, Android, PS3 and iPad

Leave a Reply

Copyright © 2009 KarjaSoft