Need advices for choosing a 3D API

Hi guys,

I’m planning to make my own game (a space simulation), I’m looking for a 3D API and I must say there is a lot
of choices and different approaches. My major criterion is performance and in second the ability of accessing
directly OpenGL functions. I have been amazed by the job made by Markus Persson on Wurm Online, I tried to PM him
to see if he could share his experience with me but the PM page returned me errors twice and I’m not sure
he got my PM (Markus, if you read that post, you’re more than welcome to reply to it :slight_smile: ).

I browsed some docs and articles, most of the time it is a contest between Java3D, Xirth and jMe. About OpenGL bindings there is another fight between LWJGL and JOGL. I even heard about bindings to C++ famous library like Ogre3D and Irrlicht.

Well, I really don’t know what API or library to use for my game.

To sum up :
1st criterion : speed
2nd criterion : possibility to access OpenGL methods through binding
3rd criterion : compliance with other classic libraries like OpenAL, JavaODE…

Thanks

See my FAQ

(in the sig)

That’s exactly what I needed, thanks ! ;D

You may also have a look to jMonkeyEngine. Lots of people seems to like it.

I’ll check this one but according to Jeff’s FAQ, it seems that the classical Java3D is quite the best choice unless I’m ready to adress directly JOGL.

JME and Java3D are both well documented and easy to learn, both very important factors. Once you’ve got your head round 3d programming on one platform it is relatively easy to change between different APIs as you need to.

JMonkeyEngine is actually higher level then Java3D as I understand it (I havent actualy used it) as its an actual Game Engine

If it fits your needs then ist probably the easiest solution as its doing the msot for you.

I suppose I should add that to the FAQa s wellas geta good look at JME at some point

One drawback it seems is that Java3D isn’t available on that many platforms. From what I’ve heard it’s also not built on top of JOGL so it won’t be easily portable. I don’t know about the plans but Java3D seems to quite limit the available platforms for an applications.

Java3D is currently available for Mac, WIn32, Linux and Solaris. So I dont think its unavauilable for any paltform that JOGL is available for.

Furtehrmore, on Win32 Java3D supprtos either OpenGL or Direct3D, so it may run on cards JOGL won’t.

Having said that Im not sure what the current state is or what the future availability will be of the Mac port. Thats up to Apple right now. That may change hwoever as there are plans to do a JOGL version, at which point it will be free of Apple dependance.

Didn’t the Direct3D support end at version 1.3.1?

A JOGL version. That would mean a lot for the popularity of Java3D I think. To know that wherever JOGL goes, Java3D goes too. How firm are the plans? Is there a time schedule?

It’s a requirement for Java3D 1.5.

Not that I am aware of. And it would be a silly thing to do because Micrsoft is making another hard push right now at killing OGL on the PC. If dropping D3D support was even contemplated Im sure its been nixxed at this point.

What is? Support for Direct3D or JOGL or both?

Well how should I know what MS may feel?

There’s no special download for Direct3D anymore so I thought Direct3D isn’t support anymore. What’s the deal. Does Java3D support Direct3D even after 1.3.1?

The same way we do you deduce it from the way they exert pressure on the WIn32 dev community through their control of the platform and APIs.

In this case its well accepted in the OGl community that MSFT’s annoucnement that the next version of Win32 will contain a software implementation of OGL ontop of D3D is a direct shot at D3D on thier platform. By providing an “acceptable” solution they encourage the video card makers to drop their (expensive) indvidual development efforts supporting OGL. At which point MSFT has control over OGL and can make it (a) slower then D3D and it almost by definition will be since it will be a translation layer (b) not track the latest features as fast as D3D and again by definition not support ANy features that D3D doesnt already support and © eventually let it age and drop it altogether.

The only “after” 1.3.1 is 1.3.2. As thats a bug fix build I would guess that the bugs fixed only apply to OGL.

As for 1.4, its still in development and the teram has limited bandwidth. I would expect them to finish the OGL version becore attacking a D3D one.

But, since I eat lunch with them almost every day, I will ask them for an official answer.

Ok, I hope to not sound too clueless but why isn’t there an OpenGL Win32 implementation maintained by the consortium ? Why should Microsoft be the only one to guarantee an Opengl compatibility on Windows systems ?

It reminds me of the JRE in its early stage when Sun was complaining that MS had implemented a crappy version of it.

The discussion on OpenGL & Vista is a bit out of topic but here is a link to a more complete thread about it : http://www.gamedev.net/community/forums/topic.asp?topic_id=373756 and a quote (from Yann L) that gives a better understanding, I think ;

[quote]In Vista, the LDDM compatible interface to the Aero desktop compositor is not documented, and LDDM is more complex than the old XP driver ICD interface model (due to WGF, but also due to TC related issues). In other words, external vendors were not able to support OpenGL, even if they wanted to. They still cannot to the full extend (ie. fully composited Aeroglass OpenGL), but a compromise solution was found (ie. uncomposited window, without requiring to turn off Aero entirely).

This solution is good for me, as it is acceptable for both games and professional CAD software. Although it would be nice, if we could eventually get a full LDDM compatible OpenGL driver for Aero.
[/quote]

If Microsoft, intentionally or unintentionally, would degrade OpenGL performance then the more important for Java3D to support Direct 3D I think.

The ability to support many low-level drivers was stated as one of the main advantages of Java3D. Good integration with Windows would set Java3D apart from all existing scenegraphs tied to OpenGL.

On the other hand there are many OpenGL applications running on Windows, not just games. I’m sure Microsoft must come up with a solution to this. Their ultimate goal is to sell operating systems, not to enforce some graphics standard. Or maybe I’m naive. :slight_smile:

[quote=“uj11,post:18,topic:26058”]
You are naive :slight_smile:

Microsoft wants to sell EVERYTHING, and their strategy thus far is not “make good stuff that people want”, it’s “use our monopoly to force people to use our stuff by damaging the competition.”

Microsoft is the most destructive force I know of in the computer industry. They will squash any form of innovation they can, because innovation generally leads to successful non-Microsoft products, and they can’t have that.
They are the mafia of tech companies. Successful, sure, but should we admire them for that?

Sure, but not as naive as I was before I experienced how Sun treated early Java3D adopters. They were left hanging for years with a slow, buggy mess. But fortunately that’s history. :slight_smile:

Regardless of what one thinks about Microsoft one must realize that Windows is their turf and if Java is going to be portable Sun has to adapt to that reality and not fight Microsoft by releasing quirky technology trying to blame Microsoft for it. It only hurts Java developers and it shouldn’t be necessary now that Sun and Microsoft have kissed and made up and everything.