That’s the question that has been wandering around in my mind recently.
It all started with a surprising statistic: from all the unique visitors to www.bubblomania.com since the beginning of this year, only about 13% actually entered their name in the Bubblomania webgame. When the game is started, it asks first-time users for a nickname for the topscores, so this way I can measure how many different people have played it. Of course there are people who visit the site without starting the game, or who don’t want to type in a nickname. But I find it hard to believe that 87% of visitors are like that.
So maybe there’s a technological aspect to this. When I tried to license the Bubblomania webgame to other websites, like online arcades, the major problem turned out to be the fact that it’s not a Flash game. Arcade owners complained about this, because they use standard PHP scripts that only accept Flash, and not Java applets.
Bubblomania is written in Java, using the LWJGL library. I’ve written previously why I like these technologies. But the feedback on the game made me doubt my decision. I still think Java and LWJGL are great tools to make downloadable games that need the performance. But they’re probably the wrong tools to make webgames…
Some of the problems encountered:
- Long applet loading time, which cannot be used to display something useful (like logo’s, advertisements,…). This is the biggest turn-off for people who tried to play the game for the first time.
- There seem to be quite a lot of people who do not have a recent version of the JRE installed. Furthermore, installing Java can be a difficult process for inexperienced computer users. The download is also rather large. Too much trouble just to play a webgame.
- LWJGL requires the applet to be signed, thus requiring the user to confirm (s)he wants to run it. This can be confusing for people who have never seen this before.
- LWJGL contains an OpenGL binding, and thus requires a video driver that supports OpenGL for hardware acceleration. It suprised me how many PC’s don’t have up-to-date drivers, resulting the game to run very slowly using the software renderer. Again, nobody goes through the trouble of updating drivers to play an unknown webgame.
- Using LWJGL in an applet still results in some strange behaviour on some configurations.
So last weekend I decided to investigate the use of Flash for future webgames, so I wont have these problems again. According to Adobe, 98% of PC’s have some version of Flash installed.
This interesting article on AjaxWorld Magazine by Bruce Eckel pointed out to me that the new Flash 9/ActionScript 3 is the way to go for internet applications, thanks to increased performance of the new ActionScript virtual machine. Since the Flex 2 SDK is available for free, I decided to use that as my platform. It only supports the new ActionScript 3, but since I’m a total noob to Flash, I might as well start with the latest and greatest!
After spending a few days with the documentation, and playing with the Flex Builder trial version, I can say that switching from Java to ActionScript 3 and the Flash API ain’t all that hard. I’ve made a small prototype using the Bubblomania assets, to get a feel for the performance. And while it’s nowhere near the performance of Java + LWJGL, it was better than I expected.
So, am I going to switch from Java to Flash for game development? Well, yes and no. I’m definitely going to use Flash for the web versions of the Smiley Puzzle Project games, since these games do not require a high framerate to be playable. I’ll probably investigate if it’s possible to do a higher quality downloadable version of these games in Flash.
But for action games like Bubblomania, I’m going to stick to Java for the downloadable version. I should mention that the final 1.0 version of LWJGL has been released recently, and it has become a very decent library!
If you found this post interesting, please feel free to share it with others by bookmarking it:
