Jeff Barr's Blog

Things I Like..

RESTbot Architecture

restbot.gifI was lucky enough to meet several of the folks behind Pleiades Consulting when I was at the Second Life Community Convention this past weekend. it was good to be able to finally meet James, Ian, and Jonathan face to face. I also met John Hurliman, lead developer of LibSecondLife and part of the Pleiades posse.

These folks have been cooking up some really cool stuff – first LibSecondLife and now RESTbot.

LibSecondLife is a very nice .Net interface to Second Life. Applications built on top of it log in using the name and password of an existing avatar, which then appears “in-world,” under the complete control of the application. It can move, gesture, chat, manipulate the avatar’s inventory of objects and textures, and so forth. The resulting avatar is a “bot” (short for robot). The logged-in avatar is identified with a unique session key.

Earlier this month Pleiades announced RESTbot. RESTbot implements a web server on top of LibSecondLife. The web server responds to a set of simple REST-style requests. The requests each include a session key so that a single RESTbot server can manage any number of avatars simultaneously — an army of robots, or a dance troupe, for example. The requests are clean and simple; each one returns an XML document with the results of the request.

The RESTbot distribution also includes a number of Perl applications to exercise each web service. Each application is a web service client to the RESTbot. For example, botlogin.pl accepts an avatar first name, last name, and password as arguments, and displays a session key as its result. This key can then be passed to the other applications — bot_sit.pl to sit, bot-teleport.pl to teleport to another region, bot-rez.pl to rez (create) new objects, and so forth.

Here’s how it all fits together:

restbot_arch.gif

The RESTbot client application + RESTbot + LibSecondLife are the functional equivalent of the Second Life Viewer. Either one can connect to the Second Life server, log in, and control the actions of an avatar, one programmatically and the other under the control of a human being. The client application connects to RESTbot (usually over the internet, but optionally within a single machine via localhost), RESTbot calls LibSecondLife, and LibSecondLife calls the Second Life Server.

Net-net: You can now control a Second Life avatar using very simple web service calls or a shell script. That’s really powerful and I am sure that some very interesting applications will be built on top of this before too long.