Darkwind Media Blog

Repository of thoughts and code from the Darkwind team

Archive for April, 2008

Preparing 0.8 and editor alpha

Luster is nearing its next major release, which is 0.8. This release brings a lot of new features and bug fixes. Here’s a quick look at what’s new:

  • Better integration with JavaScript in Internet Explorer, with more robust error handling and better synchronous communication
  • Font handling with the ability to drawing text in 3D space (either flat texture or fully 3D text with depth)
  • Robust a complete HTTP client system lets you post data and receive responses from servers, download files, and access web pages
  • Support for multiple render targets lets you take advantage of latest hardware to quicken some renderings tasks which involve rendering to multiple textures
  • Added 3D positional audio in a new official plugin located in the package com.darkwindmedia.audio

There’s are some major new features there, as you can see. There are even more small changes, fixes, and enhancements than what is listed. This is all in preparation for our external alpha testing that will be happening at the end May/beginning of June.

During the course of development of Luster, Colin and I discovered an excellent new use of the technology: presentations. By combining Flash and Luster we could make amazingly compelling presentations. The ability to demo 3D interactive content within the presentation, use the 3D assets to accent our points, and have Flash’s excellent 2D capabilities as a foundation, has been wonderful. Hopefully we’ll be able to put a few of those presentations online as tasters for what Luster with Flash can do.

The other side of this project has been the Luster Editor, which we’ve been quiet about until now. It is the development environment that is paired with Luster. It allows for complete start to distribution control over Luster. It is nearing the public alpha stage now, which is why I’m revealing a few details about it:

  • It is based on the Eclipse framework
  • It provides a state-of-the-art coding environment for Luster including syntax highlighting and debugging
  • It provides advanced resource management

Yes, those details are a little vague. There will be plenty more information as we moved through this public alpha phase and get some proper feedback.

Watch this space for more updates about this public alpha, new demos, our presentations, and the new features going into Luster 0.9.

No comments

Overrides in Ogre compilers

In case no one knew, I’m a developer on the Ogre library. If you are anywhere near interested in 3D graphics I suggest you check it out.

My most major contribution has been new compilers to handle the scripting interfaces for a lot of Ogre’s resources. As Ogre nears a new stable release (1.6, Shoggoth), the team is trying to finalize the features in HEAD.

A community member (hellcatv, on the Ogre forums) submitted a patch recently that enabled more powerful object overriding. This, along with my work to include variables are making Ogre’s script the most powerful resource scripts out there (easily better than fx, cgfx or equivalent formats). Here’s an example:

material Test1
{
    technique
    {
          pass
          {
               ambient 1 1 0 1
          }
          pass
          {
               ambient 1 0 1 1
          }
    }
}

material Test2 : Test1
{
    technique *
    {
          pass *
          {
               ambient 0 0 0 1
          }
    }
}

Test2 will now contain the 2 passes inherited from Test1, but the ambient property in both passes will be set to “0 0 0 1″. The match is wildcard bases (so it supports more complicated syntax than just *), so you can have some pretty advanced overriding behavior. The above can also be achieved using variables, but this form of overriding has other uses as well. If, later on, the base material is changed to include another technique (perhaps to support lower-end hardware) the wildcard override will catch that technique as well. This makes your scripts more robust to changes within the hierarchy. It also allows you to override materials that perhaps weren’t set up for customization (by providing variables for you change). You can override properties in more objects with less code.

No comments