Porting Quake III to Java3D

Pretty much locking and display lists were the big ones. However, we implemented these in a very generic way so it can be used for any scene element (i.e. didn’t do it just for the Quake test), thus it could probably be faster in some ways if you are just doing it for the Quake test. The demo also pointed out a few areas for improvement (better texture state organization, etc).

This test really was great for allowing us to find huge performance gains quickly. We still have a lot of things we want to implement that it brought forward.

The latest test results as reported by Renanse on the jME forums:

You can also read more of the thread discussing this on the jME forums if you wish: http://www.jmonkeyengine.com/jmeforum/index.php?topic=2597.45

[quote="<MagicSpark.org [ BlueSky ]>,post:60,topic:25522"]
Will, arne, should w modify Xith pipeline to use display lists for static geoemetries ?
What other changes would bring performances to a higher level ?
@jME team : any trick to give ? I think rather than to be in competition we should help us mutually. :slight_smile:
[/quote]
yeah - we should - maybe make it switchable with the OBB stuff, so the faster method can be used.
It’s really bugging, that xith3d is now the “worst” scenegraph-renderer of all three.

Mmh I could try to give a look, but I’d actually concentrate on JOODE, and there’s IOI (International Olympiad in Informatics) in Summer (gotta train for it - want to be in the german team :wink: ) and the second round of a german-informatics contest, and I need that for my A-level…

Do you remember when I was talking about making a fusion of all game middlewares ?
I had too few experience and was a lot too optimistic, but now we have more facts : developers, although not being clearly agressive, are competiting, with “their own scenegraph”. And now, is it a good thing for the community ? I don’t think so… What are the differences now, between jME, Java3D and Xith3D ?

  • From what I know, Java3D and Xith3D have the same “interface”, although they may have been altered a bit over the years.
  • So it would not really be hard to merge, heh ?
    For jME, it’s just another story. But if we cannot see clearly different targets for the scenegraphs, then there’s certainly one better approach than another, right ?
    So we could not only do a dummy merge but make an unique implementation plan for a “java 3d game oriented scene graph”.
    Wouldn’t that be feasible ?
    Having took a look to Aviatrix3D, it appeared clearly that it was data visualization oriented, and not for games. That’s why I don’t speak of it here.

Cheers

Actually it is a good thing. The various methods have shown what method is most efficient. If there had only been one libary there would have been no way to find this out. Competition is a good thing, always.

Hmm… good point…

Yeah, but, the ideal scenegraph would let you which method to use.
If we would do so, everyone would be encouraged to write/imlement new algorithms and the scenegraph would be very efficient…

hey i really hate to ressurect such old threads, but this is really intresting. Im researching java’s ability as a language for a game engine. Anyone have any other updates?

Everyone continued its own way, and Java3D, Xith3D and jME all have their weaknesses.

I’m sure you mean they all have their strengths :slight_smile:

Kev

Well, I really don’t want to commit blasphemy ;), but I believe the Irrlicht engine (or the java port) is the right tool for an ego shooter. Xith3D with java ODE, JME and Java3D are simply too slow for an ego shooter with physics.

Everyone continued its own way, and Java3D, Xith3D and jME all have their weaknesses.

Can you list some in regards to performance, that is my major issue here. I ran Jake 2 with Jogl support and lwjgl and was rather dissapointed at the results. Is it software rendered?, i thought those libs were hardware accelerated. I havent really exposed myself to java3d and the other scene graphs.

Ive done some searching, what exactly is the signifigance of a java ‘binding’, is this a euphemism for a JNI call?.

@ qudus, ego?

What framerates did you get. I found Jake 2 to be very fast…

Yes, that’s it. When you have code written in c/c++ you can create a Java binding through JNI to make use of the c-code from Java.

Interesting. How do call games like Doom or Quake? Here in Germany we call them “Ego Shooters”. Ego is latin and means something like “I” or “my person”. So the meanig of “Ego Shooter” is, I’m shooting from my own perspective.

I’ve just run Jake2. And I’m vervy, very impressed. Well, it was so dark, I could nearly see nothing, but the FPS were impressive (~200@1024x768). Irrlicht is not faster than this! But can we achieve it with Xith3D/Java3D/JME, too? I think espeacially the phyiscs will be a problem. A mate of mine has done some tests with JODE some time ago. It was really very complicated and it was simply slow. But Maybe there’s a better physics lib for games usable with xith. Does anyone know one?

FPS : First Person Shooter. It’s how we call it in France (yeah, we speak frenglish) and I think, in USA/UK.

JOODE was and still is under heavy, heavy development, so don’t be frightened about performances it’s continually increased.

[quote="<MagicSpark.org [ BlueSky ]>,post:74,topic:25522"]

FPS : First Person Shooter. It’s how we call it in France (yeah, we speak frenglish) and I think, in USA/UK.
[/quote]
Ah, thanks. I knew this word, too. And it is used in Germany, too (besides Ego Shooter, shich has the exact same meaning).

[quote="<MagicSpark.org [ BlueSky ]>,post:74,topic:25522"]

JOODE was and still is under heavy, heavy development, so don’t be frightened about performances it’s continually increased.
[/quote]
Thanks. I’ll keep an eye on the project.

My next game is a racing game and I plan to do it with JOODE. I made some demos of it some months ago and it worked pretty well (although in very very alpha).

[quote="<MagicSpark.org [ BlueSky ]>,post:76,topic:25522"]

My next game is a racing game and I plan to do it with JOODE. I made some demos of it some months ago and it worked pretty well (although in very very alpha).
[/quote]
Cool, may I have a look?

Cool, may I have a look?
[/quote]
Unfortunately I lost them some time ago. But within 6 months when my current game is reasonably completed :smiley: I’ll play some more with JOODE (they still need demos).

Sorry it was the first time i saw ego substitued for first person. Thought it was a wise crack on the genre.

Anyway, i did some benchmarking on a newer HP machine. Its a pentium D 820, 2gb of ram and a 7300le video card. Jdk 1.5 is installed, and so was microsoft media center edition (bleh) . Also the resolution was 800x600, texture was set to lowest, and it was run in full screen mode. Since i did not see any option for time demo, these numbers were from playing the first level. Yes i know its not scientific.

Lwjgl- @ start frames were varying around 163 fps.
Lwjgl -@ middle fluctuating around 230
Lwjgl -@ end getting 350 in some areas, generally around 250.
Lwjgl -@ Max FPS seen, 420 looking at wall up close.

Fast Jogl - @ start frames were varying from high 60s to 90s.
Fast Jogl - steady increase from dismal start, @ middle after killing 5 monsters before entering 2nd room, frames jumped from 150 to 216.
Fast Jogl - @ end frames were at a steady 160
Fast Jogl - @ Max FPS seen, 330 looking at wall up close.

Jogl - @ start at around 150, drops to 70 during explosions. Battles arent much better.
Jogl - @ middle around 200 fps.
Jogl - @ end once everyone is dead fps was around 230
Jogl - @ Max FPS seen, 315 looking at wall up close.

General Notes.
Lwjgl - seemed to run best, also i did not have to remove vsync to get anything higher then 60fps. The textures on lwjgl didnt seem to be as detailed as jogl.
Fast Jogl - Repetive fire killed my frames, Fps down to around 80 in some cases (multiple bullets drawn).
Jogl - A noticable drop in frames when viewing dead bigger guy is on the floor.

is there a native phsyics api?

and what about porting quake 3 in an applet :wink: ?

http://dzzd.net/demo/QUAKE/

this will start in soft mode press “H” for about one second to switch to hardware (JOGL)

just for fun…