Hypergrid, or how to teleport between WORLDS using OpenSim
[Update 20090106: Corrected information about names after hypergrid tp, added two captures]
This post presents a user experience with Hypergrid, a technology included in OpenSim that allows teleports between virtual worlds (or grids), and includes also a short tutorial so that you can try it yourself, link your virtual world with your friends’ worlds, etc. It assumes a minimal working knowledge of OpenSim, at the level described in my previous post. Yes, yes, I know, after a “Installing OpenSim” post there should come another titled “Saving our database” or “Our first Grid” — but I’m doing that for fun, ok? :-)
Why Hypergrid matters
Hypergrid represents a radical change in the model for 3D online OpenSim-compatible virtual worlds. Up to now, we’ve been used to big, monolithic worlds (like Second Life or OSGrid), modelled under the metaphor of a flat, grid-like world (hence the term grid). The world is made of pieces called islands or regions which occupy a place in the grid determined by two integer coordinates, and these in turn determine the visibility between islands. Thus, if island A is at (1000,1000) and island B is at (1001,1000), A and B share a border: the east of A is the west of B.
This “big world” model has several problems: big worlds don’t scale well, the data is in the hands of the service provider, not the customer, and it’s easy to for the service providers to scam their customers. Besides, if OpenSim has to become the 3D web, one doesn’t understand clearly why having some islands (= having a web) should imply having neighbours or occupying a position in a vaster plane — there’s no notion of “neighbour web” in the WWW.
Enter HyperGrid. HyperGrid allows us to work with a completely different model, what we could call a “small world” model. Everybody can have a world, a grid, in the same way that everybody can have a web. You, your community, your employer, whomever. And, as webs are linked using HTTP links, so grids are linked using HyperGrid. Easy, no?
Therefore HyperGrid matters. Indeed, it matters a lot. A hypergrided universe is a universe in which you can have your own world, take your own backups, create your own contents and save it to your HD, invite your friends… and still not be isolated.
To be fair, the technology has its problems. For example, DRM as we know it today cannot work, and there also are some security concerns. Anyway, these problems will most probably be tackled, one way or another.
A question of names
Let’s say that I’m called Jane Doe in world A, and I’m teleporting to world B. What should be my name in world B? To make sense of that question, think that an avatar called Jane Doe could already have been created in world B! For example, I am Zonja Capalini in Second Life, Open Life and the Rezzable PGA; if these worlds became hypergrided, it’s conceivable that the Zonja Capalini of Second Life wanted to attend a party at Rezzable — please note that this involves a hypergrid teleport, and is different from logging in directly to rezzable. :-)
Additionally, when an avatar rezzes at world B, it would be nice if there was a way to identify where (i.e., which world) did this avatar come from. For example, it could well be that avatars coming from, say, LLmafia.org had a bad reputation, or that avatars from lively.com had no genitalia, etc. So, knowing where does a foreing avie come from is important.
The current implementation of HyperGrid addresses these two points in a simple and elegant way. Assume again that I’m Jane Doe in world A, and assume that the URL of world A is http://www.worlda.com:9000. Then when I take a hypergrid teleport to world B, my name becomes
Neat, no? My first and second names are combined to form the first name of my avie by placing a period between the two, and the name of the place I come from takes the place of the second name of my avie. For example, if I came from OSGrid (http://osgrid.org:8002), I would be seen as
Currently, this new name is only seen by others looking at me, not by myself, which seems proper, but involves the small risk of finding my own doppelgänger! :-)
[Update: After a time, my own name changes too:]
Lend me your island for my map
So, anyway, how does a teleport between worlds work? The key idea is the following: assume that world B has a region called Nice Island and wants to open it to foreign teleports. World B then configures OpenSim for HyperGrid. When the managers of world A want to implement teleports to Nice Island, they configure OpenSim for HyperGrid too, and then they use the “link-region” command (described below) to include the map image of Nice Island in the world map of A. And then this image of Nice Island can be used to teleport to World B using the map. That simple! Indeed the administrators of world A don’t need to give to “Nice Island” the same name it has on world B, they can name it “Gateway to B” for example, so that you don’t teleport to world B by accident.
The HyperGrid technology is still in its infancy, and there are a number of open questions that will probably be addressed in future versions: if I create an object in a foreign world, what should be the creator of this object, as seen from the foreign world?; Can I make friends with somebody of a foreign world?; Can I take a landmark of a foreign world and use it to tp back to that world?; etc.
Hypergrid experience and tutorial (for Windows XP)
Step 1: Use names, not IP addresses
My RL friend Ludmilla Writer and me tested HyperGrid by using two XP computers connected to the same ADSL router. My (internal) IP address was 192.168.1.38, and Ludmilla’s was 192.168.1.33. To be able to use names, we had to tweak the “hosts” file, located in “C:\WINDOWS\system32\drivers\etc”. This file normally contains some comments, and then a single line which says
We added two lines
192.168.1.38 zonja 192.168.1.33 ludmilla
at the end of the “hosts” file, and saved it. We did that both on my machine and on Ludmilla’s machine. This tweak allows us to use “zonja” instead of 192.168.1.38 and “ludmilla” instead of “192.168.1.33″ as the addresses of our machines.
If the grids you are going to link don’t have dns addresses, you can use this trick — don’t forget that unless you’re making the experiment at home, as we did, you’ll need to use external ip addresses.
Step 2: Modify OpenSim.ini on both grids
The “Installing and running HyperGrid” section of the HyperGrid page in the OpenSim wiki is excellent, you can follow the instructions there to modify your OpenSim.ini files. Except for the http_listener_ port and remoting_listener_port variables, please use the port numbers as shown (port numbers come at the end of urls, preceded by a colon — 9300 and 8001-8004 in the examples; modify them if necessary). Here are the modified OpenSim.ini files for the “zonja”
Step 3: Modify region files to use external host names
Go to “C:\Program Files\OpenSim\Regions”. You’ll see one or more .xml files. Open them one by one with NotePad and change the “external_host_name” parameter to point to the name defined in Step 1 (if you’re using different machines to run your grid you know what to do).
Step 4: Modify region files to check that the coordinates of your maps don’t overlap
This one isn’t documented anywhere and it made us lose more than two hours! If the destination region in the destination world has the same (x,y) coordinates as the origin region in the origin world, the teleport will fail, and you will be logged off. The coordinates of your islands are located in the .xml files of “C:\Program Files\OpenSim\Regions”, under parameter names sim_location_x and sim_location_y. Make sure that these are not identical in both worlds (also make sure they are not more than 4000 apart). In our case, we set “Condensation Land”, the unique island at “zonja”, at (1000,1000) in my machine’s map, and “Ludmilla’s Island”, the unique island at “ludmilla”, at (1010,1010) in Ludmilla’s machine map. You may want to review the “default_location_x” and “default_location_y” of your respective OpenSim.ini files and change them accordingly too.
Step 5: Start OpenSim in HyperGrid mode and check that hypergrid is working
Go to Start -> Run, type “cmd” and press ENTER, type “cd \Program Files\OpenSim” and press enter, type “OpenSim -hypergrid=true”.
Wait until you get the “Region <root> # :” prompt. Type “link-region” and press enter.
You should get a reply; if not, something is not working properly.
Step 6: Link your worlds!
On the OpenSim console, at the “Region <root> # :” prompt, type
link-region <Xloc> <Yloc> destination.world.address port Destination World Gateway
Use Xloc and Yloc that make sense to your world, i.e. close to your regions, but not adjacent. For example, since “Condensation Land” was at (1000,1000) in my world’s map, (1002,1000) was a good position to put Ludmilla’s Island from Ludmilla’s world:
link-region 1002 1000 ludmilla 9000 Ludmilla's Gateway
If all goes well, you’ll get a handshake confirmation message.
Step 7: Log in, and make sure that home is defined for your avatar
If you have not, go to World -> Set home to here in the Second Life client; otherwise your teleport will fail.
Step 8: Open the map and wonder
You should see your islands, and, in addition, the gateway island from the other world in your map!
Here’s the map before region linking:
and here’s the map after region linking:
Step 9: Teleport between worlds
By using the map.
Step 10: Party :-)
- My tutorial Installing OpenSim in Windows XP with MySQL
- The HyperGrid page in the OpenSim Wiki. It’s the source of information I’ve used to conduct my tests and to write this post.
- Vint Falken’s OpenSim goes Hyper – The Hypergrid.
- justincc’s thought-provoking Could there be a future without big grids?
- justincc’s What is the Hypergrid?