Opensim: SQLite vs. MySQL

Eines der Themen, das bei der Benutzung von Opensimulator immer und immer wieder auftritt, ist die Frage nach der Datenbank: soll man nun SQLite oder MySQL für seine Installation nutzen? Die Gründe für die Wahl sind nicht immer für jeden verständlich, dabei ist es wenn man es aufdröselt recht simpel.

Zunächst einmal zur Grundlage: beides sind Datenbanken und damit fähig, die von Opensimulator benötigten Daten zu speichern und zur Verfügung zu stellen. Allerdings gibt es zwischen beiden Ansätzen einige Unterschiede. Beide Produkte sind stabil und reif genug für den Produktiveinsatz in ihren jeweiligen Einsatzgebieten, also man holt sich damit keine Bananensoftware ins Haus.

SQLite ist eine sog. embeddable Database Engine, das bedeutet es handelt sich dabei um eine kleine Programmbibliothek in C geschrieben, die man in Programme einbetten kann und dann da direkt Datenbankfunktionen zur Verfügung stellt. Da die Engine direkt im Programm abläuft, entfällt sehr viel an Overhead und SQLite ist da in seinen Anwendungsgebieten natürlich rasend schnell. Der Vorteil an SQLite ist, dass ein Programm es out of the box mitbringen kann und man muss wirklich Null administrieren, es funktioniert einfach. Aufgrund seiner Zielsetzung ist SQLite auf das schnelle Verarbeiten von Reads aus der Datenbank optimiert worden. Solange es darum geht, viel aus einer Datenbank zu lesen, ist es die erste Wahl. Ein Problem dagegen stellen die Writes dar, wenn man also etwas in die Datenbank schreiben will. Da kann nämlich SQLite nur einen zur selben Zeit bearbeiten und arbeitet zudem mit einem globalen Lock, sprich in der Zeit werden keine andere Transaktionen durchgeführt. Die Datenbank selber ist bei SQlite eine einzige Datei, die man problemlos kopieren kann.

MySQL dagegen ist ein ausgewachsenes Datenbanksystem, das viel mehr Funktionen als SQLite bietet. Es könnte zwar auch embedded laufen, aber in den meisten Programmen wird das wegen der Größe nicht so realisiert. Da es um einiges komplexer als SQLite ist, bedeutet es zunächst erst einmal einigen Aufwand das System so einzurichten, bis es läuft. Ist es aber erst einmal installiert und am Laufen, dann kann das System sehr gut skalieren und vor allem ist es bei der Abarbeitung der Writes dann SQLite überlegen. Wenn dann natürlich MySQL mal nicht laufen sollte, funktioniert die Sim sicher auch nicht mehr richtig.

Als Fazit kann man grob sagen: wer nur mal eben so eine Opensim für sich aufsetzen will, dem wird SQlite ziemlich sicher ausreichen und es funktioniert einfach. Fährt man aber dann ein größeres Setup wird es interessant, MySQL aufzusetzen. Läuft MySQL natürlich sowieso schon auf dem Rechner, spricht auch nichts dagegen, es gleich zu nutzen. Für Opensim-on-a-stick wiederum ist SQLite die erste Wahl. Wer seine Sim in ein bestehendes Grid reinhängt, dem reicht wiederum SQLite auch allemal aus, da sich die Writes dann doch stark in Grenzen halten (z.B. Terrainänderungen und dergleichen).

Über gutes Gamedesign

Ich habe in den letzten paar Wochen recht intensiv das nun frei verfügbare Team Fortress 2 von Valve gespielt. TF2 ist ein teambasiertes Onlinespiel, in dem immer zwei Teams gegeneinander antreten und eine Aufgabe lösen müssen, sei es das Erobern von Kontrollpunkten, eine Fracht von A nach B zu bringen oder Capture the Flag. Wichtig bei solchen Spielen ist immer, damit sie nicht zu langweilig werden, eine gut ausbalancierte Spielbalance.

Bei TF2 selber gibt es grob zuerst einmal drei Klassen: Angriff, Verteidigung und Unterstützungsklasse. Dem Angriff gehört der schnelle Scout, der raketenwerfende Soldier und der Feuerteufel Pyro an, der Verteidigung der bombenwerfende Demoman, Sentry-Guns bauende Engineer und der Damage-Dealer-Tank Heavy mit seinen Megawummen an, den Support stellen der alles heilende Medic mit seiner Medigun, der Sniper mit seinem Scharfschützengewehr sowie als Sonderrolle der Spion, der sich als Gegner tarnen kann und hinter den feindlichen Linie ordentlich für Verwirrung sorgen kann.

