Zonja Capalini

Reverse-engineering OARs: Understanding parcel maps

Format 0.2 Opensim Archives (OARs) include, since Opensim version 3c271b, a “landdata” directory that stores parcel data. For each parcel in the region there is a file in XML format in the directory. Amost all objects in Opensim are associated with a unique uuid that identifies them, and parcels are not an exception to that rule. Files in the “landdata” directory use the uuid of the parcel as their filename and have a “.xml” extension.

What’s inside each one of these .xml files? Let’s take a peek at a sample one:

    <?xml version="1.0" encoding="utf-16"?>
    <LandData>
      <Area>6256</Area>
      <AuctionID>0</AuctionID>
      <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>
      <Category>-1</Category>
      <ClaimDate>1255170099</ClaimDate>
      <ClaimPrice>0</ClaimPrice>
      <GlobalID>bfbf7bd4-7d7b-4a35-aba0-c352201cddcf</GlobalID>
      <GroupID>00000000-0000-0000-0000-000000000000</GroupID>
      <IsGroupOwned>False</IsGroupOwned>
      <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
       AAAAP//fwAAAAAA//9/AAAAAAD//38AAAAAAP//fwAAAAAA//9/AAAAAAD//38AAAAAAP//f
       wAAAAAA//9/AAAAAAD//38AAAAAAP//fwAAAAAA//9/AAAAAAD//38AAAAAAP//fwAAAAAA/
       /9/AAAAAAD//38AAAAAAP//fwAAAAAA//9/AAAAAAA=</Bitmap>
      <Description />
      <Flags>505454667</Flags>
      <LandingType>0</LandingType>
      <Name>Arrabal Tango Club</Name>
      <Status>0</Status>
      <LocalID>4</LocalID>
      <MediaAutoScale>0</MediaAutoScale>
      <MediaID>00000000-0000-0000-0000-000000000000</MediaID>
      <MediaURL />
      <MusicURL>http://xx.xx.xx.xx:8000</MusicURL>
      <OwnerID>69af4428-cec0-48d8-a0d9-c05268facca5</OwnerID>
      <ParcelAccessList />
      <PassHours>0</PassHours>
      <PassPrice>0</PassPrice>
      <SalePrice>0</SalePrice>
      <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>
      <UserLocation>&lt;0, 0, 0&gt;</UserLocation>
      <UserLookAt>&lt;0, 0, 0&gt;</UserLookAt>
      <Dwell>0</Dwell>
      <OtherCleanTime>0</OtherCleanTime>
    </LandData>

That’s the xml file for Arrabal Tango Club in Condensation Land — I’ve only obscured the music URL and wrapped the part between the <Bitmap> and </Bitmap> tags, which originally used only one line, with no intervening blanks. This string encodes the shape and position of the parcel in the region. How do we know that? Well, the parcel map has to be stored somewhere, and it has to be quite large, so the only candidate is the “Bitmap” string :-) Most probably this long string is a text encoding of binary data.

Indeed this is the case: the string is using the Base64 encoding (you can find that quickly by browsing the Wikipedia). After decoding the string, we get a binary chunk of exactly 512 bytes. I checked that all the terrain files have strings of exactly the same length, so this number had to mean something. Continue reading

Advertisements

December 18, 2009 Posted by | OpenSim, Tech News, Tutorials, ZOE | , , , , , | 6 Comments

ZOE version 0.1 released

Zoe

Zoe (Zonja’s OAR Editor) is a simple offline OAR manipulation tool that I wrote recently. You can find a detailed description of its functionality in my recent post “Moving and rotating OARs”. In this post I’ll describe how to install and use Zoe. I’ve designed Zoe with simplicity in mind, so that currently it only implements some very basic operations — by combining these operations, however, a number of pretty cool things can already be done. I’d love to get some feedback about the functionality of Zoe — at the end of the post I’ll list some of the things that I want to add to it, but I’m open to suggestions.

ZOE version 0.1 released
Continue reading

December 16, 2009 Posted by | OpenSim, Tech News, ZOE | , , | 15 Comments

Moving and rotating OARs [UPDATED]

[Update 20091216: ZOE v 0.1 has been released. You’ll find a manual and the download link here.]

…and some filtering too

