Archive for the ‘narrative’ Category
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:
One of my earliest design gigs in virtual worlds was the development of a HUD* used by students learning the Chinese language. After four or five years, that design is still in use. The image below is from the Chinese Island simulation.
* Heads Up Display – an interactive display with buttons and text that mediates their interaction with the virtual environment.
Note the blue dialog prompt, and the HUD in upper and left perimeters.
Early next year, a group of Monash University students will enter the virtual world of SecondLife™ to experience a variety of simulations; a restaurant, an airport, a medical clinic and a train station. Later, they will actually travel to Italy for a program of study, abroad.
The virtual environment in which they will immerse themselves is modeled on the neighborhood in Italy where they will be staying. The simulations are designed to prepare them for their visit. They will study maps, use currency, become familiar with local fixtures…like signs.
In support of the Italian Studies project, I am developing interactive objects—mainly the scripts—to provide a number of interactions. Students can open a “wallet” at the “ATM” and withdraw virtual currency, then visit a coffee shop and…maybe purchase a cappucino. On touching some of the things they see (think “mouse click”), the name of that object appears as text in Italian and they hear an audio-stream pronunciation of the term.
They will be required to buy tickets, read a public transit schedule, and complete many other tasks during their lessons.
My mother and I did something similar before our visit to New York City. After opening Google Earth and “roaming” the virtual streets around our hotel to prepare for our trip, we were able to navigate that neighborhood as though we had been there before.
So, thanks Mom…for helping field test this sort of technology.
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.
The new Spicy Vanilla group was granted a 24 x 24 meter plot in the Poster Session region for the recent education conference in which to display the Basic Skills Gauntlet (BSG).There was also a live presentation; but, let’s not talk about that.
Poster Plot granted for display of Basic Skills Gauntlet
The BSG project has gained momentum and the activity seemed more than a mouthful for conference goers; so, a smaller bite-size version was wedged into the 576 square meters. The configuration and components were chosen by selecting several modules that are in working order. (One attendee asked an insightful question: What do [you] consider to the basic skills? Skills addressed in the demo version at the conference included use of Inventory, Ctrl-Alt zoom and pan, and familiarity with sit targets.)
During much of the conference the BSG site—and the entire poster region—seemed quiet. This worked out, as there were plenty of bugs to chase down. At times, a brief flurry of visitors would leave evidence of folks having jumped in with both feet.
BSG Scoreboard with multiple scores displayed; a sign that visitors were having a go. Cooper Macbeth, seen in list here, had high score for the event. (The “10:64” entry, midway in list, puzzled me for hours until I realized my User Reset button – added just days before – was carving into the scores list in a bad way.)
Near the end of the final day, a number of visitors tried the activity and hung around to offer feedback, ask questions, and just chat about the conference in general.
A happy little project was born of the event, itself. On day two of the conference, I noticed my own lack of consistency in describing the activity to visitors. There was also the fact that I was not hanging ’round 24/7. Wanting to provide a user with an effective tour—introduce the activity and some of the principles addressed—I decided to cobble together a widget that does the job, automatically.
And the Guided Tour Chair was rezzed. ESCape camera control, then sit, and the object moves camera position and focus while loading a narration via sound file. Also whittled away at a HUD version of this interaction. There seems to be more flexibility for designing instruction with the HUD, but it also requires more of the user; get it, find it, and wear it, as opposed to the simple sit-n-learn.
A project-site-specific version of the Guided Tour Chairs Site Preview HUD can be found by following this link with this SLURL. And, if you are curious and the tour chairs just don’t do it…
I like being surprised by virtual world designs, and it happened just few moments ago.
I returned to peek under the hood of an educational sim, one only recently discovered (first clue here). I roamed around and flew up-up-up, ctrl-alt-zooming into spaces here and there; right-click-more-more inspecting random objects…all an attempt to reveal the plan, to discover more of the story.
Then I came upon a teleportal door.
Its location is devoted to avatar appearance, providing freebie clothing to new users. To my surprise, the familiar Anywhere Door led to a skybox hundreds of meters overhead, and…
… an elegant solution to a common problem (“How do you give users privacy for changing clothes?”)
This is where the surprise sunk in. You see, I had found the skybox during an earlier flight around the sim. I must have cammed right through the Anywhere Doors, because the space seemed disconnected, empty, and somehow incomplete; a room with no clear purpose, no obvious context. Bold-headed, I thought “this is just an unfinished sketch” and “too much is going on here.”
Discovering the elaborate build—one that is taking shape under the eye of a single, motivated educator—was a pleasant surprise in itself. Discovering that the host has an eye for interactive, user-centric design was the best surprise of all.
I reckon I will be writing more about this space; and, until l I get my head around it a bit more, I have put off naming it here.
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.