1. OpenSim 0.4

Werbung
OpenSim 0.4 – Installation, Präsentation
und Möglichkeiten
Christopher Mumme
Institut für Informatik
Research Group „Collaboration Systems and CSCW“
Clausthal-Zellerfeld, den 29.11.2007
(update: 30.11.2007)
Übersicht
1. OpenSim 0.4
1.1. Herunterladen von OpenSim 0.4
1.2. Starten des OpenSim 0.4 Standalone Servers
1.3. Grids
1.4. Der Grid-Mode
1.5. Mehrere (Sims) Regionen auf einem Server
1.6. Die OpenSim 0.4 Server-Konsole
2. Schwachstellen von OpenSim 0.4
3. Möglichkeiten mit OpenSim 0.4
Anhang
1. OpenSim 0.4
Open Source Variante eines Second Life Servers
Geschrieben in C#, aktuell im Alphastadium, Version 0.4
In relativ kurzer Zeit durch eine aktive Entwicklergemeinde
implementiert: http://opensimulator.org/wiki/Development_Team
Im IRC auf EFNet, Channel #OpenSim, trifft man täglich einige
dieser Entwickler, die gern bereit sind Fragen zu beantworten.
1.1 Herunterladen von OpenSim 0.4 (1)
Zuerst muss eine Version von OpenSim heruntergeladen werden:
http://opensimulator.org/wiki/OpenSim:Download
Es gibt zwei Möglichkeiten:
1. Herunterladen der „stabilen“ Version OpenSim 0.4 als C# Projekt.
Dieses Projekt anschließend kompilieren.
Es wird dazu Microsoft Visual C# Express Edition benötigt.
Anmerkungen:
-Diese Version ist ein als stabil empfundener Abschluss der OpenSim 0.3
Revisions.
-Standalone Server stürzt beim Start ab. Es müssen erst Einstellungen
der OpenSim.ini angepasst werden. Im „Anhang I – OpenSim.ini (stable
Version)“ befindet sich eine mögliche Konfiguration.
-Grid-Mode unter dieser Konfiguration nicht getestet.
1.1 Herunterladen von OpenSim 0.4 (2)
2. Herunterladen einer kompilierten und vermeidlich „instabilen“ Version.
Diese wird täglich aus dem aktuellen Quellcode
(svn co
http://opensimulator.org/svn/opensim/trunk) erstellt und muss nicht immer
stabil laufen: http://ruth.petitbe.be/build/
Anmerkungen:
-Die aktuellen Revisions enthalten Weiterentwicklungen, Verbesserungen
und neue Features und bereiten OpenSim auf die Version 0.5 vor.
-Diese Downloadmöglichkeit wird explizit als „very latest (and usually
unstable) source“ gekennzeichnet, da der Code ständig von
verschiedenen Entwicklern bearbeitet wird und Änderungen auch zu
(versteckten) Bugs führen können.
-Auf http://opensimulator.org/wiki/OpenSim:Testing werden Standalone und Grid-Mode aus aktuellen Revs. verglichen.
1.2 Starten des OpenSim 0.4 Standalone Servers (1)
OpenSim.exe aus dem bin-Ordner des OpenSim Verzeichnisses öffnen.
Es werden eine Reihe von Fragen zu Port, IP usw. gestellt, die alle mit
Enter durch Standardwerte belegt werden können. (Nur beim ersten
Start, IP = 127.0.0.1, Port 9000)
Bei einer aktuellen Rev. (Downloadmöglichkeit 2) fehlt die OpenSim.ini,
die in diesem Schritt angelegt wird. Der Grid-Mode kann nur mit der
OpenSim.ini gestartet werden!
http://opensimulator.org/wiki/OpenSim:Configuration
Verbinden mit dem OpenSim 0.4 Standalone Server:
Zu dem Server kann eine Verbindung mit Hilfe des offiziellen Linden Labs
SL Client verbunden werden.
In der Konsole den Second Life Client mit
„SecondLife -loginuri http://127.0.0.1:9000/“ starten.
1.2 Starten des OpenSim 0.4 Standalone Servers (2)
Datenverarbeitung des Standalone Servers (Stable Version):
-Daten werden je nach Einstellung der OpenSim.ini in einer SQLite
Datenbank (http://www.sqlite.org/) oder in einer DB4Objects Datenbank
(http://www.db4o.com) lokal gespeichert.
-User können über die Server Konsole angelegt werden.
-Inventar wird gespeichert. „Worn Items“ sind bei jedem Neustart
abgelegt, aber im Inventar zu finden.
-Jedes Item sollte in einem Ordner in „My Inventory“ abgelegt werden.
Ein Ordner „Scripte“ sollte also erstellt werden!
-Scripte können geschrieben, gespeichert, Prims zugewiesen und
ausgeführt werden.
-Prims werden dauerhaft gespeichert (In Landschaft und Inventar).
(vgl. http://opensimulator.org/wiki/OpenSim:Testing )
1.2 Starten des OpenSim 0.4 Standalone Servers (3)
Der SL Client nach dem Verbinden mit dem OpenSim 0.4 Standalone Server
1.3 Grids (1)
Was sind Grids?
Grids richten mehrere Sims in einem Gitternetz aus. Mehrere Sims
können miteinander zu einer großen Sim auf diese Weise
zusammengefasst werden.
Während der Standalone-Server nur lokal Regionen aufnehmen kann,
können im Grid-Mode auch Regionen von entfernten Rechnern
miteinander verbunden werden.
Vergleich zwischen Grid-Mode und Standalone Server:
http://opensimulator.org/wiki/OpenSim:Testing
1.3 Grids (2)
Öffentliche Grids:
Unter http://opensimulator.org/wiki/OpenSim:Grids kann eine Liste der
dauerhaft verfügbaren Grids eingesehen werden. User können eigene
Sims zu den GridServern verbinden.
Bsp.: OpenLifeGrid:
http://www.openlifegrid.com/ ist ein gutes Beispiel dafür, dass es ein
Second Life neben dem Second Life geben kann!
Ein „How to Register Guide“ ist hier zu finden:
http://www.openlifegrid.com/forums/Messages.aspx?ThreadID=5
1.4 Der Grid-Mode (1)
Grid-Mode starten (Revision 2496):
Userdaten und Prims einer Grid werden in einer SQL Datenbank
gespeichert, die erst angelegt werden muss:
Download einer SQL DB (im folgenden wird MySQL 5.0 verwendet):
http://dev.mysql.com/downloads/index.html
Installation einer SQL DB unter Windows:
http://nebula-rnd.com/articles/mysql1.htm
1.4 Der Grid-Mode (2)
Einrichten der SQL-DB für OpenSim 0.4:
(nach http://opensimulator.org/wiki/Mysql-config)
1.
Anlegen der Datenbanken:
Dazu den MySQL Command Line Client (oder einen anderen QueryBrowser) starten und die Querys aus „Anhang II – SQL Querys“
ausführen.
(auch zu finden auf
http://opensimulator.org/svn/opensim/trunk/share/sql/ )
2.
Anpassen der mysql_connection.ini (bin-Verzeichnis OpenSim):
database=opensim, username=root and password=
1.4 Der Grid-Mode (3)
3.
Folgende Zeilen der OpenSim.ini (bin-Verzeichnis OpenSim)
ergänzen oder ändern:
storage_plugin = OpenSim.DataStore.MonoSqlite.dll
storage_connection_string="URI=file:OpenSim.db,version=3"
4.
Starten der UGAS-Services (ebenfalls bin-Verzeichnis):
- OpenSim.Grid.UserServer.exe
- OpenSim.Grid.GridServer.exe
- OpenSim.Grid.AssetServer.exe
- OpenSim.Grid.InventoryServer.exe
- OpenSim.exe
Die Reihenfolge spielt dabei eine Rolle!
Im „Anhang III – Startup-Script“ ist ein Script zu finden, mit dem die
Services automatisch gestartet werden.
1.4 Der Grid-Mode (4)
5.
Anlegen eines Benutzers:
In der UserServer Konsole „create user“ eingeben und den
Anweisungen folgen. X und Y sollten jeweils auf 1000 gesetzt
werden.
6.
Starten des Servers:
OpenSim.exe -gridmode=true
7.
Starten des SL-Clients (Linden Labs):
secondlife -loginuri http://127.0.0.1:8002/
„With any luck, everything will come up without too many errors.“
1.4 Der Grid-Mode (5)
Start im Grid-Mode
1.5 Mehrere Regionen (Sims) auf einem Server (1)
Die Größe einer Sim ist beschränkt. Will man darüber hinaus bauen,
müssen weitere Sims erstellt werden:
Im bin-Verzeichnis befindet sich der Ordner „Regions“.
In diesem wiederum die default.xml, die Welt, die beim ersten Start des
OpenSim Servers erstellt wird.
Für jede Sim wird ein eigenes xml-File benötigt. (Es reicht die default.xml zu
kopieren und anzupassen (nächste Folie))
Alle Regionen müssen im Ordner „Regions“
abgelegt sein und werden beim Start des GridServices automatisch gefunden.
Quelle:
http://opensimulator.org/wiki/OpenSim:Configurat
ion#Technical_Addendum
Karte mit zwei Grids
1.5 Mehrere Regionen (Sims) auf einem Server (2)
Inhalt der default.xml:
<Root>
<Config sim_UUID="c9bccd3e897d4f7d921d723583ddfd65"
sim_name="OpenSim Test" sim_location_x="1000"
sim_location_y="1000" internal_ip_address="0.0.0.0"
internal_ip_port="9000" external_host_name="127.0.0.1"
master_avatar_uuid="00000000000000000000000000000000"
master_avatar_first="Test" master_avatar_last="User"
master_avatar_pass="test" />
</Root>
Die Werte der folgenden Tags müssen für jede Sim (regionxyz.xml) jeweils
neu gewählt werden:
sim_name, sim_UUID, sim_location_x oder sim_location_y, internal_ip_port
Nebeneinander liegende Regionen:
sim_location_x=1000 sim_location_y=1000
und sim_location_x=1000 sim_location_y=1001
1.6 Die OpenSim 0.4 Server-Konsole
Mit der Server-Konsole kann der Server (ein wenig) verwaltet werden.
Unter anderem können mit dem Befehl „show users“ Informationen über
die Clients ausgelesen werden.
Alle Befehle: http://opensimulator.org/wiki/OpenSim:Running
Neustart des Servers:
Vor dem Beenden des Servers müssen Änderungen der Landschaft
separat gespeichert werden. Das erfolgt ebenfalls in der Server-Konsole
mit dem Befehl:
save-xml [filename]
Analog dazu können die Landschaftsdaten auch wieder ausgelesen
werden:
load-xml [filename]
2. Schwachstellen
OpenSim befindet sich noch in einer recht jungen Entwicklungsphase, in
der die Grundfunktionalität gewährleistet werden soll.
So ist die größte Schwachstelle im Grid-Mode in der Version 0.4 der nicht
funktionierende Inventory-Service.
Das bedeutet, dass alle Gegenstände des Inventars nach jedem Neustart
des SL-Clients verloren sind. Es können also lediglich Prims der Sim
gespeichert werden.
Auch das Scripting (LSL) ist im Grid-Mode noch nicht möglich.
Weiter sind keine auffälligen Schwachstellen wirklich nennenswert.
Bei Problemen liefert die OpenSim FAQ
(http://opensimulator.org/wiki/FAQ) oft auch antworten!
3. Neue Möglichkeiten (1)
Bisheriger Stand:
Ohne einen simulierten Second Life Server war es bisher nur möglich in
Second Life selbst zu entwickeln, die Second Life Api´s zu nutzen und
den Open Source Second Life Client zu bearbeiten.
Die Sims lassen sich durch Objekte (Prims) und Scripte beeinflussen.
Jedoch: Second Life wird von Linden Labs kommerziell betrieben. Die
(volle) Kontrolle über die Sims (Server), obliegt Linden Labs. Das
Hochladen von Texturen kostet echtes Geld.
Neuer Stand:
Mit dem OpenSim 0.4 Server kann nun auch direkt Einfluss auf die Sims
genommen werden.
OpenSim ist ein C# Open Source Projekt!
3. Neue Möglichkeiten (2)
Keine Kosten mehr:
Das Hochladen von Texturen nimmt
keinen Einfluss auf die eigenen
Linden $.
Linden $ spielen keine Rolle mehr!
3. Neue Möglichkeiten (2)
Durch das Verwenden des originalen SL Clients (Linden Labs) können
dessen Funktionen verwendet werden. Ein Großteil davon ist in OpenSim
0.4 implementiert.
Vielen Dank für Ihre Aufmerksamkeit!
Anhang I (1) – OpenSim.ini (stable Version)
[Startup]
gridmode = false
physics = basicphysics
; Prim Storage
; if you would like to use sqlite uncomment the following line (and
; comment the NullStorage line)
storage_plugin = "OpenSim.DataStore.MonoSqlite.dll"
;storage_plugin = "OpenSim.DataStore.NullStorage.dll"
startup_console_commands_file = "startup_commands.txt"
serverside_object_permissions = false
; asset_database = "db4o"
; to try sqlite as the asset database , comment out the above line, and
uncomment following one
asset_database = "sqlite"
Anhang I (2) – OpenSim.ini (stable Version)
[StandAlone]
accounts_authenticate = true
welcome_message = "Welcome to OpenSim"
inventory_plugin = "OpenSim.Framework.Data.SQLite.dll"
;inventory_plugin = "OpenSim.Framework.Data.DB4o.dll"
;userDatabase_plugin = "OpenSim.Framework.Data.DB4o.dll"
userDatabase_plugin = "OpenSim.Framework.Data.SQLite.dll"
default_location_x = 1000
default_location_y = 1000
Anhang I (3) – OpenSim.ini (stable Version)
[Network]
http_listener_port = 9000
remoting_listener_port = 8895
grid_server_url = "http://127.0.0.1:8001"
grid_send_key = "null"
grid_recv_key = "null"
Anhang II (1) – SQL Querys
(1.) create database opensim;
(2.) use opensim;
(3.) CREATE TABLE 'agents' (
'UUID' varchar(36) NOT NULL,
'sessionID' varchar(36) NOT NULL,
'secureSessionID' varchar(36) NOT NULL,
'agentIP' varchar(16) NOT NULL,
'agentPort' int(11) NOT NULL,
'agentOnline' tinyint(4) NOT NULL,
'loginTime' int(11) NOT NULL,
'logoutTime' int(11) NOT NULL,
'currentRegion' varchar(36) NOT NULL,
'currentHandle' bigint(20) unsigned NOT NULL,
'currentPos' varchar(64) NOT NULL,
PRIMARY KEY ('UUID'),
UNIQUE KEY 'session' ('sessionID'),
UNIQUE KEY 'ssession' ('secureSessionID') )
ENGINE=MyISAM DEFAULT CHARSET=utf8;
Anhang II (2) – SQL Querys
(4.) CREATE TABLE 'logs' (
'logID' int(10) unsigned NOT NULL auto_increment,
'target' varchar(36) default NULL,
'server' varchar(64) default NULL,
'method' varchar(64) default NULL,
'arguments' varchar(255) default NULL,
'priority' int(11) default NULL,
'message' text, PRIMARY KEY ('logID') )
ENGINE=InnoDB DEFAULT CHARSET=utf8
Anhang II (3) – SQL Querys
(5.) CREATE TABLE 'reservations' (
'resID' int(10) unsigned NOT NULL auto_increment,
'userUUID' varchar(36) default NULL,
'gridSendKey' varchar(64) default NULL,
'gridRecvKey' varchar(64) default NULL,
'resName' varchar(255) default NULL,
'resCompany' varchar(128) default NULL,
'resXMin' int(10) unsigned default NULL,
'resXMax' int(10) unsigned default NULL,
'resYMin' int(10) unsigned default NULL,
'resYMax' int(10) unsigned default NULL,
'status' int(10) unsigned default NULL,
PRIMARY KEY ('resID'),
KEY 'resident' ('userUUID'),
KEY 'coords' ('resXMin','resXMax','resYMin','resYMax') )
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=32
;
Anhang II (4) – SQL Querys
(6.) CREATE TABLE 'users' (
'UUID' varchar(36) NOT NULL default '',
'username' varchar(32) NOT NULL, 'lastname' varchar(32) NOT NULL,
'passwordHash' varchar(32) NOT NULL, 'passwordSalt' varchar(32) NOT NULL,
'homeRegion' bigint(20) unsigned default NULL,
'homeLocationX' float default NULL, 'homeLocationY' float default NULL,
'homeLocationZ' float default NULL, 'homeLookAtX' float default NULL,
'homeLookAtY' float default NULL, 'homeLookAtZ' float default NULL, 'created'
int(11) NOT NULL, 'lastLogin' int(11) NOT NULL, 'userInventoryURI' varchar(255)
default NULL,
'userAssetURI' varchar(255) default NULL,
'profileCanDoMask' int(10) unsigned default NULL,
'profileWantDoMask' int(10) unsigned default NULL,
'profileAboutText' text, 'profileFirstText' text,
'profileImage' varchar(36) default NULL,
'profileFirstImage' varchar(36) default NULL,
PRIMARY KEY ('UUID'), UNIQUE KEY 'usernames' ('username','lastname') )
ENGINE=MyISAM DEFAULT CHARSET=utf8;
Anhang II (5) – SQL Querys
(7.) CREATE TABLE 'regions' ( 'uuid' varchar(36) NOT NULL, 'regionHandle' bigint(20)
unsigned NOT NULL, 'regionName' varchar(32) default NULL, 'regionRecvKey'
varchar(128) default NULL, 'regionSendKey' varchar(128) default NULL, 'regionSecret'
varchar(128) default NULL, 'regionDataURI' varchar(255) default NULL, 'serverIP'
varchar(64) default NULL, 'serverPort' int(10) unsigned default NULL, 'serverURI'
varchar(255) default NULL, 'locX' int(10) unsigned default NULL, 'locY' int(10)
unsigned default NULL, 'locZ' int(10) unsigned default NULL, 'eastOverrideHandle'
bigint(20) unsigned default NULL, 'westOverrideHandle' bigint(20) unsigned default
NULL, 'southOverrideHandle' bigint(20) unsigned default NULL, 'northOverrideHandle'
bigint(20) unsigned default NULL, 'regionAssetURI' varchar(255) default NULL,
'regionAssetRecvKey' varchar(128) default NULL, 'regionAssetSendKey' varchar(128)
default NULL, 'regionUserURI' varchar(255) default NULL, 'regionUserRecvKey'
varchar(128) default NULL, 'regionUserSendKey' varchar(128) default NULL,
'regionMapTexture' varchar(36) default NULL, 'serverHttpPort' int(10) default NULL,
'serverRemotingPort' int(10) default NULL, PRIMARY KEY ('uuid'), KEY 'regionName'
('regionName'), KEY 'regionHandle' ('regionHandle'), KEY 'overrideHandles'
('eastOverrideHandle','westOverrideHandle','southOverrideHandle','northOverrideHand
le') ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED ;
Anhang II (6) – SQL Querys
(8.) CREATE TABLE 'inventoryitems' (
'inventoryID' varchar(36) NOT NULL default '',
'assetID' varchar(36) default NULL,
'type' int(11) default NULL,
'parentFolderID' varchar(36) default NULL,
'avatarID' varchar(36) default NULL,
'inventoryName' varchar(64) default NULL,
'inventoryDescription' varchar(64) default NULL,
'inventoryNextPermissions' int(10) unsigned default NULL,
'inventoryCurrentPermissions' int(10) unsigned default NULL,
PRIMARY KEY ('inventoryID'),
KEY 'owner' ('avatarID'),
KEY 'folder' ('parentFolderID'))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
Anhang II (7) – SQL Querys
(9.) CREATE TABLE 'inventoryfolders' (
'folderID' varchar(36) NOT NULL default ",
'agentID' varchar(36) default NULL,
'parentFolderID' varchar(36) default NULL,
'folderName' varchar(64) default NULL,
PRIMARY KEY ('folderID'),
KEY 'owner' ('agentID'),
KEY 'parent' ('parentFolderID'))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
Anhang III – Startup-Script
Mit dem folgenden Script können die UGAS Services bequemer gestartet
werden:
(vgl.: http://opensimulator.org/wiki/OpenSim:Configuration)
Herunterladen