Recipe for a Virtual World 6: User generated content

If you even remember the previous posts, you may wonder what happened to 4 and 5. Unfortunately I got bit stuck on money (which was going to be the forth, but I never quite decided whether an economy is directly relevant to virtual worlds- my current suspicion is not) and physics (which was going to be the fifth, about the different approaches used to construct virtual worlds, rather than physics simulations), but I kept getting distracted! If it wasn’t for user generated content, I doubt I’d be the least bit interested in virtual worlds; I get bored being a spectator in computer games very quickly.

Luckily I don’t have to write a whole post about what’s so important about user generated content, because Dale’s done that already! Jonas’ “Dead Gnomes as Enterprise Collaboration Tools” post is also worth a read as it shows that the goal of content creation can often be something other than content which is produced. The content is just a means to an end, and user generated content can take care of the long tail requirements that virtual world developers would never otherwise get to. How far up the list of priorities would dead gnomes be?! And how long would you have to wait for the opinionator?! (My current all time favourite gadget in second life.) Even the opinionator is a luxury when you can just stack up cubes, but one that makes for richer interactions- you can’t have too many ideas like that to make up for the loss of real world interactions if virtual worlds are to be the next best thing.

News that professional design teams are getting tools to collaborate on content creation inside the world they are building makes things even more interesting, further blurring the lines between designers and users/producers and consumers.


(And I almost forgot to mention MQTT enabled ducks and UK energy price turbines on ReactionGrid!)


Justin Casey moving on

As Justin mentioned on his blog, and also reported elsewhere, he’s moving on to join the Fashion Research Institute and Friday was his last day in the Hursley Information Management team at IBM. Unfortunately, while there are many advantages to working from home, there are downsides, one of which was missing Justin’s leaving drinks at the Dolphin. I’m also going to be missing the Open-Source, Interoperable Virtual Worlds panel at the Virtual Worlds expo. Still, with the power of blogging I hope I won’t be missing out completely.

Good luck to Justin with what sounds like a tremendous opportunity.

BMW leaves Second Life

Earlier today I made a trip to the BMW New World1 island in Second Life after an invitation from Munich Express to hear an announcement. I have hardly spent any time in virtual worlds lately but I’ve had many interesting conversations about them with Munich in the past and was intrigued to find out what news BMW had.

Like others, BMW has decided to end its current virtual world experiments in Second Life. Although it will be a shame to see them go, the message was generally very positive about the future for virtual worlds, which BMW are still investigating to use internally, hosted on their own servers. The announcement ended with a free gift for the audience, which I still can’t drive; I can see why there were never any BMW cars to test drive in Second Life!



I’m glad I made it to the event, which sparked some great debate, and I’ll certainly be keeping in touch with Munich/Achim inside/outside Second Life.


Stopping LSL scripts running in the wrong object

I’ve been dusting off a very old project in Second Life and giving it a fresh coat of pixels (details to follow) where I wanted to use llRemoteLoadScriptPin to load scripts into objects as I rez them. It would however cause odd things to happen if these scripts ran in the object doing the rezzing, so here’s how I stop them:

        // Check whether we should be running...
        integer disable_marker = llGetInventoryType("DisableScripts");
        if(disable_marker != INVENTORY_NONE)
            state disabled;

        // ... the real code

state disabled
        llSetScriptState(llGetScriptName(), FALSE);
        // Nothing else in this state so it shouldn't matter if the
        // script doesn't stop immediately

So the script magically stops running if I put it in any object that contains a notecard with the name DisableScripts, which seems to work pretty well.

Mapping the future

I’m a bit of a fan of maps, even strange ones, and I’ve been wondering lately about a world of virtual worlds and how that might look on a globe, with each virtual world represented by countries, with continents of related worlds. So a continent with countries for the Second Life grid, corporate grids and Open Sim grids for example. Beyond just looking cool, I think mapping out our virtual world – be that social networks, information/tags, 3d environments – in a visual way will make it more accessible. Still checking to see if someone has done it already but if they haven’t I’m thinking FreeEarth might work for a little experiment…

Just thinking out loud.

SLorpedo Tweets

