Tech – EasyBones and its Toolset/Pipeline

We’ve created a general-purpose rendering library on top of jPCT and raft’s Bones extension that makes it dead simple to load and display skeletally animated models on Android.  The ETC’s “7” project team already has plans to use our EasyBones library for an Android augmented reality game.

Features include skeletal animation (loading OgreXML format), picking, billboards, and alpha-blended textures.  We’ve also created accompanying tools that make it simple for artists to view their OgreXML exports in-engine, and a specific Speakeasy tool that we call the SpeakeasyPackager that simplifies our asset pipeline and allows us to reduce our Android package size drastically.

After deciding on jPCT as our underlying 3d engine, we had a lot of work remaining until we could robustly use it in our gameplay code.  jPCT isn’t super-low-level, but it’s also quirky and under-documented, and we needed another layer (or two) on top of it in order to be able to concisely load models and have them display, animate, and transform properly.  Further work was necessary to add the ability to load texture data to raft’s modified version of jMonkeyEngine’s OgreXml importer, as well as to transfer that data into his Bones importer.

We’ve been using our rendering library successfully in our own prototypes.  Since our character appearances are data-driven from a spreadsheet, our SpeakeasyPackager only packages up the textures specifically referenced, helping shave 8mb off of our package size (right now about a 75% savings).  It’s also eliminated a number of classes of difficult asset bugs by standardizing flow of data (we run the packager whenever we sync new assets from Perforce, and it clears out the old package and refreshes it with newly converted models and textures).

Although on general principal we recommend Unity for teams looking to develop 3d games on mobile platforms, all 3 ETC teams developing 3d Android games this semester have required access to native Android functionality that Unity prevents.  Developing a bridge plugin for Unity to make Android API calls is technically possible but no team that’s attempted it has had success.  We’re extremely happy with our choice to build on jPCT, and we think our work will help make life easier for future teams that choose this route.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *