Wonderland 0.5 – The Prehistoric Age

January 30, 2009

Yesterday marked another important milestone for Wonderland 0.5 as we advance the technology from the neolithic "teapot" age to the avatar-rich bronze age. As you may recall, the Sun Labs team made a New Year’s resolution to use Wonderland 0.5 for all our team meetings. Yesterday’s meeting, using an early instance of what will become the Dev3 release, was our first with avatars:

Small group of avatars in Wonderland 0.5 Team meeting in Wonderland 0.5 showing hand-raise gesture

As is fitting for this stage in the project’s development, we held our meeting immersed in the age-appropriate architecture of Stonehenge, an attractive model found in the Google 3D Warehouse. There’s still some work to do in streamlining the import process, but in the near future it should be effortless to import a .kmz model (the Collada-based format used for Google Earth) into Wonderland.

Like the rest of the system, the avatars are still evolving. The recessive trait of walking in place that we thought was eliminated from the Wonderland avatar species in the 0.4 stone age, has re-appeared (apparently Paul was feeling nostalgic for the old days!). We’re hoping that by the time Dev3 is released, natural selection will once again weed out this disturbing trait as well as the avatars without legs:

Avatar without legs

In this particular version, all the avatars are randomly selected for each user, so each user sees a completely different set. Here’s a scene from Jordan’s point of view:

Meeting in Wonderland 0.5

Nice prehistoric hairdo Jordan! Another thing to notice is the stripped shirts. These demonstrate a useful new feature of the avatar system which will eventually allow two-tone color customization of avatar clothing.


A Module System for Wonderland

January 28, 2009

I’ve been wanting to write this blog post for while (since this past summer, in fact!). I, along with the rest of the Sun team, began working on a brand-new module system for the 0.5 release this past summer. While I expect to improve to this module system over time (like any piece of software), we have implemented all of the features we need for the upcoming 0.5 release and have been using it for quite some time.

Writing a blog about a mundane technical topic like a "module system" may seem inconsequential, but in reality, it has far-reaching and important consequences for the future of the Project Wonderland platform.

What is a Wonderland Module?

Wonderland ModulesA Wonderland module is very simply a collection of things for a virtual world. These things can be a number of items: code, scripts, artwork, or world descriptions. Wonderland modules are very similar in spirit to ‘plugin-ins’ or ‘add-ons’ that you find with other software programs. A Wonderland module delivers new functionality to a Wonderland world. This may include custom cell types (Java code), or it may include 3D models and textures, or it may include scripts, or it may include assemblies of world components into a world.

From a technical point of view, a Wonderland module is a Java Archive File (JAR) with a specific structure and XML files to describe its content. The exact nature of this JAR file structure is laid out in the Wonderland Module Specification: while ordinary users and most developers do not need to know this level of detail, it never hurts to expose as much information about the operation of Project Wonderland as possible.

With Wonderland modules developers can package up new virtual world functionality and deliver it to others. The installation and management of modules in a Wonderland server is done via a web-based administration UI (see below).

Examples of Wonderland Modules

Perhaps now is a good time to illustrate some examples of Wonderland modules, just so we are on the same page. ;-)

Portal CellThe Portal: Let’s take one of the modules we (along with our friends at Applied Minds and the iSocial team at the University of Missouri) had written for v0.4: the portal. When an avatar steps into the portal, he/she is transported to another part of the Wonderland world. This is a custom cell type (Java code), along with some 3D models and textures to represent the portal itself in-world. The portal doesn’t come standard with the v0.4 release: you have to build Wonderland from the source code and compile-in the portal cell code from the v0.4 "incubator" project. In v0.4 you also have to serve the artwork (models, textures) from a web server you have installed separately.

In the v0.5 release, Wonderland modules makes the sharing and installation of a custom cell type, such as the portal, much easier. Developers can package up their code, 3D models, and textures into a module. (We have tutorials already that tell you how to do this). Once installed, the Wonderland server automatically serves the artwork to clients for you: there is no longer a need to separately install artwork into a separate web server.

Artwork & Sample Worlds: A Wonderland module does not have to contain code. It can simply contain a collection of artwork, and perhaps sample arrangements of that artwork into a world. In fact, most any form of media may be contained in a module, such as audio files, images, documents, or movies. The Wonderland module system, therefore, addresses the content developer too. Content developers can use the module system to distribute the artwork they’ve created for Wonderland (using standard tools such as SketchUp, Maya, or Blender in the COLLADA format).

Wonderland Module Central