Opensim Archives (OARs) are nowadays the standard tool to share and interchange full Opensim regions. Justin Clark-Casey, the core Opensim developer in charge of OARs, has lately added merge functionality to the loading of OARs. This means that you can merge (i.e., add) the contents of an OAR file to an existing region, without deleting its contents. This opens a plethora of interesting possibilities, but it also is the source of a lot of new problems. What if I’m very interested in merging an OAR with one of my existing regions, but I’d prefer the new contents to be placed differently from their original position? For example, I can be given an airboxed level at 1000 meters, but I might want to put it at 2000 m (for example, because I already have contents at 1000 m). Or I might be interested in an OAR with (say) some nice palace and gardens, but it’s located in the NE corner of the sim and I’d like to install it in the SW part of the sim.

At present, the “load oar” command does not allow for this kind of transformations. Indeed, it’s debatable whether Opensim should include code for this kind of application at all, or whether such manipulations should better be handled offline.

0705 - ZOE- A test run

In this article I present a very simple (and highly experimental) OAR manipulation tool called ZOE (for Zonja’s Oar Editor :-)) that implements some very basic forms of filtering, relocation and rotation for OARs as a whole.

Continue reading

December 14, 2009 Posted by | OpenSim, Tech News, ZOE | , , , , , | 24 Comments

An interview by Alyne Dagger (with some final remarks)

At the end of June 2009 I was interviewed by Alyne Dagger for the online magazine Bad Girls Magazine (BG Magazine). The interview was planned around may, and I received a draft questionnaire by email at the end of June. I wrote a first working draft with my replies, and we interchanged some emails until we both were satisfied with the results. Working with Alyne was fantastically easy, and the interview, first appeared on the portuguese edition of BG Magazine, no. 19, and later in the english edition, no. 19, was very nicely presented; big thanks to Alyne for her wonderful, careful work :-) I reproduce the interview here in its entirety, with permission. Text in italics is from BG Magazine, while my replies use a normal font; image subtitles, when present, are also from BG magazine. The images are all mine; some of them where proposed by me, and some of them were chosen by the interviewer.

Most of the material covered in the interview can also be found here and here, but the presentation is different — being in an interview format, the reading is probably more agile. You’ll also find two arguments about why Second Life cannot scale; these were previously published, in a similar form, as comments on other people’s blogs.

When speaking about virtual worlds, two months are like two years in RL. That’s why I include, at the end of the post, a small section with some corrective remarks; these were not part of the original interview.

The interview

HERALD OF DIGITAL FREEDOM

Intense and passionate in every project she’s got herself involved, ZONJA CAPALINI was a mix between muse and investor of the Metaverse when the Openspaces crisis blew up in 2008.

Revolted, she’s began to try to revert the price policy through mobilization and protest, but seeing doesn’t worry with the investors and residents like her, she went to the fight and had searched for solutions for her business in other metaverses, before to begin her own grid, using the Opensim as a tool.

She tells us with exclusivity how was this painful process which can have opened horizons and frontiers for the age of the free metaverses.


0369 - Second Life needs YOU!

BG Magazine: How did you come to SL and what you did in your first SL year?

Zonja Capalini: I was captured, as many other people were, by the hype about Second Life at the end of 2006 and the beginning of 2007. I first created an avatar in december of 2006, but I had some difficulties with it and did never log in. Zonja first rezzed on february the first, 2007. It was a pure adventure. Complete immersion from the first second.

At the time the process was more complicated than it is today, and it was almost not localized. I spent several days at Orientation Island, then Help Island, until I found a way to get to the mainland. I first teleported into a german-speaking infohub (all europeans seemed to be routed to that hub at the moment), and started to socialize.

I was feeling awkward, was very shy, and besides I didn’t control my avie properly, I was crashing against all the walls I found, flying unexpectedly, etc. — as everybody else. I had the impression to have landed in the recovery area of a hospital specialized in brain injuries :-)

One of my main customers is a company dedicated, amongst other things, to education.

I saw that LL was announcing voice in SL, and I thought that creating a campus for that company in SL could be a great way to allow them to have students from all over the world. I talked to the executives of the company and showed them SL, and they agreed that it looked as an interesting platform to evaluate. So that from the beginning my SL experience was dual: on the one hand I was living my own second life, experiencing the universe as a “resident”; on the other hand, I was learning to master SL as a technological platform.

Continue reading

September 2, 2009 Posted by | Abuse, OpenSim, Second Life, SL Exodus | , , , , , , , , , , | Leave a comment

2889: Working with very large linksets in Opensim

[Update 20090721:] Added links to source code and a reference, corrected some typos.

[Update 20090723:] You can download an OAR with the sample bottle and the generator at rexxed.com: http://www.rexxed.com/2009/07/klein-bottle/

