Next Version: Macified!
In another update on the progress of the next version of Luster I thought we should mention the main reason for the time it is taking to complete: mac support. When I first started creating the Luster runtime I made a decision that I would not use any technologies or systems that could only run on a single platform. I didn’t want to close off Mac or Linux support when starting out because I knew the time would come when I would want those platforms supported. However, using cross-platform libraries and tools doesn’t automatically mean you can run something on multiple platforms.
So, after deciding that the time was right to support the Mac, we started the porting process. After a few months of learning how to develop for the Mac, the first Mac-enabled version of Luster is nearing completion. Most of Luster’s functionality is ported and I can run the majority of Luster applications in the standalone player. Look for a brand new release of Luster on both Windows and Mac in the coming weeks!
With the new version of Luster will come a whole new collection of demos. I’m most excited about Blocks, which I’ve posted about several times now. Progress on this simple game is almost complete. We’re carefully crafting the first few levels that we will release and I am working on the shadowing system that we will be using for it. So far the game has proven to be fun to make and to play. We will do some final playtesting and gameplay tweaking just before release.
No commentsGame Tools, Level Editor, Utilities
Over the past year or so, one amazingly handy use for Luster has become very apparent: tools and utilities. Luster is incredibly fast to develop in, very easy to modify, and powerful enough to be flexible. These are the exact traits that make it an amazing platform for building game tools. One thing that a game team does not want to get bogged down in is the creation of their tools. They are, after all, trying to make a game, not a game tool. Luster has allowed me to create quick and easy level editors, or utilities, without putting in very much effort. Many of these tools took less than a week to craft, and could be maintained and modified throughout the project’s lifetime with minimal effort.
These are images from the level editor for the single player version of Bombs. Bombs was never released, and the single player puzzle version of the game was very experimental. This editor made it easy to quickly prototype levels. The editor itself took only a couple of days to set up, and was then maintained and evolved throughout the game prototyping process. It was simple and effective, allowing us to quickly set up quite elaborate levels.
A lot has been shown of Blocks lately. The editor has been critical to setting up this project in the short amount of time we have (so far, Blocks is only 3 weeks old). The editor allows fast level creation totally integrated within the Blocks engine. With a single button press you can switch from editing a level to playing it and back. It makes level making fun, fast, and effective.
This is a recent project. An observation I made was that a large amount of time was spent managing, copying, or rewriting old shader and materials, and then tweaking those materials for a project. Without a visual material editor, tweaking was a painful process of changing a variable in a script, re-running the project to see the effect, and then quitting it to go back and tweak some more. This material editor makes it very simple to apply materials, change their properties, and export them for easy integration into any project. The editor exports all you need: materials, shaders, and textures. The functionality here is all done, all within 1 week. The main effort now is simply filling up the library of available materials for artists to apply to their models. This will be a huge time-saver and probably also increase the overall quality of the materials produced.
So, you can see how Luster has made itself incredibly useful in this area. There’s plenty more tools I have plans to make. We are certainly open to creating these kinds of tools for other people’s projects as well. Just contact us and let us know how Luster can help.
No commentsMore Blocks Progress
So, thanks to Luster’s rapid development philosophy, we’ve been making fast progress on Blocks. We have most of the gameplay worked out, and are now working on the polishing. This includes the GUI, some of the final artwork (mostly textures) and lighting, and experimenting with level design to come up with the first few levels of the game. When released, the first levels will be a little instructional, moving into some moderate difficulty. More challenging levels will be released later. Here’s some more screenshots from the game.
No commentsIntroducing Blocks, the first Luster Game
In the last post, a mentioned a puzzle game that will be released along with version 0.19. We are finalizing this new version, and I thought it was time to show you some progress on this puzzle game. These are early development screenshots, but already the basic gameplay, editor, and look are complete. We still have some more assets to finish, levels to make, and control balancing to do. The first release will feature a few simple levels in tutorial form to get people interested. We will release new versions with more gameplay and more challenge as time goes on.
This game is very simple. Incredibly simple. You control the pad, which transports the precious cargo in the crate to the landing zone that is the floating island. You control the pad by powering the thrusters on either side. You can fire 1 side of thrusters at a time. You must navigate through the levels and get the crate resting on the island in any way you can. It doesn’t matter if the pad is on the island. You can throw the crate across the level if you want, as long as you get it on the island.
Here are those screenshots I promised.
The final two screenshots are from the built-in editor. And before you ask, yes we are planning to release the editor as well at some point.
No commentsUpcoming Luster Versions
During this last quiet period we’ve been hard at work on the new version of Luster. This new version will be adding a large amount of new systems and a bunch of small improvements. It will also include a complete overhaul of the browser plugins which should give better performance, more stability, and more flexibility.
Along with the new version of the runtime we have a lot of new demos and application for our beta users to try out. We have many new tech demos (showing render textures, a new text system, compositors, terrain, particle systems, procedural meshes, etc.) as well as the first release of some of our showcase apps. We will be releasing early versions of our 3D music visualizers, a new version of our Arthas dance app which will have broader hardware support, and a first release of our Luster showcase puzzle game. I’ll be making a more detailed post about this upcoming separately.
Make sure you keep watching this blog and our Luster site at www.luster3d.com for the new version and the new demos when they come out. We’ll make sure to get a notice out to all our current beta users, and if you haven’t signed up yet you’ll want to sign up to try out this new version.
No commentsEvolving the Visualizer
In between other projects I’ve continued to work on the visualizer.
The background orbs are gone and the background gradient is dynamic. There are more particle effects and much more dynamics affectors which change the particle’s behavior. The framerate is much better as well. Much of the framerate lag from the previous video was due to the video encoding settings, but the framerate of the application is higher with this version as well. I’m not sure about the vortex effect on the outer shell of particles. Let us know if you like it or not.
No commentsMusic Visualizers with Luster
A while back I made a simple volumetric light demo in Luster. I just wanted to test the rendering technique. Colin then picked it up and decided he would make the light pulse to the beat of the music by doing some audio processing in Flash and sending commands back out to Luster. Turns out, it worked really well. I put in similar audio processing capabilities into the core Luster API and pretty soon that simple volumetric light demo became our first music visualizer.
This is the second visualizer we’ve made. This one focuses more heavily on particles, with a lot of action going on at once. There’s a vignette-style blur post-processor as well as healthy amounts of bloom. Almost everything in this application is affected by the music, including the camera movement, the particle motion, and the return of the spectrum targets from the first visualizer.
We haven’t uploaded this application to the beta tech demos section yet. Videos, screenshots, and the app itself will soon be on the Luster3D site. All music in the video is from Jason Mraz. Also, if you view the video on YouTube you can see the high-def version, which I recommend doing.
No commentsArthas (of Warcraft fame) getting down in Luster
We recently finished up our skeletal animation tech demo, and I wanted to go into some of the details behind it. One of the first things you’ll probably notice is that it’s not simply showing off the skeletal animation capabilities of Luster. We ended up also using normal maps, scrolling UV texture animation, several shadow techniques and Flash/Luster communication. And all of this runs in a web browser (this particular demo requires Shader Model 3).
The main questions we get are “How did you get the Arthas model?” and “How did you animate him?” To answer the first question, we’ll go back to the beginning of the project. We had been thinking about possible Luster demos for a while. We wanted something that would not only show off the features of Luster, but get people talking about it. Around this time everyone in the office had renewed their World of Warcraft accounts for a bit so we could play during our spare time. Matt came up with the idea to use World of Warcraft models in Luster somehow. I immediately opened up the WoW Model Viewer to see if there were any model export options.
Not only were we able to export models (with textures and skeletons intact), but the WoW Model Viewer could automatically grab a character’s gear from the Armory and dress the model up appropriately. One of our initial tests was the get a character from the Armory and try to get it into Luster. To do this we exported from the WoW Model Viewer in the Milkshape3D format. This export also provided us with the textures for the model we exported. Once in Milkshape we exported the model to FBX, which allowed us to get the model into Maya. Getting the model into Maya was important for two reasons: 1) We could go from Maya to the Ogre3D Mesh format which is supported by Luster and 2) I actually know how to use Maya.
Once we figured out the pipeline, we scoured the WoW Model Viewer for more characters and models to import. The sample application in Luster grew from one random character to having several characters from the Armory, Arthas, Illidan, a huge protodrake, Sylvanas and a boss from Naxxramas. We added some stationary and dynamic lights and per-pixel lighting (with normal maps), which made the models look great, but something was definitely missing. The models were too static. They had no sense of life to them, no purpose. It was at this point that we tried to extract the animation data from the WoW Model Viewer, but it doesn’t support animation exporting. We could export different poses, like a single frame of an animation, but not the whole animation. We did find some tools to extract the .anim files from World of Warcraft’s .MPQ content files, but these were not useful to us in their raw form.
Pretty disheartened by the fact that we couldn’t extract any animation data, I went into Maya to play around with the models we had. After realizing that the models already had skeletons and the vertex/joint bindings were intact, I started animating an arm here and a head there. It dawned on me that I could probably create my own animation on one of the characters and incorporate that into the application, maybe as an Easter egg of some sort. I decided to use Arthas for a few reasons. First, he is from the latest expansion and therefore has much more detail than many of the older models. Second, he has some animated textures (his eyes and sword for instance) which look great. Third, he just looks badass. After the Arthas animation was complete, we decided to focus soley on that particular model since the animation process worked so well.
The controls for the animation were created in Adobe Flash. The resulting .SWF file was imported into Luster and incorporated into the project. The Flash movie and Luster communicate back and forth. When you click on the play button, Flash tells Luster to start the animation. Luster then tells Flash to update the scrollbar as the animation plays.
The finishing touches were to add a gradient background and some shadows. I did the main ground shadows using a regular shadow mapping technique. The self-shadow implementation was done by Brian and used Variance Shadow Maps (VSMs) to produce soft shadows. The normal maps on the model were generated from the original textures using the NVIDIA Normal Map Filter Photoshop plugin.
-Chris
1 commentVirtual Theater Success
On May 2nd, during the ImagineRIT innovation festival, the vaudeville show for virtual theater was performed. We had 3 characters who could be dynamically assigned to two different real-time motion capture systems. The system then synchronized the production with >20 clients across the campus. The performance itself was controlled from the 3rd floor of the computing college in the Computer Science graphics lab. I acted as the “stage manager” with a special client that had access to activate staging cues for lighting, set changes, sound effects, etc. The director of the production was also in the graphics lab giving direction to the actors in the motion capture systems as well as myself for timing.
We are still compiling the different video feeds we had set up from that day. There was a video recorded from one of the labs that was linked into the performance. It was recorded by Andrew Brown, who wrote the plugin which output real-time motion capture data from AutoDesk’s MotionBuilder. Here’s the video from YouTube:
No commentsNew Luster Version Released
A new version of Luster (0.18.8) has been released. This new version has a few minor enhancements and a couple critical bug fixes for the nature plugin (terrain). This is the version that will run the Soarcraft demo. This player version is still part of our guarded Beta. If you’d like to see the power of Luster you can either email us, or jump over to the Beta sign-up page. After you sign up, we’ll be getting back to you with a link to download Luster and a few demos to play around with.
We’ve been continuing our work on our major contracts, forming new relationships and pushing Luster for our final release. There are a lot of useful enhancements coming with version 0.19. Our Mac version has been coming along nicely as well. At the same time we haven’t been neglecting the need for good demos to show you the power of Luster. Here’s a sneak peak of a demo showing the ease of importing assets, controlling animations, advanced lighting, and our revolutionary integration with Flash. We were able to take one of the many open source tools available and extract a World of Warcraft character model to create a custom animation. The full thing will be posted in a few days, so check back soon.
No comments























