The Future of OpenSim is Unity3D?

We are working now with both OpenSim (OS) and Unity3D and trying to figure really which does what best. We just upgraded to the latest 0.7x release on OpenSim and are very encouraged that it is working a lot better and is more reliable than our last 0.6x versions. However, is that good enough? Can we/should we build production systems on OpenSim?

OpenSim is only part of a 3D, immersive, online solution. If you want to create immersive spaces and experiences, you still need to deal with a web viewer application. We are using the Imprudence viewer, a variant of the opensource Second Life application, which also is getting better and better thanks to another community of developers. Unity3D at the same time has pushed out its 3.x release which notably allows for deployment to mobiles. The mobile market will continue to grow and grow. By 2012 it is likely that most people will access the web via a smart mobile device. The 3D Web will be mobile.

The main point to keep in mind is, what do you need to do with the software and platform? On the other hand you also need to understand what is possible. So looking at the technical capabilities is important.

is the future of OpenSim Unity3D?
Scanning the options and considering if the future of OpenSim is Unity3D?

I had a review of OpenSim vs Unity3D recently with our team (thanks for smart comments from Foolish, Darren, Pavig and Ordinal) and thought it might be useful to share our latest set of notes on this:

Comparing OpenSim+Imprudence (OS+I) to Unity3D as a Core 3D, Immersive, Online Solution

The general differences are that Unity3D runs on the client-side and that's it. You need to deal with server-side and community on your own.  We use Drupal as an example to manage the Users. Unity3D also gives you a solid content creation editor with a lot of functionality specific to making games. OpenSim+Imprudence (OS+I) is a ready-to-rock-n-roll virtual world solution. All is that is needed is the content. Now from a user perspective they will expect a completely working experience regardless of what is working to make that happen.

Graphics

The first thing you will notice is that OpenSim + Imprudence (OS+I) and Unity3D scenes look about the same. There are some subtle differences, but more or less you can get good looking objects. You can see the Unity3D scene connected to our OpenSim assets here.

Mesh

Unity3D works with meshes and OS+I today does not. I would imagine that should be enabled if Imprudence follows the SL 2.x releases. It also looks possible to use the SL viewer on OS. Our issue is to expose the SL brand which generally is undesirable. Apparently there are ways to reskin the SL 2.x viewer. Mesh is significant for production work, especially on photo-realistic objects. It also allows for import of existing mesh models from marketplaces.

Lighting

Lighting control is more precise in Unity3D, but probably a bit easier to deal with in OS+I. The viewer-side windlight controls are very interesting now via Imprudence which allows the regions to push settings on the viewer. Yet, it is a bit tricky to know if all the users are seeing the same thing.

Scripting

Main difference with scripting is that Unity3D scripts run on the client-side, and OS scripts and modules run server-side. Both OS and Unity3D work in c#/.net, and Unity3D browser clients can also run javascript for communication with web pages and through them, other servers. OpenSim has potentially very good modules which run logic on the server directly and therefore limit in-world processing. It can also run directly user-editable OSSL scripts (OpenSim Scripting Language – an expanded version of SL’s LSL) which are convenient and help development speed if you’re familiar with the language, but it is not widely known.

Client UI/HUDs

OS+I allows for the attachment of HUDs (heads-up displays), but they can be unstable. It is also not possible to place a HUD on a screen – users need to do this. We can start them with HUDs, but if their scripts crash or the HUD object is detached, then it is a more complicated instruction to new users to explain how to put them back. Apart from HUDs the user has the standard Imprudence UI, unless we make modifications to the client before distribution. Unity3D has the capability for standard game HUDs that can be controlled from client-side interactions as well as many more possible UI changes specialised for a scene, and if embedded in a web page an updated client is much easier to distribute

Avatar

Out-of-the-box Unity3D has no avatars. You have to make them.  OS has customizable avatars. This is not to say that customizable avatars are not possible with Unity3D, just that you need to design them and potentially build a customization solution. One of the strengths of OS+I is the SL legacy of personalizing avatars and inspiring fashion marketplaces. OS+I also has a fairly complicated but flexible Inventory system which allows users to further customize their avatars and change outfits, shape and manage their assets. This can be very confusing for new users, but for more intense social activity it is very powerful.

Physics

The physics engine for Unity3D runs client-side and is significantly more responsive than OS+I running a fairly basic physics engine across the internet. The weak physics on OpenSim cause problems with object collisions and with sit targets (although this is better in 0.7x)

Terrain

The main difference is the scale of the terrain -- Unity3D is expansive where OS is limited to 256mx256, region chunks. It is possible to have larger OS regions though using the mega-regions, but that may limit use of the SL viewer or other viewers other than Imprudence.  Also the mega-regions do not scale directly for concurrency--more space but fewer avatars. We find that people do like to fly their avatars around larger scenes, so the expanse is very important.

Asset Mgmt

