I just read the The Java Mobile / Desktop Entertainment Rift topic on JavaLobby.org and it reminds me of one of my internships. It was in Montréal, in Québec, Canada, at Mistic Software, an Atari games development studio. We ported a PC game called Backyard Hockey to the GameBoy Advance. It is interesting to note that the original game was written in Python. I did cool UI stuff during this internship and I just wonder whether I could take some benefit from this experience to create original Java UIs.
Anyway, it has been a very fun and interesting internship even though our game did not receive great reviews. This doesn't really matter since we knew what the game was worth. During my stay at Mistic, I helped build the menus of the games, which is a more tedious task than you might think. There were an awful lot of menus and the GameBoy Advance is not always that easy to master.
So you see I implemented part of the game's UI. And believe it or not it implied using the physics engine ^^ I implemented two kinds of special effects for the menus: items moves and bubble fades. The first effect makes buttons and other graphical items like logos appear at their respective position by being moved from outside of the screen. There are different kinds of animations. For instance, all items can come from the right side of the screen. Or one item comes from the top, then the next one from the bottom. The same thing occurs when the player leaves a menu. Only this time another effect can be used, the explosion. When played, this effect makes all the button on a screen jump as if blown away by an explosion of some kind. Very neat. The bubble fades effect makes menus fade in and out as seen through growing bubbles. The bubbles also seem to move.
Take a look at the video (Xvid) to see what I created for the menus. Doesn't it look great? Now what if I did the same in a Java UI? Would you like a demo?
I am sure we could learn a lot by studying games menus UI with care. Some are just boring but I've also seen interesting things in some of them. This would also be a good way to show the power of Java2D and Java3D API for desktop applications. I'm aware we cannot use this kind of effect directly in any desktop application but we can at least draw inspiration from games. When I use MacOS X, I sometimes just feel like some of the visual effects actually come from a game, especially the “zoom fading/blurring icons” (when you start an application) or the famous rotating cube.
Whereas it is annoying to build an UI in a GBA game, it is annoying to apply cool graphical effects in a Swing UI. I should try some Java gaming API and see what can be done by mixing it with regular Swing applications.
Finally here are some screenshots: