[Opensim-dev] Client-side API/scripting Re: LookingGlass Viewer progress

Dzonatas Sol dzonatas at gmail.com
Sun Dec 27 21:17:29 UTC 2009


Mister Blue wrote:
> Several people are playing with protocols and I am intrigued by the 
> possibilities of a better protocol.

Let's say there are two main routes for protocols in regards to this 
area. Between the grid/server and the viewer/client is more of the 
easiest one to point out. We can call this route as being in the Agent 
Domain in AWG terms.

On the website it is noted that: "User interface is not embedded into 
the viewer -- all operations are through REST/JSON interfaces so user 
interfacing can be supplied by JavaScript/AJAX web pages (initial sample 
page provided) or through a completely separate application"

This is the protocol, at least the route itself, that needs attention 
and what I have already started to focus on. My goal, however, hasn't 
been to write an entire new viewer. To focus on the route itself, we 
could say it is within the User Domain. The User Domain is where all the 
client-scripts and interfaces communicate.

If we can somehow standardize the REST/HTTP based APIs, then that would 
be a key element to many developers that make human-computer interfaces 
and want to make them more immersive. This also applies for those that 
just want their developer tools to 'just-work' easier with the Agent 
Domain without the the need to write an entire new viewer. (i.e. a 
blender plug-in that can easily import/export a "live" version of an 
object before it is uploaded to the grid -- or, a movement control to 
help machinima be easier and be supported separately from the viewer).

Obviously we need to start somewhere with the idea. Content-Type 
shouldn't be the main issue at first, yet the REST URIs and expected 
requests and responses can be drawn up and standardized.

I have also worked on a C# implementation called MonoVida, but I've 
split it out and and narrowed it down to just the API (in C++) and 
Communicator (C#, detached UI/Chat/Comm/Etc). It works on Linux, 
Windows, and Mac. Currently at 0.9.9, it can be (re)started anytime the 
viewer is running, which makes it ideal to debug interfaces and extensions.

Here is the main project site for MonoVida Communicator, which also uses 
REST/XML to run in separate process and communicate with the viewer:
http://jira.dzonux.net:8080/browse/MVC

The Chat/IM/Contacts panels are separated/detached:
http://mono.dzonux.net/file/MonoVida-20090701a.png

Gestures are loaded and recognized (auto complete enabled), also notice 
unicode works:
http://mono.dzonux.net/file/MonoVida-20090521.png

Multiple windows, detached, overlaid:
http://mono.dzonux.net/file/MonoVida-20090619a.png

World Map, notice it is on a entirely different screen than the viewer:
http://mono.dzonux.net/file/20091218a.png

Repository:
http://gitweb.dzonux.net/project/communicator.git

Step-by-Step of how to patch and compile the viewer to enabled the API, 
and how to connect to the viewer from a different machine that runs 
Communicator:
http://wiki.secondlife.com/wiki/User:Dzonatas_Sol/Communicator

SL-JIRA issue:
Detached H.I.D. API: "thinking outside the box" (i.e. 
Chat/IM/Contacts/Etc windows in 
separate-processes/plugins/ubiquitous-computing)
https://jira.secondlife.com/browse/SNOW-375

The patch as applied to Imprudence:
http://github.com/ArminW/imprudence/tree/snow375

Dzonatas



More information about the Opensim-dev mailing list