<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Metaverse Ink Blog</title>
	<atom:link href="http://metaverseink.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://metaverseink.com/blog</link>
	<description>Virtual Worlds and Beyond</description>
	<lastBuildDate>Mon, 09 Apr 2012 17:11:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Vivox for Small OpenSim Worlds</title>
		<link>http://metaverseink.com/blog/?p=357</link>
		<comments>http://metaverseink.com/blog/?p=357#comments</comments>
		<pubDate>Mon, 09 Apr 2012 17:04:11 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=357</guid>
		<description><![CDATA[Like many of you, I read Maria&#8217;s article last December saying that Vivox was giving free voice service to small OpenSim worlds. I thought that was a nice gesture, but I confess I found it hard to believe, so I didn&#8217;t act on it. Until yesterday. I decided to give it shot, because my projects [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Voice by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/6915230454/"><img src="http://farm6.staticflickr.com/5280/6915230454_5928db3bd0_m.jpg" alt="Voice" width="240" height="180" /></a></p>
<p>Like many of you, I read <a href="http://www.hypergridbusiness.com/2011/12/free-vivox-for-all/">Maria&#8217;s article</a> last December saying that <a href="http://www.vivox.com">Vivox</a> was giving free voice service to small OpenSim worlds. I thought that was a nice gesture, but I confess I found it hard to believe, so I didn&#8217;t act on it. Until yesterday.</p>
<p>I decided to give it shot, because my projects could really use inworld voice, and I had nothing to loose just for asking. Yesterday was Sunday. To my surprise, I got a reply within 1 hour of my request. I filled out the license agreement. This morning an email was waiting for me with the precise instructions, down to the lines that I needed to add to my .ini, and a link to the <a href="http://blog.kitely.com/2011/12/23/happy-holidays-kitely-supports-vivox-voice/">blog post that Kitely wrote</a> on how to enable voice. I just had to copy-and-paste the config, and I had voice working in 10 minutes! &#8212; 9 of which were spent figuring out which buttons to press on the viewer to enable voice all over.</p>
<p>I couldn&#8217;t believe it! Someone at Vivox must really like OpenSim! Wow.</p>
<p>D2-ers, don&#8217;t miss out on this fantastic opportunity! See <a href="http://www.hypergridbusiness.com/2011/12/free-vivox-for-all/">Maria&#8217;s article</a> and take it from there. No need for complicated and costly licenses. No need for horribly complicated and fail-ful Freeswitch installations. Small worlds just got as powerful as the big ones &#8212; or even more powerful, because big, commercial worlds need to pay for the service, and the small ones don&#8217;t. At least for the time being.</p>
<p><script type="text/javascript">// <![CDATA[
   google_ad_client = "ca-pub-3704733000938614"; /* MI Search blog small leaderboard */ google_ad_slot = "5138341620"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=357</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Towards HG 2.0</title>
		<link>http://metaverseink.com/blog/?p=299</link>
		<comments>http://metaverseink.com/blog/?p=299#comments</comments>
		<pubDate>Tue, 03 Apr 2012 14:28:51 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[Hypergrid]]></category>
		<category><![CDATA[OpenSim]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=299</guid>
		<description><![CDATA[I usually don&#8217;t write about the future, I prefer to write about things that are already done and working. But I&#8217;m going to make an exception, because people are starting to ask about configurations of the Hypergrid that pertain to the next level; we&#8217;re almost there, but not yet. I am going to give an [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://metaverseink.com/blog/wp-content/uploads/2012/04/20.jpg"><img class="size-full wp-image-318 alignnone" title="20" src="http://metaverseink.com/blog/wp-content/uploads/2012/04/20.jpg" alt="" width="200" height="130" /></a></p>
<p>I usually don&#8217;t write about the future, I prefer to write about things that are already done and working. But I&#8217;m going to make an exception, because people are starting to ask about configurations of the Hypergrid that pertain to the next level; we&#8217;re almost there, but not yet. I am going to give an overview of what&#8217;s in the works right now that will result in the next big bump in the HG number: the big two-point-oh.</p>
<p><span id="more-299"></span></p>
<p><script type="text/javascript">// <![CDATA[
  google_ad_client = "ca-pub-3704733000938614"; /* MI Search blog small leaderboard */ google_ad_slot = "5138341620"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script><br />
As usual, some context first.</p>
<p>The very first version of the Hypergrid, HG 1.0, was done back at the end of 2008, and continued through 2009 and 2010. That first version was just an exercise in feasibility and in interacting with the opaque, black box viewer. Could I trick the viewer to think that it was still on the same grid while in reality sending the user to a different grid? &#8212; that was the humble goal of HG 1.0. HG 1.0 was not concerned with security at all, as the main goal was to figure out how to use the viewer in ways for which it had not be designed. Once I mastered the signaling of agent teleports, it was time to take the HG to next level: more security all around.</p>
<p>The next version was HG 1.5. The conceptual work for it started in <a href="http://metaverseink.com/blog/?p=22">early 2009</a>, although the actual coding only happened much later. This was because in order to implement the Hypergrid as a collection of additional, optional services that don&#8217;t interfere with the simplest configuration, OpenSimulator itself had to be considerably refactored. That took a long time. HG1.5 came with OpenSim 0.7 <a href="http://metaverseink.com/blog/?p=37">in July of 2010</a>. It featured identity security as well as a semi-secure (or semi-insecure, depending on whether you are an optimism or a pessimist) Hypergrid inventory. It also had all the right architecture for enabling HG Instant Message and Friends. That&#8217;s where we are right now.</p>
<p>So let me explain what we&#8217;re working on for HG 2.0</p>
<h3>Inventory</h3>
<p>Hypergrid Inventory is going to be 100% secure and the Suitcase will finally be usable without external Web apps. This required some heavy hacking in order to understand how to further trick the viewer into submission (i.e. use it beyond its specs), but we did it. Here is what will happen. When a user goes out, her entire home inventory tree will be removed from the viewer and replaced with the Suitcase folder tree only. That&#8217;s the only portion of the user&#8217;s inventory that will be exposed to the outside and to the user while the user is hypergriding. That way, the user&#8217;s home inventory will be out of reach and completely protected. Once the user returns to the home grid, the Suitcase wannabe-root folder is replaced by the user&#8217;s real inventory tree again.</p>
<p>Depending on configuration, the Suitcase folder may or may not be available to the user when she is in her home grid. When it is available, it will be a regular folder under &#8220;My Inventory&#8221;; the user can then move stuff from/to the Suitcase to/from other folders using the viewer.  But some grids may not want their users to bring in stuff from the outside, they want to continue to segregate content, so availability of the Suitcase folder in the home grid will be configurable.</p>
<h3>Appearance</h3>
<p>The appearance that a traveling user has may or may not be the same as the appearance that she had when she left the home grid. Again, this will be configurable. But the idea here is that  some grids don&#8217;t want to allow the export of appearance assets at all, so they may provide generic appearances to their traveling users, and dress them with their appearances when they come back. Other grids may not care about this, and appearance will be preserved.</p>
<h3>User Access Control</h3>
<p>There will be a means to specify several policies of access control: who can go out and where, who can come in and from where. These policies are based on several pieces of information about the users themselves and about their grids of origin.</p>
<p>So for example, it will be possible to specify that only users of a certain level can Hypergrid out, while others under that level can&#8217;t (a requirement often heard in educational settings). It will also be possible to specify a limited set of grids that the users can visit; or a set of grids that the users cannot visit.</p>
<p>On the receiving end, it will be possible to specify only a limited set of grids whose users are allowed in; or a set of grids whose users are not allowed in; or no foreigners allowed in at all.</p>
<p><strong>Assets Access Control</strong></p>
<p>There will be a means to specify whether the grid allows asset exports to other grids, and which grids, as a whole. HG 2.0 will not support the specification of fine-grained asset exports, i.e. I can&#8217;t say that this particular set of assets can go out, while that other can&#8217;t. This will require a means for people to be able to express that, and we don&#8217;t have that means yet.</p>
<p>≈</p>
<p>What this amounts to is that the Hypergrid will be able to support different <em>policies</em> that better reflect different levels of comfort that people have regarding opening up their worlds. Grids that deal with protected content will be able to continue to protect that content while allowing their users to visit other grids, and even collect items there, and allowing foreign users to come in and mingle &#8212; without any asset ever being exported or imported from/into their main storage. Grids that deal with kids will be able to block them from hypergriding while allowing certain privileged staff to go out and get content and knowledge from other grids. Secretive grids will be able to prevent foreign visitors while allowing their users to go out. Grids can have only one or two regions available to foreigners, while the rest is off-limits. Communities can make up small networks of worlds that allow Hypergrid exchanges only among themselves. Etc.</p>
<p>I hope this clarifies where we&#8217;re going with the Hypergrid!</p>
<p>I know that the first question that everyone will ask is: when? My guess: sometime this summer, hopefully early.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=299</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Hypergrid Teleporter</title>
		<link>http://metaverseink.com/blog/?p=267</link>
		<comments>http://metaverseink.com/blog/?p=267#comments</comments>
		<pubDate>Sun, 01 Apr 2012 16:46:00 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=267</guid>
		<description><![CDATA[Hi everyone! I&#8217;m happy to announce the personal Hypergrid Teleporter! Its goal is to make your Hypergrid travels a bit easier and more enjoyable. Get it here as iar. Let me first give a bit of context. Hypergrid teleports have been possible for a long time. Using plain OpenSim installations, traveling on the Hypergrid can be [...]]]></description>
			<content:encoded><![CDATA[<p><a title="MITeleporter_005 by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/7035135429/"><img src="http://farm8.staticflickr.com/7043/7035135429_6ff5f1b388_m.jpg" alt="MITeleporter_005" width="240" height="180" /></a></p>
<p>Hi everyone! I&#8217;m happy to announce the personal Hypergrid Teleporter! Its goal is to make your Hypergrid travels a bit easier and more enjoyable. Get it <a href="https://github.com/downloads/diva/d2/miteleporter-v1-12.iar">here as iar</a>.</p>
<p><span id="more-267"></span></p>
<p><script type="text/javascript">// <![CDATA[
 google_ad_client = "ca-pub-3704733000938614"; /* MI Search blog small leaderboard */ google_ad_slot = "5138341620"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p>Let me first give a bit of context. Hypergrid teleports have been possible for a long time. Using plain OpenSim installations, traveling on the Hypergrid can be done in a couple of ways: (1) via the Map by typing in the HG address in the search box; or (2) by establishing the hypergrid link in the OpenSim console with the &#8220;link-region&#8221; command. While this works well, it&#8217;s a bit inconvenient. The Map process gets very confusing if you are using Viewers 2-3, because these latest viewers assume that there is only one map. The link-region command assumes that you have access to the server console, which obviously not everyone has.</p>
<p><a href="http://sorornishi.blogspot.com/2010/10/grid-hopping.html"><img class="alignright" title="Hypergates" src="http://2.bp.blogspot.com/_xJu1vNANS7M/TMrtKC_pjwI/AAAAAAAAEOg/eF_j3WDgTPo/s1600/hypergate+on+Pathlandia.jpg" alt="" width="258" height="202" /></a>In order to make things easier, we have seen systems like the <a href="http://thehypergates.com/">Hypergates</a> emerge. The Hypergates establish a centralized service where people can register their worlds, and others can travel to them using an inworld teleporter &#8212; a scripted object that uses <a href="http://opensimulator.org/wiki/OsTeleportAgent">osTeleportAgent</a> at its core. The inworld object is really neat; it&#8217;s inspired in the Scifi TV series <a href="http://en.wikipedia.org/wiki/Stargate_SG-1">Stargate SG-1</a>. The object  is relatively powerful and complex. When you click it, you are presented with a series of options about where to go. Once you choose your destination, you step in and, with luck, you are teleported there. I say &#8220;with luck&#8221; because two of the major characteristics of the Hypergrid as it exists today are (1) the fact that many worlds are turned off as much as they are turned on, especially those hosted in people&#8217;s homes; and (2) the annoying <a href="http://metaverseink.com/blog/?p=222">4096 travel distance limit</a>. So, for a number of reasons, the teleport may not succeed.</p>
<p>I like the idea of inworld teleporters like the Hypergates. They make HG travelling a lot more fun than using the map. But the Hypergates is a bit too complicated for me. I wanted to have a much simpler object that just teleports me to a specific world that I already know and like. After all, osTeleportAgent is super easy to use.</p>
<p>Hence, the Metaverse Ink Hypergate Teleporter! It&#8217;s also Scifi-inspired, in this case the <a href="http://images.google.com/search?tbm=isch&amp;hl=en&amp;source=hp&amp;biw=1532&amp;bih=927&amp;q=start+trek+teleport&amp;gbv=2&amp;oq=start+trek+teleport&amp;aq=f&amp;aqi=&amp;aql=1&amp;gs_l=img.3...1352l3708l0l3796l19l19l0l5l0l0l134l1101l12j2l14l0.efis.1.">Star Trek teleporter</a>. Let me explain how it works.</p>
<p>First of all, the Metaverse Ink Hypergrid Teleporter uses osTeleportAgent, an OS function that requires special permissions. The owner of the world needs to enable it. In the Diva distro, this function is enabled by default, but restricted to the estate owner and the land owner. So only those users can run this teleporter.</p>
<p>When you rez the teleporter, it comes with a default destination, the UCI Grid. You can try it as is. So how do you actually teleport? Very simply by walking in and stepping on the platform, just like the picture at the very top of this article illustrates. There is a 2 sec delay just for the fun of being showered with a particle beam, and then the teleport starts. The teleport may still fail, for a number of reasons. One of them is the 4,096 limit. Other reasons may be the cause; for example, the destination may not be accepting HG agents, or it may be misconfigured, etc. If the teleport fails for some reason, you will be told so.</p>
<p><a title="MITeleporter_006 by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/7035175447/"><img class="alignleft" style="border-image: initial; border-width: 5px; border-color: black; border-style: solid;" src="http://farm8.staticflickr.com/7067/7035175447_e252a5c420_m.jpg" alt="MITeleporter_006" width="240" height="180" /></a></p>
<p>You can change the destination by editing the object and setting a new destination in the Description field (see picture of the left). For example, if you want to set it to OSGrid, change the Description field to, for example,<br />
<strong>http://hg.osgrid.org jump4000</strong> (that&#8217;s accessible to the lower grids, jump8000 for the upper ones).<br />
Close the editing window.</p>
<p>In order to get immediate feedback on whether that destination is up or down, &#8220;touch&#8221; the platform of the teleporter (the bottom part). This will perform a status check. If the destination is up and running, you will be told so, and the yellow particle beam will continue to flow; if the destination is off, you will also be told so within 30 seconds, and the particle beam will stop.</p>
<p>&nbsp;</p>
<p><a title="MITeleporter_004 by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/6889160428/"><img class="alignleft" style="border-image: initial; border-width: 5px; border-color: black; border-style: solid;" src="http://farm8.staticflickr.com/7253/6889160428_d12b95ee1d_m.jpg" alt="MITeleporter_004" width="240" height="180" /></a></p>
<p>The teleporter performs an automatic status check on the destination every hour. If it can&#8217;t reach it, it turns itself off; if it can reach it, it turns itself on. In either case, it checks it again one hour later. So you can just let it be, and be assured that the particle beam  represents the status of the destination within 1 hour error margin. For example, on the left you can see 4 teleporters, each one set to a specific destination. The left-most one is offline at the moment I took the picture.</p>
<p>You can always check again any time you want by &#8220;touching&#8221; the platform.</p>
<p>But there&#8217;s more!</p>
<p><a title="MITeleporter_007 by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/6889214446/"><img class="alignleft" style="border-image: initial; border-width: 5px; border-color: black; border-style: solid;" src="http://farm8.staticflickr.com/7207/6889214446_4e75f14414_m.jpg" alt="MITeleporter_007" width="240" height="180" /></a> If you touch the top part of the teleporter, the search icon, it launches the Web browser on the Metaverse Ink Search page. Depending on how you have that configured, it may launch it embedded in the Viewer or external to it. What i&#8217;m about to explain works in both cases, although I personally prefer the embedded browser.</p>
<p>That first page has a few Hypergrid addresses that I personally recommend. You can go there simply by clicking on the Web links! That&#8217;s right &#8212; HG teleports can be triggered by Web links too! This works particularly well for OpenSim 0.7.3.1 and later.</p>
<p>But you can also search for other worlds using the search box on the top left of the page. I confess that I have been neglecting the Metaverse Ink Search engine, because I have been busy making the Hypergrid actually work. MI Search has issues on worlds running Opensim versions before 0.7.3.1, especially grids. But I am restarting to work on it. So as worlds upgrade to Opensim 0.7.3.1, MI Search will work  much better!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=267</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>New diva distro for OpenSim 0.7.2 featuring W2W Friends</title>
		<link>http://metaverseink.com/blog/?p=258</link>
		<comments>http://metaverseink.com/blog/?p=258#comments</comments>
		<pubDate>Mon, 17 Oct 2011 00:21:16 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[D2]]></category>
		<category><![CDATA[diva distro]]></category>
		<category><![CDATA[Hypergrid]]></category>
		<category><![CDATA[OpenSim]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=258</guid>
		<description><![CDATA[Hi everyone! I finally had the time to put together a new diva distro release corresponding to OpenSim 0.7.2 &#8212; plus a few minor bug fixes over that. If you already have a d2 world, you know the drill: run Update.exe. Otherwise, grab the zip, unzip it and take it from the README file. If [...]]]></description>
			<content:encoded><![CDATA[<p>Hi everyone! I finally had the time to put together a <a href="https://github.com/downloads/diva/d2/diva-r16915.zip">new diva distro</a> release corresponding to OpenSim 0.7.2 &#8212; plus a few minor bug fixes over that. If you already have a d2 world, you know the drill: run Update.exe. Otherwise, grab the zip, unzip it and take it from the README file. If you&#8217;re upgrading, I highly recommend running the Configure tool on the new installation, and you&#8217;ll see why.</p>
<p>There are many improvements in OpenSim, most notably the new <a href="http://opensimulator.org/wiki/OSSLNPC" target="_blank">LSL NPC stuff</a> &#8212; this allows you to create and manipulate Non-Player Characters (bots) directly from scripts. Really cool!</p>
<p>Hypergrid-wise, the most noteworthy development is the support for Friends across the Hypergrid. As explained in a <a href="http://metaverseink.com/blog/?p=204">previous post</a>, I have created a world-to-world social network platform in OpenSim! <a href="https://joindiaspora.com/">Diaspora</a>, anyone? Well, I get to actually do it and deploy it in  your worlds <img src='http://metaverseink.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Have fun!</p>
<p>P.S. I also made a new release for <a href="https://github.com/downloads/diva/d2/wifi-0-7-2.zip">Wifi</a> that works with Robust 0.7.2. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=258</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Viewer 2 Map now working in OpenSim</title>
		<link>http://metaverseink.com/blog/?p=249</link>
		<comments>http://metaverseink.com/blog/?p=249#comments</comments>
		<pubDate>Mon, 13 Jun 2011 17:42:36 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[OpenSim]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=249</guid>
		<description><![CDATA[As the title says. Over the weekend, I added the machinery for the new V2 map to work with vanilla OpenSim. If you want to try it out, watch out for the several changes in configuration files, especially those in .ini.example&#8217;s &#8212; make a diff to see what changed. Note that viewer 2 is even [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Map in Viewer 2 by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5829597622/"><img src="http://farm4.static.flickr.com/3556/5829597622_de25caf875.jpg" alt="Map in Viewer 2" width="500" height="265" /></a></p>
<p>As the title says.</p>
<p>Over the weekend, I added the machinery for the new V2 map to work with vanilla OpenSim. If you want to try it out, watch out for the several changes in configuration files, especially those in .ini.example&#8217;s &#8212; make a diff to see what changed.</p>
<p>Note that viewer 2 is even more radical than viewer 1 when it comes to regions placed above 2,048. Most likely, the map won&#8217;t work there at all. (I haven&#8217;t tried it)</p>
<p>Also note that, for the time being, V2 map will get considerably confused on HG teleports. The first step was to make the map work. The next step is fixing the map for the Hypergrid. There&#8217;s a brute-force way of doing it, and there&#8217;s an elegant way of doing it. The elegant way of doing it requires collaboration with viewer developers. Let&#8217;s see what we can do together&#8230;</p>
<p>Enjoy!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=249</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The 4,096 &#8220;bug&#8221;</title>
		<link>http://metaverseink.com/blog/?p=222</link>
		<comments>http://metaverseink.com/blog/?p=222#comments</comments>
		<pubDate>Sun, 05 Jun 2011 04:36:21 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[Second Life]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=222</guid>
		<description><![CDATA[If you have been using the Hypergrid you probably heard about the 4,096 &#8220;bug.&#8221; This post explains what the &#8220;bug&#8221; is about, how it manifests itself, and how I came to peace with it. It&#8217;s also a call for action for grid operators to consider placing their grids below cell 4,096-4,096 on the map. Starting [...]]]></description>
			<content:encoded><![CDATA[<p>If you have been using the Hypergrid you probably heard about the 4,096 &#8220;bug.&#8221; This post explains what the &#8220;bug&#8221; is about, how it manifests itself, and how I came to peace with it. It&#8217;s also a call for action for grid operators to consider placing their grids below cell 4,096-4,096 on the map. Starting in the previous release, D2 worlds are placed around 2,048 by the configuration tool.</p>
<p><span id="more-222"></span><script type="text/javascript">// <![CDATA[
   google_ad_client = "ca-pub-7578160970082057"; /* Horizontal Banner */ google_ad_slot = "7276739231"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script></p>
<p>UPDATE 6/10/2011: It turns out that the map breakage starts at 2,048, not 4,096.</p>
<p>Let me start by the observable consequences of this &#8220;bug.&#8221; (btw, I&#8217;m quoting this word because, as you will see, I came to realize that this is not a bug) There are at least two observable consequences:</p>
<ol>
<li> The first observable consequence was first reported <a href="https://jira.secondlife.com/browse/SVC-2941">here</a> 3 years ago in the context of OGP work between SL and OpenSim. In short: if you try to teleport between regions that are more than 4,096 cells apart in either X or Y, the teleport succeeds, but the viewer is blanked out. No crashes, but nothing rezzes. This issue, also known as the &#8220;long jump&#8221; issue, doesn&#8217;t just affect  interoperability mechanisms such as OGP and the Hypergrid; it affects teleports within the same grid too. As long as the regions are more than 4,096 cells apart, the viewer blanks out.</li>
<li>The second observable issue is a lot more subtle and more difficult to notice, but it&#8217;s there for those who care to notice. Here is the map of OSGrid around Wright Plaza:<a title="OSGridMap by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5798610764/"> </a><a title="OSGridMap by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5798610764/"><img src="http://farm3.static.flickr.com/2061/5798610764_829d9064fd.jpg" alt="OSGridMap" width="500" height="375" /></a>Do you notice something strange? No? Look again. After waiting several minutes, we get only the -4/+4 map tiles around Wright Plaza. There&#8217;s regions beyond that, in fact the whole space around Wright Plaza is filled with regions; but the map doesn&#8217;t show them&#8230; unless we explicitly click on one of those water tiles &#8212; that gets us another -4/+4 around that tile that we clicked. (depending on which version the sim you&#8217;re on is running, this may be +/-8 instead of +/-4).<br />
This happens because OSGrid is placed around 10,000-10,000 in grid coordinates. For grids whose coordinates are below <del>4,096</del> 2,048 the map is always complete as far as there are regions in cells.</li>
</ol>
<p>Very likely there are other subtle consequences of these numbers 4,096 and 2,048 which I haven&#8217;t come across yet.</p>
<p>Now that I described the observable consequences, you may want to know why this happens. I don&#8217;t know the answer to that question, I have just a few clues and hypotheses. Here&#8217;s what I know.</p>
<p>First of all, this is not an OpenSim issue, it&#8217;s a Second Life issue. It happens to affect OpenSim only because we use the Second Life viewers while deviating from how Linden Lab uses their servers. In Second Life, all the regions are placed between 0 and 4,096 in both dimensions. In OpenSim, for unawareness of any limitations, grid operators started placing their grids in arbitrary coordinates above 4,096. The main culprit was OSGrid, and then other grids followed.</p>
<p>I wish I knew the exact technical explanation for this issue, but I don&#8217;t know. It seems to be related to how the viewer represents region coordinates, but that doesn&#8217;t quite add up. Here&#8217;s the Math. The viewer represents grid coordinates using 64-bit unsigned integers which are, in essence, two 32-bit unsigned integers concatenated together, one for X and one for Y. Each number represents a point on the map <strong>in meters</strong>. So for example, the SW-most point of cell 1,000-1,000 is point 256,000-256,000. In principle, we ought to have 32 bits to represent these dimensions, which would give us 2^24 cells in each dimension (that&#8217;s 2^32 divided by 2^8 (=256), the size of regions in meters). Instead, we seem to be hitting the ceiling at 2^12 cells (4,096). There&#8217;s a tempting relation here &#8212; 12 is half of 24. Where that halving comes from&#8230; I don&#8217;t know. Maybe some optimization of Second Life. Perhaps some viewer developer could shed some light here having seen the viewer code?</p>
<p>Whatever the issue is, it seems to pervade the viewer code base in profound ways. Even though this issue has been know for 3 years, no viewer has it fixed. At least a couple of viewer developers have attempted fixing it; one even submitted a patch to Linden Lab (see the <a href="https://jira.secondlife.com/browse/SVC-2941">original bug report</a> which still contains that patch). Unfortunately, I heard that that patch proved to break other things. In talking with Imprudence devs briefly, they mentioned that they, too, attempted to fix the issue in the viewer and came to the conclusion that the changes were so many that it wasn&#8217;t worth the trouble.</p>
<p>I made peace with the issue a few weeks ago. My peace with it started when I noticed, in horror, the second observable effect &#8212; the missing map tiles. It turns out that OpenSim has a horrible hack to cope with this behavior, that&#8217;s why we see +/-4 regions around, otherwise we would see only the current region and nothing else. It&#8217;s a horrible hack, and it&#8217;s there just because OSGrid is placed above 4,096-4,096. If we didn&#8217;t have the hack there, OSGrid would have no map! This horror was the beginning of my coming to terms with what&#8217;s going on.</p>
<p>The issue is not a bug at all. It&#8217;s a fundamental design decision of Second Life. Second Life assumes that a grid will never be larger than 4,096&#215;4,096 regions. That design decision is reflected pervasively in the viewer code to the point that very smart developers don&#8217;t think it&#8217;s worth the trouble changing it. If you think about it, this is not an unreasonable assumption. That&#8217;s 16,777,216 regions! Would anyone in their right mind ever operate a virtual world with 16 million SL-like regions?! Very unlikely.</p>
<p>The argument so far for calling it a &#8220;bug&#8221; seems to have been this: &#8220;well, if this is the basis for the 3D web, then clearly there will be more than 16 million regions, just like there are more than 16 million web servers.&#8221; True. But not on the same map! Not under the same authority! Seeing the map as one single shared space between all virtual worlds is just&#8230; wrong! The map is a grid resource; different virtual worlds should have their own maps. They should be able to have regions on the same coordinates &#8212; <strong>region placement should not require global coordination</strong>. Sure, there are interesting things that one can do with shared maps, but in my view of things, the starting point for interoperability is 1 grid = 1 map. As opposed to all grids = 1 map.</p>
<p>So, having finally realized that this is not a bug, but a not-unreasonable design decision of Second Life, I came to peace with it. It won&#8217;t be &#8220;fixed&#8221; because that would require rewriting the viewers to the point of being unmergeable with the official SL viewer. It would be nice if Linden Lab hadn&#8217;t made this assumption. But they did, and we have to live with it.</p>
<p>It turns that &#8220;living with it&#8221; is not a big deal at all. It&#8217;s as simple as placing all the regions between 0-0 and <del>4,096-4,096</del> 2,048-2,048, because that&#8217;s what the viewers expect. What could possibly make this an undesirable situation?</p>
<p>Perhaps OSGrid will have a hard time coordinating this change, precisely because it uses a global resource (the map) shared among hundreds of people. (This comes to prove what a bad idea that is&#8230;) I hope the OSGrid administrators will also come to terms on this, and force the coordinates change, so that we can finally have an open Metaverse free of hicups.</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=222</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Friends and IM over the Hypergrid</title>
		<link>http://metaverseink.com/blog/?p=204</link>
		<comments>http://metaverseink.com/blog/?p=204#comments</comments>
		<pubDate>Fri, 27 May 2011 00:33:19 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[Hypergrid]]></category>
		<category><![CDATA[OpenSim]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=204</guid>
		<description><![CDATA[Over the past few weeks I have been working on mechanisms for making friends and instant message work across the Hypergrid. These social functions have been a goal since the beginning of the Hypergrid. The big rearchitecture work we did in OpenSimulator 0.7 that strengthened security was also meant to support these functions, but, of [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few weeks I have been working on mechanisms for making friends and instant message work across the Hypergrid. These social functions have been a goal since the beginning of the Hypergrid. The big rearchitecture work we did in OpenSimulator 0.7 that strengthened security was also meant to support these functions, but, of course, we weren&#8217;t really sure how well the new architecture would hold when these functions were actually implemented. Well, now I know &#8212; it handles it just fine. Let me explain how friends and IM work over the HG, the challenges, and the current limitations. Keep in mind that these new functions are still experimental, and subject to changes and improvements.</p>
<p><span id="more-204"></span><script type="text/javascript">// <![CDATA[
  google_ad_client = "ca-pub-7578160970082057"; /* Horizontal Banner */ google_ad_slot = "7276739231"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script></p>
<p>[UPDATED 6/2/2011] Added pictures!</p>
<p>Here&#8217;s a base case scenario. You run your own OpenSimulator VW, and you visit OSGrid with an Hypergrid teleport. Once you get to OSGrid, you meet someone there &#8212; maybe from OSGrid, maybe from some other VW &#8211;, and you want to add that person to your list of friends. People in your friends list acquire certain rights over your information shadow, and vice-versa: they may be notified when you login/logout (and vice-versa), they may change your objects (and vice-versa), they may see you on the map (and vice-versa), etc. An entry on your list of friends is a persistent reference to a user, so you can easily IM them, see their profile, etc.</p>
<p>Up to now, it wasn&#8217;t possible to hold references to users in other services. With these changes, that has become possible. An HG friendship establishes 2 pairs of data, each stored in each user&#8217;s user services. That data is &#8220;signed&#8221; with a random number known only to the 2 services and the simulator where the friendship was established, so that, even if the user services (hg friends, to be precise) are exposed to the Internet, no one but the holders of the signature can manipulate the friendship data. Here lies warning #1: don&#8217;t make friendships in worlds that you don&#8217;t trust &#8212; instead, ask the person to come to your world, or vice-versa, and establish the friendship there.</p>
<p><a title="Hypergrid Friends by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5790443617/"><img src="http://farm6.static.flickr.com/5184/5790443617_d64eedccb7.jpg" alt="Hypergrid Friends" width="500" height="375" /></a></p>
<p>Independent of that, HG friendships established while you are Hypergriding require an additional confirmation step once you return to your world. Here&#8217;s a typical interaction: you go elsewhere, you ask someone to be your friend (or vice-versa), the viewer will tell you that the friendship was established. When this is done within your world,  the interaction ends there. With HG friendships, once you return to your world, or login the next time, you will be once again prompted for confirmation of the friendship. This is so that your friends list won&#8217;t get spammed with bogus entries sent by malicious components. Once you confirm that second time in your home world, the friendship is finally established.</p>
<p>Your HG friends can, by default, see your logins and logouts of the virtual world &#8212; to some extent, and this is where things are still work in progress. So far, they will be notified if they are in their own worlds. However, they will not be notified if they are elsewhere &#8212; not yet, at least.</p>
<p>This starts to show the really interesting challenges of these social functions done in a decentralized architecture: you can &#8220;move,&#8221; that is, your client doesn&#8217;t have a communication channel with one single server over your entire session; instead, your client &#8220;moves&#8221; from server to server. Keeping track of where people are (that is, which server their clients are talking to) is a major challenge! &#8212; especially without central servers. But I&#8217;ll come to this further down when I explain IM over the Hypergrid.</p>
<p>Another interesting aspect of the design of friends over the HG is the rights to edit each others&#8217; objects. Within one world, once you give someone the right to edit your objects, that right holds for all regions of that world indiscriminately. With the Hypergrid, we have the option to differentiate between the worlds, and give rights to edit objects per world. In other words, if we are friends and I build things in your world, I can give you the right to change my objects in your world; but I may very well not give you the right to change my objects in my world. (or vice-versa). Right changes affect only the world where the action takes place: if I change rights in my world, those new rights will be stored in my world only, they will not be disseminated. When you HG-TP to a new world, you will be notified of the rights that you currently have over your friends&#8217; objects there, if different from those in your home world.</p>
<p>This is a subtle semantic change. I like the more expressive capabilities, but I understand that people coming from walled-garden worlds may be somewhat confused by these extra options. We&#8217;ll see how this design decision fares as we go along.</p>
<p>One thing that is still work in progress: rights to change objects in 3rd-party worlds.</p>
<p>Now&#8230; Instant message.<br />
<a title="Hypergrid IM by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5790443663/"><img src="http://farm4.static.flickr.com/3256/5790443663_6f8cd69ef8.jpg" alt="Hypergrid IM" width="500" height="375" /></a></p>
<p>The base case is very simple: you are in your world, your friend is in her world; you IM her, she IMs you back. Works. Simple. It works because the reference to your friend includes the URL of her world, so your world can forward the IM appropriately. And vice-versa.</p>
<p>Scenario #2: you jump to your friend&#8217;s world, you IM her and she IMs you back. No problem, that&#8217;s a local IM. Works. Simple.</p>
<p>Scenario #3: you go back to your world. Your friend IMs you. Not so simple! Your friend&#8217;s world needs to detect that you aren&#8217;t in her world anymore and needs to find out where you are. Your friend&#8217;s world fails once, but has a reference to you, including your world&#8217;s URL, so that&#8217;s what it uses to forward the IM.</p>
<p>Scenario #4: you HG-TP to a 3rd world. Your friend IMs you. More challenging! Now your world needs to find out where you are. Your User Agent service knows that, and forwards the IM to the world where you are.</p>
<p>Scenario #5: in that 3rd world, you IM your friend back. This is really challenging! &#8212; because that world knows absolutely nothing about your friend. No worries, it still works in this case. It works like this: that 3rd world knows about you, so it asks your world if it knows about the user you are trying to IM. Basically, all that world needs is a URL to deliver the IM. Prompted with that information request, your world first looks if the user is a co-resident of yours; if it is, it sends the URL of your world; if it&#8217;s not, as is the case in this scenario, your world checks if the requested user is a foreign friend of yours, which is the case here. Having found it, it sends the URL of your friend&#8217;s world to the 3rd world, so that the IM can finally be delivered.</p>
<p>Scenario #6: in that 3rd world you meet someone, and you start IM-ing with that person, who is not in your friend&#8217;s list. Then you go back to your world and you send an IM to that person in the window that is still open. Oops! &#8212; this won&#8217;t work! &#8212; at least for the time being. The reason it won&#8217;t work is because your world knows absolutely nothing about that person: it&#8217;s not a co-resident, it&#8217;s not visiting your world and it&#8217;s not in your friend&#8217;s list. Your world has no means to find the URL of that person&#8217;s world to send the IM to. Work in progress&#8230;</p>
<p>Note that throughout these IM interactions your location in the Hypergrid is known only to your user services; it is not disclosed to the worlds with whom you are IM-ing. Those other worlds simply forward the IMs to your world, and it&#8217;s your world&#8217;s responsibility to forward them to wherever you are. This is an important privacy-preserving design decision.</p>
<p>As I said, HG friends and IM is still work in progress. Use with caution, and be ready to go down to your DB and delete records in the friend&#8217;s table if things go awry. If all testing goes well, it will be in 0.7.2.</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=204</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>New D2 and Wifi for OpenSim 0.7.1</title>
		<link>http://metaverseink.com/blog/?p=163</link>
		<comments>http://metaverseink.com/blog/?p=163#comments</comments>
		<pubDate>Fri, 06 May 2011 20:05:54 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[D2]]></category>
		<category><![CDATA[Hypergrid]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[diva distro]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=163</guid>
		<description><![CDATA[It has been a while since I made a D2 + Wifi releases. I had been waiting for OpenSim 0.7.1; the changes between 0.7.0.2 and 0.7.1 were such that I didn&#8217;t want to risk making a release in between. OpenSim 0.7.1 finally happened earlier this week, so here is the much awaited D2! Technically, it [...]]]></description>
			<content:encoded><![CDATA[<p><a title="DivasOffice by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5694296960/"><img src="http://farm4.static.flickr.com/3003/5694296960_dac26fd6c2.jpg" alt="DivasOffice" width="500" height="375" /></a></p>
<p>It has been a while since I made a <a href="https://github.com/diva/d2/downloads">D2 + Wifi releases</a>. I had been waiting for OpenSim 0.7.1; the changes between 0.7.0.2 and 0.7.1 were such that I didn&#8217;t want to risk making a release in between. OpenSim 0.7.1 finally happened earlier this week, so here is the much awaited D2! Technically, it corresponds to OpenSim r15402, which is a couple of commits after the official release &#8212; I found a couple of bugs in the official release related to the Library, so I fixed them.</p>
<p><span id="more-163"></span>Things to pay attention to when you update your D2:</p>
<ul>
<li>This time after you Update, you need to run Configure again on your new installation, because of changes in configuration variables. In order for this process to be as smooth as possible, have your current config-include/MyWorld.ini open in one window while answering the questions for Configure in the new install. If you had made changes to your MyWorld.ini, simply add those changes to the new MyWorld.ini that is produced after running Configure.</li>
<li>As usual, the Update tool will ask you if you want to preserve any changes you may have made to your Wifi pages. I always say &#8220;yes, I want to preserve my own.&#8221; By doing that, it&#8217;s guaranteed that the new Wifi installation will use the pages that I had before. However, this time there is a nice improvement in the splash.html page that shows some statistics at the bottom &#8212; see <a href="http://ucigrid01.nacs.uci.edu:9001/wifi">here</a> for example. Not a problem. When Update copies over your old pages into the new install, it also places the new ones under WifiPages with extension .diva, for example, splash.html.diva. That way you can easily see the differences between the two and copy-and-paste the parts that matter. In my case, this time, I simply replaced the entire splash.html file with the new one; you may want to check your own changes.</li>
<li>Marck added support for localization in Wifi (he&#8217;s German). Now you can have your Wifi installation in your favorite language. See <a href="https://github.com/diva/d2/wiki/Wifi">here </a>for how to do that (scroll down for the LOCALIZATION section).</li>
<li>The Wifi administrator account has a teaser new link called &#8220;Console&#8221;, a new feature that we have been working on. It&#8217;s undocumented for the time being, because it&#8217;s not secure enough for me to recommend using it. It will come to life in a future release.</li>
<li>Bad news: Teleports between OpenSim 0.7.0.x installations and OpenSim 0.7.1 installations are incompatible, because of a bug fix in libomv. You probably knew that if you had tried to HG TP to OSGrid.</li>
<li>Good news: most large grids, like OSGrid, are already running 0.7.1, so you can finally join the crowd there.</li>
<li>To test HG TPs, feel free to use my own world, http://ucigrid01.nacs.uci.edu:9001. It&#8217;s somewhere in the 5000&#8242;s and reachable from all D2&#8242;s if you haven&#8217;t changed your coordinates.</li>
</ul>
<p>Have fun!</p>
<p><strong>UPDATE (5/7)</strong>: I realize that many people may not have noticed the subtle differences in HG addressing that happened between 0.6.9 (HG 1.0) and 0.7.0.x (HG 1.5), and then between 0.7.0.x and 0.7.1. Let me explain.</p>
<p>An HG address in the old HG 1.0 was simply the address of a particular simulator. HG 1.0 did not have the concept of &#8220;grid&#8221; in place, so even if a simulator was part of a grid, its HG address was the simulator&#8217;s address. For example, in the UCI grid you could reach individual simulators with addresses like <strong>ucigrid04.nacs.uci.edu:9007</strong> (the Gateway 7000 region); note that ucigrid04 is the machine where that particular simulator runs, and 9007 is the HTTP port of that particular simulator.</p>
<p>With HG 1.5, the concept of &#8220;grid&#8221; has been put in place. A &#8220;grid&#8221; is a collection of simulators running under the same authority and that  share one single &#8220;Gatekeeper.&#8221; The Gatekeeper is central to HG 1.5 security and, in grids, it usually runs in the Robust server. The Gatekeeper is the entry point to every single incoming request like link region requests and agent transfer requests. In HG1.5 you cannot link directly to simulators anymore; you link to Gatekeepers wherever they live. For example the Gateway 7000 region in the UCI Grid is now accessed like this:<strong> http://ucigrid00.nacs.uci.edu:8002 &#8220;Gateway 7000&#8243;</strong>.  A few of things to notice:</p>
<ul>
<li>First, the &#8220;domain:port&#8221; syntax that was used before (and that is still accepted for the time being, but considered obsolete) has been replaced by a full-blown URL starting with &#8220;http://&#8221;. This is so that HG services can be implemented by regular web applications. For example, the Gatekeeper of ScienceSim lives in http://grid.sciencesim.com/grid/hypergrid.php &#8212; yes, a php script.</li>
<li>Second, the URL is that of the Gatekeeper, not of the region itself. The region is referred to by name after the URL, and when the name has white spaces you need to use quotes. If you want to reach UCI Grid&#8217;s Gateway 7000 region, you can pull up the map in the viewer and type exactly what I just wrote in bold up there. Or if you want to use the link-region command on the sim console  you can type:<br />
$ link-region &lt;local_x&gt; &lt;local_y&gt; http://ucigrid00.nacs.uci.edu:8002 &#8220;Gateway 7000&#8243;</li>
<li>Individual Gatekeepers may have different policies in place concerning incoming links, so a link request to specific regions inside a grid may very well fail; or it may be required. If you simply specify the URL of the Gatekeeper and omit the region name, the Gatekeeper is supposed to link you to a default region in that grid, if it is defined. If that&#8217;s not defined in the target grid, then the link request will fail.</li>
</ul>
<p>For standalones like D2, there is no difference between &#8220;grid&#8221; and &#8220;simulator&#8221; &#8212; they&#8217;re one and the same. In standalones, the Gatekeeper runs inside the simulator. As a consequence, the HG address is that of the simulator itself. But  the points made above still apply, conceptually speaking.</p>
<p><strong>UPDATE (5/8)</strong>: well, foo! I found one wrong configuration variable in diva-r15402. I made a new release diva-r15402-b that corrects it. If you updated to diva-r15402, please update again, so that you get diva-r15402-b. No need to run Configure on this small update. Just run Update, switch to the new installation, run OpenSim from there and you&#8217;re done. (If you update from an older release, then you need to run Configure, as the instructions say).</p>
<p>Also, I found that it&#8217;s better to remove the old hyperlinks from the DB so that old formats don&#8217;t get in the way of your travels. It&#8217;s very simple. Login to your DB and issue this statement: DELETE FROM regions WHERE flags=524  (524 are hyperlinks)</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=163</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>My Unity3D Powerpoint Extravaganza</title>
		<link>http://metaverseink.com/blog/?p=144</link>
		<comments>http://metaverseink.com/blog/?p=144#comments</comments>
		<pubDate>Sat, 23 Apr 2011 16:38:17 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[3d modeling]]></category>
		<category><![CDATA[Unity3D]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=144</guid>
		<description><![CDATA[It&#8217;s no secret that I have been fairly impressed with Unity3D. I find it extremely liberating in comparison to Second Life&#8217;s (and any other MMO) pre-packaged notion of what online 3D environments should be. I had to give a talk yesterday, so I used that talk as an excuse to taking my knowledge of Unity3D [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Unity3DPresentation2D by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5646053115/"><img src="http://farm6.static.flickr.com/5264/5646053115_54473c9745.jpg" alt="Unity3DPresentation2D" width="500" height="375" /></a></p>
<p>It&#8217;s no secret that I have been fairly impressed with Unity3D. I find it extremely liberating in comparison to Second Life&#8217;s (and any other MMO) pre-packaged notion of what online 3D environments should be. I had to give a talk yesterday, so I used that talk as an excuse to taking my knowledge of Unity3D to the next level. I decided to make my presentation in Unity3D, and have the audience be part of the presentation at some point &#8212; similar to what we see in SL/OpenSim, but with the experience on the Web browser and under my complete control. Go <a href="https://faculty.ics.uci.edu/~lopes/" target="_blank">here</a> to see the result. Let me explain what you see there.</p>
<p><span id="more-144"></span>The whole thing starts with what looks like a vanilla 2D, yet-another-PPT-on-the-web, kind of feel. I added a few buttons to control the slide show (I love the GUI programming options!). Go ahead, &#8220;load&#8221; the presentation, and play with the buttons on the right. Also don&#8217;t miss left-click+dragging the mouse for a cool fire trail effect.</p>
<p>On the left there are two additional buttons: the &#8220;World&#8221; button on top, and the &#8220;Roam&#8221; button on the bottom. The &#8220;World&#8221; button takes you to another scene that feels like a traditional virtual world &#8212; landscape, trees, ocean, fire, ambient sounds, etc. You can move around with the arrow keys, page up/down, mouse scroll, and pan using left-click+drag. If you wait long enough (about 5 minutes) you&#8217;ll actually see the weather changing into fog, and then back to sunny. There&#8217;s also a few Orbs floating and producing sounds; you can click them to get information about some of my papers (ok, lame, but it was the first thing that came to mind to exercise a bunch of things at the same time: OnMouseDown action, local resources, and moving labels <img src='http://metaverseink.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a title="Unity3DHomeWorld by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5646581016/"><img src="http://farm6.static.flickr.com/5227/5646581016_242d77d245.jpg" alt="Unity3DHomeWorld" width="500" height="375" /></a></p>
<p>Note that the World is not synchronized with anyone else who visits, so you won&#8217;t see any avatars in there. That world is a scratchpad for me to experiment with the single-user-to-system interaction capabilities in Unity3D. When you&#8217;re in the world, you need to find your way back to the presentation! (hint: find the object that&#8217;s clearly out of context) So go ahead and find your way back.</p>
<p>The &#8220;Roam&#8221; button reveals the true nature of the 2D presentation. It&#8217;s actually a 3D scene. It just so happens that, by default, I have a fixed camera, and no movement control. Only when you &#8220;roam&#8221; can you perceive the 3D space. Yes, it&#8217;s MY scene, and I can control the entire user interaction however I want! YEY!</p>
<p><a title="Unity3DPresentation by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5646492598/"><img src="http://farm6.static.flickr.com/5028/5646492598_e9d01f94ae.jpg" alt="Unity3DPresentation" width="500" height="375" /></a></p>
<p>Once you&#8217;re in roam mode, you can move around in the same way as in the World. But the other little thing I did is that this roam mode enables the visualization of visitor presence. Each visitor in roam mode is represented as a yellow ball head. There are no names or identifiable labels; just yellow ball heads, possibly moving around. Yes, it&#8217;s avatars controlled by other people, and you&#8217;re seeing them! But that&#8217;s pretty much the only thing you can do &#8212; see them. There&#8217;s no chat (yet). Some yellow ball heads you see may be corpses of past visitors who didn&#8217;t &#8220;Fix&#8221; their view before they left &#8212; I don&#8217;t have automatic garbage collection yet.</p>
<p>The presentation itself has a few slides explaining what I did in order to synchronize presence and location, if you&#8217;re interested in knowing that. It&#8217;s a hack &#8212; a couple of 20-line python scripts called under timers on the client side. Ugly. It&#8217;s just a proof-of-concept for me to start looking into the networking capabilities of Unity3D. I feel like a kid in yet another candy store&#8230;!</p>
<p>How is this different from building in SL/OpenSim? Well, everything you experience was scripted by me, down to the camera and movement control, the fire trail effect and the GUI elements. In the World, I used a skybox developed by someone else that adds moving clouds. For the most part, I was able to figure everything out with the right keywords on Google. Not surprisingly, the part that I had most trouble with was&#8230; creating the yellow ball head itself <img src='http://metaverseink.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I still don&#8217;t know enough about 3D modeling and texturing, so something as simple as this yellow ball head doesn&#8217;t come easy to me. I used Wings3D, and after a few fails, I finally was able to create the UV map for the smiley face that I then textured in GIMP. Complicated stuff!</p>
<p>So, yes, the options are almost endless, but that means that whoever builds these scenes needs to learn how to exercise those options. On my part, I very much enjoyed learning all of this. Unity3D is doing a lot of things &#8220;right&#8221;. Indeed, authoring tools will be the key to the massification of 3D; their conceptual models and scripting APIs need to be simple enough for lots of people to be able to use them (like SL/OpenSim), but still powerful enough to express everything one might want to express in 3D. I have my fingers crossed that we will start seeing open source projects doing the things that Unity3D does, especially making the scene creation be powerful and easy.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=144</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>A Tour Through Unity3D for SL/OpenSim Aficionados</title>
		<link>http://metaverseink.com/blog/?p=73</link>
		<comments>http://metaverseink.com/blog/?p=73#comments</comments>
		<pubDate>Mon, 11 Apr 2011 20:56:28 +0000</pubDate>
		<dc:creator>Diva Canto</dc:creator>
				<category><![CDATA[3d modeling]]></category>
		<category><![CDATA[OpenSim]]></category>
		<category><![CDATA[3D modeling]]></category>
		<category><![CDATA[second life]]></category>
		<category><![CDATA[Unity3D]]></category>

		<guid isPermaLink="false">http://metaverseink.com/blog/?p=73</guid>
		<description><![CDATA[I was sick-ish last week, so I decided to use my idle cycles to finally learn Unity3D. I thought I&#8217;d share my impressions, given that (a) I&#8217;m not a 3D modeler, not even an amateur one, and (b) my only experience with 3D environments has been Second Life / OpenSim. I suspect there are lots [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Unity3DScene by Diva Canto, on Flickr" href="http://www.flickr.com/photos/20665379@N03/5610015067/"><img src="http://farm6.static.flickr.com/5304/5610015067_bca03cbb23.jpg" alt="Unity3DScene" width="500" height="375" /></a></p>
<p>I was sick-ish last week, so I decided to use my idle cycles to finally learn <a href="http://unity3d.com/">Unity3D</a>. I thought I&#8217;d share my impressions, given that (a) I&#8217;m not a 3D modeler, not even an amateur one, and (b) my only experience with 3D environments has been Second Life / OpenSim. I suspect there are lots of people like me. Being an OpenSim aficionada, and fairly ignorant of everything else (mainly for lack of time), I always felt like I was missing the big picture. Indeed, I was, and I&#8217;m glad my cold last week gave me the opportunity to explore a completely different point of this large design space. The picture above shows one of the environments I created. The bottom line, if you don&#8217;t care to read more, is this: the Unity3D ecosystem feels like Second Life for grown ups.</p>
<p><span id="more-73"></span></p>
<h2>Some Clarifications First</h2>
<p>Before I describe my impressions, let me clarify a couple of things.</p>
<p>First, Unity3D is not a replacement for SL-style virtual worlds. It&#8217;s not even in the same ballpark. Unity3D is, first and foremost, a scene editor &#8212; a glorified building tool with powerful delivery options. Whether the scenes you create are single user, multi-user or MMO, that&#8217;s entirely up to you, the environment designer, to decide. Unity3D gives us enough hooks to create whatever we need in terms of networking. While it&#8217;s relatively easy (emphasis on &#8220;relatively&#8221;) to create single-user, non-networked scenes, it&#8217;s a lot more difficult to create multi-user environments; and by &#8220;multi-user&#8221; I mean environments that network a few shared objects among a few people. Unity3D doesn&#8217;t  support MMO environments like Second Life and OpenSim &#8212; <a href="http://unity3d.com/unity/engine/networking.html">it leaves that to 3rd party servers and client-side libraries</a>, of which there are a few commercial ones. In other words, if you want to create a virtual world with Unity3D, you need a lot of extra engineering work. The more objects you want to share, and the more users you want to have, the more complicated things will be. Doing an SL-like virtual world, where everything is shared and where users can create new content, would be a major endeavor.</p>
<p>Second, when it comes to hooking up Unity3D to OpenSim/SL, the current conceptual model behind <a href="http://www.tipodean.com/">Tipodean</a> and <a href="http://rezzable.net/web2-0/unity3d-and-opensim-working-together-prototype/">Rezzable</a> is to develop Unity3D-based clients that download and render existing SL content. While I admire those efforts, and hope they continue, that&#8217;s not the only possible way of connecting Unity3D and OpenSim. As I said above, Unity3D doesn&#8217;t support MMO-ness. So there is the opportunity to develop that with OpenSim (some version of it) on the backend, but using Unity3D to create the scenes and the content in them. I am more interested in exploring this other model, not just because Tipodean is doing a great job with the other one, but also because I see many exciting things in Unity3D as scene creation tool &#8212; things I wished existed in the SL ecosystem, but don&#8217;t.</p>
<h2>The Building Experiences</h2>
<p>Having gotten those clarifications out of the way, lets now look at Unity3D for what it is: a tool for creating interactive stories with rich media. Which, to some extent, is what SL/OpenSim is (ignoring the social network aspects). So let me compare it with the equivalent in the SL ecosystem: how and what we build there. I&#8217;ll talk about the pros and cons of each.</p>
<h3>Terrain</h3>
<p>To create the scene pictured above, I imported a terrain I had, which I used in the <a href="http://metaverseink.com/blog/?p=74">previous blog post</a> to explain sculpted terrains. (Side note: that terrain was one of the main reasons why I decided to look into Unity3D this week, I wanted to see how the same thing could be done there). It took me a very long time to figure out how to import the heightmap, more than I dare to admit &#8212; not easy to navigate through the variation of formats and options for these files&#8230; Anyway, I finally figured it out, and the terrain appeared as I wanted it in the Unity3D scene. Unfortunately, Unity3D doesn&#8217;t smooth the heightmap values out by default, so I had to do the extra work of smoothing the whole thing (it&#8217;s a large, 768&#215;1024 terrain). With that done, I then overlayed the aerial image and added the water. This is how that scene looks like in the editor:</p>
<p><a href="http://metaverseink.com/blog/wp-content/uploads/2011/04/Unity3DSceneEditor.jpg"><img class="alignnone size-medium wp-image-105" title="Unity3DSceneEditor" src="http://metaverseink.com/blog/wp-content/uploads/2011/04/Unity3DSceneEditor-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>I can now make the first  comparison between building with Unity3D and with SL/OpenSim: when it comes to terrains, Unity3D wins by a long shot. In SL/OpenSim I had to make that hack of using sculpted prims in order to get the overlayed image on; in Unity3D that comes without any hacks: just import the heightmap, and overlay the image, as one would expect.</p>
<h3>Cameras</h3>
<p>Next, I had to learn about cameras &#8212; a concept that is hard-coded in SL. In SL we learn that there is exactly one camera that usually sits just above the avatar&#8217;s head, and that we can move independently by a combination of keys and mouse. In Unity3D the scene creators have a lot more options. There can be any number of cameras, each behaving in a different manner. For starters, I used the preexisting &#8220;First Person Controller&#8221; which includes basic movement with the arrow keys and the mouse, and a camera that follows that movement. Coming from the SL ecosystem, I confess I am in awe with this new concept of programmable cameras &#8212; they give so many more options for building user experiences! On the other hand, it&#8217;s a bit overwhelming to have to learn how to exercise those options &#8212; and this is a theme that pervades the comparison between the two. Indeed, I tried to program a camera behavior that would be more like SL (zoom in/out, pan, etc.) and got only half way there, based on a script I found in the Unity3D forums. I&#8217;m not giving up, I&#8217;ll get it working eventually.</p>
<h3>Sounds</h3>
<p>Next, I added a simple sound effect &#8212; birds chirping in a certain part of the scene. That was very easy. It&#8217;s easy in SL too. In Unity3D there are a lot more options regarding these sound effects; I didn&#8217;t explore them yet.</p>
<h3>Scripted Movement</h3>
<p>Next, I thought I&#8217;d reproduce the basics of my <a href="http://www.youtube.com/watch?v=frbABk6yQdE">traffic simulation in OpenSim</a> by adding a car moving on the road. (You can see the car on the road in the first picture up there). I didn&#8217;t think I would be able to do it in a couple of hours, but&#8230; I was wrong. It was dead simple. It took me longer to find a free model of a car than to code up the movement.  Granted, I reused all the knowledge I already had about making cars move in roads, but I wasn&#8217;t expecting it to be this easy. Looking back at my traffic simulation in OpenSim, and comparing it to what can be done in Unity3D, there is one very important observation to be made:</p>
<ul>
<li>For the purposes of my traffic simulation, it has always been an overkill to have the traffic be controlled by the server and distributed synchronously in almost real-time to every client connected to it. My traffic simulation has more the flavor of a particle system &#8212; it&#8217;s something I want to show to users, an illustration, but I don&#8217;t necessarily want everyone to see exactly the same thing. In other words, running it unsynchronized on the clients is just fine, and it frees the server of a lot of computation and networking.</li>
</ul>
<p>Of course, this would break the underlying design philosophy of SL: complete shared state of the world. That is a very strong principle of the SL environment, and it makes sense for the kind of user experience they want to provide. However, it&#8217;s clear to me that that&#8217;s not the only possible model for these kinds of environments. As a scene creator, having the freedom to decide what runs independently in each client and what must be synchronized is a very good thing, indeed! Unity3D starts up by not sharing anything among clients, i.e. each client gets the scene and runs it independently. Then we, the scene developers, may choose to put some scene objects under the constraint of synchronization in a multi-user environment. Eventually, we may hook this up with a 3rd party server that does the synchronization more efficiently. I definitely like this model! But, again, it makes it much more difficult to develop shared environments, whereas in SL/OpenSim there is nothing but shared objects.</p>
<h3>Objects</h3>
<p>Next, I decided to create a building and add it to the model. (You can see that building in the pictures above) In SL/OpenSim, building things is the essence of the user experience: click the build button, tweak a few parameters, upload textures, apply them to the faces &#8212; done. Not so easy in Unity3D! In Unity3D, we can add the same &#8220;primitive&#8221; objects as SL: they have cubes, spheres, etc. But tweaking and texturing is another matter entirely, and this came as a shock to me. There is no simple way of applying different textures to different faces of objects. Instead, the conceptual model seems to be this: don&#8217;t use Unity3D to build the objects themselves, use it only to integrate them together in the scene. So in order to get my simple box-like building up in the Unity3D model, I had to give myself a crash course in 3D modeling tools. I started with Blender and quickly gave up (expletives omitted). Then I moved to Wings3D. Wings3D is noobie friendly, and the tutorials out there help. I was able to model a parallelepiped, and I learned about texturing &#8212; the pro version of it. I can see how much more powerful this pro version of texturing is, but, man&#8230;! How difficult would it be to add to these tools the simple version of texturing that SL provides? &#8212; select the face, associate it with a texture and you&#8217;re done. Oh well. I guess they don&#8217;t really care about noobies, they want people to act professionally and do &#8220;the right thing.&#8221; Anyway, here is a picture of my Wings3D model:</p>
<p><a href="http://metaverseink.com/blog/wp-content/uploads/2011/04/wings3dbuilding.jpg"><img class="alignnone size-medium wp-image-122" title="wings3dbuilding" src="http://metaverseink.com/blog/wp-content/uploads/2011/04/wings3dbuilding-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Eventually, I finished my box building and produced the texture for it, so I imported those 2 things to Unity3D and placed the building in the right place. That part was easy. But the overall experience was completely different from building in SL. I can&#8217;t say it was worse &#8212; it was different. Not being able to do simple things inside Unity3D  first came as a shock, but once I figured the basics of Wings3D I started to enjoy it; it gives me the feeling of being a super powerful 3D modeling ninja! No more being limited to half-a-dozen primitives &#8212; modeling with the full power of meshes is so much more empowering! Having to switch tools between individual objects and the scene is both good and bad. It&#8217;s good, in that it allows people to focus on each object at a time, possibly dividing the modeling job among many people independently. It&#8217;s bad, in that the immersive building experience (something that I, like so many people, greatly enjoy in SL/OpenSim) is cut off in chunks.</p>
<h2>The Larger Ecosystem</h2>
<p>In searching for free objects, I came across Unity3D&#8217;s <a href="http://unity3d.com/unity/editor/asset-store.html">Asset Store</a>. This is the equivalent of SL&#8217;s <a href="https://marketplace.secondlife.com/">Marketplace</a> and the newer market places that are starting to emerge for OpenSim content. There aren&#8217;t a lot of freebies in the Asset Store, and the prices seem to be almost one order of magnitude higher than SL prices &#8212; something that would costs US$15 in SL costs US$50 in the Unity3D world. This probably reflects the pulls and pushes of these markets. It&#8217;s so much easier to build things in SL that lots of people do it competently, so competition drives prices down. Also the buyers in SL are people who buy things with their own personal money, so you can&#8217;t have high prices; in Unity3D, the buyers are professional game developers, so a $50 purchase is not a big deal.</p>
<h2>Bottom Line</h2>
<p>The building experiences in SL/OpenSim and Unity3D are completely different. Everything in Unity3D seems designed to support professional scene creations, whereas everything in SL seems designed to support amateur content. In SL, building is a large part of the SL &#8220;game,&#8221; of its entertaining user experience; in Unity3D building is a serious matter, it&#8217;s the activity with which entertainment is produced for others to experience. As such, Unity3D provides a much larger spectrum of options than SL. And, as a consequence, the learning curve is much steeper than SL&#8217;s. For every 100 people who can build in SL, there are possibly 1 who can build in Unity3D.</p>
<p>But did I enjoy building in Unity3D? I confess I had a blast! I absolutely love the many more options that I am given to create the immersive stories with this tool. Whether the stories are worth experiencing or not, that&#8217;s, of course, another matter&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://metaverseink.com/blog/?feed=rss2&#038;p=73</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

