A better “Second Life” of course. As the result of reading Snow Crash and experiencing the attacks on the Second Life grid some weeks ago I was thinking in general how a better metaverse might look like, especially it’s architecture. It’s just some rough ideas and I haven’t researched yet already existing projects but I though I will simply describe what’s in my head.
My general idea is that such a system needs to be much more open. In Second Life it often feels sort of restricted in that for instance I cannot incorporate more data from the outside world or change parts of the system. HTML-on-a-prim would definitely help in the first area, but it’s not yet there (although according to Linden Lab on the way) and probably won’t be for the near future. So the best would be having an open source project where everybody can contribute. First versions of course would be very limited and maybe wouldn’t even contain editors for many tasks but instead one would need programming skills. Eventually then somebody might write an editor or even some companies step in and add such things in an effort to utilize this system for their own needs (as it’s happening with many open source projects these days).
Open Source, though, might come to Second Life in the one or another form, either by Linden Lab or maybe via libsecondlife by creating an alternative client (and further on maybe even a server).
Regarding the architecture I imagine a very open approach, too. It would be nice to be able to host your own sim similar to hosting your own web server. These could by dynamically attached to the grid. Of course this has issues such as where to connect it to the existing grid.
Each sim in Second Life is right now one physical server (well, not completely sure, I think it’s actually one CPU, so multiprocessor machines could eventually run more sims) and for being able to host your own sim it makes sense to set sim==server (or at least process on a server). Other thinkable architectures might be to have just a cluster of many servers and a big bunch of land which is distributed in a dynamic way among these. But that would involve some central service which I personally wouldn’t want as it’s closing in the system again.
In order to make it easy to have your own sim without renting some server and setting it up the client could come directly with a sim attached. This sim wouldn’t be capable of holding that many people though (because for instance uplinks of DSL connections are not having that much bandwidth available) but it would eventually be sufficient to meet with some friends or do your personal work in.
Other people might host their sims on dedicated servers and this would be where you could meet lots of people then.
Sims might also have different sizes and might be hosted on a cluster so they might be able to host more people or be bigger. As a result of different sized sims the topology wouldn’t really be grid-like anymore so one might think of entry-points to a sim. This might prevent the idea of continous land as it’s e.g. happening on the mainland in Second Life but OTOH big parts of land could eventually be created by using a cluster for that sim.
Being that dynamic in sim-adding and removing one big issue is of course the handling of the connection points etc.
Assets are objects, scripts, textures and so on an avatar can own and/or can be rezzed on land. These assets are stored centrally in Second Life eventually leading to some problems of it’s own (e.g. when an attack is going on). One is that the asset server in SL is a bottleneck and when it’s not performing well then the whole system gets slow for everybody wherever they are. These performance problems get obvious when grid attacks are happening resulting in slow searches, mapping and so on because the whole backend infrastructure gets too busy with e.g. self-replicating objects (as I understand it). One solution might be to have assets stored in a more distributed way. I could imagine having your inventory actually stored inside your own client and objects rezzed in a sim to be actually stored on the sim server. Textures could even be stored as simple URLs to web servers from which they are fetched when needed. This might still impose some traffic on a web server for a popular texture but it’s not serving all the textures in-world and these could of course also be cached easily.
Having a distributed and open approach calls for trouble of course in regard of copyrights and illegal copying but eventually it can be coped with that.
One advantage of having a central user database as in Second Life is to easily be able to see who’s online and where they are as only a central server needs to be queried (although it happenes in the past that it didn’t work that well for some reason). In my hypothetical virtual world I would imagine to have this data stored more distributed, too. Each client can tell other clients whether the avatar is online or not, busy or not or whatnot. This could be made in a P2P-fashion which seems to be quite modern these days 🙂
Well, a complicated topic especially without having the actual system or haven’t thought about it more deeply. But looking at Snow Crash they had the possibility of just having ghosted avatars without collision detection. Thus you would not need to exactly know where people are standing in the sim. It might be an idea to dynamically scale the exactness of the simulation by looking at the traffic. Some avatars might then even be blurred to symbolize that their status is not exactly known. Not sure if that would work psychologically though.
I also mentioned clusters of sim servers above already. So ISP-hosted sims could eventually have more performance that way or even by eventually mirroring.
Well, I haven’t really thought about how to deal with that but it seems obvious that the economy is a vital part of Second Life. OTOH I am sure a virtual world could also live without that. Even if you see real life businesses in Second Life their main goal right now is to create awareness or a marketing effort not really to earn money (as they are usually big companies anyway their SL revenue would be small compared to their real life revenues anyway and mostly you cannot really map your RL products to SL products).
But if you want commerce you’d need to think of a save way to transfer money from client A to B. But in general methods also used on the web for secure transactions might be used although there does not seem to be a good or established micropayment system yet. Anyway, this topic probably could fill whole blogs on it’s own so I will leave it that way for now.
When the client has it’s own sim attached and this sim stores it’s objects itself and the inventory is stored on the client then there’s no reason to prevent the user from using the client and the sim disconnected. Advanced users could also setup their own server in their local networks. Having disconnected clients would mean that you could build, program, sort your inventory and whatnot without being connected. When you reconnect your personal sim might simply become available again and you can give out copies of your inventory to people again. Here’s definitely an advantage in distributed storage of data.
Well, I am not sure whether all that makes sense or not and there are certain a million other ways to think about it. If you have comments or ideas of yourself feel free to add these in the comments section. I might do a wrapup post of these later on if there are enough.