Warning: Creating default object from empty value in /home/davancamus/public_html/blog/wp-includes/functions.php on line 292
Royal Cavorite Society

Theory of the ShoutMesh

December 20th, 2006 by Davan Camus

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

Introduction
This monograph shall explain the principles and implementation of ShoutMesh, a communications grid used to control theatrical lighting across a 12-sim continent. It may be of interest to those contemplating a similar endeavor.

The task was to control the various lighting and other devices for a live performance. These devices were from several vendors, but all respond to “chat” messages on various channels. The 12 sims were identical, and lighting changes were to be effected across all 12 simultaneously, for each song.

Routing
But how to do this? The limit for chat “shouting” is 100 meters. To extend the range, a relay system was employed. There are several possible strategies one could use to implement this relay network, including:

  • Explicit routing: a message might specify each relay that it is to traverse to its destination
  • Automatic routing: a message might specify its destination, and let the relays determine the best route there
  • Generalized broadcast: a message might propagate across all the relays, and be shouted at each location

The first two — explicit or automatic routing — have two drawbacks in this application. First, it’s pretty complicated! Each relay would have to know something about itself. Second, it didn’t match the application. We needed to send the same command to 12 sims worth of devices, so naming each destination explicitly was not appropriate.

For generalized broadcast, the only real trick is to disperse the message to all relays and ensure that it then stops. (An easy “bug” in this kind of system is for relay A to shout “foo”, to relay B, who then shouts “foo” to relay A, who then shouts “foo” to relay B, forever.)

Again, one might imagine several strategies for ensuring that a message doesn’t repeat forever, such as noting its starting location and making sure that it proceeds only “away” from the start, or coloring adjacent relays to be red, then, pink, then black, and requiring that messages proceed only from red to pink to black to red, and such.

I chose to have each relay store a list of “recent messages”, and simply ignore any message that it had already seen. A list size of 150 proved adequate for the lighting controls at the event. (It must be noted, however, that the failure mode of the system — if flurries of more than 150 messages are sent quickly — is to echo the most recent commands forever. This must be addressed.)

A nice feature of this system is that relay nodes may be freely placed as needed, with no configuration of the node. They are all identical.

The relays used an intermediate channel and protocol system so that devices on any channel could be addressed.

Geometry
Each sim needed to have a 70m diameter “theatre” covered by a single relay. The theatre contained devices from multiple vendors which all responded to various chat commands. A requirement of these devices is that they be tolerant of repeat messages — although a relay would never repeat the same message twice it is possible that a device would be within coverage range of several relays.

A general network topology for the entire continent was decided.

Since the centers of two adjacent sims are 256m apart two relays are required. (Each relay listens at the center of a 100m radius and broadcasts as far as the outer edge of a 200m disc.)

The following layout was used for each sim, modified to follow the topology described.

Troubleshooting
Lastly, two features were included to assist in troubleshooting: where and reset. Reset simply shuts down all relays for several seconds, to break possible overflow-loops. Where causes each relay to report its location and status. Thankfully, all 34 relays performed flawlessly for over a week, on the Sine Wave continent.

