Ajax-Anwendung in Second Life

Sprachen  –  Kommentare

Nach dem Boom, den Second Life (SL) in Deutschland in den vergangenen Monaten erfahren hat, sind die ersten kritischen Stimmen zu vernehmen. Nicht jeder findet das zweite Leben im Internet abendfüllend. Spannender könnte es sein, wenn die virtuelle Welt komplexer und die Interaktionsmöglichkeiten reicher wären. Programmierer müssen nicht darauf warten, können sogar dazu beitragen. Der Schlüssel heißt LSL, die Linden Scripting Language. Sie erlaubt es, selbst erschaffenen Objekten Leben einzuhauchen. Ein geskriptetes Objekt kann beispielsweise auf Berührungen durch Avatare reagieren. Wer sich in LSL einarbeiten möchte, findet wie zu erwarten im Netz umfangreiche, wenngleich nicht immer vollständige und aktuelle Informationen (siehe Onlineressourcen).

Im Folgenden soll es nur um einen Aspekt von LSL gehen: die Ajax-Fähigkeit. Sie gestattet es, Teile der Programmlogik auf einen eigenen Webserver auszulagern und dort mit beliebigen, herkömmlichen Mitteln (PHP, Servlets, Perl, CGI et cetera) zu realisieren. Außerdem zeigt dieses Codebeispiel, dass Ajax ein Konzept, keine einzelne konkrete Technik ist. Ajax ist nicht an den Browser und Javascript gebunden, sondern kann in verschiedenen Umgebungen "stattfinden"; in diesem Fall LSL und der Second-Life-Laufzeitumgebung.

LSL-Programme beziehungsweise die Objekte, mit denen sie assoziiert sind, befinden sich zu jedem Zeitpunkt in einem eindeutigen Zustand. Nach der Initialisierung handelt es sich um den Zustand default. Verschiedene Ereignisse können einen Zustandswechsel auslösen. Das folgende Listing zeigt ein Hello-2nd-World, wie es im Scripting-Wiki zu finden ist.

default
{
state_entry() {
llSay(0, "Hallo Avatar!");
}
touch_start(integer total_number) {
llSay(0, "Berührt.");
}
}

Kommt das Skript zur erstmaligen Ausführung, begrüßt es den Avatar freundlich mit "Hallo Avatar!". Die Funktion llSay() führt die Begrüßung durch. Say ist hier durchaus wörtlich zu verstehen. Das Objekt spricht diese Worte in der SL-Welt. Folglich sind sie nicht nur für den Besitzer des Objekts zu "hören", sondern auch in seiner Umgebung (20 m Umkreis); wer es diskreter möchte (10 m), sollte ersatzweise llWhisper() verwenden. Berührt ein Avatar das Objekt, üblicherweise durch Klick mit der linken Maustaste oder alternativ mit rechts und der Option Touch, meldet sich das Objekt erneut zu Wort: "Berührt." Grund für diese Aussage ist der durch den Klick aufgerufene Event-Handler touch_start().

Soll ein Objekt Kontakt zur ersten Welt aufnehmen (in SL meist Real Life oder kurz RL genannt), braucht es zuerst eine Kommunikationsfunktion. Sie trägt in SL den Namen llHTTPRequest. Man beachte den Namensunterschied im Vergleich zu Javascript. Dort heißt das entsprechende Objekt XMLHttpRequest. In LSL ist die Funktion bislang nicht besonders auf den Empfang von XML-Nachrichten ausgelegt, weil sie immer reinen Text erwartet, selbst wenn der aus XML-Code besteht. Im Weiteren tauschen die Programmbeispiele deshalb ausschließlich Textnachrichten aus.