Netbeans Update CenterWe also hope to build a central place for developers to upload and share their modules with the community, much like projects such as Glassfish, Hudson, and Netbeans have (see the picture on the right). At this point, its more of a wish, since we haven’t officially committed resources to building it, but we’ve talked about it a bunch. Besides the ability to upload and download modules, community members could serve as reviewers for modules, rating their functionality and stability. Wonderland, after all, is about open-source and extensibility, and Wonderland module central seems like an essential piece.

Licensing of Wonderland Modules

Another critically important aspect of the new module system–although not technical–is the change we made to the software license governing Project Wonderland. We migrated from the GNU Public License Version 2 (GPL v2) to GPL v2 with the "Classpath" exception (also called the "linking" exception). The "Classpath" exception essentially allows module developers full control of the intellectual property contained within their module. Developers may license their module code and artwork as they see fit, not bound by the constraints of the GPL v2 license. The "Classpath" exception is widely used by other open-source projects, such as GNU Classpath, Netbeans, and OpenJDK.

We are hoping to enable a robust ecosystem of module developers for Wonderland, both non-commercial and commercial and think the new license is a necessary piece towards that end. 

Managing Wonderland Modules

Module Management UIIn v0.5, we provide a nice web-based administration UI: one aspect of this is for module management. After you start up your server, you can click on the "Manage Modules" link to see the list of installed modules. At the bottom of this page, you can upload and install new modules. If your module does not contain any code, it should be installed immediately; if your module contains code, you will have to restart the Darkstar server before your module is installed. (We’ll automatically detect whether your module contains code and requires a server restart or not, so don’t worry!).

You can find some complete documentation on managing modules here

Our Use of Modules

The Wonderland team uses modules all of the time, and not just for "add-on" functionality: we use it to organize code in the "core" of the Wonderland platform. If you install any developer release of version 0.5, and click on the "Manage Modules" link you will see upwards of a few dozen models already installed, ranging from pure add-on functionality such as the whiteboard, telephone, and cone of silence, to more central features, such as avatars, model loaders, and even the Darkstar server and voice bridge.

We use the modu
le system and its flexible set of module "parts" to help organize the code and break out interface from implementation that will allow us to easily upgrade components in the future. We, for example, will be able to deliver a brand new avatar system just by delivering a new module. 

Whose Module Will Be the First?

We are releasing v0.5 in stages: our early developer releases are aimed at those developing modules with custom code and artwork. As we near making the final release of Project Wonderland v0.5 towards the middle of 2009, I wonder who out there will be the first to release a complete module for Wonderland. Will it be you?

St. Paul College Open Virtual Worlds Launch

January 21, 2009

I had the pleasure of attending the launch event for the Sun Center of Excellence at St. Paul College. Along with 10 or 12 other remote participants, I attended the event in their new Wonderland mixed-reality classroom. You can see the classroom by launching Wonderland from the "SPC Sun COE MiRTLE" link on the Virtual Northstar web site. This classroom, based on the MiRTLE project from the University of Essex, includes a video screen and a screen for slides in the front of the room. Using the video application, those of us in the Wonderland classroom were able to see into the room where the live event was happening and (mostly) hear what was going on. Here’s what the setup looked like from my vantage point:

Virtual Northstar Mixed Reality Classroom - wide view

A variety of speakers were up at the podium and those of us in-world were able to remotely control the camera to zoom in and out and pan around the room. Here you can see that we’ve zoomed in a bit:

Virtual Northstar Mixed Reality Classroom - video and slides

You can also see that the slides projected on the real-world screen are reflected on our in-world screen, so the text is easy to read. I had initially thought they were using the PDF Viewer, but at the end when they stopped the slide show, I could see that it was actually a Microsoft Windows session being shared using the VNC Viewer.


When the meeting was over and the crowd in the physical room started chatting, I introduced myself to a few of the other remote attendees and we had a short debriefing session:

Virtual Northstar Mixed Reality Classroom - debriefing chat

Consensus was that most things worked quite well. The new space was attractive, the video was clear and performed well, and the slides were easy to see on our in-world screen.

By far the biggest problem was our ability to hear the people speaking in the physical room. Audio quality itself seemed fairly good since those of us who stayed to chat at the end could hear one another fine. With just a bit more tweaking, the St. Paul folks should be able to better equip the physical room with more microphones. For the panel session, it would have been particularly helpful if there was a microphone to pass around to each speaker.

Another tweak that would have enhanced the remote experience was to position the camera in a better location. We got a great view of the two computer monitors on the left hand side, but a distorted view of the speaker and the screen.