[21:10]  Longrange Relay Center: Sine Wave 11 <120,128,76> (150 of 150 cached, 8496 free)
[21:10]  Longrange Relay S: Sine Wave 11 <128,40,80> (150 of 150 cached, 8474 free)
[21:10]  Longrange Relay N: Sine Wave Island  12 <128,210,80> (150 of 150 cached, 8392 free)
[21:10]  Longrange Relay Center: Sine Wave Island  12 <120,126,76> (150 of 150 cached, 8368 free)
[21:10]  Longrange Relay S: Sine Wave Island  12 <128,40,80> (150 of 150 cached, 8624 free)
[21:10]  Longrange Relay W: Sine Wave Island  12 <40,128,80> (150 of 150 cached, 8624 free)
[21:10]  Longrange Relay N: Sine Wave Island 13 <128,210,80> (150 of 150 cached, 8537 free)
[21:10]  Longrange Relay E: Sine Wave Island 9 <210,128,80> (150 of 150 cached, 8392 free)
[21:10]  Longrange Relay Center: Sine Wave Island 13 <119,127,76> (150 of 150 cached, 8449 free)
[21:10]  Longrange Relay Center: Sine Wave Island 9 <120,128,76> (150 of 150 cached, 8329 free)
[21:10]  Longrange Relay W: Sine Wave Island 9 <40,128,80> (150 of 150 cached, 8557 free)
[21:10]  Longrange Relay N: Sine Wave Island 9 <128,210,80> (150 of 150 cached, 8471 free)
[21:10]  Longrange Relay S: Sine Wave Island 9 <128,40,80> (150 of 150 cached, 8471 free)
[21:10]  Longrange Relay N: Sine Wave Island 10 <128,210,80> (150 of 150 cached, 8511 free)
[21:10]  Longrange Relay E: Sine Wave Island 6 <210,127,80> (150 of 150 cached, 8773 free)
[21:10]  Longrange Relay S: Sine Wave Island 8 <128,40,80> (150 of 150 cached, 8526 free)
[21:10]  Longrange Relay Center: Sine Wave Island 8 <119,127,76> (150 of 150 cached, 8450 free)
[21:10]  Longrange Relay Center: Sine Wave Island 6 <120,128,76> (150 of 150 cached, 8629 free)
[21:10]  Longrange Relay Center: Sine Wave Island 10 <120,126,76> (150 of 150 cached, 8449 free)
[21:10]  Longrange Relay N: Sine Wave Island 6 <128,210,80> (150 of 150 cached, 8330 free)
[21:10]  Longrange Relay W: Sine Wave Island 6 <40,128,80> (150 of 150 cached, 8446 free)
[21:10]  Longrange Relay S: Sine Wave Island 6 <128,40,80> (150 of 150 cached, 8717 free)
[21:10]  Longrange Relay E: Sine Wave Island 3 <210,128,80> (150 of 150 cached, 8428 free)
[21:10]  Longrange Relay S: Sine Wave Island 5 <128,40,80> (150 of 150 cached, 8670 free)
[21:10]  Longrange Relay N: Sine Wave Island 7 <128,210,80> (150 of 150 cached, 8788 free)
[21:10]  Longrange Relay Center: Sine Wave Island 3 <120,128,77> (150 of 150 cached, 8312 free)
[21:10]  Longrange Relay Center: Sine Wave Island 5 <120,128,77> (150 of 150 cached, 8314 free)
[21:10]  Longrange Relay Center: Sine Wave Island 7 <120,128,77> (150 of 150 cached, 8450 free)
[21:10]  Longrange Relay S: Sine Wave Island 3 <128,40,80> (150 of 150 cached, 8494 free)
[21:10]  Longrange Relay N: Sine Wave Island 3 <128,210,80> (150 of 150 cached, 8649 free)
[21:10]  Longrange Relay S: Sine Wave Island 2 <128,40,80> (150 of 150 cached, 8499 free)
[21:10]  Longrange Relay N: Sine Wave Island 4 <128,210,80> (150 of 150 cached, 8465 free)
[21:10]  Longrange Relay Center: Sine Wave Island 4 <120,128,75> (150 of 150 cached, 8326 free)
[21:10]  Longrange Relay Center: Sine Wave Island 2 <120,128,77> (150 of 150 cached, 8320 free)

The Quiet Sim-Earth II

December 13th, 2006 by Davan Camus

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

More pictures, pre-unshow, featuring an exhausted Easy asleep at the DJ console, views of multiple clone islands, emplacement of the repeater mesh, and Horg bustin’ a twisty insect move.

The Quiet Sim-Earth

December 13th, 2006 by Horg Neurocam

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

TRAGEDY!

Well, it was over before it began, really.

More text-debriefing later, for now, just some pics of the unevent and its aftermath..

        Davan Camus Horg meets a ShoutMesh Sentry

ShoutMesh trial run…

December 11th, 2006 by Davan Camus

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

One day before showtime! Horg’s ruins are ruined, and my lights are mostly lit… But it turns out that we shall be called upon to issue controls to a 12-sim-wide lighting system. A brief experiment on the Caledon continent involving 3 sims was, fortunately, successful! In response to the “where” query, a mesh-traversal is started in which each node reports its, ah, wherabouts.

