Im interested on doing a project that uses Irrlicht core as a mini-engine to be binded to the Java language.
The currently available option on javagaming are JOGL and similar opengl direct bindings. Java3d which is discontinued by Sun and is now open source.
The problems i have with these solutions are many:
--> JOGL is a very low direct binding to opengl that suffers of some problems that even C does not have. For instance they use ints to emulate enum arguments on the opengl C side. The problem is that they loose type checking. On the other side Java enums are full objects and cannot be used without performance problem.
To make things better Java programmers usually build an extra layer on top of JOGL. This makes for another layer that i think it is unnecessary. The problem is that binding directly to opengl is a very low-level binding that forces Java programmers to use C similar coding style and prevents using Java language features.
--> Java3d as been discontinued by Sun. It suffered from blockiness, verbosity and it was very inflexible to opengl expansion. The OO model was a mix of well designed classes with feature creapling classes that didn't help and were not pratical at all.
This is what im planning:
--> A two layer solution based on java and an Irrlicht core engine. The irrlicht core functinality would provide, irrlicht device (2d/3d), basic event management (mouse/keyboard), timer device, basic os operations related to irrlicht device window (like clipboard), drop/grab Irrlicht objects from Java, using a smaller core set of features from the scene and video namespaces only.
--> What would be done by Java: io, file format coding/decoding, video playing, audio playing, scene graph management, gui high-level event management (logical events, event filtering/registering, etc).
--> The binding with an Irrlicht core is an high-level one. Not a low-level binding that limits Java programmers from using the language features.
--> The java top layer is similar to the Irrlicht namespaces gui, core (including a fast math package that does not exist in java), io (based on java nio). Avoiding bad OO programming with excess of verbosity and feature creapling is essential.
--> Very well documented, using UML whenever neccessary, contract programming, Java refactoring and code analises tools, using a good OO design (similar to Irrlicht) not too verbose and not too simplistic.
--> For mesh data, audio and graphics i was thinking on doing something suporting the best free and open source tools like Blender, Gimp, Audigy, etc Im not a rich person so i prefer working with solid opensource tools or at least have good support for it.
The reasons why i choosed Irrlicht:
--> The simplicity and pratical OO aproach of the engine.
--> Being well-documented which shows that person who designed Irrlicht was more than an hacker toying with code but he knew what he was doing.
--> The funcionality of the engine.
--> Being opensource and available to linux.
--> Being usable with commonly accessible or opensource tools data formats that are accessible for people without money to buy 3dstudio or Photoshop.
--> An opensource engine that can be used to make professional games.
--> An opensource engine that can be used to make games that can compete with HL2 and Doom3 and show the opensource side of the force
Irrlicht Java engine project
As for my own knowledge i am mostly a Java programmer and a C++ aficcionado. I have a minimal understanding of C++ but i can work with DevCpp to build the create the bindings for an Irrlicht core abd compile the core myself.
I could also do the Java programming and add the necessary modules for the Java part of the engine using java apis.
Since i barely know anything of OpenGL and i don't know how edit the Irrlicht source or do the necessary changes yet.
I also would like to know if anyone is interested to help in this project. A webmaster would help a lot in setting up a sourceforge project, setting CVS, etc. Since at the moment i don't have the knowledge yet. Any other help is apreceated.
Cheers
I could also do the Java programming and add the necessary modules for the Java part of the engine using java apis.
Since i barely know anything of OpenGL and i don't know how edit the Irrlicht source or do the necessary changes yet.
I also would like to know if anyone is interested to help in this project. A webmaster would help a lot in setting up a sourceforge project, setting CVS, etc. Since at the moment i don't have the knowledge yet. Any other help is apreceated.
Cheers
well, the concept is good....
I can't say that I agree with all of your plans. It would be nice to extend Irrlicht's file capabilities, but I see no reason not to use the one that it already supports. You can do A nice wrapper on the graphics end by dealing with AWT peers. You can nicely wrap the C++ events with a dispatcher interface within the device class. Audiere has considerably better sound output and trhoughput (and is much less machine intensive), so it makes sense to wrap that as well. I am already in the process of writing a "THICK" binding at the moment. I am unsure whether I will be releasing it as open source, or as commercial. Either way, I will find a nice safe spt to post the beginnings of it f someone wishes to continue the development.
P.S. When writing a good binding, there are two important things:
1) Know BOTH languages that you are trying to bind to/from.
2) Familiarity with "THIN", and "THICK" bindings, and their purposes and design considerations.
P.S. When writing a good binding, there are two important things:
1) Know BOTH languages that you are trying to bind to/from.
2) Familiarity with "THIN", and "THICK" bindings, and their purposes and design considerations.
Oh Yeah...
I thought that I should mention that Java3D is NOT dead. It has been neglected for quite some time, but recently things seem to have picked up.
I also should note that if you are looking for a more "pure" java implementation, you should probably check out: http://www.jpct.net/
toodles
I also should note that if you are looking for a more "pure" java implementation, you should probably check out: http://www.jpct.net/
toodles
Thanks for the info. It seams that there are some good quality bindings already, like
https://sourceforge.net/projects/jirr/
for instance. Im also going to look at JPCT before deciding to go forward with my project.
https://sourceforge.net/projects/jirr/
for instance. Im also going to look at JPCT before deciding to go forward with my project.