Tuesday, November 11, 2008

Flash or Java - Which One Should I Use?

One of the most frequent questions I get is whether to build games in Java or Flash. It's a debate that's been going for some time. The early entrants into the casual games biz opted for Java, which overall was a better language for quality game development. Back then, Flash was pretty terrible for game development.

Since then, Flash has improved significantly with the most recent version Flash 10 offering improved 3D support (whether it's any good for 3D games, you'll have to tell me, I haven't played with it yet).

I think Flash is the clear winner, and I'm not the only one. Sharendipity, a company that's spend over a year building a game creation tools platform for user-created games recently announced that they're abandoning the Java for Flash. It's a significant move that's requiring them to port over 60,000 lines of code.

Here's their reasoning (from their blog):

Up front, I’ll say that the reason we are moving to Flash is because of Java’s adoption rates. It is not, in fact, because of the language itself but because of Java’s deployment model. We suspect that we lose somewhere between thirty and fifty percent of users due simply to the fact that we are in Java.

This isn’t pure speculation, but backed up by a significant amount of internal data. There are also other game companies that have experienced the same thing.

Daniel James, CEO of Three Rings, has been advocating the move to Flash for years now. He estimated that Puzzle Pirates, his company's Java-based casual MMO, while successful, suffered from an extremely low conversion mainly because it was in Java.

Fact is, Flash has ~95% penetration among Internet users. If want people to play your game, Flash is the only option.

BTW, if you're interested the technical aspects of moving from Java to Flash, Sharendipity is doing a series of blog posts on their experience. Check it out here.

1 comments:

Aaron White said...

So, we're a company that made the decision to use Java over Flash, for two reasons: performance for our rendering is actually better in Java (strictly 2D), and ease of development.

While aggregate Flash penetration is around 95%, if you're using a more modern version flash (say 9), I've heard anecdotally that first-time-success rate for your app should be around 80% of users. Perhaps it will be surprising to learn that our metrics for first-time-success rate with Java is ~80% as well.

Granted, it took a lot of engineering effort on the periphery to get us there. Most notably, Puzzle Pirates required the user to click "trust" for applet verification, with effort for our site, we were able run our entire app un-verified, greatly upping first-time success. (there are other 'gotchas' to be worked around as well)

To be fair, I think Adobe is continually improving, and Sun has left Java-in-browser by the wayside, so I can certainly appreciate the hesitation to using it. Just throwing in my 2cents, Java can compete on par (for the time being) if you dig deep enough.