[14:49]  ShoutMesh Distributor: <42,216,703>
[14:49]  ShoutMesh Distributor: Caledon Moors <45,203,703>
[14:49]  ShoutMesh Distributor: Caledon Tamrannoch <228,197,703>
[14:49]  ShoutMesh Distributor: Caledon Tamrannoch <180,127,703>
[14:49]  ShoutMesh Distributor: Caledon Tamrannoch <130,127,703>
[14:49]  ShoutMesh Distributor: Caledon Tamrannoch <40,127,703>
[14:49]  ShoutMesh Distributor: Caledon II <244,127,703>

I should like to take this opportunity to apologize in advance to those of my neighbors in Caledon who might inadvertently stumble across one of my hopefully tastefully designed but nonetheless uninvited distribution nodes.

And likewise for the plague of iPods…

Free Masonry Part III

December 7th, 2006 by Horg Neurocam

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

projekt nearing completion:

sine wave island dome

sine wave island dome

H Neurocam in the dome

still a few finishing touches, one more day of building!

Free Masonry Part II

December 1st, 2006 by Horg Neurocam

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

Last night i started work on the band stage. about 50 prim’s worth of essentially the same object, but i’m quite happy with it so far. I love organic landscapes, but dislike the ones in SL that seem to be primarily blobs of intersecting spheres. Hopefully this will be a good comprimise.

polyp stage

(Meanwhile, in Caledon)

December 1st, 2006 by Davan Camus

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

In a little break from The Glorious Project… we explore the question: “What happens when Desmond Shang calls everyone he knows and says, ‘Come try to lag my sim?’”



Free Masonry

November 30th, 2006 by Horg Neurocam

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

So along with Davan, I have been constructing elements for what will be a Main Stage, taking over 1/2 a Sim. Getting to play on an entire empty sim is an absolute delight, as well as a challenge. Davan has mentioned the fact that SL is built on a ‘living room scale’, and that applies to building especially. There’s a limit to the distances from which i can grab things and manipulate them, necessitating my flying to and fro just to move something huge across the sim space. The inability to group objects more than 30m apart is also frustrating.

Despite that, however, i am enjoying some time off from mining, and creating my favorite thing: massive cyclopean ruins that are low-prim, easy to re-arrange, and biomorphically disturbing. I’ve made several giant spinal colums with vertebral platforms, as well as various seating arrangements, props, and now i’m figuring out the actual “stage”. I’d love to have it be like our other projekts in SL, aka something i can putter about on forever, but a hard deadline is a great motivator!

horg on the spine

When Shouting Doesn’t Help

November 27th, 2006 by Davan Camus

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

The RondureForge (and, lately, contraband oversize prims) helps with the creation of large-scale spaces and structures. This is handy if one should find a whole sim available for some large project or another… *cough cough*. The next step in furnishing such a large space is the installation of appropriate venue automata.
But how to control such automata? At home, in our typical 1/8th sim or smaller plots, we simply Say or, occasionally, Shout. But at these larger scales some further assistance is required.

The ShoutMesh consists of a transmitter and any number of distribution nodes. These form an ad-hoc network which can relay messages as far as needed, so long as Mesh nodes are within one hundred meters of one another, and at least one node is within one hundred meters of the transmitter and the final recipient.

The problem of providing adequate Mesh coverage to a sim using the fewest ShoutMesh nodes — that is, tiling a volume with overlapping spherical tiles of diameter two hundred meters — is left as an exercise for the reader.

RondureForge

November 19th, 2006 by Davan Camus

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/davancamus/public_html/blog/wp-includes/functions-formatting.php on line 76

This device, the RondureForge, demonstrated extensively in the previous post, is nearly productized. All my projects asymptotically approach marketability, with far greater noncompletion reliability than even Zeno’s arrow.

The Forge is about 1 meter tall, and can be set up to rez spheres and domes composed of any “brick” of your choice — another prim or object — and of any size and density. The handy setup dialog lets you configure the size and shape you like, or you can edit the Forge’s prim “Cut” and “Dimple” parameters directly to get any section of a sphere at all. The rezzed sphere will follow the angle of the Device, as well. Need a sideways dome? just tilt the Forge.

What’s it for? Well, it’s great to have the biggest thing in the sandbox, isn’t it? Might be handy for building your own starship Fesarius, too. We developed this for a temporary event bandstand.

Caution
It’s very easy to use up a lot of prims this way! The built-in “bricks” all include a fast de-rez command, “/111 dismantle”, so you can dispose of them quickly. Use only with proper safety precautions!