Grid Hopping – Multi-Grid and Hypergrid Teleport URI Scheme

There has been much discussion of the teleport addressed that can be used within virtual worlds browsers for OpenSim and the generalisation of the platform specific secondlife:// URI scheme handler that Second Life viewers have used, and that have been extended by adding OpenSim grid domain names and interpreted as OpenSim teleport addresses in the past.  Some of these extensions have violated URI standard syntax by adding a second protocol element (http or https after the main prefix protocol), extra : (colons) or spaces between elements (not within an element which can be replaced by a valid %20 code).

A proposal to use a hop:// scheme has been incorporated into a number of third party viewers (TPVs) although some implementation issues remain. Cinders Biscuit of the Firestorm viewer development team states:

It [hop://] was introduced by Armin Weatherwax for Kokua and Firestorm over a year ago. I don’t know the history of it, just the scheme. It can be registered with IANA when it’s finalized, possibly for FS 4.4.6. It’s more than just replacing trademarked syntax. Bear in mind, this is not a Firestorm specific scheme. It originated in Kokua for adding grids to the gridlist from the web and grew and is present in all hypergrid enabled V2/V3-based viewers for OpenSim.

There as been much discussion of this on discussion forums and in OpenSimulator Mantis and Viewer JIRA issues. E.g.,

A recent requirement for a split in the development of viewers which can be used with the proprietary Linden Labs Second Life platform (due to the inclusion of a proprietary licenced Havok physics library recently) and open source platforms like OpenSimulator offers an opportunity to create a suitable and general non-proprietary form of URI protocol handler in the OpenSim branch of these viewers.

Proposal for hop:// and hops:// Teleport URI Protocol Handling

A proposal is as follows… that inter-grid valid teleport indications are characterised by the standard forms hop://and hops:// for secure https usage:

  • hop://gridhostname:port/regionname/x/y/z/
  • hops://gridhostname:port/regionname/x/y/z/

Relevant parts ought to be able to be left out if that makes sense… but not at the expense of making platform or region size assumptions. The landing places ought to be able to be left unspecified if the hop:// is unambiguous rather than bundling in such assumptions to the protocol specification, though any specific implementation could use platform knowledge of course.

A missing gridhostname:port ought to imply the address is only valid on the local grid. But if gridhostname:port is present it should also work even if its used on that grid (this is not the case in the present handling of hop:// in some viewers).

Default port should be the HTTP default port :80, HTTPS default port is :443 (i.e. not a platform specific port).

x, y and z in units of a metre, decimal point notation allowed.

Final / optional?

Test Grid Hops

The following links act as a simple test of hop:// handling by viewers between two OpenSimulator grids… where the fours regions involved are all within one hop of each other (within 4095,4095 regions on an x,y grid maps – another issue inherited from Second Life viewer specific restrictions). Hops ought to be possible between any of these URIs when they are used, you should get to the correct grid and the reported link to the previous place ought to work to return you to the grid and/or region you were in, even if teleporting between locations on the same grid.


More information and test hop:// addresses are given at

x-grid-location-info:// Scheme proposal and Experiments

Cinder Roxley is developing a multi-grid teleport addressing scheme that works in a similar fashion to hop:// in that it can be used to launch or communicate with a running viewer and teleport to a specific grid, region and location, as well as run certain app features. It is being implemented initially in the Alchemy Viewer.

This entry was posted in OpenSim and tagged , . Bookmark the permalink.