Avatars have more control of their Inventory in OS+I. As far as production goes the Unity3D workflow and the OS workflow are very different. OS+I supports a collaborative, real-time building process on the regions. Unity3D is suited to independent object creation that can be placed into a scene and then published.  Assets for Unity3D can then be managed as files on a server. I actually don't know if you can decompose a scene into something like an OAR file. Unity3D also offers an Asset Server product, which presumably helps with larger projects.

Kinect / User Motion Control

I would have to guess that Unity3D  will have some update to support this type of interaction when it hits the PC market (with or without Microsoft, who is probably trying to leverage Kinect to sell Xboxes. Regardless, it will be possible for someone to write a Kinect plug-in or script and then there will be no need for Unity3D to do anything new. People are already starting to hack and create opensource drivers. Hard to estimate when/if the SL/Imprudence viewers will be able to support this break-out control solution. Check Kinect alternative Softkinetic .

Voice

Both Unity3D and OS+I need a separate voice service. SL uses Vivox which is one of the best and expensive. We have Freeswitch running on OpenSim 0.7x now with the Imprudence viewer. It works ok, but has been hard to maintain. Unlike Vivox though this is not a spatial voice solution--it is just flat voice like a skype call. For the sake of true immersion, spatial voice would be ideal, but really there are few uses where this is essential or even apparent right now. A Unity3D web solution would allow for a more standard web voice solution to run along side the browser scene.

Concurrency

Unity3D does not have a built-in concurrency solution. You need to buy or make one. OpenSim has a fairly elaborate system for managing users, although it seems to hit the lag around 25-30 users per region.

Im/Chat/Friends

Unity3D does not have this. OS+I has a good enough system for this now. OS is however limited to in-world where most like a Unity3D bolt-on solution would be more extended to social networks or websites or mobiles if that is how you wanted to deploy it. Unity3D would benefit from a jabber type solution for this.

Building

From a builder perspective I would guess that Unity3D is more complicated, but a richer toolset. For making simple objects OS is much easier to learn and get some result. Again OS+I is also collaborative so people can work on things together in real-time across the internet. From a project perspective Unity3D is a more standard tool, so anyone with 3D modelling experience can quickly get to speed on this. OS+I does have the advantage though in terms of managing the user experience over the internet--prims are practical for streaming.

Roles, Groups & Permissions

Niether OS+I or Unity3D have a solution for managing what people can do. This needs to be implemented separately. We use Drupal actually and wrote some integration code.

Deployment

Unity3D can be deployed to pc/mac as well as to mobile iphone, ipad and andriod. The Unity3D web-viewer runs on most browsers and will also have plug-in code inside Chrome.  OpenSim is tied to a web app such as the Imprudence viewer. We built a bridge from OpenSim to Unity3D, so actually it is possible to use all of this--the question is more about why would you need to do that.

Maintainance and Support

OS+I deployments are run as software-as-a-service (SaaS) where Unity3D is client-side and therefore does not require significant hardware support. As an example, we can get about 500 concurrent users on a strong windows machine hitting a shared 70mbps pipe to the internet. The same server could run tens of thousands concurrent Unity3D sessions.  We have seen many user support issues with OS ranging from basic download and registration to groups of people using TPs to server crashes. I would have to guess that support is 10x over a Unity3D solution.

Social Network

Neither system has anything to link to social networks. We use Drupal to send/receive messages from sites like Facebook which works well.

Dev Community & Marketplaces

Unity3D recently included their marketplace and has a fair amount of content, scripts and plug-in for free or for sale. OpenSim also has an active community and you might find some useful add-ons, collaboration tools. People are starting to share OAR files as well. For Unity3D you can also leverage other game/3D Model marketplaces like TurboSquid.

Organization

Unity3D is a funded and growing organization. OS and Imprudence are opensource community projects. I generally lean toward opensource, yet these communities have taken on very large challenges and are thin on resources. And how much resource is really getting put against the core code and making it work better? We really appreciate the efforts these communities make, but are they organized well enough and will they be able to release great, relevant code in 2012 and beyond?

What Does This Mean for the Future of OpenSim?

OpenSim gathered interest as a low costs, more flexible alternative to Second Life. But now Second Life is not growing and consumer interest in the non-game 3D virtual world is over.   Importantly though what people do with type of simulation tool is not generating a lot of money. More specific and compelling uses need to be developed. MMO's do make money. Unity3D allows developers to make games that can be sold across marketplaces or as part of large commercial projects.  Out in the distance also is HTML5 with native 3D simulation capabilities.

We had always hoped to see corporates like IBM and Intel step-up and release code to the OS community. Yet, meaningful contributions from the corporates has happened in a long time.

From our view, we can continue to use both OpenSim and Unity3D. We can then decide on which offers the best fit for our next products or projects. Yet, from a professional developer perspective it would seem that Unity3D has the advantage now, although it will be some new work to implement avatars and concurrency.