[Update 20090725:] OSGrid users: the sample bottle and the generator are now available at my store in OSGrid.

Introduction

Most objects in Opensim and Second Life are made of prims. Indeed, if we exceptuate avies, wearables (i.e., non-attachable clothes and body parts), Linden trees and particles, everything you see is made of prims. Prims are small, often uncomplicated geometrical shapes, like a cube, a sphere or a cylinder. By combining (“linking”) prims, builders create more complex objects like houses, vehicles, shoes, hair, jewellery, etc. When prims are linked, the resulting object remembers the order in which they were linked (which is important, for example when an object is scripted) and some other properties; the set comprised of the linked prims and these additional properties is called a link set or linkset.

Linksets in Second Life have several limitations: two prims can’t be linked if they are too far apart, and an object cannot contain more than 256 prims. This is the cause all kind of problems. For example, if you buy a big house, i.e., a house that has more than 256 prims or that it is very large (and therefore its prims are very far apart), the house can’t be assembled into a single object, because of the above rules. Then the house is normally packaged with a rezzer, a scripted assistant that helps you to position the house; once the house is positioned to your liking, you normally ask the rezzer to freeze the house in place, and then delete the rezzer.

0628 - A Klein bottle of 2889 prims (2)

Opensim (when used with an appropriate viewer, like the Hippo viewer) supports large linksets, i.e., objects comprising more than 256 prims. In this post I’ll describe some experiments I made with large and very large linksets. In one of these experiments, I created a single object consisting of 2889 prims. Such extremely large linksets are difficult to manage and create, but once you get them built they work wonderfully.

Continue reading

July 20, 2009 Posted by | OpenSim, Second Life, SL Exodus, Tech News | , , , , , , | 16 Comments

Grider: Prototypying the next generation Hypergrid

Hypergrid

I’ve already blogged (here and here) about hypergrid, a virtual world architecture that allows the federation of Opensim grids (or “worlds”), and in particular teleports between grids. Using hypergrid, you can teleport, for example, from OSGrid to my grid, the Condensation Land Grid, or between OSGrid and Sciencesim, or between Sciencesim and the Cyberlandia grid, etc. Wagner James Au reported in the New World Notes blog about a demo run by Tom Murphy at the Metaverse University in which hypergrid teleports were shown between grids located in different parts of the US. Hypergrid is developing very fast, and once it’s stabilized and distributed widely, it will implement the vision of a world-wide network of connected grids, where big corporate or educational grids will coexist with small, home-based grids. And thanks to the hypergrid teleport, all these grids will appear as a single world like Second Life is today — hence the name “hypergrid” :-)

Here’s a sample video showing hypergrid teleports in action:

In this article I’ll discuss some details of the current hypergrid architecture, some of the security risks involved, and how a new, more secure hypergrid architecture (sometimes called “safe hypergrid” or “hypergrid 2”) is being developed.

Continue reading

June 10, 2009 Posted by | OpenSim, SL Exodus, Tech News | , , | 12 Comments

The Openspace fiasco: six months later

0499 - There's a better world ahead

The Openspace fiasco

Six months ago, I blogged about the Openspace fiasco and how it made business customers and creative residents equally angry

In case you’ve not read the post, let me make a quick summary: I work for a company which we will call “C”; C owned a standard sim C1 and three openspaces C2, C3 and C4; at the same time, I was the owner of the Condensation Land archipielago (the Condensation Land, Condensation North, Condensation Beach., Condensation South and Condensation Southwest sims); all the islands were Openspaces, except Condensation Land. When the unjustifiable increase of 66% in the price of Openspaces was announced, C’s executives asked me to start researching for an alternative to Second Life, because they had lost their confidence in Linden Lab. I was also forced to look elsewhere for my own islands, because most of my tenants were not able to afford the price increase, got fed up, and left Second Life.

In this post I’ll describe the alternatives that were considered, the decisions that were taken, and what we learned in the process. Although the experience has been bitter in many aspects (having to abandon land which you have carefully created and helped to make beautiful is awful; Second Life customer service is a disaster; etc), the final results are quite interesting. I’ve though to share them, in case somebody can find them of interest and profit from our experience.

Continue reading

April 30, 2009 Posted by | Abuse, OpenSim, Second Life, SL Exodus | , , , , , , | 96 Comments

Dynamic hypergrid links: the new Metaverse

