jMonkeyEngine at JavaOne

JavaOne is going to feature an exciting new tradition this year, stepping into the shoes of the old Flying Dukes tradition. Instead of shooting real t-shirts into a real audience with various clever devices, virtual t-shirts will be shot from a virtual cannon. If you want a real t-shirt, you'll need to write a few lines of code to direct your avatar to the right spot to catch the shirt. Pretty easy really as you will get enough muzzle info to do a simple physics calculation to determine where the shirt will land. That said, if you do something really crazy, (say like having a mad max car race that ends in a crash expelling the driver who catches the t-shirt in mid air) you could win some really cool prizes worth a lot more than a t-shirt. See the contest site for more information.

Why am I talking about this? Sun has decided to use the jMonkeyEngine for the contest, which is quite exciting.

So if you are attending JavaOne, I'd urge you to check out the contest and make a submission. Show off those crazy coding skills. Oh, and if you want to have even more fun, come heckle me at the JavaOne session on Friday, May 11th where I'll be speaking for 10 minutes or so on the jMonkeyEngine and showing off some of the cool things being done with it.

jMonkeyEngine releases point 11 release

jMonkeyEngine announced today that has released version 0.11 of its successful opensource Java gaming engine, adding many new and exciting features as well as improving performance and reliability.

Major new features and systems in this release include:
  • A Skin and Animatable Bone System enabling realistic representation of models and motion.

  • Support for importing files in the COLLADA format.

  • Support for using jME in a Java Applet.

  • New Importer and Exporter System giving a standard framework for loading and saving jME scenegraphs.

  • A Binary Format implementation for the new import/export system that is more compact and faster than standard Java serialization.

  • Support for rendering to Framebuffer Objects.

  • New Pass - Water, with configurable reflection, refraction, wave generation and more.

  • New Pass - Bloom, with configurable intensity, blurring, resolution and more.

  • Support for simple texture based dot3 bump mapping

  • New extension providing the ability to generate 3d meshes from text.

  • Control Binding Management

Bug fixes and enhancements in this release:
  • Upgraded jME's official binding to LWJGL 1.0

  • Improved rendering system tracking, reducing the number of jni calls to the underlying native bindings.

  • Optimized Collision system, specifically triangle collision and picking that is fast and several times more memory efficient.

  • New Sound System revamp (

  • New editor extension package (jmex.editor) providing editor widgets useful for building jME related tools in Swing.

  • Improved Particle System and Editor adding Particle layers, Particle Influences (with prebuilt wind, gravity, drag, vortex, swarm and wander influences) and more.

  • Enhanced Multi-threaded support including a system for queuing up and executing code in the rendering context thread.

  • Enhanced support for using jME inside of Swing/AWT

  • Many other bug fixes and memory/performance optimizations

Find out more about the jMonkeyEngine by visiting

Linked by Gosling

Just a quickie here: I thought it was pretty cool to look at James Gosling's (aka Father of Java technology) blog today and see a link to jMonkeyEngine. Nice! </geek moment>

Adventures with Ubuntu Edgy Eft

A week or two ago I was at Frys and came across The Official Ubuntu Book. I've heard a lot about this flavor of Linux lately and thought it was high time I started working with it.

The book comes with Ubuntu's "live DVD", basically a bootable disc that allows you to try out Ubuntu without going through an install process or even touching your existing OS. What a brilliant idea! The only catch is that you obviously can not update, save preferences, etc. so after playing with it that way for a little bit I wanted to install it onto my HD. This proved to be a little bit harder because of my hardware. I am running a SATA raid and had my WinXP install setup on SATA ports 0 and 2 on a RAID 1. I installed Ubuntu onto a new HD on port 1. Unfortunately the install process put the GRUB boot manager onto my port 0 HD, making both WinXP and Ubuntu unlaunchable.

The fix for this is fairly simple... You pop in your WinXP CD and repair via a fixmbr command. Unfortunately, again, my SATA raid was an issue. WinXP setup needed a driver for that and stupidly enough, it would only read drivers from a floppy. I had no floppy drive (who does these days?) Ugh. I've heard you can hack the WinXP scripts and burn a new CD to use, but instead I bought a $12 floppy drive from Frys and added it to my rig. I'll try to think of it as old school charm...

After getting XP back, I swapped around my SATA drives, putting the XP drives on ports 1 and 2 and putting the Ubuntu drive on port 0. I then ran a fresh Ubuntu installation on that drive and finally all was well. I now have a dual boot WinXP/Ubuntu machine.

The above hardware obstacle course aside, my next small hurdle was getting the native nVidia driver installed and working with dual monitors. I'm no n00b when it comes to Linux and such, so editing config files and installing packages was not a huge deal, but I can see where Ubuntu would still scare away the average desktop user. Bookmark this page: it will quickly become your best friend. Especially if you want to make Ubuntu really pretty and useful via Beryl and Automatix.

Setting up and running jMonkeyEngine in Eclipse was a lot easier. In fact, it seems like jME runs slightly faster when I boot into Ubuntu then when I boot into WinXP on the same box. Hard to say though. One problem I faced was that the 256M default allocated to Eclipse was too small to compile jME. Bumping that up via command line args to 1GB helped (probably could be smaller, but I had plenty of memory so I figured might as well...)

/usr/bin/eclipse -vmargs -Xmx1024M

The other problem I've found is the resolution settings it detected with my setup. I'm running dual widescreen lcd monitors on an Nvidia 7800 GTX and the only rez choices I'm offered in the default settings splash are 2048x768, 2560x1024 and 3360x1050. Hand changing the cfg file to read 800x600 works fine though. We'll have to do something to make that work a bit better.

Here's a pretty screenshot of water running across both monitors at 3360x1050:

Overall, I would say Ubuntu is the easiest, prettiest, most capable Linux distribution I've ever used. A few warts still remain, but I can definitely see myself using Ubuntu Edgy Eft (the codename of the current release) as my main home operating system.