[sldev] [ARCH] Render unto Caesar the things that are Caesar's

Mike Monkowski monkowsk at watson.ibm.com
Mon Sep 17 13:22:31 PDT 2007


I've read the transcript and looked at the slides of teh Architecture 
group, and I'd like to suggest an alternate partioning of the tasks.

I'm not sure what the Hosts are in the diagrams, but my interpretation 
is that they are temporary instances, "virtual" virtual worlds.  The 
information about an avatar is kept in the Stores, and when that avatar 
logs on, an instance of the avatar is created on an Avatar Host.  The 
information about a region is kept in the Stores, and when someone 
visits it, an instance is created on a Region Host.

It's not clear from the charts exactly what is in an Avatar Host, so let 
me suggest that first it should contain an instance of the avatar mesh. 
  We don't want to live with just two meshes forever, and we don't want 
to have to store a universe of avatar meshes locally with the viewer. 
Second, it should contain instances of all of the avatar's attachments, 
including their positions relative to the avatar.  And third, it should 
contain any objects temporarily rezzed by the avatar from his/her inventory.

An avatar's inventory and all processing of the inventory would be 
handled by the Avatar Stores.

A region host would contain instances of all objects owned by the 
region, but the ownership would be handled by the Region Stores.

The diagrams don't consider multiple viewers attached to a Region Host, 
but let's consider how viewers get information about other avatars.  In 
the current SL architecture, all the information about all of the 
avatars is on the sim (region host) and all connections are through the 
sim.  When an avatar moves across regions, his information is handed off 
from sim to sim.  And because of this, we are limited to about a hundred 
avatars per sim.

So the new architecture has Avatar Hosts to keep track of the avatar 
information, and viewers get information from the Avatar Hosts.  So if 
my avatar is in the Region and your avatar is in the Region, we both get 
information from the Region Host and we share information from our 
respective Avatar Hosts.  And if we would like to be able to see across 
regions, we need to contact all of those other Avatar Hosts.  That's a 
lot of very dispersed connections.

Which brings me to my alternate partitioning of the tasks:  The Avatar 
Hosts should be in the same domain as the Region Hosts.

Getting information from the Avatar Stores to the Avatar Hosts doesn't 
have to be fast, but getting information from the Avatar Host to the 
Region Host should be fast.

The Avatar Host would serve the appropriate LOD instances to the Region 
Hosts that need them.  For highest LOD, they could communicate directly 
with the viewers.  For lower LOD, the viewers could get the information 
through the Region Host.  Region Hosts really only need to know enough 
about an avatar geometry to compute collisions.  The rest of the physics 
could be done by the Avatar Hosts.

The goal is to keep the amount of avatar information on the Region Host 
to a minimum so that we can dynamically repartition the virtual Region 
on servers as the load demands.  A server could be running several 
Regions if they aren't doing much, or it could be running just a 
fraction of a Region if there are a lot of avatars doing a lot of 
things.  Eliminate the population limit.  "All the avatars that fits."

For looking across regions, the avatars already have multiple LODs.  For 
prims and object meshes (yes, we don't want to limit ourselves to prims) 
the Region Host could automatically generate low LOD meshes to represent 
the objects at a distance and pass them on to neighboring Regions.

The viewer, also, could choose to use lower LODs for avatars and objects 
to improve performance.  Kind of like progressive loading of images on 
the web.

So if we allow thousands of avatars on a sim, how will they all be able 
to see the performer on stage?  Well, since the Region Hosts are just 
instances, we can make multiple instances of the Region in the world 
that can only be entered by way of the instance that the performers are 
viewing at the time.  For other instances, it would look like avatars 
appear and disappear at the region boundaries like a walking teleport.

So you could have very large intimate gatherings and everybody gets a 
good seat.

Right now we have huge central Stores, but we really know that objects 
belong either to an avatar or a region, so the Stores can be very small 
and very distributed with connectivity only to the relevant Avatar Hosts 
and Region Hosts.  Transactions with the Stores would be through the 
Stores servers.  There would be no "push" transactions to the Stores, 
they would all be "pull" transactions by those who are authenticated to 
the Stores servers.  So the Stores could even be simple Apache web 
servers.  The Stores could "push" to the Hosts or the Hosts could "pull" 
but nothing is permanent on the Hosts.

So, in summary, if you din't get the clever biblical allusion of the 
title, the main idea is to keep all the information for rendering 
avatars on Avatar Hosts and for rendering Regions on Region Hosts, but 
keep both in the same domain.

Mike


More information about the SLDev mailing list