Posts Tagged ‘narrative’
Found another problem with the TouchMeObject script (wrote about it in last post). New, improved version is posted (same URL). The problem was of my own making, a result of trying to avoid having multiple listeners created. I hope this update finds anyone that might have used the earlier version.
A listener creates a significant load in a simulator, enough to warrant caution in their creation. So, it is best practice to avoid having static (persistent) listeners in a simulator if users are not interacting with the object.
In preparing the TouchMeObject, I hastily threw in a “BUSY” variable (BOOLEAN) to clamp down listener creation while the object attended to a user (make second, third users wait ’til first user is done). But, I FAILED to provide any response to the next user to touch the object.
(This could be tested by two users, or one user with an alt. Touch object with first avatar, then touch with second user before the first responds to their Dialog prompt. The object does not respond.)
The problem in the first TouchMeObject script is obvious now, one I should have noticed; had just never gone the “BUSY” route before. My old, lazy approach has typically been to create a listener, wait for X seconds of inactivity, and then remove the listener.
Not having looked at this “concurrency” issue in a while, at least as it relates to use of the llDialog function, I had a look around. Seems that how best to deal with multiple listeners is still a matter of discussion…and by much more advanced scripters*.
Still, the digging paid off: I noticed that the SL Wiki page for the llListen function states:
“…handles are assigned sequentially starting at 1”
Light bulb attachment flickers, and an old lazy approach is upgraded to a newer lazy approach. Now, we’ll create a listener only if we have ZERO stored as the EARS_OPEN handle (integer variable, now acting as BOOLEAN). (Just have to remember to set it to ZERO everywhere that counts.)
But wait! What if a user touches the object and gets the dialog prompt, then gets distracted by cute kitty pictures in a browser, and returns to the dialog prompt in (X + 1) seconds?
Answer: No joy.
It aint elegant. It’s not even satisfying; and, it has its problems. But…
It’s something I can live with.
*UPDATE* (added single line to clear any float text if not assigned)
if (DISPLAY_FLOATING_TEXT) llSetText( llGetObjectName(), FLOAT_TEXT_COLOR, 1.0 );
else llSetText( “”, FLOAT_TEXT_COLOR, 1.0 );
//SEE WHAT’S BEEN ADDED TO CONTENTS
* To read some of the various issues related to the use of listeners, see:
Given how much time I spend building and scripting in virtual worlds, I also spend a considerable amount thinking ’bout where this technology is going. I do not intend to indulge that obscure topic here, today. Instead, I want to mention the finely wrought underpinnings—the granularity, if you will—of what lies behind and beneath this virtual platform which has become a thoroughly engaging activity, by way of announcing a new project.
What is a virtual world? Ultimately it exists as the particular electromagnetic configuration assigned to a few gadjillion magnetic grains arranged in the surface material coating a small space of a magnetic drive.
Precisely arranged magnetic grains define the distinct magnetic regions in the surface materials of hard disks. The grains separate one magnetic zone from the others.
(Click image to open Wikipedia entry for Hard Disk Drive)
TransitionNeel image courtesy of Wikipedia
Whatever surface area on a hard disk drive platter that is needed to store what I have sketched with my “build tools”, whatever incredibly large number of magnetic grains it takes to store the binary code for the (up to) 15,000 prims, scripts, sounds and assorted textures that will make up the new virtual world region that I will “buy” today for Zero Lindens (talk about virtual); not to mention the larger patch of cobalt-based hard disk drive alloy needed to house the simulator, the incredible software engine served up and driven by design; whatever puny patch of ‘puter platter percolates with my particular predilections for prims; that can all soon be linked and located, fetched and transmitted, parsed, interpreted and rendered finally as a newly crafted, interactive, educationally motivated virtual space, one by which other netizens and reZidents might also be engaged.
In short, I am told that the “purchase” of an entire SecondLife™ region will occur today. This new project will reside in a full “sim” (or simulator); it will occupy an entire server. It seems appropriate, then, to give this project its own page in this blog…yep, there it is in the NavBar: “The Virtual Cell”.
I have been logging time for over half of a century. Hard disk drive technology is older than me. Still, considering what we are already doing this technology, imagining might come next takes a lot of my magnetic grains, too.
It is like being on auto-pilot, watching ideas emerge.
Occasionally, and often when designing a new widget, my brain passes a threshold of excitation. A particular number of signals fire in succession, a precise amount of cells move into an altered state, or a particular alignment of neurons forms some new and unique network whose cells collectively squish an incredible chemical cocktail into my tank. Senses raised, I step aside inside and marvel at the very fabric of time being woven around in space, pushed and bent far enough outward that it reaches back inside again.
I am addicted.
This also happens in unexpected, random moments. If I am out and about, I will usually look around to see who else is paying attention.
A week ago, I was reading a blog when a question posed by its author caught my attention. Previously isolated ideas swirled and collided, distinct elements in a gaseous state, until saturation occurred and that airy moment condensed into solid realization.
Apparent problem, meet possible solution.
I was sitting under my laptop with no one nearby; no need to look around. The only person that might share this was the blog’s author.
Minutes later, I had a short message drafted relating my conjecture to the stated problem. One last, lingering thought; a bit of reflexive evaluation to indulge itself in consideration…then click; I press the “Submit Comment” button and the whole event passes into calm, quiet release.
Fleeting, but intense.
Yes, it was brief. But you can’t judge creative moments. That is what I have learned…because it did reach out into space and time. Days later my hair fairly bristled as I read the email sent in response.
Thank you, this is great!!!!!!
Verification. Resolution. Validation. I had forgotten about the comment I submitted, completely. Who knows where serendipity takes us? Any brief moment, when shared, might lead to new realizations spawning bigger ideas; especially possible in this case, given the nature of that person on the other end of the message.
Such rare, creative moments must be where we are closest to perfection. No matter what I am right now, I am doing my best when random notions gather momentum and propel my thoughts beyond control; because then I just step aside and this world sorts itself out, one problem at a time.
And my grey matter squirts a bit of endorphin, perhaps reinforcement.
Shortly after registering for SecondLife™, while still in Orientation Island, a mentor offered to teleport me to a virtual coffeehouse. Someone passed an animated beverage cup and told me how to “wear” the mug.
It was 2007, and there I was, marveling at how one could mingle with others in a simulated coffee shop. Steeped in fascination, I began thinking about the role of simulated spaces in a virtual world. Why a coffee shop? What purpose did it serve to design that space in that way?
In meatspace a coffeeshop offers two opportunities: coffee and community.
Sure, that virtual coffee shop simmered with community. In fact, the personal socializing in VWs surprised me from the start. But where is my virtual caffeine? Are we merely duplicating one environment within another?
Early last year, Prof. Ken Perlin from NYU spoke to rezidents of the Google campus about the future of Augmented Reality, imploring the audience to imagine how such technology might be employed, how it would be most useful.
“These issues…these discussions have to be very public and people have to be talking about them so that we can figure out what we all want…so that we can go keep [sic] moving ahead with our technology without everyone looking over their shoulder and mistrusting it.”
—from Perlin’s Google Tech Talk (video)
(Watch him sorting algorithms at 35:50, or the topographic mapping demo at 38:24.)
Any average avatar will yammer on about the role of technology. However, this is an Academy Award winner who teaches graphics to grad students. I mean: come on, the man received an Oscar for programming virtual reality.
“The solutions have to be: everybody gets together and says ‘What do we want as a society?’ ”
Meanwhile, back in the grid, I am thinking that virtual world design should inform augmented reality. So, regarding VW java…”Where’s the juice?”
How can we optimize the function of virtual world simulations? Dressing up at virtual shopping malls, we dance at virtual clubs. We drive digital dirigibles and slide down virtual carnival rides. But, what can be consumed in a virtual coffee shop?
Well…what if our virtual coffeehouse served up Internet media?
Instead of beverages, what if we found links to websites and blogs; in place of caffeine, information? We could meet to share links, swap perspectives, discover stories together. One user picks up a link, another drops one off. We could still wear animated mugs and mingle minds…let’s just splash some virtual books and magazines on the coffee tables.
This idea has been percolating for years. Now that I am back in the metaverse, it is time I ask…
Image by Flickr member: Stewart Black
If virtual coffee houses were media cafés
…would you pour yourself a cup?