
Performance
Vorwort
Viele sprechen in Second life sehr schnell von LAG, wenn die Performance mal zu wuenschen uebrig laesst. Streng genommen ist das richtig, denn LAG bedeutet Verzoegerung und betrifft jedes Datenpaket welches uebertragen werden muss. Zu 95% sind die Ursachen jedoch in den eigenen Viewer-Einstellungen zu finden, weil die User mehr Leistung erwarten, als ihre Hardware zu leisten vermag. Lediglich ein geringer Anteil von etwa 5% ist eindeutig auf das Second Life Netzwerk zurueck zu fuehren. Darum ist es empfehlenswert bei eventuellen Problemen einen Blick in den Second Life Grid Status zu werfen.
In den folgenden Beispielen unterscheide ich zwischen Konsument & Ersteller und moechte auf die verfuegbaren Optionen hinweisen, um ein bestmoegliches Ergebnis zu erzielen. Es macht auch absolut keinen Sinn fixe Werte zu empfehlen, da die Hardware- & Software-Voraussetzungen des Rechners jedes einzelnen Users individuell zu bewerten sind.
Konsument ist im Grunde jeder User, der sich in Second Life aufhaelt. Als Konsument stehen dir hauptsaechlich jene Optionen zur verfuegung, deine eigene Performance zu optimieren.
Sichtweite | LOD | Cache | Complexity | Platzhalter | Platzhalter
Mit Ersteller bezeichne ich jeden, der in irgend einer Form Content fuer Second Life erstellt und bereit stellt. Als Ersteller traegt man eine gewisse Verantwortung allen anderen Usern gegenueber, LAG zu vermeiden.
LOD (CC) | Textur (CC) | Platzhalter | Platzhalter | Platzhalter | Platzhalter
Konsument
Sichtweite
Die Sichtweite ist mein absoluter Favorit und die haeufigste Ursache fuer LAG.
Eine Region hat Abmessungen von 256 x 256 Meter in der Flaeche und kann 4096 Meter hoch bebaut werden. Auf dem Bild habe ich versucht zu verdeutlichen, wie viele Regionen sich auf dem Mainland in deinem Sichtbereich befinden, wenn du die Sichtweite auf 1024 Meter einstellst. Mit dieser Einstellung erfasst dein Viewer bei der aktuellen Blickrichtung Objekte von sage und schreibe 25 Regionen. Die Anzahl der Objekte die du in deinen Cache downloadest erhoeht sich drastisch, wenn du dich nur um die eigene Achse drehst und/oder dich fortbewegst.
Nehmen wir mal an, eine einzelne Region belegt bei moderater Bebauung, ohne Avatare, in etwa 400 MB fuer alle Mesh-Daten, Koordinaten-Daten, Texturen, Sounds, Animationen und so weiter. Jeder der noch eine 16000er DSL Leitung kennt, kann sich vorstellen, wie lange dieser Download dauert, bis alles vollstaendig geladen ist. Wenn du genau wissen moechtest, wie lang ein regulaerer Download bei entsprechender Bandbreite dauert, probiere mal folgenden Download-Rechner aus.
Grob geschaetzt, versuchst du mit 1024 Meter Sichtweite Datenmengen in hoehe von mindestens einer DVD herunter zu laden. Das kann bei einer Bandbreite von 50 MBit mindestens 12.8 Minuten dauern. Es ist also voellig realitaetsfremd zu erwaten, das alles innerhalb weniger Sekunden vollstaendig geladen ist.
Manch einer erwartet an dieser Stelle von mir eine Empfehlung, wie hoch man die Sichtweite einstellen sollte. Leider muss ich euch diesbezueglich enttaeuschen, denn es gibt keinen Pauschalen Wert, den man kontinuierlich nutzen sollte. Vielmehr empfehle ich die Sichtweite nicht hoeher einzustellen, als in der aktuellen Szene unbedingt notwendig ist. Beispielsweise reicht in einem geschlossenen Gebaeude wie ein Club mit Abmessungen von ca 50 x 50 Meter eine Sichtweite von etwa 64 Meter. Alles was sich ausserhalb des Gebaeudes befindet, kann man sowieso nicht sehen.
Auf dem Mainland verwende ich persoenlich meistens eine Sichtweite von weniger als 128 Meter, damit ich nicht zu viel Content herunter laden muss, den ich gegebenenfalls sowieso nicht sehen kann.
Auf einer Stand Alone Region nutze ich oft 256 Meter und mehr fuer die Sichtweite, damit nicht alles neu geladen wird. Das heisst, man kann eine ganze Region komplett in den Cache laden, ohne Probleme zu bekommen. Im Gegenteil, sobald man die gesamte Region geladen hat, belaeuft sich die durchschnittliche Bandbreiten-Auslastung fuer Aktualisierungen nur noch bei etwa 90 Kbp/s.
LOD (level of detail)
Dicht gefolgt und eng mit der Sichtweite verknuepft ist der LOD Faktor.
Der soganennte LOD Faktor ist die Zerfallsrate der Objekte bei einer bestimmten Groesse und Entfernung innerhalb eurer Sichtweite. Die Formel dazu jetzt hier genauer zu erlaeutern geht eindeutig zu weit und ist fuer meine Ausfuehrungen nicht Zielfuehrend.
Mit dem LOD soll euer Viewer und insbesondere eure Grafikkarte entlastet werden. Mit dieser Technik sollen alle Details eines Objekts systematisch ausgeblendet werden, die fuer die generelle Erkennbarkeit auf dem Monitor zu klein sind um ordentlich dargestellt zu werden. Wenn ich zum Beispiel einen Garten-Tisch mit einer Tasse Kaffee aus 100 Meter Entfernung sehe, ist die Tasse so klein wie ein Pixel und fuer meine Ansicht unerheblich und kann ausgeblendet werden. Zusammengefasst, soll alles ausgeblendet werden, das umgangssprachlich fuer das blosse Auge nicht mehr deutlich erkennbar ist.
Was passiert hier jetzt eigentlich genau?
Mit dem erhoehen des LOD erhoeht man die Entfernung, ab wann kleine Details ausgeblendet werden. Das bedeutet, wenn man eine hohe Sichtweite und zugleich ein hohen LOD verwendet, werden weit entfernte Objekte, die man gegebenenfalls gar nicht sehen kann, trotzdem voll dargestellt.
Fuer die normale Nutzung von Second Life empfehle ich, sich auf den Einsatz des Reglers im konventionellen Einstellungsmenue zu beschraenken. Fuer viele Heim-PCs ist ein Wert von ueber 2.000 schon grenzwertig. Werte von ueber 3.000 mittels Debug-Eintsellungen oder Schnelleinstellungen zu setzen ist fuer den Dauereinsatz nicht empfehlenswert und sollte mit groesster Vorsicht verwendet werden.
Abschliessend moechte ich empfehlen, tut euch und eurer Grafikkarte einen Gefallen und folgt nicht den schwachsinnigen Empfehlungen etwaiiger Notecards gewisser Ersteller den LOD dauerhaft auf 4.000 oder mehr einzustellen, nur damit ihr dieses eine Produkt richtig sehen koennt. Es ist offensichtlich, das der betroffene Ersteller auf kosten der Performance versucht hat Upload-Kosten von etwa 1 – 2 L$ zu sparen und den Land-Impact des Objekts um gegebenenfalls 1 Prim zu druecken. Dabei wird dann billigend in kauf genommen, das alle anderen Objekte um euch herum ploetzlich LAG verursachen.
Cache
Wir alle kennen das, wir teleportieren auf irgend eine neue Region und muessen erst einmal warten, bis sich die Szene vollstaendig aufbaut. Dabei geschieht es nicht gerade selten, das Objekte recht schnell erscheinen, jedoch die Texturen relativ lange grau bleiben.
Dieses Verhalten wird uns niemals erspart bleiben, so lange wir die entsprechenden Datein nicht schon im Cache haben, was erst beim zweiten Besuch dieser Region der Fall sein wird. Aber selbst wenn wir die Dateien schon im Cache haben, muessen wir je nach Leistung unseres Home-PCs warten bis die Szene vollstaendig gerendert wurde. Das geht aber mit den Dateien direkt aus dem Cache wesentlich schneller, als die Daten erst vom Server anzufordern.
Das einzige was deutlich schneller ist als die Downloadrate, ist der lokale Speicher auf eurem Home-PC. Dabei spielt es keine Rolle, ob ihr eine HDD Festplatte, SSD Festplatte oder sogar einen USB-Stick verwendet. In Zeiten von Terabyte grossen Speichermedien stellt der Speicherbedarf fuer den Second Life Cache einen Fliegenschiss dar. Darum empfehle ich 2 Dinge:
- Den Regler fuer die Speichergroesse in den Viewer Einstellungen bis Anschlag voll aufzudrehen.
- Den Cache auf einer eigenen Partition oder Festplatte anzulegen.
Warum jetzt ein separater Speicherbereich?
Ganz einfach, es kommt hin und wieder vor, das der Cache ziemlich fragmentiert ist und eine separate Partition/Festplatte kann man wesentlich schneller defragmentieren als C:\ worauf sich meistens das Betriebssystem befindet. Diese Methode ziehe ich einem Cache leeren alle mal vor, denn oft reicht einfach nur mal den Cache bei Problemen zu defragmentieren. Den Cache leere ich im Grunde so gut wie nie, vielleicht 1 bis 2 mal im Jahr, wenn wirklich mal eine Datei im Cache kaputt ist. Nicht mal nach einem Viewer Update leere ich den Cache, ehrlich gesagt habe ich sogar noch nie einen Clean Install fuer den Firestorm gemacht.
Avatar-Complexity
Immer wieder wenn Inworld das Thema Avatar Komplexitaet zur sprache kommt, erfahre ich, das viele gar kein Limit fuer die Komplexitaet eingestellt haben. Das bedeutet, sie haben den entsprechenden Wert auf Maximum eingestellt. Mit dieser Einstellung wird ausnahmslos jeder Avatar, ganz gleich wie viel „Scheissdreck“ er mit sich herum schleppt, voll dargestellt.
Voellig unabhaengig davon, ob extrem hohe Komplexitaets-Werte nun gewollt sind oder nicht, eines ist zu 100% sicher. Keiner von denen wird dir eine neue Grafikkarte kaufen.
Im Bild rechts kannst du sehen, wie sich die Avatar Komplexitaet im direkten Vergleich auswirkt. Die Komplexitaet meines Avatars ist auf beiden seiten identisch, ich habe lediglich mein Limit entsprechend angepasst.
Fuer den Screenshot auf der linken Seite habe ich mein Limit einfach mal knapp unter die aktuelle Komplexitaet eingestellt, um das JellyDoll zu zeigen.
Der Screenshot auf der rechten Seite zeigt mein persoenliches Limit fuer Avatar-Komplexitaet. Dieses Limit stellt eine moderate Belastung fuer meine Grafikkarte dar und ich habe immer noch die Wahl, mittels rechter Maustaste einzelne Avatare trotzdem vollstaendig anzeigen zu lassen, wenn sie sich nur geringfuegig ueber meinem Limit befinden. Alle anderen die deutlich ueber mein persoenliches Limit sind und mit rotem Komplexitaets-Hinweis angezeigt werden, bleiben bei mir das sogenannte JellyDoll bzw. Grummibaerchen, wie ich sie gerne nenne. Ich gehe sogar noch einen Schritt weiter, wenn der entsprechende Avatar mich naemlich nicht interessiert und sogar beispielsweise in einem vollen Club die Szene verschandelt, entferne ich ihn mit rechter Maustaste vollstaendig aus meinem Sichtbereich.
Auch hier moechte ich darauf hinweisen, das meine gezeigten Voreinstellungen lediglich auf meine Systemvoraussetzung angepasst sind. Jeder muss die Werte auf sein System anpassen. Die Farben fuer die Komplexitaet sind nicht fix zugeordnet, sondern richten sich nach eurem persoenlichen Limit. Das ist in diesem Fall ein guter Anhaltspunkt zu sehen, ob man das Risiko eingehen moechte einzelne Avatare dennoch anzeigen zu lassen. Je gruener die Komplexitaet angezeigt wird, desto naeher befinden sich die Avatare an deinem Limit.
Mit der Option „Informationen ueber Avatar-Komplexitaet anzeigen“ laesst sich die Komplexitaet aller Avatare direkt ueber dem Kopf anzeigen, wie es in meinem JellyDoll Beispiel zu sehen ist. Diese Anzeige habe ich dazu genutzt einen vertraeglichen Mittelwert fuer mein persoenliches Limit zu ermitteln. Dabei habe ich einfach beobachtet, in welchem Bereich sich die Komplexitaet der meisten Avatare bewegt. Die meisten Avatare aus meinem Umfeld haben tatsaechlich einen ungefaehren Wert von 80000 bis 100000. Meine Grafikkarte steckt locker einen vollen Club mit jeweils 155776 pro Avatar weg, alle darueber werden mir als JellyDoll angezeigt.
Im Aussehen Fenster, wo du auch dein Outfit speichern kannst, findest du deine eigene Komplexitaet auch ohne, das du die Anzeige fuer alle aktivieren musst.
Direkt hinter dem Namen deiner Attachments, welche du am Avatar (nicht auf dem HUD) traegst kannst du die individuelle Komplexitaet der einzelnen Attachments ablesen. Diese Anzeige ist sehr hilfreich, die eigene Komplexitaet im Auge zu behalten und bei bedarf zu optimieren. Denn genau genommen belastet die eigene Komplexitaet nicht nur die Rechner der anderen User, sondern auch deinen eigenen Rechner, schliesslich befindet sich dein Avatar ebenfalls in der Szene, die fuer dich gerendert wird.
Ersteller
LOD (Content Creator)
Als Ersteller muss man sich schon deutlich mehr Gedanken zum Thema Performance machen.
Gerade der LOD Faktor bietet eine sehr gute Moeglichkeit, selbst gemeshte Objekte fuer best moegliche Performance zu optimieren. Doch zu aller erst muss klar sein, was fuer ein Objekt erstellt wird. Man kann nicht einfach irgend ein Objekt erstellen und das dann Planlos nach Second Life hochladen, also machen kann man das schon, aber dann ist es KACKE.
Darum sollte man sich vorher folgende Fragen beantworten. Soll es ein grosses oder doch ein kleines Objekt sein? Soll es vom weiten oder nur im direkten Umfeld sichtbar sein? In jedem Fall muss man sich mit den 4 Stufen fuer Hoch, Mittel, Niedrig & Niedrigste beschaeftigen. Das falscheste was man machen kann ist, bei allen 4 das selbe, oder nur die erste Stufe verwenden. Je nach Verwendungszweck kann und sollte man die jeweiligen Stufen mit den entsprechenden Skalierungen anpassen. Grosse Objekte sind aus groesserer Distanz laenger sichtbar als kleine, dennoch sollte man auch hier unterscheiden. Dazu ein Beispiel: Eine Tanne von 2 Meter groesse sollte im Freien laenger sichtbar sein, als ein Vergleichbarer Weihnachtsbaum in einem geschlossenen Raum. Kommt aber bitte nicht auf die Scheiss Idee, pauschal alle Objekte mit einem hohen LOD hoch zu laden, nur damit man die sowohl drinnen als auch draussen verwenden kann.
Wenn man naemlich mit hohen LOD uebertreibt und zu viele Objekte dieser Art aufstellt, hat es den gleichen Effekt, als wuerde man in den Viewer Einstellungen den LOD-Faktor auf 4.000 oder hoeher setzen. Die Objekte wuerden nicht mehr wie geplant zerfallen und auch bei grosser Entfernung voll dargestellt.
Wer sich unsicher ist und gerne testen moechte, wie sich die Parameter auswirken, kann sich zu diesem Zweck mit den eigenen Zugangsdaten im Beta-Grid von Second Life einloggen und dort nach Lust und Laune hochladen was das zeug haelt. Keine Sorge, ihr habt dort ein prall gefuelltes Konto und muesst keine L$ kaufen. Mit diesem Prinzip koennt ihr gleich sehen, was euch der richtige Upload auf dem Main-Grid kosten wuerde.
Darum sage ich klar und deutlich, nutzt verfickt noch mal das verdammte Beta-Grid. Denn irgend einen Scheiss in Second Life hochladen und dann damit rechtfertigen die Kosten waeren zu hoch um Probe-Mesh hochzuladen, kann ich als Entschuldigung nicht akzeptieren.
Textur (Content Creator)
Es spielt absolut keine Rolle welchen Zweck eine Textur erfuellt, voellig egal ob es sich um eine Diffuse, Normal, Specular, Sculptie oder eine Particle Textur handelt. In jedem Fall ist es unumstritten, das grosse Texturen mehr Speicher belegen und somit der entsprechende Download laenger dauert.
Grundsaetzlich sollte man abwaegen, ob man wirklich eine grosse Textur benoetigt, oder ob eine kleine schon reicht um ein zufriedenstellendes Ergebniss zu erreichen.
Nehmen wir mal zum Beispiel ein Deco-Element wie eine Kerze in der Ecke. So ein Detail wird im Grunde nur am Rande wahrgenommen und benoetigt nicht mal annaehernd so eine grosse Textur, wie eine Tuer wo man frontal bewusst drauf schaut.
Ein weiteres probates Mittel zur Verkleinerung der Datenmenge ist das kombinieren mehrerer unterschiedlicher Texturen auf einer allumfassenden Textur. Erfahrende Blender Nutzer kennen und verwenden dieses Prinzip schon lange. Hier wird dann ganz einfach die entsprechende Flaeche gezielt auf einem geeigneten Texturbereich arangiert. Natuerlich ist es auch Inworld moeglich dieses Prinzip direkt auf Prims anzuwenden, jedoch bei weitem nicht so einfach und intuitiv wie in Blender. Bei dieser Methode spricht eigentlich nichts dagegen, beispielsweise wie im Bild rechts zu sehen, vier Texturen zu je 512 x 512 Pixel auf einer Textur mit 1024 x 1024 Pixel zu verteilen.
Nun kommen wir zum Textur Recycling, bei dieser Methode wird ein und die selbe Textur so oft verwendet wie es geht. Selbst wenn man die Textur auf 1000 Verschiedenen Objekten verwendet, wird sie jedoch nur ein einziges mal in den Cache herunter geladen. Sobald diese Textur dann einmal in der Szene geladen wird, ist augenblicklich jede Flaeche mit dieser Textur vollstaendig dargestellt. Eigentlich haette ich auf dem Bild noch viel mehr rote Pfeile machen koennen, wo ueberall ich diese Textur eingesetzt habe, aber ich glaube es reicht als Beispiel und wer es genau wissen will, kann sich das gerne auf meiner Region Bay of Surreality live ansehen.