Eine der wichtigen Grundregeln des Gamedesigns, die hier gut umgesetzt wurde, ist, dass keine Klasse alleine zu übermächtig sein darf, sondern man nur wirklich im Team gewinnen kann. Das bedeutet, jede Klasse für sich hat schon mal eine unterschiedliche Ausstattung an Gesundheit. Dabei gilt die Faustregel, je schneller sich die Klasse fortbewegen kann, desto weniger Gesundheit, je mehr Gesundheit, desto langsamer die Klasse in ihrer Bewegung. Ähnliches gilt dabei für die Waffen: Waffen brauchen Munition, sie feuern nicht selber unendlich, sondern es braucht dazu ab und an auch Nachladezeiten und die Magazingrößen variieren. All das sorgt für ein recht ausgeglichenes Spiel, wobei auch darauf geachtet wurde, dass Klassen mit Fernwirkung im Nahkampf eher schlecht sind und umgekehrt Klassen wie der Heavy, die im Nahkampf auftrumpfen, durch ihre langsame Geschwindigkeit und breite Streuung der Gatling-Guns in der Ferne keine Wirkung erzielen können. Auch gilt, das Waffen mit Fernwirkung im Nahkampf kaum sinnvoll sind und umgekehrt.

Gutes Gamedesign ist dabei ein stetiger Prozess, einerseits sollen die Klassen natürlich ihre Eigenheiten behalten, andererseits darf keine Klasse alleine zu übermächtig werden und auch keine Waffe. Wenn zum Beispiel eine Waffe mehr Schaden erzielt als die Standardwaffe, dann bekommt sie bei Valve auch einige Mali verpasst, wie kleiner Magazingröße, geringerer Splashradius und ähnliches, damit sich das immer die Waage hält. So kann der Sniper zum Beispiel aus der Ferne mit einem Kopfschuss seines Gewehrs einen Mann direkt töten, allerdings dauert es zehn Sekunden bis das Gewehr seine Höchsteffizienz erlangt und man sieht am anderen Ende einen Laserpunkt wandern, auf den man achten kann – ist also gewarnt. Nimmt der Sniper dagegen seinen Huntsman, einen Bogen, wird er beweglicher, aber wenn er damit zielt, bewegt er sich auch kaum noch.

Es gibt also klar voneinander unterscheidbare Rollen, wobei es aufs Teamplay ankommt, um zu gewinnen und je nach Einsatzort auch verschiedene Waffen.

Betrachtet man sich dagegen mal das Gorean Meter mit seinen Waffen, dann werden starke Unterschiede klar. Wichtig ist dabei, dass das GM für Second Life als praktikabel und erprobt anzusehen ist, aber es folgt dem obersten Prinzip der Lagvermeidung. Daher kümmert es sich nicht wirklich um gutes Gamedesign.

Das beginnt natürlich mit der Dominanz der Bögen über die Nahkampfwaffen – ein Unding. Dazu kommt, das wer einen Bogen spannt, auch langsamer gehen sollte und nur einen begrenzten Vorrat ein Pfeilen mit sich herumtragen dürfte. Solche Systeme gab es schon, wie von Andera Shermer damals der realistic Bow, auf breiter Front durchsetzen konnten sie sich nie. Die Nahkampfwaffen wiederum erlauben zwar eine gewisse Differenzierung, wer Zweihandwaffen führt schlägt langsamer zu aber hat eine größere Reichweite, nur wirklich durchgreifend ist die auch nicht. Ebenso fehlen Rollen, ein Krieger nunmal wird mehr Schlagkraft und Gesundheit haben als ein normaler Schreiberling oder eine freie Frau.

Kurz und gut, Kampf mit GM ist zwar an und für sich ganz nett, aber wirklich richtig toll ist er auch nicht. Er stellt das bestmöglich machbare in SL dar, komplexere Systeme wie das Metalife Meter oder GLM haben sich auf breiter Front nie richtig durchgesetzt, aber in Sachen Gamedesign ist man andersorts viel weiter.

Meshes und das Viewer-Ökosystem

