Virtual Online Overlaps, Disconnects with OpenSim, Unity3D and Drupal

We have been working on getting Unity3D to run with OpenSim as we posted recently (check the 3D-virtual-area-in-the-browser in action here). We are adding some more functionality to the solution right now and hope to have a public alpha release in the next few weeks. As the technical elements are being progressed though, it is a bit confusing on what exactly to do with a larger sets of tools and how to consider new options on workflows.  We have been kicking around the issues of what is the best use of each tool and how to get them to work together. Following are some wacky enough pictures showing software capabilities and my notes on the overlaps and disconnects.

First, what is our general scope of activities?

We design 3D online virtual areas, we make virtual objects, we build virtual areas, we run 3D online scenes for visitors and we incorporate some social web features in real-time to make it most engaging.

Design

The design part is still good old paper, pen and flipcharts. We are seeing a need for more activities to engage users rather than just drop them in interesting spaces to explore and chat with friends. We have some new ideas rolling out now on Heritage Key for quests and virtual field trips for educators. Part of the design is to also share achievements beyond the virtual area to the broader web social action via things like facebook apps, wall postings.  Check out the contest for winning £1,000 to get an idea of how this is working.

Make

This is about creating high quality virtual objects that can be combined later into complete scenes. Main things needed here are textures, meshes, animations, sounds and scripts. There are quite a few tool options for creating these individual elements such as photoshop, maya,  zbrush, qavimator and many more.  Unity3D has a studio set for object creation as does the opensource Second Life Viewer and the SL-compatible third party viewers that modify and extend that code.

Build

Once the discrete elements are ready, then they need to be put into a 3D space for build. The 3D space also has land to be shaped and other virtual world features to consider. Unity3D allows for this build work to be done offline, where the Second Life model is online connected to the server, in our case our own OpenSim grids. Unity handles, presents 3D meshes, where OpenSim is based on its own class of pre-configured meshes called "primitives" (aka "prims" which is why we love prims).

Run

Once the build is ready then it can be published to visitors. The major issue here is dealing with changes after the scene is published. This is where the Second Life model is strongest in allowing for changes to be streamed out to all the connected users. Someone changes anything in an area or rezzes a new object and then it gets sent quickly out to all the people nearby. Unity deals with content in a more static way and also runs game physics locally on the users pc. OpenSim will deal with the concurrency where Unity needs to connect to a service, such as smartfox server,  to deliver the MMO side.  The big opportunity with Unity vs SL-compatible viewers (we suggest Imprudence btw) is to deploy 3D scenes to the browser and mobile devices (iphone, ipad and android).

Social

Then of course we need to deliver all the Social elements including avatar identity and communications for chat, IM and voice. For both games and virtual area access there is also a need for rights, roles and points of some kind.  Ideally the social elements should be available across the web, mobile touch points and integrated with social networks (where possible and not annoying). It looks like Freeswitch is a good enough voice solution even though it is not spatial. Drupal is our core community solution (simple diagram for our tech layout here).

The OpenSim plus Unity3D Issues and Strategy

On the one hand, it would be useful to make everything around an OpenSim region. This seems to give us the greatest flexibility for content creation within the existing limitations of minimum target graphics cards, bandwidth and computers. Actually I think more interactive, smaller scenes are currently more engaging than larger, more expansive areas. It seems to be more interesting for users to see a lot of intimate detail within the context of "placeness" than have them flying across bigger online spaces. This also helps to push users closer to each other and increase social activities.  (see my notes on 3D Web about key features here) Certainly for iPhone, Android and even pc's wifi access, tighter scenes will run better for more users.

On the other hand, the SL-compatible viewers do not deal with real meshes currently. Although OpenSim can hold the mesh assets, the viewers cannot show them.  Meshes from Unity3D studio and other standard tools are easier to make more photo-realistic as far as I can tell. There are also tons of existing meshes out there to use as parts for scenes.  Yet, getting to high quality complete builds also requires workmanship in either environment and each has its own eccentricities and I guess we currently understand OpenSim a lot better. The definition/boundaries of a single region at 256m x 256m isn't a major constraint until better physics can be deployed.

The other big open question is how to deal with the avatar in Unity3D. In OpenSim it is possible to customize the avatar with skins, textures and attachments. I think this is also possible to make customizable avatars within Unity, but is quite a bit of work and will make the Unity scene a lot bigger. Unity3D for the browser plug-in also also tied to the browser cache which is a pain. Scenes will reload on a refresh and you cannot create specific content folders to allow for content caching independent of the session.

Unity also does not stream media onto objects--so watching video, slideshows won't work currently from a live streaming source. Although you can play media if it is shipped as part of the scene contents.  Then again, you can have a stream window in your browser next to the Unity scene if that were useful.

So it all comes back to the fundamental question -- how big a deal is using a web app to connect to an engaging 3D virtual online area? My sense is that it is more about the ultimate user experience than making them download something in a few minutes (ok, a massive download is a show-stopper for mainstream users).  It would be a large, challenging undertaking to shove something like the SL-viewer into the browser completely--and what would you really gain vs just making a new generation web app purposely built for OpenSim? Seems like a lot of effort for little real gain. People download things like skype,  openoffice even large videos because they perceive the value in having it running.

Is then our current approach to using Unity3D for an on-ramp to the more immersive offerings still valid. Show them what they are missing and then invite them in? Even if that means the Unity browser sessions will have kind of  monotonous avatars? It seems so today. So we are looking at mashing the concurrency of the Unity sessions with the SL-compatible viewers over OpenSim regions.  In this way people can share some parts of the experience, see who is near them and communicate. Again our goal is to get out to mainstream audiences and we know they are all already on browsers, so this is an important step toward them. The concern is to still pull them into something unique and engaging.