Tags: secondlife

RSS - Atom - Subscribe via email

Plywood boxes

Posted: - Modified: | emacs

By default, objects created in Second Life are plywood boxes. I’m not
really interested in learning how to making these cubes look like
anything in particular. I’m just interested in making them do cool
things. Someone else can put time and effort into making a replica of
a real-world object or a fantastic new device… I’m just here to play
around with programs. =)

Stephen Perelgut wanted a structured interviewer that collected data
in-world instead of requiring people to fill out a notecard or leave
Second Life and fill out a web-based form. So today, I built an
interview-bot which asks a series of questions and stores the answers.
Avatars can click on the bot to start, and can resume this
“conversation” at any time. Chatting on a separate channel means that
answers are reasonably private. The data is stored in the object and
can only be retrieved by the object’s owner.

In order to build this, I learned a little bit about how to work
around Second Life’s data limitations. You see, the Linden Scripting
Language doesn’t have multidimensional arrays. Fortunately,
LSLwiki.net has a library for accessing multidimensional arrays by
packing and unpacking lists of lists, encoded as strings. The library
is kludgey, but as long as my code looks relatively neat, everything’s
okay.

Future versions of this interview-bot will allow avatars to review,
change, and submit their answers through the Web or through e-mail. I
also hope to make it easy for owners to customize the list of
questions. A notecard would do nicely for setup. I can also make it
easy for owners to get a notecard of results.

It was fun programming the scripted object, and even more fun chatting
with the other IBMers. I met a number of interesting people today
thanks to awesome connectors like Andy Piper and Stephen Perelgut.
I can’t wait to build other interesting things in Second Life!

Random Emacs symbol: planner-read-non-date-page – Function: Prompt for a page name that does not match `planner-date-regexp’.