Sonntag, 23. März 2008

jMonkeyEngine Java 3D Engine

Hi fellow coders,

I have a long background in testing 3D Frameworks...

Obviously I started my own with 2D calls, then I wrote some Quake3 mods, then opengl, then
I took a major leap and bought the torque engine from garagegames.

Man that was a fun time, that “framework” is really complete as the code comes from a real game ( StarSiege Tribes ), complete with ingame level editor, gui, 3d sound and prize winning network support ( now free ). But I soon had to find out, that you could only go so far with its scripting language and its c++ code, although probably very clean and good, just scared the hell out of me...
( Free tip to garagegames to reign the world, reimplement the scripting language in java ! )

Then I tried irrlicht ( with its NET plugin and Delpi.NET which was even kind of cool... just very basic and not a complete gaming framework ), then ogre3d, then openscenegraph and then even some more things google spits out...

Meanwhile I always played with Java and its 2D calls, as I love Java.
So I decided to give Java3D a try, but boy was that painful and I gave up for a while.

Years later I stumbled across Jake2 ( awesome Java port of Quake2 )
which started my fire again.
So Java is capable of high performance 3D after all. :-)

I again looked for news around Java3D and found the very impressive FlyingGuns...
Looking for books about java and gaming I found a great book from Andrew Davison
( Killer Game Programming in Java - http://fivedots.coe.psu.ac.th/~ad/jg/ )

But after reading most of it I realized, he does a good job of overcoming the limitations of Java3D but not good enough for me...
As Java3D is really "only" a scene graph framework written in Java... and not a very fast one... ( although pretty ok, if you look at Flying Guns )

Most of all, the slow "collision detection" turned me off...
( Andrew Davison had tried to overcome the limitations with a 1 second taking background thread, man was that ugly... )

Then I looked at xith3d, but that is mostly the same framework, just faster...
And still missing good collision detection ( AFAIK )

I realized what I really was looking for, was a modding framework, something like quake3 just not so fps/bsp-level orientated and with much less c code

In the java gaming and xith forums I had always seen references to jME, but I never looked at the examples before...

3 Month ago I did, and boy was I impressed !!!
( just give jmetest.effects.water.TestProjectedWater a try !!! )

The framework is not only powerful and feature rich but truly easy to use !

The learning curve is as good as it gets, due to the easy transition from SimpleGame to StandardGame ( if you understand not to overwrite initSystem and forget to call the super implementation as I did at first... )

The tutorials are very good to understand, because they can be very short, due to the fact that jME is so powerful with so few lines...
The flag rush tutorial especially stands out ( hehe, no wonder, as it comes very close to my BattleZone clone project ).
Thanks mojomonkey !!!

The test package covers many real world game application needs:
-game state changes ( swing, menus, loader, ... )
-Swing GUI menu support ( This one is one of my favorites )
-hw/sw mouse
-all the different InputHandler (they rock and one can learn alot about camera translation and rotation )
-3d audio
-headless mode for servers
-water and cloth effects
-bump mapping
-particles support and examples
-terrain support with many very very good examples !!!
-all the 3D object importers and exporters...
-last but not least: my kids love the LisaSimpson modell, so my wife lets me code ! :-)

Little things just work as expected ( anyone who tried to get alt-tab to work with a fullscreen Java 3D app knows what im talking about - oh and to get it fullscreen was painful to start with I recall... )

So after searching and trying out for so long ( I am speaking about 14 years here ) I think I can finally settle.
Thanks to all the monkeys !!!

Ray.

1 Kommentar:

J0k3 hat gesagt…

Why do you thank me in the end of your post? :)