If plants can twitter, bridges can twitter and houses can twitter, why not mixed reality games? To find out, I’ve created a SLorpedo twitter account to experiment. To make it simple to find any SLorpedo games in world I’m planning to tweet locations using TinySL. Twitter also seems like a really nice way to get the score back out of Second Life; at the moment the score is only shown inside Second Life, but I quite like the idea of using a virtual world to work out the score for a real life game without ever logging in!

I also think that twitter might be an interesting way to keep track of object keys and channel keys inside Second Life, without needing my own server. So instead of copying a channel key from the Second Life client, the SLorpedo program could find out the key from Twitter… maybe.

To spiral further into mixed reality confusion, I’m also trying to display the SLorpedo Twitter feed back inside Second Life using QTtext. QTtext is a really simple way to display text on a prim using a plain text file and a media texture (even simpler than HTML on a prim which is on its way at last) and I’m hopeful that a bit of XSLT on a Twitter RSS feed will do the trick nicely.

Watch this space!

Recipe for a Virtual World 3: places

Virtual Worlds need people and people need places. For collaboration or socialising, a sense of place sets virtual worlds apart from alternatives like instant messaging and conference calls. As in the real world, meeting to play games or do business (or both) in a virtual world needs a place to do it. Unlike the real world, there are few constraints to limit these places. It doesn’t rain if you don’t want it to, and you don’t need shade from the sun, so a roof becomes an aesthetic choice rather than a necessity. Physics; what goes up, might come down if you want it to. Yet the possibilities are not endless if you want a virtual space to be successful: the remaining constraints, other than any technical limitations, are formed by people’s expectations. And discovering what those are, and how they vary, is going to be interesting. (I’m going to predict that 3d blinking text won’t be popular!)

With all these virtual places, navigating virtual worlds has startling (to me at least!) similarities to navigating the real world. To make things interesting, some of the problems navigating the real world are magnified. My first experience of Second Life was teleporting to a totally random set of locations and some subsequent aimless wandering/flying. I have absolutely no idea where any of those places are! I did try and go back to one of them later but without any GPS I didn’t stand a chance. To start with teleporting reminded me of stepping out of tube stations in London- I gradually get to know the area round stations I visit frequently, without realising that they are in fact practically next to each other! To make matters worse, navigating by landmarks can be unreliable when the landmarks can change so quickly and completely. It’s like going back to a home town after moving away for years, when new roads and buildings have replaced old familiar landmarks. Except that change happens much faster in a virtual world, and even mountains can move!

I quickly learnt to save landmarks of places I might want to return to in Second Life, which leads to the next tiny problem. Places change. In the real world, people and businesses move. In the virtual world they seem to do it a lot! I might go back to a cake shop I visited a month or two ago in the real world to discover that it now sells clothes. In the virtual world, I might go back to a shop to discover that the shop has gone, along with the town it was in! I might teleport in to the middle of a battlefield! It will get even more interesting when places move from one virtual world to another- my Second Life landmark is not going to do much good in Kaneva!

The DNS system already provides a way to look up the address of a computer based on a name. So the computer this weblog is hosted on could move from one country to another and the name you use to view it would stay the same. Instead of a post code (isn’t a zip what you use on clothes?!) system, maybe a Place Name Service (PNS) would help. No need to restrict this one to virtual worlds either. Register your place name and when someone uses it, they could end up with a real world address, a Second Life landmark, etc. etc.

That doesn’t solve the problem of finding places in the first place. This is a bigger problem on a general purpose virtual world, since not finding a place you think is interesting or useful is likely to mean you leave thinking that the whole virtual world is not interesting or useful. There could have been the most amazing place just round the corner and you would never know. (You’ll live without it but thats a big problem for a virtual world that wants more active users.) In the real world, you might use a guide book or go on a tour to find interesting places. Why not do the same in a virtual world? Or, as with anything on the internet, look out for where other people are going. Tom Werner’s blog might be a good place to look, although I must admit I am slightly biased!

So what are your top 5 virtual places (Second Life or anywhere else)?

Pocket SLorpedo (continued)

Unfortunately my last Slorpedo revisit coincided with a small problem with Second Life but XML-RPC is now back on its feet- hurrah! In fact, XML-RPC into Second Life is working fast enough to rez the subs as they are placed at the moment, although if it slows down again the subs should still all get rezed before firing torpedoes.

The reason for having another prod at XML-RPC is that it should provide a simple way for anyone to play the mixed reality game first seen at Hackday London and SLUK, and it’s almost ready. If you want to have a sneak preview follow these steps:

  1. Download reacTIVision.
  2. Download and unzip the Pocket SLorpedo client.
  3. Clear a playing area in real life, point a camera at it, get the playing pieces ready and fire up reacTIVision. (I’ve been mostly experimenting using the TUIO Simulator so far but it’s time to get the scissors out to make some real playing pieces!)
  4. Get the Second Life Pocket SLorpedo object- hope to have a vendor available soon but until then let me know your Second Life name and I’ll send one over.
  5. Use the channel key displayed when rezing the Second Life object to start the Java client using the command line below.
  6. Play!

To start the Java client, open up a console, change directory where ever you unzipped it, and run this:

java -jar SLorpedo.jar -key=<channelkey> [-b] [-port=<tuioport>]

The game is played entirely with the reacTIVision fiducials:

  • The piece numbered ‘0’ starts a new game.
  • Number ‘4′ is used to fire the torpedoes.
  • Odd pieces appear as blue subs and even pieces are yellow subs.
  • Numbers under 30 are small subs and over 30 are big subs.

Let me know if it all goes horribly wrong!

Updated 2 Jan: Borrowed a web cam this evening to have a game using real pieces instead of cheating with the TUIO simulator. A slightly better camera would be nice for a bigger playing area but other than that it worked really well. The game below was a two all draw!

Pocket SLorpedo Pool

Simple Second Life building exercise

I’ve been working on a simple building exercise again recently. The basic idea is to give a taster of all the elements involved when building in Second Life, from prims to simple scripts, in the form of a trail with instructions on how to build a futuristic chair. Hopefully after completing the exercise people will be able to get more out of other much more detailed resources available, like the Ivory Tower of Prims, and (if all went well) a working chair! I have only just had the chance to work on a few of the suggestions I received after trying the trail out on a few guinea pigs at a recent hackday and I hope to get a bit more done at the weekend. If you pass through the IBM Sandbox and find the trail out there while I attempt to get it finished off, I would be very interested to know if you have any comments or suggestions.

Building Trail

Recipe for a Virtual World 2: people

While the rest won’t be in any specific order, the second in the series is for what I think is the most important ingredient: people. In fact, if there is a killer application for virtual worlds, it’s people. (Well, obviously that sentence doesn’t quite work but people are the key ingredient in meetings and education, the two killer apps which Irving Wladawsky-Berger talked about when he visited Hursley recently.)

Without people, you’re left with 3d graphics, or not even that for some virtual worlds. If you want to show off some 3d design on a web page, there would certainly be better ways to do it if slick graphics, simplicity or speed were you primary concern. You could mash up 3d content and social software in some sort of google CAD application so people can collaborate on garden layouts/kitchen designs/pimping their ride, and there are already instant messaging tools, voice over IP and web cams, so who needs a virtual world? There’s no one thing that you can do in a virtual world that you can’t do another way but virtual worlds tie it all together in a natural way. (Well, I’m sure there’s room for improvement but the potential is definitely there.)

If you just try out your first virtual world without anyone else, you’re unlikely to see them at their best. It’s a lot like arriving in a big city- there must be things to do and people to talk to, but where do you start? Exploring with someone you already know can help a lot. That’s certainly my experience with Second Life; the first time I logged in was very nearly my last. It was only after being shown round a few places and meeting up with people in-world that I began to see the potential. I think linking up virtual worlds with social networks is a great idea in this respect, which I think Kaneva does, and you can now do with the Second Life Link on Facebook.

Trying out virtual worlds with a specific purpose in mind also seems like a good way to experience the people power early on, whether they’re people you already know, or just other people with a common interest. The I am Legend Second Life game is a fun example, but I recently heard about talkademy which just sounds fantastic. One of my excuses for being so bad at languages is just not having the chance to practice. I rarely go to Spain or Germany, and when I do, everyone is far too kind and happily talks in English before I’ve barely struggled through my first sentence! Using virtual worlds to practice sounds like a great use of virtual worlds. Another killer app?