UI for muting someone elseFrom a software point of view, having the ability to mute other attendees would have been helpful. At one point, someone had an open mic and was clearly not looking at the chat, so didn’t notice that their audio was disturbing the meeting. The design I have in mind for this feature is to allow anyone to mute anyone else, but the person who gets muted will see a notice on their HUD that includes the name of the person who muted them along with instructions on how to come off mute. By including accountability in the feature design, my hope is that the feature will be used responsibly.

In our debriefing chat, someone suggested an "eject" feature to remove a disruptive person from the world all together. I can see the desire for this feature, but I’m hesitant. What do others think? Is there a gentler way to stop someone from being disruptive without forcibly logging them off?

Finally, I want to add my congratulations to St. Paul College for being an early adopter of virtual world technology and living on the bleeding edge helping to evolve Wonderland into a great platform for teaching and learning.

Creating Terrains for Wonderland (v0.4)

January 20, 2009

Matthew Schmidt of the iSocial project at the University of Missouri recently posted a video tutorial to the Sun Immersion Special Interest Group (http://sun-isig.ning.com/) outlining how to create a simple terrain for your Wonderland 0.4 worlds using Blender (http://www.blender.org/).

This tutorial provides a visual explanation of the steps involved in 1.) creating the terrain model in Blender, 2.) exporting the terrain in the correct format for Wonderland and 3.) importing that terrain into Wonderland using the built-in model importer in the Wonderland 0.4 client. Using the techniques outlined in this video, you can quickly and easily create a compelling landscape for your Wonderland worlds.

Find more videos like this on Sun Immersion Special Interest Group

New Year’s Resolution and the 0.5 Tea Party

January 9, 2009

Happy New Year to everyone. I wanted to share with you the Sun Labs Wonderland team’s New Year’s resolution and also a major 0.5 milestone. First, our resolution – to hold all our staff and other team meetings in Wonderland 0.5. I am extremely happy to report that the new year is off to a great start in accomplishing this first major milestone. Here’s an image of our first staff meeting of the year held yesterday entirely in a 0.5 test world:

First staff meeting in Wonderland 0.5

Can you see me? I’m the blue teapot :-) Admittedly, it was a bit difficult to figure out who was who given that neither the new avatars or the avatar name tags are in place yet. Nonetheless, 11 of us met for an hour, got through our whole meeting agenda, and ran into a fairly minimal set of problems considering this was the first gathering of this size. The most severe problem was losing audio all together when trying to place an outgoing phone call (you might not recognize the virtual phone in it’s current wireframe sphere shape), but Joe was able to quickly restore the voice bridge to an operational state. We also experienced audio breaking up from time to time, which seemed to be due to server load problems which are currently being tracked down. Our two work-from-home meeting participants experienced some network problems, which are also being investigated.

That said, there were some big successes. Bernard and Joe installed the Audio Recorder, our first non-core module to be ported from 0.4. We all gathered around it to try it out. It worked like a charm. Not only that, but using Jordan’s new Cell Palette, accessible from the in-world Tools menu, we were able to dynamically add additional Audio Recorders to the world.

Adding a new cell

The most fun, however, was being able to move objects around in the world. Jordan placed three simple movable objects randomly in the scene:

Three moveable objects Move context menu item

To test the new move tool, I set myself the challenge of trying to stack the three objects neatly on top of one another. To do this, I right-clicked on the cylinder to get the context menu. It only contains the "Move" command so far. I selected Move to get the move controls.

Move controls Moving sphere into place

Using these, I positioned the cylinder on the floor. Then I moved the sphere. It turns out that the move controls also work as positioning guides. When the green arrows were on top of one another, I knew I had the objects centered properly. Next I moved the cone into place, again using the green arrows to help with alignment.

Moving cone into place Tower of objects

Using the Esc key (only a temporary UI), I hid the move controls and then walked around to the other side to see how I did in terms of alignment. Not too bad! As a final challenge, I added another audio recorder into the world and positioned it on top of my tower.

Moving the audio recorder Audio recorder on top of tower

If you decide to try any of this for yourself, please note that you’ll need to build the system from source code and that this version only supports the A, S, W, D keys for navigation. Use right-mouse-drag to turn and to look around. The arrow keys will be supported again as soon as the new avatars are in place, hopefully in the next few weeks. Stay tuned for the new default Wonderland world which will finally show off the advanced graphics features. It’s coming along quite nicely with a combination of outdoor and indoor spaces.

%d bloggers like this: