Wonderland at JavaOne 2008

April 30, 2008
The next big event for the Wonderland team is the JavaOne developers conference in San Francisco on May 6-9th. We’ll be hosting an informal Wonderland Community Gathering at the Thirsty Bear pub (661 Howard Street, San Francisco) on May 7th at 7:30pm. If you’re in the Bay area, I hope you can join us for a rare opportunity to meet face-to-face. The entire Wonderland team will be attending.

I would also encourage all of you to come visit us at JavaOne itself. We’ll have two demo stations, one in the Sun booth (#194) and one in the Java Playground (#1034). If you pre-register by May 5th, a one-day Pavilion pass is only $50. If you decide to attend the full conference (students can get in for free!), there are a variety of Wonderland, Darkstar, and Java gaming events in the formal program that may be of interest. Most of the action is on Tuesday:

Tuesday, May 6th:

10:50 am Designing an MMORPG with Project Darkstar 
Jeff Kesselman – Technical Session

1:30 pm Project Wonderland: Community-built Virtual Worlds
Nicole Yankelovich & Nigel Simpson – Community Corner talk

2:00 pm Wonderland with Kids (time may change)
Gilda Garreton & Juan Carlos Herrer – Community Corner talk

3:20 pm Project Wonderland: A Toolkit for Building 3-D Virtual Worlds 
Paul Byrne & Jonathan Kaplan – Technical Session

3:20 pm Project Darkstar Hands-On Lab
Jeff Kesselman & Jana Olivova – Hands-on Lab

6:00 pm Creating Games on the Java Platform with jMonkeyEngine
Rikard Herlitz & Joshua Slack – Technical Session

It’s too bad the Wonderland talk and the Darkstar hands-on lab were scheduled opposite one another, but by the time we realized it, it was too late to change the schedule.

On Wednesday, May 7th:

6:30 pm Video Game Development on the Java Platform:
                      Past Present and Future of Java Technology Games

                        Chris Melissinos – Birds-of-a-Feather Session

7:30 pm Project Wonderland Community Gathering
Thirsty Bear – 661 Howard Street, San Francisco

Hope to see you there!

I managed to get an early prototype of Embedded Swing working in Wonderland

April 24, 2008

With the help of Igor Kushnirskiy, and also Kevin Rushforth, I’ve managed to get a prototype of Embedded Swing running inside Project Wonderland. This allows Swing lightweight components to be textured onto 3D objects.

Here is a snapshot of a working copy of part of the SwingSet2 TableDemo (with a friendly avatar nearby). But this still shot can’t adequately convey the excitement I felt when I actually was able to scroll and manipulate the app! There are still some bugs and some performance issues but it is definitely another real-life validation of the Embedded Swing project. This will mean that developers will have access to Swing’s 2D GUI power at their disposal when writing 2D and 3D share-aware apps in Wonderland.

Here is the link to the snapshot:

This work is currently planned to be productized in Release 0.5.

Updated: to add the image in-line.

dot Wonderland, Part I

April 23, 2008

I have a fascination with "dot" files. Every once in a while I look inside my home directory to see if an application I’ve run has created one of these files (or directories) and peek inside just for the fun of it. At times, it’s come in really handy to know what’s going on inside of them — there’s been plenty of times I’ve had to erase a "lock" file or clear a cache and couldn’t quite figure out how through the application itself.

So, in that spirit, I figured I would walk through how Wonderland uses its own "dot" directory — .wonderland/. The Wonderland client creates its own .wonderland/ directory in a user’s home directory. In fact, you can have it use other directories too — it’s a Java system property that controls which (wonderland.dir property, see WonderlandConfigUtil.getWonderlandDir() for more information).

Some disclaimers first: I did not author this part of the code, so my analysis below is a deconstruction of the mechanism. So if you are in the know, feel free to make corrections by posting a comment. Also, modify the .wonderland directory at your own risk!  As this is not part of any official Wonderland specification, anything posted here is subject to change without notice.

 But, here goes…

The .wonderland/ directory essentially contains two items: a database and cache of assets and avatar configuration information. In this blog post, I’ll describe the asset database and cache of assets and leave the avatar configuration information to Part II of this post.

Asset database and cache

Wonderland tracks each asset it has downloaded and cached using a DerbyDB database. The database itself is located in the AssetDB/ subdirectory (there is also a log file derby.log). To view the entries in the database, run ant run-dbtest. You should entries that look something like this:

[java] SkyBox/Back.png            IMAGE

Each entry corresponds to a file cached within the cache/ subdirectory. The third column — the file type — is either IMAGE, FILE, or MODEL. All IMAGE files are stored within the cache/textures/ subdirectory, all FILE files are stored within the cache/files/ subdirectory, and all MODEL files are stored within the cache/models/ subdirectory.

The MODEL files are the 3D geometry files, in v0.3-v0.4, these are binary, gzipped Java 3D scene graphs. IMAGE files seem to encompass textures, the sky box, and slides for in-world presentations (which I guess can be thought of as textures), while FILE files seems to contain all of the .rtg files (for the avatars and animated cells). These asset types are not arbitrary strings: they are defined by the AssetType.java enumeration.

Each database record contains four entries: the asset file name (max length 120), the base URL (max length 120), the checksum (max length 40), and the asset type (MODEL, FILE, IMAGE; max length 10). The asset file name is the primary key in the database table, so it cannot be null, and it must be unique — it is the relative path within the resource repository (and listed in the 2nd column above). The base URL (3rd column above) gives the URL of the asset repository from which the asset was loaded. In the listing above, I’m using a remote repository; using a local repository is also possible (set wonderland.useLocalArt = true).

The asset database is represented by the AssetDB.java class. Every time the client starts (or rather when an instance of the AssetDB.java class is created, that happens in AssetManager.initialize()), it checks to see whether this database exists. If so, it opens a connection to the database, if not, it creates the database. (To check whether the database exists, it only checks whether the AssetDB/ directory exists.)

Asset Manager Use of the Asset Database and Cache

Within the Wonerland client, it is only the asset manager (AssetManager.java) that makes use of the asset database. As one might expect, before fetching a resource from a repository, Wonderland first checks whether it is in its cache by querying the database for an entry matching the resource file name. If it does not find it in its local cache, it downloads the asset (either from a remote or local repository) and writes the new file to the cache and updates the database properly. When fetching the asset from the local cache, the Wonderland client makes use of the checksum for only certain types of assets: models and files, but not for images. (Also, it seems that it is only for models that Wonderland pays attention to the "ignore_checksum" flag.)

Mucking with the Asset Database and Cache

It probably goes without saying: proceed at your own risk! But it’s probably worth it to talk about ways you can clear the cache in case something goes wrong. Certainly, deleting the entire .wonderland directory will clean out the cache, but that may also clean out other local state, such as your Avatar configuration, so it’s probably not the best way to go. Deleting the AssetDB/ directory will likely clean out the cache, since the asset manager consults it first to find cached entries. It may be in good order to also clean out the cache/ directory as well — but if an asset is not in the database, then the Wonderland client will assume it is not cache and rewrite over any existing file in the cache/ directory anyhow.

Simply deleting an entry in the cache/ subdirectory may cause problems — based upon my reading of the code, if a model fails to load from the cache/ subdirectory, then the Wonderland client re-fetches it from the repository, however, for files and images, it just seems to give up and throw an exception (but I welcome corrections here).

 To be continued in Part II…

What’s up with Wonderland 0.5?

April 17, 2008

One of the great things about last week’s Sun Labs Open House was getting to see most of the Wonderland team in person (also some good press). Yes we see each other in the virtual world all the time, but it’s still not quite the same as face-to-face.

The question I was asking everybody was “what’s up with Wonderland 0.5?” While we are in the process of stabilizing, documenting and releasing Wonderland 0.4, much of the team has moved on to the new code. Here are some of the things I learned:

We are all getting up to speed with JMonkey Engine. I’ve tried out some of the tutorials and built a cool racing game. Paul and Justin have teamed up to try out the Wonderland artwork in JME, imported via Collada. As the screenshot below shows, it worked. Yes it’s a little dark, but I was getting over 200fps!

Meanwhile, Doug and Shawn have done a deep dive into JME. Doug told us about some of the ideas they have for the updated avatar and animation system. Like all of us, they are thinking about scalability, designing the system to render hundreds of avatars in a single space. I heard from Deron that he has been working on a number of infrastructure pieces, including an updated framework for including 2D apps in the world, the all-important picker and embedding swing components in the world. And Jordan has recently ported the WFS code to the new codebase, factored out as a module so it will be easy to use in tools like the World Builder.

As for Paul and I, we spend most of our time looking at output like this:

That is our cell bounds viewer, which we are using to debug and test the new cell and communications APIs. We are currently finalizing the APIs and working with the Darkstar team to improve the scalability of the underlying implementation. These APIs will be the first to be reviewed in the community. Look out for some more reviews (hopefully including some in-world meetings) in the near future.

With all this activity, it should be a fun summer in Wonderland!

Open House Talk on MiRTLE

April 10, 2008

I gave a talk today at the Sun Labs Open House on the project to develop a Mixed Reality Teaching & Learning Environment (MiRTLE). During the talk I presented the movie that we created last week when conducted an experimental installation in the International Academy at the University of Essex.

We’re now recovering from all the great attention we’ve received during the past two days and taking a well-earned rest tomorrow…

Video Panorama Postcard from the Sun Labs Open House

April 9, 2008

Greetings from the Sun Labs Open House in Menlo Park, CA. We had a great day of demos.

Video Panorama Postcard

This postcard is for Nigel who couldn’t be with us here at the last minute. It shows an image of the 9-pane video panorama application that Nigel wrote. User’s in the Wonderland world can reposition the live video frame, shown in the thin green rectangle, by clicking elsewhere on the panorama. When the camera pans to the new location, it leaves behind a still snapshot of the previous scene.

Wonderland Demo at the Sun Labs Open House

April 8, 2008

The Sun Wonderland team, normally distributed between Massachusetts, California, Washington State, and the UK, will be gathering in Menlo Park, CA this week for our annual Sun Labs Open House. This event is mainly for employees, but we will have some customers and press attending as well. We’ll be demoing a preview of the 0.4 Wonderland release. The demo includes four virtual spaces linked together with placemarks:

  • MPK20 World – in addition to showing the core features of high-fidelity audio, shared applications, and recorded demos, the new 0.4 features we’ll be demoing in this space include telephone integration with the ability to carry phone users around the world, the 9-pane video panorama that works with an Axis pan-tilt-zoom camera, the audio recorder, the video recorder, and the cone-of-silence for private audio chats.

  • Wonderland Lecture Hall – a virtual space created using the Wonderland World Builder, this space has recorded video playing at the front of the room along with a multi-user PDF Viewer that allows viewers to synchronize and unsynchronize with the presenter. In addition, the lecture hall includes two virtual microphones which amplify a speaker’s voice to fill the entire room when a person steps on the white microphone pad.

  • Music in Wonderland – this collaborative music exploration space is our first Wonderland mash-up. Album covers and music are streamed over the internet from Magnatunes.com.

  • World Builder Playground – area where people can experiment with modifying the space using the World Builder (see Jonathan’s post on March 27th for an image of the World Builder). The manager UI, which is currently needed to reload the world, runs inside the World Builder Playground space so you can rebuild the world from inside the world.

So wish us luck with the demos and accept our apologies in advance for not being too responsive on the forum for the rest of this week.

Day 2 of Virtual Worlds 2008 and Other News

April 4, 2008

I can’t resist starting with the “other news.” In case you didn’t see it, we got a nice mention in yesterday’s Wall Street Journal:

    “Sun Microsystems Inc., meanwhile, has developed its own software, called Project Wonderland, and a simulated building called MPK20 that employees of the computer maker can use to collaborate.

    Sun teams from around the world attend simulated meetings, at which their avatars may view presentations and videos and hold discussions. The biggest value of MPK20 is stimulating the kind of collaboration that comes from chance encounters, like those employees might have in a real hallway, says Nicole Yankelovich, who manages Sun’s collaborative environment team.”

Back on the topic of the conference, our focus for today’s exploration of the exhibit floor was on tools, content creation, and services. We learned about a marketplace for buying and commissioning 3D models called Turbo Squid and a tool similar in concept to the Wonderland World Builder, but much more fully-featured, called SceneCaster. To address the issue of how to populate a virtual world, two vendors were selling solutions. The Masa Group had an impressive AI system for creating intelligent bots which can be used as tour guides, as “extras” to wander around a world, or as characters in a simulation. They’ll work with customers to integrate these bots into any virtual world. The Metaverse Mod Squad had a very different approach to the same problem. They provide “avatar staffing” for virtual worlds. In other words, you can hire live people to populate a world to help with greeting visitors, orienting newcomers, or just providing buzz or friendly people to chat with.

In the afternoon, I was on a panel about open source virtual worlds.

The conference organizers included the panel on the schedule posted on the web site, but accidentally left it out of the printed schedule. Additionally, each of us brought videos to show, but the room had no A/V setup. Our panel organizer, Tish Shute, went above and beyond the call of duty by lugging a large-screen monitor from her home office to the conference so we could have a display to use. Notice it sitting on a chair in front of the panel table. Despite all these issues, we had a great turnout for the panel.

Other than Wonderland, the other projects represented on the panel were Qwaq, OpenSim, and realXtend, which is based on OpenSim. Perhaps not surprisingly, all the audience questions and discussion focused on OpenSim, spurred on by Philip Rosedale (former CEO of Linden Labs) who was in attendance. Remy Malan from Qwaq and I discussed after how Wonderland and Qwaq are facing a very different set of issues than OpenSim and SecondLife. The focus for our developers and users is not as much on money exchanges, marketplaces, and regulating user behavior, but much more on collaboration, accomplishing real work, data visualization, and connecting with enterprise data or information feeds from the web.

Day 1 of Virtual Worlds 2008

April 3, 2008

Today Nicole and I attended the first day of the Virtual Worlds 2008 conference in New York city. Even though the conference is only in a small corner of the Javits center, when everyone got together for the keynote it was clearly a big crowd (they announced over 1,500 people attending).

One of the highlights for us was the Enterprise Applications for Virtual Worlds session. The five speakers each presented demos of real-world enterprise applications using virtual worlds, for things like data center monitoring, and 3D data visualization. Ben Lindquist, from Green Phosphor gave a great demo using Wonderland to host a 3D graphing application.

In addition to attending the sessions, Nicole and I have been in back-to-back meetings during every break. It’s been great to talk to so many Wonderland community members. So far, pretty much everyone we’ve talked to who isn’t already using Wonderland has been interested in supporting it or learning more about it.

We did find a little time to explore the demo floor. Since the new avatar system is one of the major features we are looking forward to in Wonderland 0.5, we were particularly interested to talk to companies who could provide customized avatars for Wonderland. We are hoping users will be able to easily import custom avatars from platforms like Daz 3D and Evolver. Here I am getting turned into a realistic looking avatar at the CyberExtruder booth:

This year they have added an enterprise track to the conference. For those of you attending, Nicole is speaking tomorrow on a round table about open source virtual worlds at 2:30 (don’t believe the schedule, it is really happening).


Get every new post delivered to your Inbox.

Join 56 other followers

%d bloggers like this: