Opensim/Second Life Vs Unity3d

I actually get asked a lot about how Unity3d stacks up against Opensim/Second Life. This question is usually based on wanting to use a virtual world metaphor to replicate what Opensim/Second Life do but with a visually very rich browser based client such as Unity3d.
There is an immediate clash of ideas here though and a degree of understanding that Unity3d is not comparable in the usual sense with SecondLife/OpenSim.
At its very heart you really have to consider Opensim and Second Life as being about being a server, that happens to have a client to look at it. Unity3d is primarily a client that can talk to other things such as servers but really does not have to to be what it needs to be.
Now this is not a 100% black and white description but it is worth taking these perspectives to understand what you might want to do with either type of platform.
Everything from an Opensim style server is sent to all the clients that need to know. The shapes, the textures, the position of people etc. When you create things in SL you are really telling a server to remember some things and then distribute them. Clearly some caching occurs as everything is not sent every time, but as the environment is designed to be constantly changing in every way it has to be down to the server to be in charge.

Now compare this to an “level” created in Unity3d. Typically you build all the assets into the unity3d file that is delivered to the client. i.e. its a stand alone fully interactive environment. That may be space invaders, car racing, a FPS shooter or an island to walk around.

Each person has their own self contained highly rich and interactive environment, such as this example. That is the base of what Unity3d does. It understands physics, ragdoll animations, lighting, directional audio etc. All the elements that make an engaging experience with interactive objects and good graphic design and sound design.
Now as unity3d is a container for programming it is able to use network connectivity to be asked to talk to other things. Generally this is brokered by a type of server. Something has to know that 2,3 or many clients are in some way related.
The simplest example is the Smartfox server multiplayer island demo.
Smartfox is a state server. It remembers things, and knows how to tell other things connected to it that those things have changed. That does not mean it will just know about everything in a unity3d scene. It its down to developers and designer to determine what information should be shared.

In the case above a set of unity clients all have objects numbered 1, 2 and 3 in them. It may be a ball, a person and a flock of birds in that order.

When the first client moves object number 1 smartfox on your own remote web server somewhere in the ether is just told some basic information about the state of that ball. Its not here now its here. Each of the other unity clients is connected to the same context. Hence they are told by the server to find object number 1 and move it to the new position. Now in gaming terms each of those clients might be a completely different view of the shared system. The first 2 might be a first person view, the thirds might be a 2d top down map view which has no 3d element to it at all. All they know is the object they consider to be object number 1 has moved.
In addition object number 3 in this example never shares any changes with the other clients. The server does not know anything about it and in the unity3d client it claims no network resources.
This sort of game object is one that is about atmosphere, or one that has no real need to waste network sending changes around. In the island example form unity3d this is a flock of seagulls on the island. They are a highly animated, highly dynamic flock of birds, with sound, yet technically in each client they are not totally the same.
(Now SL and Opensim use principle this for things such as particles and clouds but that is designed in)
For each user they merely see and hear seagulls, they have a degree of shared experience.
Games constantly have to balance the lag and data requirements of sending all this information around versus things that add to the experience. If multiplayer users need to have a common point of reference and it needs to be precise then it needs to be shared. e.g. in a racing game, the track does not change for each person. However debris and the position of other cars does.
In dealing with a constantly changing environment unity3d is able to be told to dynamically load new scenes and new objects in that scene, but you have to design and decide what to do. Typically things are in the scene but hidden or generated procedurally. i.e. the flock of seagulls copies the seagull object and puts it in the flock.
One of the elements of dealing the network lag in shuffling all this information around is interpolation. Again in a car example typically if a car is travelling north at 100 mph there if the client does not hear anything about the car position for a few milliseconds it can guess where the car should be.
Very often virtual worlds people will approach a game client expecting a game engine to be the actual server packaged, like wise game focused people will approach virtual worlds as a client not a server.
Now as I said this is not black and white, but opensim and secondlife and the other virtual world runnable services and toolkits are a certain collection of middleware to perform a defined task. Unity3d is a games development client that with the right programmers and designers can make anything, including a virtual world.