Would you like to have your own SL-like micro-world in-house, to be able to make backup copies of your islands and your inventory at will, to be able to clone your avatar with all your inventory into your friend’s micro-world when needed, to be able to pack a whole island and share it with friends or with the world, to be able to use fantastic buildings and landscapes others have created, to be able to add an island instantly, to decide how much computer power you’re going to allocate to your regions, to be able to run 10+ islands with 20+ avatars in a single computer, …?

“Sure,” you’ll say, “all these things are very nice, but this has to come at a price, right? Everybody will be isolated in their own micro-world, and what’s the fun of that?”

Up to recently, that was it. Either you were in a “big” world (Second Life, Open Life, OSGrid, etc), or you had your own micro-world, and then you were isolated in it. This started to change when Christa “Diva” Lopes, from the OpenSim dev team, implemented the first phase of the Hypergrid concept, what we can now call static hypergrid. I blogged about it one month ago; here’s an older article from Vint Falken; of course it all started with Justin Clark-Casey‘s seminal post “Could there be a future without big grids?”.

With static hypergrid, grid owners decide whether their grids will be accesible from outside (i.e., if they’ll run their grid in hypergrid mode) and if so they inform other grids; other grid’ operators then use a simple command to link their grid to the first. This architecture gets complemented with the possibility to use prebuilt .xml files to link several (potentially thousands) of new regions at once with a single command.

That’s a great architecture, but it puts the power of jumping from one grid to another into the grid owner’s hands. And it’s good that it is so, because the foreign regions appear on the origin grid’s map, and if I were a grid operator I’d love to be able to control what appears on my map. However, it has several disadvantages for the end-user: it precludes the possibility to jump to an arbitrary grid; if grid A links to grid B and grid B links to grid C but grid A does not link to grid C, you have to jump to B to get to C, which is preposterous; in general, the major problem is that you’re limited in where you can teleport to by your grid owners. Of course SL works that way, but SL is not an open grid, at least for the moment. And if OpenSim has to become the 3D web, you have to be able to teleport, to jump, anywhere. The very same notion of your ISP determining which web pages you can visit and which you can’t visit is against the fundamental idea of the internet.

Ideally, what I’d love to be able to do would be something similar to the following: assume that I’m working in my soon-to-be-opened OpenSim Condensation grid, I get tired of building, and I decide to teleport to my friend’s Ludmilla grid (note: to another grid, not to an island inside my grid) to see whether she’s available to go exploring, so that I tp to her world, and, lo!, there she is; I greet her, and we both tp to OSGrid (the free OpenSim grid) and start exploring from there… Impossible? No! Here’s a video that demonstrates exactly that:

  Continue reading

February 8, 2009 Posted by | OpenSim, SL Exodus, Tech News | , , | 7 Comments

Hypergrid, or how to teleport between WORLDS using OpenSim

[Update 20090106: Corrected information about names after hypergrid tp, added two captures]

HyperGrid

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.
Continue reading

January 5, 2009 Posted by | OpenSim, SL Exodus, Tutorials | , , | 12 Comments

Installing OpenSim in Windows XP with MySQL.

Update 20090201: Included instructions for Windows 64 bit as reported by Xen Zerbino (Thanks! :-)).

Update 20090123:Fixed a bug in OpenSim.ini detected by Alpha Runningbear. (Thanks!)

Update 20090105: Reworded step 6 to eliminate some tech-talk, added a fall-back for initial log-in, and describe the shutdown procedure in as per Vint Falken‘s suggestions 1 and 2 (thanks! :-)).

Note 1: OpenSim is considered to be alpha software. This means that many things you expect from your daily use of Second Life don’t work in the same way, or simply they don’t work at all. Development of OpenSim is very active, tho, so that we can only expect OpenSim quality and features to better with time.

Note 2: This is not for the faint of heart. :-) You’ve been warned! :-)

Note 3: All the information presented here was valid on January the 3rd, 2009. I’ll correct errors that are brought to my attention, but this post should not be taken as a substitute of the official OpenSim wiki.

The purpose of this post is to present a short, comprehensive, do-it-yourself tutorial for the installation of OpenSim in a Windows XP machine, using MySQL as a back-end for persistence. I’ve tried to write the tutorial in such a way that you can understand it even if you’ve got no previous exposure to OpenSim or to database concepts; however, some familiarity with the operating system is required, in particular you’re assumed to know how to 1) open a system prompt; 2) open a text editor and create a file (the “notepad” application will suffice). A step-by-step procedure follows; you’ll be asked to download some files; these files implement OpenSim and MySql.
Continue reading

January 3, 2009 Posted by | OpenSim, SL Exodus, Tutorials | , , , , | 48 Comments