At left, using the Metaplace Communicator HUD in SL; right, receiving Instant Messages from SL within Metaplace
Shortly after famed Second Life builder and scripter Miki Gymnast became a beta user of Metaplace, Raph Koster's web-based virtual world, she began looking for something new to create with the internal creation tools. "This was my first tryout of the scripting language in Metaplace, my 'Hello world' app," Ms. Gymnast tells me grinning. As first reported by Dispatches from the Imagination Age, what Miki Gymnast eventually made is a major milestone in interoperability between virtual worlds: a communication channel between Metaplace and Second Life. "There are lots of SL'ers at Metaplace," she says simply, "so it was obvious to make a bridge for them."
To use it within Second Life, you simply need to wear Miki's Metaplace HUD (I'm wearing it above.) To use it within Metaplace, you just need to be in Miki's world in Metaplace (link here, Metaplace account required.) From there, you can send instant messages from Metaplace to avatars in Second Life, and vice versa.
This is possible with a very clever hack that uses PHP scripts/MYSQL database on Miki's server for data processing. "So the messages goes via http from Metaplace to PHP/mysql to SL (via XML-RPC push or http pull if Second Life's RPC server is down) and then back, also via PHP," she explains. "There is actually no way to make such complex stuff with direct connects between Metaplace and Second Life." (More technical details courtesy of Miki after the break.)
This is not the only chat bridge between virtual worlds, it's worth pointing out. (There's another between SL and OpenSim, and Metaplace user "KStarfire" also created a simpler MP-to-SL chat bridge in recent days.) However, what makes Miki's Metaplace Communicator even more significant is that it also enables limited control of SL objects (transfer and manipulation) from within Metaplace. In other words, you could for example use Miki's technology to manage your SL business offline, via Metaplace. And because Koster's world is web-based, it could easily become the best way for many SL Residents to maintain contact with Second Life when not logged into the world.
I'm not the only one who's impressed. “When we see things like this happening," Raph Koster told me through a publicist, "it just validates all the reasons why we built Metaplace. I’m blown away by what users accomplish every day, and this is just another example of why.” Looking at the larger market of virtual worlds, it's easy to see this part of a growing trend: worlds that allow meaningful communication between each other, versus worlds that remain entirely walled gardens. If the history of the Internet is any guide, only one of these groups will ultimately thrive.
In any case, more tech-heavy details on Miki Gymnast's Metaplace Communicator after the break.
Metaplace Communicator Notes from Miki Gymnast
Functions:
• Sending text messages from MP to every SL user in realtime.
• Real-time text chat with every SL user wearing the communicator HUD.
• Sending SL-objects to every SL user in realtime, triggered in MP.
• Object manipulation of SL objects, triggered in MP.
• Online detection of SL-users, displayed in MP.
• Banning avatars from SL-parcels, triggered in MP.
The SL-user can be everywhere in SL. The MP user must be in Mikis_World.
Usage:
Go to my MP: http://beta.metaplace.com/Mikis_World/play
Sending a text message:
Type "/sl SLforename SLsurename Message..." in your chat.
For example "/sl Miki Gymnast This tool is not bad".
The text message is instantly displayed on the recipients SL chat window, wherever in SL. If he/she is offline the message is stored.
Sending an object:
Type "/slpresent SLforename SLsurename" in your chat.
For example "/slpresent Miki Gymnast"
We have prepared a small demonstration object, its immediately delivered to the receiver with a info message about the sender. If he/she is offline the present and message are stored.
Chatting with a SL user:
The SL user must wear the "MP communicator HUD".
For delivery of this type "/slhud SLforename SLsurename" in your MP-chat.
For example: "/slhud Miki Gymnast"
The HUD is delivered immediately to the SL avatar, it works for all future chats, the SL user can address you or each other MP avatar, as long they are in Mikis_World.
For chatting type "/sl SLforename SLsurename Message..." in your chat.
For example "/sl Miki Gymnast This is a test!"
The SL user can answer with "/33 MPName Message..." (MPName is case sensitive)
For example "/33 Miki Yes, i know, its time"
The message from SL will be displayed in your MP window as an alert (and i hope as a chat text soon if i have explored the undocumented mysteries of the MP chat system completely... ;-)
More Technical Background
Metaplace-modules:
• place-module: Registers the /sl... commands, reads the triggers and checks inputs for integrety. If they are complete it collects stuff and send them via WebRequest to the main php script. If not complete it informs the user. Debugs reply.
• world-module: Pretty simple, WebTrigger, sends the commands/content from the php to AlertToUser. I did not find out how to use the chat_system here to display messages also in the MP chat. chat_system_send_to_subscribers gives an error???...
PHP-modules:
• main module: receives the params from aaf2, splitting of the input. connects to the mysql db for name2key request in local db. if sl uuid is not available ther request to a name2key db and storing the result in the buffer mysql db. Getting repeater ("Metaplace Satellite" in SL) xml-rpc id and preparing commands and replys for the different procedures (chat, hud, present...). If chat/message request it checks if SL-recipient has a hud: if yes and the SL user is online, reading out the xml-rpc id of the unique hud and sending chat there, sends alarm back to mp if not online. if there is no hud sending the message via the MP Satellite rpc-request. feedback to MP world via fputs.
• metaplace satellite module: gets the http-request of the Sat in SL and stores actual data (position, xml-rpc chann, owner...) in mysql. useful if xml-rpc id is changing.
• communicator module: gets the http-request of all MP communicators in SL and stores actual data (position, xml-rpc chann, owner...) in mysql. is pinged all 30 sec from the units, notifies teleports and sim changes.
• online detection module sat: gets the info on request from the MP satellites in SL if a messaged user is online or not and sends the data back to MP.
• online detection module communicators: same for the communicator units with storage in mysql.
LSL-modules:
• Satellite module: Handles all remote data requests not sent directly to the Communicator units, if there is a message request it makes a sl dataserver query if user is online. Delivers the HUD and present in its inventory, sends commands for parcel and object manipulation. Gives feedback and status messages to php.
• Communicator module: Listener for chat commands in SL. Verifies commands, and sending them to php for delivery into MP. Handles remote data requests from main php module for delivering the chat to the SL user. changed trigger for sql storage. Prepares and sends back status messages of the user. Help-notecard by click on the HUD.
Top right image credit: eurekadejavu.blogspot.com.
Comments