*Update (I meant to link this in the post(thanks Jeroen Frans for telling me 🙂 but hit send too early!)
Rezzable have been working on a unity3d client with opensim, specifically trying to extract the prims from opensim and create unity meshes.

Unity3d and voice is another question. Even in SL and Opensim voice is yet another server, it just so happens than who is in the voice chat with you is brokered by the the main server. Hence when comparing to unity3d again, you need a voice server, you need to programatically hook in what you want to do with voice.
As I have said before though, and as is already happening to some degree some developers are managing to blend thing such as the persistence of the opensim server with a unity3d client.
Finally in the virtual world context in trying to compare a technology or set of technologies we actually have a third model of working. A moderately philosophical point, but in trying use virtual worlds to create mirror worlds at any level will suffer from the model we are basing it on, name the world. The world is not really a server and we are not really clients. We are all in the same ecosystem, what happens for one happens for all.

20 thoughts on “Opensim/Second Life Vs Unity3d

  1. Interesting points and well explained (as always). But aside from the techie bits, I really wonder if Unity vs SL viewer/OpenSim needs to be that different from a user perspective. Main difference that users will first see is that Unity is faster as the physics are on the PC (I guess like Open Croquet also).

    I can see where the users services/utilities like voice, IM should also be same to the users.

    So what really is the delta?? I guess UGC. People can freely make stuff on OpenSim where Unity is more of a content creator publish model. Although I guess it doesn’t have to be either. I think some impact is on customizing the avatar in Unity which looks tougher. Then again it is really just about getting the streaming to work better in Unity.

    Also the main issue on the viewer side is who is developing it? Unity is focused on meeting needs for content creators and SL/3PV people have their own obscure objectives. And the SL opensource code is not easy to work with.

    UNity also deals with meshes which makes it easier to make stuff in the first place.

    Net Net: different approaches that might get you to the same place. Unity looks like a good toolset until WebGL is mature and has some opensource components to support OpenSim.

  2. I just updated the post to link to your opensim/unity work 🙂 Sorry I posted with that missing 🙂
    Yes agreed, from a user perspective there is little or no difference. However when evaluations of the options are done with a user’s perspective but then making an comparison that needs very different technical solutions its worth knowing the difference.
    I have said all along that the games industry, once it wakes up properly to the UGC virtual world is likely to be able to blow everything away that is done at the moment.
    UGC and inventory management though is not always obvious to people just how complicated it can get. Its technically possible but takes money and resources. e.g. I can put a video on my website, but I can’t compete with youtube in being able to keep everyone elses 🙂
    Unity is happy to stream content, and be adjusted accordingly, but it needs the right sort of server to be able to cope with the load.
    In games where there is not so much UGC, more UDC (user destructive content) we are only just seeing applications that go over 32 people or up to 256 with MAG on the ps3.
    So a combination of full UGC, full MMO and no lag is a tough thing to achieve. (particularly on the cheap )
    I think some of the answers may be a bit more like texture baking, most of an environment does not need to be completely changeable at any time. Hence the unity/game model of having local content.
    That is until we have no network delay and can shift anything to anyway 🙂

  3. Nice article, agree with you that it is an apples and oranges comparison. At the end of the day Unity is an excellent 3d engine and widely deployed plugin for the web, quite apart from the game authoring component. With engineering work (network protocols, asset loading, caching, service integration etc) you can turn it into a UGC virtual world, although usual design challenges will always come up 🙂

  4. Nice article.

    One nice option is that Unity3D can run in your browser and it can integrate with javascript on the HTML page. And since it can be deployed to your existing webserver it can be accessed by hundreds or even thousands of people in either a single user mode or shared mode. Share would obviously be limited to smaller groups.

    I don’t believe most business will want to run 100s of servers to provide 3D content to their users. This allows for a much more cost effective way to provide 3D content.

    Also, I think what people forget is game servers have been around for a long time and there are many products out there, many with more investment and staff than OpenSim is able to commit, and as such I can see component based virtual worlds (virual worlds made from off the shelf components) being the big growth solution in the coming year.

  5. Dmitri Wolf

    One striking difference between SL and Unity is how FAST Unity loads! That Island Demo loads in seconds. If that was SL content, it would take a couple of minutes just to load your nearby surroundings, only a fraction of the whole island. I wonder if a version of SL built in Unity would maintain those speeds.

  6. Ian another great piece! As you know first hand, I am not by any stretch of the imagination, even remotely qualified to comment on technical comparisons…and it was in part, the reason why I felt the need to comment and share my views on their relevance from a different perspective…

    Technology is not developed for technology’s sake…Ultimately, it must demonstrate a business purpose including an innate ability to enhance productivity, returning investments through a value-proposition. I have seen technical development attempt to solve problems from multiple vantage points…and the variances of how they approach a particular resolution can be logically defended. This is what often leads to technology confusion…why, how to choose one technology over another.

    As such, mere technical comparisons are not the key sole differentiator in choosing a technology to deliver a business service…and as you’ve experienced first hand with me (probably driving you crazy) the many machinations I go through in my desire to ferret out a technology, a platform, a developer, etc., which embodies a set of values and views that focus on not where technology is today, but where its going to be…and as such how to deploy technologies in a manner that induces early adoption while augmenting the invariable evolutionary growth of uses and their associated costs to meet those future needs…and to do all this without disrupting the learning curve and comfort level of present day users.

    This is particularly important where VW/immersive technology is concerned. While the initial focus may surround technical comparisons to other competing technologies that intend to service a competing function (Education, Training, Meetings, Conferences, etc.) it is generally other key business criteria that ultimately leads to the selection of a technology. This includes integration to legacy, security, support, culture, business model, costs parameters, including, designing, developing, integrating, licensing, enhancing, delivering etc.

    While one platform may boost to being the most prolific today, it may face significant challenges as a future competing technology due in large part to the early cultural decisions it made to gain the awareness, adoption and acceptance of early adopters…and most early adopters are technologists. I don’t mean this in any negative sense…lord knows I professionally rely on all you out there!!! Culturally technologists possess a different set of sensibilities which stimulate their curiosity or interests and as such adoption…I’m going down a slippery slope here…but Ian can attest to the respect I have for technology…

    Only when a particular technology’s adoption becomes sustained through business utilization/adoption will it advance and lead to consumer acceptance. Some technologies are at the precipice of this stage and as such must/should consider how to advance from the cliff…

    Admittedly, from my nascent perspective, I’ve yet to see measurable and sustained business/consumer adoption of any one technology…I heard the hype, but have seen the numbers and believe that the next evolution of change is upon us…hopefully it will solve many of the business issues that have been identified over the last few years. Critical, not arrogant interruption is necessary for the next evolution to take hold. This includes how these technologies adopt, use, adjust and integrate all the information that is now available to deliver a value proposition to a diverse set of business applications and users. And, how they deploy and manage the other business criteria used in the technology selection process to distinguish themselves from competing technologies, ultimately determining the winners and losers.

  7. Hi, Ian.

    Good, clear, and necessary architectural distinction made, Ian. A few questions:

    Unity3D isn’t the only outfit using its architecture (call it “local static data”). Don’t lots of non-plugin VW systems use it too, like Torque? You reference consoles, but I’ll bet there’s a long list.

    On the other hand, SL is the only outfit I know of using mainly remotely served data.

    Remote data seems forced by in-world UGC, but couldn’t one create content locally, but in-world, and then upload it in bulk, followed by distribution (if needed)? Does something make that really messy? It means the server world data has to be incrementally modifiable, which may make some optimizations harder. (I’m thinking aloud here.) Anybody doing that?

    I think things are better optimized for a situation where users vastly outnumber developers — which screams “local data” to me. That’s where developer income comes from, after all. And obviously, for immersion of users you don’t need dynamically served content (probably a better term). See my recent post in Perils of Parallel; the unique results for users come from the immersion:

  8. @simon Yes 🙂 its all just code. With programmers and designers and budget a lot can be done. Unreal engine has shown that. 🙂 Or the quality we are about to see in Red dead redemption this week on the consoles. Huge teams, lots of budget and lots of talent. It is interesting when that clashes with the opensource or the nearly free UGC world.
    @kevin Components and middleware are certainly important. It is the level to which they can be combined to provide the sort of VW experience people have got used to. The games middleware tends to be high end, and very expensive. A full unreal licence is very expensive, mainly because its for triple aaa big budget games (yes I know they have a sort of open source approach now but its still old school. Many people come at virtual worlds having not experienced the multitude of game server options, and the games industry does not help in being rather insular. I approached a middleware vendor to ask about a trial recently, they suggested they needed a gating process to gauge the quality of what was going to be produced. Plenty more middleware in the sea.
    @dmitri To be fair to SL and alike it does not know what it needs to send you until you arrive. The packaged level of unity is great and fast and optimized to stream, but it is a known quantity.

  9. @Peter Yes I agree that the tech is there to solve a problem, though we do have a few things done for their own sake that then find a niche.
    The thing here is that when a cross comparison is done and the competing technologies are not actually competing or in the same space, yet to the outside look like they are it can cause some confusion.
    An analogy is needing a book, but being in a history reference section is very different to the science fiction one 🙂 The technology of the book on the outside is the same but the guts and purpose are very different.
    Unity has and will continue to get huge adoption because for small and large developers it is an awesome suite of easily, cheaply accessible tools that can deliver and target a multitude of platforms, and create a huge variety of experiences from 2d card games to full first person shooters as standalone. Just as (already mentioned) massive engines like Unreal end up become a de facto standard for high end development shops so unity becomes the “hey we can just do it” tool.
    As we have talked about lots though we are in a strange place in the VW industry, the fact that people are looking for a single packaged solution and yet there really is not one that does everything, and within that there are whole shades of tools that can be used to host build and interact these means no single answer.

  10. @greg Thats right lots of things used local static data. Torque is really a game engine so it does do the local data, though it had a server component too. The list is huge of various types of middleware and platforms and toolkits. Some have server components that understand the client. Others like flash (as used in club penguin) end up talking to smartfox socket servers.
    SL adopted the streaming content approach, and hence dived into prims rather than meshes to enable that. As with any streaming tech it can get better if networks get faster to stream richer and richer content. After all when you install a game or play from a DVD that really is a remote distribution of content with a batch job 🙂 Increasingly we have downloads and UGC and episodes in various degrees.
    Some of the virtual world style platforms end up with a publication step (as we tinkered with on the torque virtual world example).
    The ability to just create, such as with SL I find to be very liberating. I use it all the time to explain things and as part of the whole experience. However when I play modern warfare 2 I just need to be in there with the guns I picked. When I play forza I like racing my cars, but also like creating custom decals for them that get distributed to other people.
    The degree of local fixed content, versus the remote streamed content is an interesting balance and actually many game platforms appear to have huge customization but in fact its a sort of derivative of the prim approach. e.g. the colour on a car or a stripe placed on it are not sent as meshes but as known combinations of a procedural rendering.
    I agree that if the environment and event is created correctly everyone feels immersed. Again though we reach a dichotomy of purpose. I am more than happy to choose where I am in the giant city in grand theft auto, I feel immersed, I choose where to interact. I have no expectation of reengineering the city.
    There is a great list and collection of the multitude of components that have grown up around the software of games and now virtual worlds
    I think a whole host of architectural solutions problems can be found in that list 🙂
    Still the most important thing of all is narrative 🙂

  11. Of all the combined toolsets though the one I would really like to give a good look to right now is Hero Engine.
    However the size and scale of the product seems with “HeroEngine is designed for professional development teams. We cannot offer free licenses and we do not offer student pricing for individuals.” to not be something we are all going to quickly experiment with. Which is a pity. The reason opensim/SL/unity3d etc work is that many of us can just dive in with enough knowledge and experience we can figure out whats going on. Or maybe thats the generalist in me 🙂

  12. G_Blackburn

    Great information @epredator. Nice breakdown of features/benefits. When cost becomes a barrier it reminds us the playing field isn’t level. SL/OpenSim has been a great entry point for many folks. Moving on to Unity might well be the next phase for some. HeroEngine.. one can only dream this is in their future.

  13. Thanks 🙂 yes even free or easy to access tech still requires a degree of human talent and resources to be applied to it. Whether thats great visual designers, organisers for events etc. Though it is interesting that the gap in the delivery technology is not really all that great between the free and the ultra expensive. Great designers, or great content tend to win I think. So middleware being very very expensive or restricted access may have a premium business model but it is missing the mass market micro transaction world and benefits of passionate individual users to chase the seat licence deals. I thin unity, and a few others are breaking the mould and letting anyone develop and see where that takes them.

  14. One thought I have is I don’t see a business case for Unity3D and OpenSim. With Unity I don’t need the two things OpenSim does which is access to the assets and server side physics. Once I remove those from the use case the other games servers seem alot more attractive as a server platform. Perhaps the perssistance of chnages to the avatar or things i may move or edit, but I feel the game servers provide a much simpliar solution to this.

  15. Yes the games servers do provide a lot, clearly thats what they need to do normally. However the opensource nature of opensim as a server that understands types of content in a spatial environment, already deals with brokering chat and presence with the option to maybe run more than one client, i.e. have an SL experience where relevant and unity3d one talking to the same content is interesting.
    Really though this combination is to help people understand there are some significant components to the architecture that they need. Showing a path of understanding from using SL to trying to run your own servers with opensim to building out a virtual world using other components including unity3d brings some awareness of the challenges.
    As I said at my metameets pitch though I really want us to be able to take a leap forward from avatars and islands, new combinations of components start to get us to consider that. Once two things can be shown to talk to one another and maybe offer an improvement then people can consider the other options.
    I am still amazed that the games companies and keepers of of this middleware have not started to combine it to solve the challenges of virtual worlds of the sort we are becoming accustomed to. 🙂

  16. Kevin —

    I can see Unity being a temporary fix for Web-based OpenSim until a WebGL or HTML 5 viewer comes along.

    The benefits of having a Unity front end available is that power users can enter a world with a full-featured client — like Hippo or Imprudence — and inhabit the same world as casual users. So, for example, a meeting moderator might enter the world via Hippo in order to set up a presentation and arrange chairs, while the meeting attendees would drop by via the Web and be able to attend the meeting quickly and easily — but without the ability to, say, change their appearance or create new objects. (Unless those actions are enabled via scripted objects.)

    This might be similar to the way that Firefox lets me access a webpage in a read-only way, while an FTP client lets me access the same webpage and also edit what’s on it.

    — Maria

  17. You are confusing what Unity3D is. Unity3D is a multplatform game development environemnt that currenty supports browser, windows, Mac, iPhone and WII. They are adding Android, XBox360 and Playstation. I am sure if HTML5 and WebGL get the performance of a game engine Unity will be able to deply to HTML5 and WebGL too. What we have to remember HTML5 and WebGL is not an authoring environemnt and does not provide all the services that the Unity development environment provide.

    As for server-side services the game serves are provided by real companies, with real support teams and have more robust services than OpenSim has. The SmartFoxServer has sound and video stream, chat, can manage identity. It has guaranteed UDP, lots of things. clustering and redundacy. IMHO OpenSim will not get approved by any large companies due diligence compare so servers that are running 75,000 million users like SmartFoxServer or some ofthe other game servers.

  18. @maria I certainly expect we will have more than one way to look at any content and to build and edit. as that is very much what happens today. The tootlchain workflow for creation and use tends to need certain things for certain roles. I am sure that web standards will start to help with viewing, though given we still have a lot of cross browser issues with the basics of CSS today I wonder how this will ever get sorted 🙂 @Kevin is correct in that much of unity’s power is the fact it is a development enviornment that also pulls together other content creation tools like the photoshop and maya’s of this world. In many ways though the client plugin effectively becomes defacto standad. And just the other day it was show running natively by google, not as a plugin. So just as flash became a “standard” these highly focused game style clients may trump the standards bodies.
    Smartfox server is indeed very impressive and scalable and built for the job, club penguin uses it so we know it works. Though it is extensible with modules it is not opensource as such. That is the benefit and curse of opensim. With people like intel using opensim a degree of hardening and the development increases. This can of course lead to a services eco system around a core opensource offering, but with lots of experimental drives forward.
    I like unity because is low cost for a single person company like myself, smartfox lets me run a 20 concurrent user server for free too. Though at the same time opensim lets me do what ever I want to host. The profile then of a project that a customer or partner needs does have to depend on their budget expectations and the amount of development time they are prepared to put in.
    One of my projects is using both unity/smartfox and separately opensim and a few other things for a variety of experiences and also spreading of risk.

  19. Hey, I searched for this website on Bing and just wanted to say many thanks for the exceptional read. I would have to concur with it, many thanks once more!

Leave a Reply

Your email address will not be published. Required fields are marked *


Please type the text above:

This site uses Akismet to reduce spam. Learn how your comment data is processed.