# OpenSimulator

OpenSimulator (kurz OpenSim) ist eine quelloffene Server-Plattform für virtuelle Welten. Mithilfe eines Clients (sogenannte Viewer) können auf einem Server gelegene Regionen betrachtet und bearbeitet werden. Dabei ist es möglich, dass mehrere Nutzer sich zur selben Zeit am selben virtuellen Ort befinden und miteinander interagieren.
Ziel des Projektes ist es, eine Software zum Betreiben virtueller Welten zu schaffen, die frei verwendet werden darf. Die BSD-Lizenz erlaubt es, den Code beliebig abzuwandeln und auch für kommerzielle Zwecke zu verwenden. Gleichzeitig stellt das Projekt eine neue Basis zum sogenannten Web3D dar.

## Funktionen

OpenSimulator wurde in der Programmiersprache C# geschrieben, ist sowohl mit der .NET als auch der Mono Laufzeitumgebung kompatibel und daher plattformunabhängig ausführbar. Die Software ermöglicht es, mittels Modulen, die Funktionalität wesentlich zu erweitern, was eine Anpassung an die individuellen Ansprüche eines Serverbetreibers erlaubt.
Der Server verwaltet alle zum Betrieb erforderlichen Daten und stellt sie den Nutzern zur Verfügung. Hierbei handelt es sich um Daten zum virtuellen Land, Benutzerkonten, Chats, Gruppen und zu den von den Nutzern erstellten Inhalten (Gebäude, Kleidung, Skripte, Texturen usw.). Es werden verschiedene existierende Datenbanken unterstützt, dazu zählen SQLite, MySQL, MariaDB und Microsoft SQL Server.
Mittels Skripten erlaubt OpenSimulator die In-World-Programmierung virtueller intelligenter Objekte, welche mit Nutzern und der Umgebung interagieren können. Die Skriptsprache Linden Scripting Language (LSL) wurde weitestgehend von Second Life übernommen. Sie wurde aber um weitere, von der Community gewünschte Funktionen zur Skriptsprache OSSL (OpenSimulator Scripting Language) ergänzt.

### Hypergrid

Analog zu den Hyperlinks des World Wide Web erlauben es Hypergrid-Teleports, einem Nutzer zwischen verschiedenen Grids zu navigieren. Es besteht auch die Möglichkeit, mittels direkter Adresseingabe zu navigieren, was es erlaubt, Verzeichnisse von besuchbaren Orten zu führen. Dabei wird das Inventar des Nutzers vom Ursprungsgrid zum besuchten Grid kopiert, was einen nahtlosen Übergang ermöglicht. Gleichzeitig kann ein Nutzer auch neue Objekte sammeln und wieder mitnehmen. Um zu vermeiden, dass ein bösartiges Grid die digitalen Objekte eines Nutzers stiehlt, wird ab Version 2.0 des Hypergrids nur noch ein spezieller Ordner – eine Art virtueller Reisekoffer – namens „My Suitcase“ übertragen und der Nutzer kann während seines Aufenthaltes auf keinen anderen Ordner zugreifen. Es steht Gridbetreibern aber offen, eine ältere Version des Hypergrids, ohne diesen Schutz zu verwenden.

### Betriebsarten

OpenSimulator bietet zwei wesentliche Betriebsarten:
* Im Standalone-Modus werden alle Aufgaben (Region, Anmeldung, Datenhaltung) von einem einzigen Prozess verwaltet. Dieser Modus eignet sich besonders für Entwickler oder für die Nutzung auf einem einzelnen Server.
* Der Grid-Modus hingegen ist für den Betrieb größerer virtueller Welten konzipiert, die eine höhere serverseitige Leistung erfordern. Die Aufgaben werden auf spezialisierte Serverprozesse aufgeteilt. Über die sogenannte „Robust-Konsole“ werden die einzelnen Server verbunden und die Verwaltung zentralisiert.
Beide Modi lassen sich mit oder ohne Hypergrid-Unterstützung betreiben.

## Versionen

OpenSimulator befindet sich derzeit noch im Alpha-Stadium. Stabile Versionen werden meist halbjährlich freigegeben.
Es existieren verschiedene Distributionen, um verschiedene Anwendungszwecke zu erleichtern:
* OSgrid OpenSimulator basiert auf einer aktuellen Entwickler-Version und ist bereits so vorkonfiguriert, dass das eigene Grid an das flächenmäßig derzeit größte Grid, OSgrid, angeschlossen wird.
* Diva-Distro ist eine speziell für den Standalone-Modus angepasste Version, die vor allem die Bedienung erleichtern soll. Eine Weboberfläche, die sogenannte Diva Wifi, soll das Erstellen eines Webservers erleichtern.
* Sim on a Stick ist ein vollständig vorkonfigurierter OpenSimulator-Server, der sich direkt von einem USB-Stick ausführen lässt. Mit dabei ist eine MySQL-Datenbank und ein Apache-Webserver mit PHP-Unterstützung.

## Protokolle

OpenSimulator benutzt als Standard das Second Life-Protokoll, welches durch Linden Lab entwickelt wurde. Allerdings ist OpenSimulator multiprotokollfähig und im März 2009 wurde als erste Erweiterung das Metaverse Exchange Protocol (MXP) eingeführt. MXP ist ein Client-Server-Protokoll der zweiten Generation. Intern benutzt OpenSimulator XML-RPC und REST (JSON/HTTP und XML/HTTP).

## Inhalte

Zum Erstellen von Objekten setzt OpenSimulator, ähnlich wie Second Life, auf Primitives, Sculpted Objects und Mesh:
* Primitives (kurz Prims) sind geometrische Grundbausteine, die sich anhand mehrerer Parameter verformen lassen. Sie werden mit einem internen Werkzeug im Viewer erstellt und bearbeitet. Da dies sehr intuitiv ist, können schnell auch ansehnliche Ergebnisse erzielt werden.
* Sculpted Objects (kurz Sculpties) sind Objekte, deren Geometrie durch eine UV-Map beschrieben wird. Die Intensität der Farben Rot, Blau und Grün definieren dabei den Abstand der Oberfläche vom Objekt-Mittelpunkt. Ideal sind Sculpties bei Objekten mit natürlichen Rundungen, wie z. B. bei einem Delphin. Erstellt werden Sculpties meistens mit externen Programmen. Verwendet werden Sculpties kaum noch, da Mesh in den meisten Fällen performanter bzgl. Datenübertragung und Rendering ist.
* Mesh lassen sich mit Hilfe von 3D-Grafiksoftware erstellen und im Collada-Format (.dae) mit dem Viewer hochladen und „in-world“ weiter bearbeiten. Beim Erstellen sind eine Reihe technischer Faktoren zu berücksichtigen, so dass die Einarbeitungszeit recht hoch ist. Dafür erlaubt Mesh das höchste Maß an gestalterischer Freiheit – so können die Objekte weit mehr Details erhalten, man hat volle Kontrolle über die Detailstufen (Level of Detail/LOD) und Texturen lassen sich exakt auf die Oberfläche mappen.

## Viewer

Zum Betreten und Betrachten einer virtuellen Welt wird ein Client benötigt, der Viewer genannt wird. Unterstützt werden bei OpenSimulator diverse Viewer, die allesamt auf dem offiziellen Second-Life-Viewer basieren, dessen Quellcode seitens Linden Lab unter die GPL gestellt wurde.
Viewer-Clients:
* Alchemy Viewer
* Cool VL Viewer
* Kokua Viewer
* Firestorm Viewer
* Singularity Viewer