Client vs. Server
I do love OpenSim. But, as a business journalist — I try to be open minded. And, as a business owner, I’m always looking for a faster, cheaper, easier way to do things.
This week, I heard from a couple of experts about another way of doing virtual worlds — by moving more of the processing away from the server side, to the client side.
Here is how this works.
Say you have a cannon on your virtual world. And a cannon is shot out of it. The way this works in OpenSim and similar platforms is that the virtual world server — the computer in a far-off data center somewhere running the OpenSim software — tracks the path of that cannonball and lets all the folks watching know where the cannonball is, 20 or 30 times a second.
That’s a lot of messages going from the server to all the clients, which are all the browsers showing what’s happening in the world to the visitors.
Now assuming that this is an ordinary cannonball — and not one of those weird rocket-powered ones that can change direction — you can guess where that cannonball is going to end up.
So, in theory, the server can just tell the clients that a cannonball was fired in a certain direction, and let the clients calculate exactly where its going to go.
If you know ahead of time that there are going to be cannons fired, you can include a “fire cannon” command inside the client application.
If I have a stand-alone business application, and my users have to download software anyway, I can off-load quite a bit of processing this way from the server to the client. And this doesn’t just speed things up for the users, since there are fewer messages going back and forth. It can also allow a single server handle a lot more visitors at the same time.
Video games, for example, generally come with very large client software – often on a disk that you have to buy from a store. Video games generally have controlled environments — there are only so many characters players can choose from, the maps of the worlds are known ahead of time, the castles are in fixed positions, and the monsters are known ahead of time.
In a video game, it makes sense to maximize the speed of the action, even at the expense of having a larger client and less flexibility, since changing the game my require changes to the client.
Closed social worlds can also move processing to the client in order to improve performance — the Utherverse download, for example, took up 1,200 megabytes on my hard drive. (By comparison, the Hippo browser for Opensim takes up just 68 megabytes.)
Of course, Utherverse is a giant collection of environments. My company region, by comparison, is tiny. I could easily pre-install the virtual environment on employee PCs, for example.
The downside is when I want to re-decorate the offices. Or get some new business collaboration tools.
Okay, so might not work for me. But say I had a website and wanted to include some 3D functionality — so that my clients could get a virtual tour of my office building, for example. Or I had a factory and wanted to show 3D parts to customers. If I have to force folks to download software anyway, then they might as well download what the need to visit my world.
Certainly if I were a software developer building virtual worlds, I would be talking my clients into investing in expensive customized systems that would require additional programming whenever the world changed.
According to Adam Frisby, one of the core developers working on OpenSim and head of research and development at Shanghai-based DeepThink, it is possible to run OpenSim in a client-based configuration, with a little tweaking.
The benefits, he said, is that moving processing to the client will make OpenSim much more scalable than it is now.
But it will also make the environment less interactive.
For example, if an avatar opens a door in a client-based world, then only that user will see the door open — the door will stay closed for the other visitors to the world.
As more businesses start to use the OpenSim platform we’ll probably see a wide variety of clients appear for it. Both super-thin, web-based clients light enough to run on cell phones, and super-heavy clients that work well for dedicated applications.
For example, I can see a heavy enterprise-level client for OpenSim that has business functionality built in — integration with business applications, for example, such as corporate directories, email, video calling, corporate documents and presentations, collaborative software, and corporate instant messaging.