jump to navigation

My first time Hypergrid standalone June 2, 2011

Posted by justincc in hypergrid, opensim, personal, secondlife, virtual-environments, virtual-worlds.
7 comments

Okay, so I know this will come as a bit of a surprise to some, but up till now I’ve never run a Hypergrid-enabled OpenSimulator instance.  Oh sure, I’ve looked at the documentation, read and reviewed the code and even written blog posts about it, but I’ve never found the time to actually put theory into practice.

Until now, that is.  Early this week, Nebadon Izumi was kind enough to give me some space on one of his openSUSE 11.2 servers and so I got to work.  First off, I cloned the very latest OpenSimulator development code from the Git repository, which was on Wed Jun 1 (commit 0a430bb).  I don’t advise this unless you’ve got the time and inclination to cope with all the issues of being on the very, very bleeding edge, especially right now as Diva is implementing HG friends and instant messaging :).

Then, after a standard prebuild.sh; nant; cp bin/OpenSim.ini.example bin/OpenSim.ini, I went in to bin/ and

  1. Changed the http_listener_port in the [Network] section to 20000 from 9000.
  2. Uncommented the Include-Architecture = “config-include/StandaloneHypergrid.ini” line.
  3. cp config-include/StandaloneCommon.ini.example config-include/StandaloneCommon.ini
  4. Opened the StandaloneCommon.ini file and did a search and replace of all “127.0.0.1:9000” references with “justincc.osgrid.org:20000”
  5. Started up mono –debug OpenSim.exe and answered the questions to set up an initial region, with a Location of 10000, 10000 and an ExternalHostName of justincc.osgrid.org
  6. Answered further questions to set this up in an estate called e1 owned by a user called Justin Clark-Casey with my own password.

Actually, I’m lying – at first I tried using port 9000, having forgotten that Nebadon gave me a different port range.  However, I soon realized when OpenSim complained of not being able to use that port on the first startup!

Okay, I’m also lying in that I started an ordinary standalone first just to check that everything actually worked before plunging into the relative unknown.

But after doing those other things, I logged in with the old 1.23 Second Life viewer and was pleasantly surprised to find that the direct login to -loginuri justincc.osgrid.org:20000 still worked.  After futzing around a bit, I went to the Hypergates website and clicked on the “Hypergrid Jump” link for the “Newest” Bellona Network Hypergates entry, which happened to be John Rogate’s Creative Twists region on osgrid.org (my address is justincc.osgrid.org but since it’s a hypergrid standalone it’s actually entirely independent from the rest of OSGrid).

And lo and behold, Firefox complained that it didn’t understand the protocol. (not surprising on my Ubuntu 11.04 box).  So I looked at the link manually

secondlife://hg.osgrid.org:80:twistsannex/151/158/31

noting the cool way that OSGrid’s hypergrid gateway address was embedded in a ‘normal’ Second Life link.  I remembered that you could click these things directly in the viewer chat, so I pasted it in, gave it a click, was pleased to note that my totally flat green map tile came up in the Place Information dialog and clicked Teleport.

