Hi,
I’ve taken quite an interest in writing my own game. And Java is the only language that I’ll consider writing one in.
However, there are so many libraries out there that are already written in C++.
Do you guys (java game writers) bother with JNI to incorporate those libraries, or do you just start from scratch or port their code?
Recently I just hacked my way through collision detection and got a BSP-tree and Sweep-and-Prune working. BUT There’s SO MUCH MORE!! A portal engine … physics engine … skeletal and keyframe animation … network engine. Sigh. There’s no way for one person to do it all… is there?
Just looking for some advice from the real pros out there. You know, the guys that have actually made something instead of forever saying they will (guilty blush).
-Cuppo
I cannot speak for the other stuff, but what “networking” or “network engines” concerns, I would choose Java over C++ any day! There is so a lot about networking out there in Java.
Using Java has several advantages compared to C/C++:
Portability (runs WITHOUT tweaking on Windows, Mac, Linux Unix)
Simplicity - It’s so easy, a caveman could do it …
Library stuff gradually being sorted out properly by many devs in here. Low level graphics/sound/input access is totally sorted. High level scenegraph representations with model rendering etc etc. are now very robust (Monkey Engine, Xith). I believe William Denniss was working on an ODE Java port, so there’s your physics. There are a few GUI libraries around.
I haven’t done a Tribal Trouble-size game, but 1-2 years ago I was in the same situation as you. So I permit myself to post in this thread anyway.
That’s true…
I don’t know at which level of maturity it is, but you CuppoJava may want to take a look at JNAG : Java Network API for Games. It seemed very promising when I looked at it.
That’s really what made me move to Java : after 2 weeks trying to make compile my game prototype under Windows and Mac (I’m working under Linux), I gave up and took a look at Java.
Make programs in Java are soo easy. Make good programs in any language requires more than the particular language knowledge. You may have to know some software engineering too… As somebody said, you’ll take 70% of your time doing maintenance on your code (It has been proven to be true !), so it’s better to organize well your code from the very beginning.
That’s true, however, I wish we had a bit more coordination (like a site for the Java Games community). This could avoid “fragmentation” and “concurrent” projects. Moreover, this could help to share the immense knowledge spread over this forum.
Right. JOGL/LWJGL, JOAL, JInput, are all doing their work, and doing it well.
Yes indeed, although not all developers are convinced by these “generic solutions”. (Some still prefer custom, smaller and more efficient personal solutions).
Ahh it’s not William Denniss. Will is actually maintaining ODEJava (and Xith) which is a JNI binding of ODE.
Recently, Thomas Larkworthy (with some others developers, as Arne Müller) started a project named JOODE, which is a semi-port of ODE to Java. I say “semi”, cause some things are being rewritten from scratch, to take into account recent algorithms. And the project’s going on pretty well. I won’t say “I will participate to it” (“forever saying I will”), but it’d be true.
In my humble opinion, FengGUI is the most promising one. It’s based directly on JOGL, and we at Xith3D team are thinking about integration possibilities.
…
You know, you won’t find much work of mine on this forum… But dare I say I’ve posted something useful ? I think so… Don’t be so severe about people that didn’t finished a project… It’s such a pain to be in this situation…
Simple networking is painful in C/C++, which is why libraries abound.
Simple networkign is already easy and built into Java.
High scalabiltiy networking can be painful, as can trying to build custom UDP based protocols so if thats what you really need, then yeah there are various Java projects around for that.
But if all you want to write is, say, a LAN networked game java.net.* gives you all you need to do it quite handily.
In general this is true… keep in mind that with C/O++ you need a lot more library support because you are starting with so much less in the environment to begin with and coding is so much slower and more painful in general.