WALL OF TEXT! Sorry about that.
I’m going with my own custom Java framework. I’m also sharing it with everybody here, because you’re awesome and because those are the rules. Mostly because you’re awesome.
- It targets Java 1.6.
- It uses the latest LWJGL release; 2.8.2 I think.
- It provides an Apache Ant-based build system where the default target builds and uploads your applet, including all required support files. Change the logo image

- It uses Proguard to slim down your JAR for faster loading times. It also builds your source code ZIP, including resources/ and the build system but excluding sensitive properties files and assets/.
- It will sign your JAR if you provide a keystore. If not, you can go unsigned with a tiny documented change to /build.xml.
- The auto-uploading system uses FTP. You give it a path, and it will create deploy all needed files and an index.html at that path. The page is nothing fancy; personally, I wrap it in an iframe. For the purposes of LD, the page contains a link to your automatically-generated source code archive.
- I promise it doesn’t steal your keystore password or FTP account (not this version anyway ;), but you should probably not trust me on that. Read and understand /build.xml. It’s not too complicated.
- It provides a basic wrapper around the Paulscode.com 3D sound system (in fact, so basic that you probably don’t want the wrapper), including ogg, wave and xm support.
- It includes Kenji Hiranabe’s awesome replacement for javax.vecmath, which I’ve repackaged to kenji.vecmath to avoid conflicts.
- Basic logging, of the Log.debug(“I can log’, any, number, of, values, “variety”);
The resource library is pretty basic but also pretty forgiving. Here’s the basic outline:
- Basic shader support with a parser that adds #include preprocessing
- PNG texture loading only, using Matthias Mann’s standalone PNGDecoder.jar
- Basic Wavefront OBJ support derived from Kev Glass’ Slick stuff (you rule, guy). No materials support. Due to a last minute change, it may handle quads now.
- Basic TrueTypeFont loading support, modified from a modified TrueTypeFont class that was originally from Slick, I’m sure.
- A resource loader that handles JARs and local filesystems correctly. Again with the Slick stuff because it’s good stuff. I just repackaged it to rip out his dependencies and insert my own.
- Resource queue based reclamation of OpenGL objects. When you’re done with a resource, you can just let it be garbage collected. The resource loaders have a reference queue that will automatically release textures, deallocate shaders, etc. when the object they’re attached to is garbage collected.
The resource library is the way it is to allow you to reload a resource (like a shader program) every frame if you want, for live debugging. This is important for me on OS X because I don’t have a good live GLSL shader editor. If you want to cache loaded resources, you’ll have to do that yourself.
So those are the features. After that, it’s pretty much just you and LWJGL. Mano-a-mano.
I figure it’s a longshot that anybody else will use it, but I’m not posting this just to obey the letter of the law; I’ve spent a little time cleaning this up before posting. I think it will save me time on menial tasks this weekend and let me be more creative. If somebody else decides to take the risk, that’s awesome and I’d love to hear how it went.
Get the library here.
Good luck everybody. And if you’re curious about what kind of game you can build with this in slightly more than 48 hours, here’s a shameless plug for a much larger work in progress…in space.
Go forth and kick butt,
Hume