And lo and behold, it worked!  I was able to run around this totally independent install of OpenSimulator and admire the architecture.  And my name had now become Justin.Clark-Casey@justincc.osgrid.org.  Fantastically cool – a truly distributed metaverse! (yeah, yeah, I know, I’m late to the party :).  Then I couldn’t teleport out again, though I suspect this is actually a network issue that John has.  And right now the region can’t be reached, which stops me posting a picture of it.  So instead, here’s a nice picture of when I went to one of Ai Austin’s OpenVue regions (secondlife://virtual.aiai.ed.ac.uk:8002:Vue-9000/128/128/30)

and then on to Lbsa Plaza (secondlife://hg.osgrid.org:80:Lbsa%20Plaza/128/128/40), which for some reason locks me to the edge of the region on initial teleport, though I can then reteleport within the sim and everything works.

A couple of times I got bit by the “4096” bug, where you can’t hypergrid to any region more than 4096 regions away on the x or y axis from your current region (Linden Lab thought that 16,777,216 regions ought to be enough for anybody ;).  This specific teleport failure reason only appears to be printed in the OpenSimulator log at the moment which can leave the user a bit mystified.  And early on, I was trying to figure out why I couldn’t get to secondlife://hg.osgrid.org:80/Wright%20Plaza/128/128/30 from justincc.osgrid.org, until Nebadon pointed out to me that both my region and Wright Plaza had the co-ordinate 10000, 10000 (which tends to upset things :).

Getting an OSGrid user into my justincc.osgrid.org and setting up FreeSWITCH on my hypergrid standalone was another adventure, which I’ll write more about soon.

If you want some more structured hypergrid instructions, there’s a page on the OpenSimulator wiki though I’m not sure how up to date it currently is for OpenSimulator 0.7.1.1.  And there’s also Diva’s D2 distribution which is pre-configured in 2×2 Megaregion configuration with Hypergrid access.

Advertisements

My Masters Dissertation on Internet-Scale Virtual Environment Architectures October 25, 2010

Posted by justincc in hypergrid, opensim, opensim-arch, secondlife, virtual-environments, virtual-worlds.
26 comments

Hi folks.  For the past couple of years, as well as working for IBM and then on various OpenSim-related jobs, I’ve been doing a part-time Masters in Software Engineering at the University of Oxford.  As part of this degree, as well as completing assignments for various taught courses, the student has to conduct an independent project and write a dissertation about it.

Naturally, I chose virtual environments/worlds as my project area, with OpenSim as the chief exemplar :-).  More specifically, I decided to do some thinking about the possible architectures for creating a truly decentralized Internet-Scale virtual environment, as opposed to the classic ‘grid’ OpenSim/Second Life model where simulators are distributed but services (assets, inventory, users) are centralized.  Naturally, initiatives such as Crista Lopes’ Hypergrid play a large part in these considerations.

I’m now making the dissertation publicly available.

The initial part is devoted to describing the classic ‘grid’ model, both conceptually (e.g. through the lens of the dimensions of transparency for distributed systems defined by the ISO International Standard on Open Distributed Processing) and in formal Z notation.  The second part of the dissertation takes this description and compares it against what I think are the requirements for a truly Internet-scale virtual environment network.  The last part of the text explores alternative architectures to the classic grid model for getting to Internet-scale.

Some of the models are significantly simplified from their real-life implementations.  For instance, the OpenSim model presented consists of only four services (asset, inventory, user and grid).  The Hypergrid model is based on Hypergrid 1.0 rather than the more recent revisions.  In the main, these simplifications were made for clarity of argument whilst hopefully leaving the critical architectural features intact.

The dissertation also doesn’t take into account approaches that are radically different from OpenSim’s client-server system, such as OpenCroquet’s peer to peer synchronization architecture.  I’d loved to have written and thought more about this but I simply ran out of space and time.

Nonetheless, I hope this dissertation might prove useful to people thinking about the future of Internet-Scale virtual environments, if only as a springboard for their own explorations.  Naturally, I’d be very interested in any comments or questions that people might have.

p.s. For anybody wondering, this final bit of work was enough to secure me a pass with distinction ;-).

Pretty OpenSim 0.7 diagrams and updated grid setup instructions July 30, 2010

Posted by justincc in hypergrid, opensim, opensim-dev, opensim-grid, opensim-tech-basics, opinion, secondlife, virtual-environments, virtual-worlds.
9 comments

Hi folks.  Just thought I’d let you know that I’ve once again undertaken the sisyphean task of updating the OpenSimulator configuration instructions 🙂  This time, I’ve updated the grid setup instructions to reflect the current situation in OpenSimulator 0.7.  In fact, I wrote a whole new set of steps based on my experiences in setting up a very small multi-machine grid from scratch, so hopefully they should be reasonably accurate!  Of course, any improvements are very, very welcome – feel free to just edit the wiki page!

I also included some diagrams to illustrate the basic differences between standalone and grid configurations.  Here’s the standalone diagram.

As you can see, in standalone mode both grid services (login, assets, inventory, etc.) and the region simulator itself are contained within the same process (OpenSim.exe).  Viewers simply connect to this one instance.

