Linden Scripting Language

Linden Scripting Language

Die Linden Scripting Language (oder kurz LSL) ist eine von Linden Lab entwickelte imperative Skriptsprache, die der Steuerung von Objekten in der virtuellen 3D-Welt Second Life dient.

Inhaltsverzeichnis

Aufbau und Eigenschaften

LSL ist eine ereignisgesteuerte Sprache, die in Anlehnung an endliche Automaten entwickelt wurde. Jedes Skript besteht dabei aus mindestens einem Standardzustand mit der Bezeichnung default, welcher zugleich den Anfangszustand des Automaten darstellt.

Zustände

Wie bei deterministischen endlichen Automaten hat jedes LSL-Skript eine feste, endliche Anzahl von eindeutig benannten Zuständen, allen voran der default-Zustand, welcher den Initialzustand darstellt und zwingend vorhanden sein muss. Zustandswechsel werden mit der state-Anweisung vollzogen, welche den Namen des Zielzustands als Parameter erwartet.

Variablen

LSL kennt lokale und globale Variablen. Variablen können folgende Datentypen haben:

  • integer: vorzeichenbehaftete 32bit-Ganzzahlen im Wertebereich von -231 bis 231-1 (also von −2,147,483,648 bis +2,147,483,647, oder 0x80000000 bis 0x7FFFFFFF hexadezimal).
  • float: 32bit-Fließkommazahlen im IEEE 754-Format (also absolut von 1.175494351E-38 bis 3.402823466E+38).
  • string: Zeichenketten. Die Länge von Zeichenketten ist theoretisch unbegrenzt, praktisch jedoch durch die Größe des für das Programm reservierten Speichers beschränkt. Da sich der Bytecode, Heap sowie Stack diesen Speicherbereich teilen, kann die maximale Länge für Zeichenketten – je nach Skript – zur Ausführung beliebig klein werden.
  • key: UUID (Universally Unique ID), welche zeitlich sowie räumlich eindeutige 16byte-Schlüssel im Second Life-Universum darstellen. Sie dienen der Identifikation von Objekten, Avataren, Texturen, Audiodateien sowie logischen Konstrukten/Anbindungen (HTTP- und RPC-Verbindungen, Listener, ...) und anderen.
  • vector: Tripel aus jeweils drei benannten float-Komponenten 'x', 'y' und 'z'; sie dienen primär der Darstellung von Vektoren im naiven dreidimensionalen Sinne, der Farbdarstellung im RGB-Farbraum, teilweise auch als Offset- und Positionsvektoren zur Ausrichtung von Texturen.
  • rotation: Quaternion als Typ zur Darstellung komplexer Rotationen.
  • list: ein Typ zur Darstellung linearer Listen. LSL-Listen können als Arrays aufgefasst werden, d.h. sie stellen Folgen der festen Länge n von LSL-Werten dar, deren Komponenten von 0 bis n-1 adressiert sind. LSL-Listen können keine weiteren Listen enthalten.

Ereignisse

In jedem Zustand eines LSL-Skripts können Ereignisse (events) deklariert werden. Die Menge der definierten Ereignisse wird von Linden Lab vorgegeben, wie etwa state_entry() (das Skript nimmt den benannten Zustand an), touch_start( integer num ) ('num' Avatare haben das enthaltende Objekt berührt, also angeklickt) oder http_response( key id, integer status, list metaData, string body ) (ein HTTP-Server hat seine Antwort gesendet).

Mit jedem Ereignis ist ein Anweisungsblock assoziiert, welcher beim Eintreten des Ereignisses ausgeführt wird und vom Programmierer frei definierbar ist. LSL-Skripte sind derart synchronisiert, dass nie mehr als ein Ereignis zeitgleich eintritt; damit können keine Kollisionen bei Operationen auf globalen Variablen auftreten.

Funktionen

Linden Lab bietet eine relativ umfangreiche Funktionsbibliothek, die vom Programmierer frei verwendet werden kann. Dabei gibt es sowohl reine Funktionen nach klassischer Auffassung (zum Beispiel llSin(float x) zur Berechnung der Sinusfunktion) wie auch Funktionen mit Prozedurcharkteristik (zum Beispiel llTargetOmega(...), welche zum Starten einer autaken Objektrotation genutzt werden kann).

Des Weiteren ist es möglich, eigene Funktionen zu definieren, welche auch Mischformen aus Funktion und Prozedur sein können und auf globalen Variablen des Skripts operieren dürfen.

Beispiel

Anbei folgt das Standard-Beispielskript von Linden Lab, welches dem üblichen Hallo-Welt-Programm entspricht.

default
{
   state_entry()
   {
       llSay(0, "Hello, Avatar!");
   }
   touch_start(integer total_number)
   {
       llSay(0, "Touched.");
   }
}

LSL und Mono

Im Herbst 2008 begann Linden Lab damit, die bis dato verwendete LSL-Implementierung durch die Open-Source-Software Mono zu ersetzen, welche eine .NET-kompatible Laufzeitumgebung darstellt und durch die erhebliche Laufzeitverbesserungen verzeichnet wurden. Des Weiteren vervierfachte sich damit der für jedes Skript verfügbare Speicher von 16 KiB auf 64 KiB. Etwa gleichzeitig begann der Mono-basierte Nachbau von LSL für OpenSimulator, dem Open-Source-Pendant von Second Life.

Verweise

Quellen


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Linden Scripting Language — (или LSL)  скриптовый язык программирования, используемый при создании контента резидентами виртуального мира Second Life, созданного компанией Linden Lab.[1] С помощью LSL скриптов можно управлять поведением объектов виртуального мира.… …   Википедия

  • Linden Scripting Language — Linden Scripting Language, or LSL, is the programming language used by residents of Second Life , a virtual world by Linden Lab. [ http://wiki.secondlife.com/wiki/Help:Getting started with LSL#What is LSL.3F] LSL scripts can control the behavior… …   Wikipedia

  • Linden Scripting Language — Second Life Pour les articles homonymes, voir SL. Second Life …   Wikipédia en Français

  • Linden Dollar — Second Life Entwickler: Linden Lab Publikation: 2003 …   Deutsch Wikipedia

  • Second Life — Developer(s) Linden Research, Inc Engine Proprietary …   Wikipedia

  • Culture of Second Life — Contents 1 Activities of residents 1.1 Subcultures 1.2 Resident created content …   Wikipedia

  • Second Life — Логотип Second Life Разработчик Linden Research, Inc,США …   Википедия

  • Resident (Second Life) — In the context of Second Life, the term Resident is applied to people who have a stake in the world :Cite web url=https://wiki.secondlife.com/wiki/Origin of the term %27Resident%27 title=Origin of the term Resident author=Linden, Robin… …   Wikipedia

  • Criticism of Second Life — Due to constant development, and as an open environment accessible by almost anyone with access to the Internet,[1] a number of difficult issues have arisen around Second Life. Issues range from the technical (budgeting of server resources), to… …   Wikipedia

  • Second Life — Entwickler …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”