Here’s a quick report of the situation (3-characters ID between parenthesis are used to quickly reference a need) :
Introduction
Java Game development is growing more every day. Even if commercial projects are made with, the majority of the coding efforts are open-sourced. This is great, but I think we should have a bit more organization.
I’m doing a summary of all the projects I’ve seen in my rather modest career. This is why I left out some APIs I don’t know, and some I don’t find really useful. However, don’t mind posting constructive criticism.
I. Needs
- Maths
- (MAT) Vector and Matrix Math library
- (COL) Collision Detection library
- (PHY) Physical simulation library
- Graphics
- (WIN) Window handling library
- (GFX) Low-level graphic library working on top of (WIN)
- (SCG) High-level scenegraph based on (GFX)
- (FMT) Graphic files loading library
- (FRM) Frame-based animation library
- (SKE) Skeletal animation library
- (GUI) Game User Interface library based on (GFX)
- (MED) Video and audio streaming library working on top of (WIN)
- Input
- (INP) Game devices handling library
- Network
- (NET) Networking library
- Development
- (IDE) Integrated Development environment
- (DAT) Data loading/saving library
- (TST) Test suite
- (SCR) Script language
- (PRO) Profiler
- (DBG) Debugger
II. Existing APIs
- Maths
- (MAT) Vecmath (missing some functionalities) / JAMA (needs to be included in Vecmath)
https://vecmath.dev.java.net/ / http://math.nist.gov/javanumerics/jama/ - (COL) Actually implemented in (PHY). JOODE goes in the direction of separating (COL) and (PHY)
https://joode.dev.java.net/ - (PHY) ODEJava, soon outpaced by : JOODE
http://odejava.org/OdejavaIntro / https://joode.dev.java.net/
Note : jme-physics is ODEJava-based
http://jme-physics.sourceforge.net/
- Graphics
- (WIN) AWT / Swing / LWJGL (partial solution)
http://java.sun.com/products/jdk/awt/ / http://java.sun.com/products/jfc/tsc/ / lwjgl.org/ - (GFX) JOGL (Java OpenGL) / LWJGL (LightWeight Java Game Library)
https://jogl.dev.java.net/ / http://lwjgl.org/ - (SCG) Xith3D / Java3D / jME (Java Monkey Engine) (maybe we need more unification… or to define precisely scenegraphs differences)
http://www.xith.org/tiki-index.php / https://java3d.dev.java.net/ / http://jmonkeyengine.com/ - (FMT) Actually included in various (SCG), should be made generic
- (FRM) Included in (SCG), should be made generic Maybe something based on Xith’s MD2 loader would fit the bill.
- (SKE) Included in (SCG), should be made generic. A port of Cal3D would do the trick.
http://cal3d.sourceforge.net/ / http://www.shortfuze.co.uk/Wiki/Wiki.jsp?page=Models - (GUI) FengGUI, + various toolkits included in (SCG)
https://fenggui.dev.java.net/ - (MED) JMF / LWJGL (secondarily)
java.sun.com/products/java-media/jmf/index.jsp / lwjgl.org/
- Input
- (INP) JInput (Java Input library) / LWJGL (secondarily)
https://jinput.dev.java.net/ / lwjgl.org/
- Network
- (NET) J2SE JDK, JNAG (Java Network API for Games), JGN, FlyingGuns
java.sun.com/j2se/ / https://jnag.dev.java.net/ / http://javagamenetworking.dev.java.net/ / www.flyingguns.com/
- Development
- (IDE) Eclipse, Netbeans
www.eclipse.org/ / www.netbeans.org/ - (DAT) JDOM (excellent XML I/O library)
www.jdom.org/ - (TST) JUnit (excellent testing library)
www.junit.org/ - (SCR) BeanShell, Groovy, Jython
www.beanshell.org/ / groovy.codehaus.org/ / www.jython.org/ - (PRO) Actually included in (IDE)
- (DBG) Actually included in (IDE)
III. Less known/used libraries
- Jirr : binding of the Irrlicht game engine
http://jirr.sourceforge.net/ - Ogre4j : binding of the Ogre game engine
http://www.ogre3d.org/wiki/index.php/Ogre4j - SDLJava : binding of the SDL library (Simple DirectMedia Layer)
http://sourceforge.net/projects/sdljava/
IV. TODO
- Set up a JavaGames website (in addition to the forum) to coordinate the efforts
- Put this report on the website
- Be sure each named project has a page on dev.java.net
- Make these pages clean, clear, concise, and write roadmaps
- Verify each project license (LGPL or BSD, in order to be able to make open-source projects / freewares / commercial projects)
- Write specifications for (FMT), (FRM), (SKE), and (COL)
- Separate (FMT), (FRM), (SKE) from various (SCG) (take the best out of all libs)
- Separate (COL) from (PHY)
- Merge Vecmath and JAMA if necessary, and implement missing functionalities in the resulting lib
- Merge (SCG) if possible. If not, make a new library made by all developers of the previous projects. If there are really different needs, make two or more libraries, but anyway, try to avoid fragmentation
Conclusion
Please tell me what do you think of it, which needs I missed, if you find the idea of a javagaming website useful, and other thoughts about merging libraries…