Die jetzt verfügbaren Meshes sind ja eines der Killerfeatures, die Linden Lab schon lange versprochen hat und nun endlich verfügbar sind. Sie kamen wahrlich nicht über Nacht, es gab lange Zeit eine geschlossene Beta mit ausgewählten Designern und auch mindestens sechs Monate lang eine offene Beta, an der jeder teilnehmen konnte, der wollte. Viele Designer waren da auch fleißig, sammelten im Betagrid reichlich Erfahrungen, so dass sie nun ihre bereits damals erstellten Objekte einfach im Maingrid einführen können, um damit zu arbeiten. Sicherlich ist es zuerst noch eine Sache für die sog. Early Adopters, aber es wird nicht lange dauern, bis sie sich auf breiter Front durchgesetzt haben werden und die kaufbaren Meshes eine ähnliche Qualität erreicht haben werden wie bereits jetzt die Sculpties. Die Vorteile sind einfach zu groß, einfachere Erstellung der Objekte in Blender/Maya/Sketchup/…, dazu wenn man es richtig macht sind sie noch für die Grafikkarte einfacher darzustellen, da man die Anzahl der Polygone hinreichend gut optimieren kann, und und und… kurz, ein Werkzeug nicht nur für Professionelle, aber gerade auch für diese. Die Geschwindigkeit allerdings, mit der sie dann letzten Endes doch kamen, war flotter als erwartet. Rodvik Linden kehrt wohl ganz gut bei Linden Lab und gibt den Leuten die richtigen Arschtritte, damit sie in die Gänge kommen, was kein Nachteil ist.

Nun ist es aber so, dass zur Darstellung der Meshes und damit man in den Genuss derselben kommt, der Viewer diese darstellen können muss und damit fangen dann für die Benutzer die Probleme an. Momentan gibt es genau drei Viewer, die das nämlich können: der Standardviewer von Linden Lab ab Version 3.0, der Snowstorm-Viewer von Linden Lab sowie der aktuelle Kirstens Viewer. Der Rest wird die Meshes zwar von den Daten her auch empfangen können, aber er sieht dann nur Basisprims und nicht die gesamte Pracht. Es wird also durchaus Situationen geben wie „Guck mal, Leo, meine neue, tolle Meshjeans!“ und der guckt und meint: „Was sollen denn da die Pyramiden?“ Das wird kommen.

Meshes treiben also einen Graben in die Viewerwelt, es gibt die Viewer, die sie darstellen können und die Viewer, die es bisher nicht können. Die Viewer, die es können, basieren auf der 2.xer-Codebasis von Linden Lab, weil nur in dieser Linden Lab selber die Meshfunktionalität eingebaut hat. Das bedeutet, dass der Phoenix Viewer, Imprudence, Cool Viewer, Singularity usw. mit Meshes null komma gar nichts anfangen können. Der in der Entwicklung befindliche Phoenix Firestorm soll in einer späteren Version mit Meshes arbeiten können, aber noch sind die entsprechenden Funktionen nicht eingebaut und stehen bisher nicht zur Verfügung. Der Zeitrahmen, den es dauert, bis das soweit ist, wurde von offizieller Seite aus mit „einige Wochen“ bezeichnet. Entgegen bisheriger Befürchtungen wurden die Viewer mit der 1.xer-Codebasis von Linden Lab bisher nicht „abgeschaltet“, aber der Drang sie nun aufzugeben wird bei einigen durch Meshes doch sicher groß.

Damit ist klar, wer Meshes sehen will, der braucht entweder Kirstens Viewer oder den Linden Viewer, daran führt bisher kein Weg dran vorbei. Allerdings gibt es für die Fans der 1.xer-Viewer etwas Hoffnung, denn der Macher vom Cool Viewer – Henri Beauchamp – arbeitet schon nach eigenen Aussagen seit Wochen daran, Meshes auf die alte Viewercodebasis zu portieren, aber das ist eine größere Baustelle und eben dann fertig, wenn es fertig ist. Auch Siana Gearz vom Singularity Viewer schrieb Mitte Juli, dass sie Meshes zur Verfügung haben werden, aber das auch ein wenig dauern würde und sie dafür 120.000 Zeilen Code innerhalb von sechs Monaten umgeschrieben hätten. So oder so, sobald einer dieser Viewer Mesh haben wird, ist es wahrscheinlich, dass die Implementierung auch den Weg in andere 1.xer-Viewer finden wird, bis es aber soweit ist, wird wohl noch einige Zeit vergehen.

