This is the second part of my series where I’m brainstorming about some considerations regarding building a virtual world. The idea is that I discuss what I would like to see in the world (or “worlds,” as I’ll talk about today), and give you the chance to tell me why my design is good, bad, crazy, limited, or possibly even useful.
Last time I talked about some very basic aspects of building the software, such as the client having to run on the Mac, Linux, and Windows. The comments on that entry gave me great material to consider in this and future pieces. This time I want to discuss some ideas of creating one and then multiple worlds, and then joining them together into what I’ll call “superworlds.”
Let’s begin with the basic world and keep it really simple. Suppose you wake up one day to find out that you are in the middle of a flat square acre of land and you are the only person. There are no buildings and you have no clothes, but you have the ability to conjure up whatever materials you need to construct the buildings, the clothes, and to do any landscaping you want.
If you walk to the edge of your land and gaze outwards, you can see nothing but a void, if one can see a void. You, the land, and what you construct constitute your entire universe. There is light, there seems to be a sun and clouds, even weather, and day moves to night and then back to day. I’ll call this model “Lonely World.”
This by itself is not so different from what the situation is in Second Life when you get a “private island” that is not findable on the larger grid. I don’t want to use Second Life as the core model here, but will mention it from time to time for those who are familiar with it. Indeed, as I think about my requirements for the virtual world, I am amazed at how much Linden has already implemented. I don’t want to be locked into what Second Life does, however, so I plan to take a “ground up” approach here, even if the ground is only virtual.
I’ll reference other virtual worlds and online games if they provide features similar to what I’m discussing if I know about those environments. Please use the comments to add references or links to virtual worlds that already do what I’m discussing.
Back to Lonely World. Though I have access to an endless supply of materials with which to construct things, I’ve said nothing about the tools I can use to do so. Are the tools in my world and if so, how sophisticated are they? Can I somehow go elsewhere for a little while, use very fancy tools, and then bring the objects back to my world? While I am building, can I undo design choices or mistakes?
If I discard something that I’ve built, can I go back in time to retrieve a copy of it? If I modify the landscaping and terrain of my square acre, can I restore it to the way it looked at some point in the past?
Now I’ll stop pretending that I am physically living in such a weird place and go virtual. Let’s put Lonely World on my laptop as a virtual world with no connection to anything on the Internet. That is, it is self-contained. At this point there is just one “me” so there is no need for identity or facilities like instant messaging. Nevertheless, I want to build a very rich but limited virtual Lonely World in which I can wander around, sit by a beautiful waterfall, and become the Frank Lloyd Wright of my own mind.
I need to represent
- The finite Lonely World terrain with its hills and valleys and textures to make it look land-like.
- My avatar, a 3D representation of myself, that I can view and control in this virtual world. If I am indeed the only person in Lonely World, it’s questionable why I need an avatar since nobody else needs to look at me, but I’ll throw in this feature since I’ll need it later.
- Clothes and objects with which I can equip my avatar. For example, if I were to build a medieval castle in Lonely World, I might want to equip my avatar with a sword in addition to armor.
- Objects such as buildings and the pieces from which I construct them.
- Textures to add detail and design to the objects.
- A flexible attribute system to handle simple information like whether an object is phantom or not, or its density, but also user-defined properties. For example, these shoes are better than those shoes because they make me run faster.
I also need scripting, the ability to cause and sense changes in the environment, and then have objects respond. This is done by an integrated programming language and execution environment. It should provide hooks in order to do first rate editing and debugging.
The things that I create and use can be kept entirely in-world or can be exported to and from the world. I need an XML representation of objects including their geometry and their attributes. This allows sharing from my Lonely World to your Lonely World, albeit only by my exporting an object and then giving you the XML, after which you import it into your world. I can also use this facility to backup the objects onto my hard drive in addition to whatever storage model I’m using within the Lonely World inventory management system.
The tools to build and script the objects can be in or out of the world. As mentioned in the first part, I would use a plug-in design that allowed different tools to be developed and incorporated into the environment. This would allow you to create a customized GIMP-based add-on to edit textures or design clothes, for example, rather than always using Adobe Photoshop as an external application.
At this point what I have is an extended subset of environments like Second Life. Though Lonely World allows only one inhabitant and lives isolated on one machine, there are objects in the world that can be built, textured, and scripted. I envision a more flexible object attribute system that is fully integrated with the scripting, as well as the ability to plug-in new tools to work on objects and scripts.
Depending on my hardware, I should be able to dial up or down the graphics rendering of my world. The internal software design should take advantage of features such as dual core processors. If I want things to go faster by representing objects in low resolution wireform and shades of gray, that should be possible.
I started by assuming that the world was one square acre. In the virtual world, it should be as large as I want it to be and can be supported by my hardware. Also, I should be able to have a spherical or a tubelike world where if I keep walking in one direction I end up back where I started. Other geometric configurations like saddle shapes should also be possible, though some may have higher performance penalties than others.
What happens if I now connect Lonely World to the Internet? For the moment, assume this is still the only world and the security is such that only I can enter the world. In this Connected Lonely World I now want instant messaging so that people who are elsewhere (and necessarily out of the world) can chat with me. I want to be able to access rich content in the world. If I can see something in my Firefox browser, I want to be able to see it on the face of an object in-world. If I can interact with my browser in some way, I want to be able to have the same functionality in-world, and I want the web capabilities integrated with my Lonely World scripting language.
In essence, I want to have the browser functionality incorporated in whatever ways make sense to me within my 3D virtual world. This opens up security problems, but since I’m aggressively borrowing and reusing code from multiplatform applications such as Firefox, handling the issues should be doable.
One image that keeps coming to mind as I imagine this is Tom Cruise in the movie Minority Report. In that film, Tom as a detective trying to arrest people before they commit future crimes brings up floating windows of information which he them manipulates with hand and arm motions. I should be able to do that in my virtual world. In the isolated Lonely World these might be local web or ODF content, but in Connected Lonely World this content can come from the web. Now, to me, this starts getting interesting as I imagine a version of Facebook, a Google search, or a Wikipedia investigation inside my virtual world.
I also now want to be able to import items into Lonely World from across the web. They might be temporary or they might move into my working inventory. I would also like to be able to backup the objects in my world to a remote repository.
Are you tired of being lonely? As I understand it, OpenCroquet has two models of dealing with multiple worlds. In the first, there is a master world that exists on the network. You can then create a world on your machine that mirrors the master world. Your presence and manipulations in your subservient world is reflected in the master world, with a permission system of what you are allowed to do. You and the other avatars that have hooked into the master world all live in the same, single world.
In the second model, multiple master worlds exist but you can pass between them via portals, which is similar to teleportation in Second Life or hearthstoning in World of Warcraft. The portals are not a priori bidirectional, but do allow movement between individually constructed worlds.
In Second Life, the universe is divided into multiple areas which you can teleport between if you have permission. Some of the regions are very large and you can walk or fly for hours to get across them. Some are on the grid but not visible to those without permission. While the regions run on different servers (actually, four regions per server), things are stitched together to give the impression of one or more flat grids of virtual land. All these run on Linden Lab servers.
I envision a much more flexible way of combining worlds. Here are some of the possibilities:
- Individual worlds are hosted on different web hosts. Private arrangements are made to connect, say, the eastern end of my region to the western end of your region. You and I can walk across the united land area. We can invite other avatars to join us.
- Many worlds can be stitched together in this way, creating large flat, tubular, or spherical custers of worlds, or “superworlds.” Neutral boundary lands might be inserted to help support the geometry. For you science fiction fans, we could create virtual ring worlds a la Larry Niven from the individually hosted regions.
- In what I call the “marina model,” you could rent hosting support for your virtual world in an established online hosted superworld for a short or extended period. That is, you could work on your own Lonely World when you are offline, but when you connect, any changed content is replicated up to the hosted environment. The hosting model could be a basic fee plus add-on charges for support of handling extra objects, more avatars in the region at a higher performance level, and so on. If you don’t like the neighborhood in which your world is hosted, you can move it somewhere else, subject to your rental contract. This would allow the short-term dynamic creation of a superworld that could support a concert, a political rally, or a conference.
- Teleporting between worlds could have filters and sophisticated permission systems. For example, suppose you wanted to enter a utopian type of world where everyone wore flowing white robes and three people already present in the world had to approve your transit. The entry would be delayed until the approvals were received. On your way into the world your clothes would be replaced with the required ones. Perhaps you would be automatically dressed in your old clothes when you left the utopian world. Maybe the money “in your pocket” gets exchanged for the currency in the new world, for a price, of course. Maybe you get charged for those flowing white robes along the way.
Multiple worlds introduce questions and problems with performance, availability, identity, security, privacy, currency, permissions, copyright, and movement of objects. Existing worlds have dealt with these issues in different ways, and I’ll return to them in future entries.