On the other hand, even a very simple grid setup is considerably more complicated.

In OpenSimulator 0.7 a process called Robust.exe runs all the grid services.  Instead of using their own local services, each simulator (OpenSim.exe) connects to this common set of services, usually across a network.  And once a network gets involved there’s considerably more to go wrong – simulators may encounter both network congestion and a delayed response from the central services if they’re overloaded with requests.

In grid mode, simulators also need to communicate with each other.  For instance, since all regions are on a common grid, an avatar may teleport to a region running on another machine, or cross an in-world border between regions hosted on different computers.  Both teleports and border crossings involve an intricate data handoff between the origin simulator and the destination simulator.  The less reliable the network between the simulators, the worse the teleport or crossing experience will be.  Naturallly, this is often worst in the case where these simulators are communicating over the Internet.

Another interesting thing to note about this diagram is that all communication between the viewer and the virtual environment (apart from initial login, which isn’t shown here) occurs through the region simulator that the avatar is currently in.  This applies not only to things such as walking about and creating objects (both of which naturally belong there anyway), but also to operations such as inventory retrieval and texture fetch.

This is one reason why the current grid model is a centralized one, even though OpenSim instances themselves are distributed across different machines.  Anyone wanting to add a new region simulator to a grid is forced to store their assets and inventory in the single set of services provided by that grid operator – they can’t choose some independent third party or provide their own data store.  Equally, anyone adding a simulator has to be trusted by the grid operator since the guy (or gal) running the simulator potentially gains access to the assets and inventory of that grid.

That’s what makes efforts like the hypergrid, http texture fetching and VWRAP so interesting – I think that they’re all trying to lever open the door to a genuinely distributed, more web-like network of virtual environments.  A network where anybody can set up their own simulator without requiring the trust of every other operator, yet receive visitors with the same ease that one can click on a web hyperlink today.  A network where visitors retain their own appearance and are safe in the knowledge that the items in their inventory are not exposed to the simulator that they happen to be visiting (unless they rez them there).  It’s a massive challenge but one that could really transform the landscape.

Anyway, enough architectural rambling :-).  The OpenOffice draw source files for the diagrams above are linked from the configuration wiki page if anybody wants to use them further.

GridHop: The Yellow Pages of the Hypergrid July 3, 2009

Posted by justincc in hypergrid, opensim, secondlife, virtual-environments, virtual-worlds.
3 comments

So, I was Googling for something else today and stumbled across a very interesting site called GridHop.net.  It looks like my good friend and long time OpenSim supporter Tx Oh has put together a web based directory of Hypergrid accessible regions which people can submit their own regions to.

(For those of you who don’t know, the Hypergrid is an experimental OpenSim architecture that allows people to travel from one OpenSim grid to another without losing their avatar identity or appearance).

gridhop1

So in the picture I’m on Wright Plaza in OSGrid (minus my hair for some reason – OpenSim ain’t perfect 🙂 and I have the GridHop website open in the built-in browser.  In column 1 you can choose the grid you want to go to and in column 2 a specific region.  There are even descriptions and pictures of the destination regions 🙂

Here I have Venice Italy in Cyberlandia selected (an Italian grid hosted completely separately from OSGrid).  Since Venice is in a foreign grid, I need to click the Hypergrid Jump link in order to pop up a landmark dialog.

gridhop2

And when I click teleport, I’m transported to Venice in Cyberlandia!  You can see this from the @osgrid.org:8002 under my name.

gridhop3

Now, this stuff certainly isn’t perfect – for some reason sometimes for extended periods my teleports to Venice were completely refused.  And Cyberlandia was the only grid I could get to from OSGrid (though admittedly I might have succeeded if I’d kept trying some of the other grids).  The Hypergrid architecture itself is experimental and imperfect (though watch out for Hypergrid 2 one day 🙂

But all the same I find it extremely impressive.  Though you could grid hop before gridhop.net, having a directory of destinations to browse through makes travelling so much more accessible.  Well done Tx Oh!