Endlich: Meshes sind auf dem Maingrid angekommen!

Was lange währt, wird endlich gut – oder so ähnlich: jedenfalls sind seit einigen Tagen Meshes auf dem Maingrid angekommen und jeder, der will, kann von nun an damit bauen. Damit man Meshes hochladen kann, muss im SL-Konto eine Zahlungsinformation hinterlegt sein (Payment Info) und man muss einen kleinen Quiz von zehn Fragen auf Englisch absolvieren, der einen Crashkurs in Sachen Urheberrecht darstellt. Keine Angst, das geht in unter fünf Minuten und Linden Lab gibt genügend Hilfestellung, den nicht zu bestehen ist unmöglich.

Danach kann man also, einen aktuellen Viewer 3 oder Kirstens Viewer vorausgesetzt, Meshes nach Second Life hoch laden und/oder selber nutzen. Die Benutzer von Phoenix, Firestorm Beta, Imprudence, Cool Viewer und was es sonst noch so alles gibt, schauen dabei momentan in die Röhre, sie sehen die Meshes nur bestenfalls als komische Dreiecke, mehr auch nicht. Hoch laden ist mit den Viewern bisher auch nicht möglich.

Meshes selber werden nun zweierlei bewirken: erstens eine neue Qualität im Bau von Kleidern, Gebäuden und dergleichen mehr, zweitens mal wieder das übliche Gejammere, das sich die Hobbyisten von den Profis aus SL hinaus gedrängt fühlen. Mag sein, muss aber so nicht kommen, und sicherlich werden viele nun anfangen, 3d-Modelle aus den bekannten Datenbanken wie Google Warehouse nach SL zu importieren.

Mit Meshes zum Beispiel kann man endlich Avatarkleidung bauen, wo es keine sichtbaren Nahtstellen mehr gibt zwischen Avatar und Prim. Sehr schön. Ebenso leistet die Schattenfunktion vom Viewer bei Meshes auch eine genaue Schattenberechnung an Klamotten, was sie bei sonstigen Kleidern nicht tut. Sweet!

Wichtig ist eben, dass wie bei Sculpties auch der eigentliche Bau außerhalb von SL stattfindet. Das Hochladen eines Meshes kostet je nach Komplexität des Konstrukts. Die Faustregel dabei ist, je komplexer das Gebilde, desto höher und je komplexer die Physikhülle, die ich brauche, ebenso. Ein Mesh wird dabei nach irgendeiner obskuren Formel letztendlich in eine Anzahl an Primäquivalenten umgerechnet (PE auf Englisch abgekürzt), sprich wenn man es rezzed, dann nimmt es diese Anzahl an Prims auf der Parzelle ein.

Ungewöhnlich und sicher bei manchen Kunden dann Grund für Ärger ist, dass das Vergrößern eines Meshs automatisch die Anzahl an PEs vergrößert. Das wird längst nicht nur für Freude sorgen. Mit der Einführung von Meshes wurde zugleich die Maximalgröße für erstellbare Prims auf 64x64x64 m angehoben. Nifty!

Was wir jetzt erleben werden, ist eine Spaltung in der Viewernutzung. Wer Meshes nutzen und sehen will, der ist darauf angewiesen, den Linden Viewer oder von Kirsten zu benutzen, der Rest schaut in die Röhre. Außerdem kann es zu komischen Situationen kommen, wenn man Meshattachments trägt und der Rest sieht sie nicht richtig.

Auf Dauer werden sie sich sicherlich durchsetzen und bleiben, irgendwann wird man sie so selbstverständlich nutzen wie Sculpties, und das wird sehr schnell geschehen. Wenn denn Firestorm Mesh eingebaut haben wird, wird der Viewer die neue Nummer Eins bei den alternativen Viewern werden, da bin ich mir sicher.

 

Änderungen an der Blogroll

Und es wird wieder mal Zeit, die Blogroll zu aktualisieren.

Weggefallen ist:

  • Kajirarolls, das momentan nur noch einem geladenen Publikum zur Verfügung steht und somit für die Mehrheit nicht mehr lesbar ist.

Neu hinzugekommen sind: