Sonntag, 2. November 2014

Tipps und Tricks zum Second Life Inventar

Heute gibt es mal kein Dies und Das, denn die Neuerungen für Second Life in der vergangenen Woche wurden schon sehr gut durch die Serveraufspielungen, die beiden Blogposts von Linden Lab und durch den Release des HTTP Pipelining Viewers hier im Blog behandelt.

Stattdessen greife ich einen Blogpost von Nalates Urriah vom letzten Donnerstag auf. Darin geht sie auf einen Thread im SLUniverse Forum ein, der sich mit der Größe des Inventars befasst und ob die Größe eventuell Auswirkungen auf die Performance des Viewers hat.

In diesem Thread hat zunächst Trinity Dejavu (Entwicklerin beim Catznip Viewer) eine gute Zusammenfassung der Zusammenhänge gepostet. Danach hat dann Nalates diese Ausführungen noch etwas erweitert und genauer beschrieben.

Da man immer mal wieder hier und da etwas zur Größe des SL-Inventars liest, aber selten mal alle Infos gebündelt hat, schreibe ich hier nun die wichtigsten Aussagen aus den beiden Beiträgen als Liste zusammen. Gefragt wurde danach, ob die Größe des Inventars das Second Life Erlebnis beeinflusst, oder ob das keine Rolle spielt in Bezug auf Lag, Bildaufbau und Teleports.

Infos zum Inventar:
  • Die Größe des Inventars hat keinen Einfluss auf die Region, in der sich der Avatar gerade aufhält.
  • Ebenso hat die Größe des Inventars keinen Einfluss auf Teleports.
  • Die "Visitenkarten" (oder in Englisch: "Calling Cards") haben einen geringen Einfluss auf die Performance des Viewers und des Inventars, da sie jedesmal aktualisiert werden, wenn sich ein Avatar ein- oder ausloggt, für den man eine Visitenkarte hat. Die Visitenkarten haben keine direkte Verknüpfung mit der Freundesliste. Wer die Visitenkarten nicht bewusst im Inventar nutzt, kann sie auch löschen.
  • Der Viewer lädt das Inventar nicht in den Cache herunter, sondern nur die Einträge im Inventarfenster. Das Inventar ist und bleibt stets auf den Servern von Linden Lab. Das Inventarfenster zeigt nur Links, die zum Objekt auf dem Server führen, ähnlich einem Webbrowser der eine Webseite anzeigt.
  • Das Inventar kann unter bestimmten Umständen den Viewer verlangsamen, allerdings nur für einen kurzen Moment. Vor allem, wenn man bei leerem Cache das Inventarfenster zum ersten Mal öffnet und alle Einträge (XML-Dateien) heruntergeladen werden.
  • Der eigentliche Download von Objektdaten geschieht nur nach Anforderung. Also wenn man sich zum Beispiel ein Mesh-Kleidungsstück anzieht oder ein Objekt auf der Region rezzt.
  • Der Eintrag für jedes einzelne Inventarobjekt (jede XML-Datei) benötigt 1 kByte an Speicherplatz. Hat man also 100.000 Objekte im Inventar, braucht der Viewer 100 MB, um alle Eintrage im Inventarfenster anzeigen zu können.
  • Öffnet man ein zweites Inventarfenster (z.B. zum Verschieben von Objekten), verdoppelt sich auch der Speicherbedarf im Viewer.
  • Viele Anzeigen im Viewer sind ebenfalls Inventarfenster, die nur einen Teil des Inventars zeigen (z.B. Gestenfenster, TP-Favoriten, Systemavatare, usw.). Schließt man alle diese Fenster und führt einen Neustart des Viewers durch, kann das die Performance positiv beeinflussen.
  • Man sollte seinen Cache nicht löschen, um irgendwelche Probleme im Viewer zu beheben. Das ist ein weitverbreitetes Ammenmärchen. Es kostet nur Zeit und Bandbreite, weil alle Einträge erneut runtergeladen werden müssen. Wie gesagt, das Inventar zeigt nur Links auf die eigentlichen Daten, die immer auf den LL-Servern liegen. Mit dem Cache werden also nur diese Links im Inventar gelöscht.
  • Statt den Cache zu löschen, ist ein einfacher Neustart des Viewers das beste Mittel, um Probleme mit dem Inventar oder nicht angezeigter Kleidung zu beheben.
  • Als geeignete Methode für einen Neustart schägt Trinity das Enloggen auf einer leeren Fullprim-Region vor (z.B. "Hahne" oder "Kara").
  • Sollten Relogs keine Behebung bei einem Inventarproblem bringen, dann kann man als nächstes versuchen, nur die Inventar-Index-Datei zu löschen. Das ist eine Liste mit allen Inventareinträgen. Oft reicht es, wenn diese eine Datei gelöscht wird (z.B. wenn der Viewer meldet, dass ein bestimmtes Objekt nicht gefunden wird). Die Datei liegt direkt im Hauptordner des Cache und hat als Namen die UUID gefolgt von ".inv.gz". Für meinen Avatar heißt die Datei zum Beispiel "3b5a8dbd-a666-4d4e-a3db-66e5096f3fc7.inv.gz". Die Datei ist nicht schwer zu finden, denn für jeden Avatar gibt es nur eine einzige .inv.gz-Datei im Cache.
  • Alle Objekte im Outfit-Ordner sind Inventar-Links, die auf einen anderen Inventareintrag zeigen. Während ein Inventareintrag eine direkte Anfrage zum Asset-Server schickt, um ein Objekt z.B. zu rendern, schickt ein Inventar-Link seine Anfrage an einen Inventar-Server, der diese dann an den Asset-Server weiterleitet.
  • Die Originalliste des Inventars ist ebenfalls auf den Inventar-Servern von Linden Lab gespeichert. Beim Start eines Viewers mit leerem Cache wird sie von dort kopiert. Für jeden gestarteten Viewer (SL Viewer, Firestorm, Singularity, usw.) wird eine neue Liste auf die heimische Festplatte in den Cache geladen.
  • Ein paar Limits für das Inventar werden auf dieser Seite in der SL-Wiki angegeben. Ich hatte das vor einiger Zeit auch bei mir mal behandelt.
  • Es gibt für die Größe des gesamten Inventars kein technisches Limit. Allerdings werden Ordner mit mehr als 10.000 Einträgen nicht mehr komplett geladen bzw. angezeigt.
  • Linden Lab empfiehlt die Anzahl pro Ordner wesentlich kleiner als 10.000 Einträge zu halten. Stattdessen lieber weitere Unterordner erzeugen.
  • Es gibt manchmal das Problem, dass der Mauszeiger im Inventarfenster permanent Operationen anzeigt (der Mauszeiger flackert oder zuckt), obwohl gar keine Aktion läuft. Dann hilft es gelegentlich, kurz in das "Aktuell"-Fenster zu wechseln (Englisch: "Recent Items"). Und dann wieder zurück ins Hauptinventar.

So, das wars im Wesentlichen. Die Hauptaussage ist, dass man bei Inventar- oder Rez-Problemen nicht immer gleich den Cache löschen sollte. Denn im Cache liegen (je nach Einstellung) viele hundert MB oder gar mehrere GB an Daten. Und das allermeiste davon sind Objekte und Texturen, die sich auf Regionen befinden und irgendwann einmal in Sichtweite des Viewers waren. Diese Daten zu löschen, bringt für das Inventar und den Objekten darin keine Verbesserung.

Links:

2 Kommentare:

  1. "Man sollte seinen Cache nicht löschen, um irgendwelche Probleme im Viewer zu beheben. Das ist ein weitverbreitetes Ammenmärchen."

    Nein? Also bei mir kommt es manchmal vor, dass ich persistente Texturenprobleme im Cache habe: einzelne Texturen werden nur verschwommen angezeigt, weil sie im Cache korrupt sind und meine Körpertextur mitunter gar nicht, obwohl nach Inventar geladen.

    Auch ein Relog alleine ändert daran leider nichts. Ein Löschen des Caches behebt das Problem.

    AntwortenLöschen
    Antworten
    1. Die Texturen am Avatar (Layerkleidung) werden bei einem Relog erneut vom Server abgerufen. Dazu braucht man keinen Cache löschen. Aber selbst das ist meistens nicht notwendig, denn das Ändern eines einzigen Texturlayers am Avatar reicht schon, um ein komplett neues Bake-Set anzufordern.

      Für verschwommene Texturen bei Objekten, die irgendwo auf der Region gerezzt sind, kann es durchaus sein, dass diese im Cache mal korrupt werden. Die Aussagen hier im Beitrag beziehen sich halt nur auf das Inventar und nicht auf die Landgestaltung. Kann sein, dass meine Übersetzung da zu schwammig klingt. Allerdings lese ich aktuell immer wieder, dass verschwommene Texturen bei Objekten auf dem Sim zum größten Teil nicht durch korrupte Dateien im Cache entstehen, sondern durch Texture Trashing. Das entsteht, wenn der Grafikspeicher für die Texturen langsam die obere Grenze erreicht. Google einfach mal nach diesem Begriff, dann wirst du genug Infos dazu finden. Jedenfalls kann man Texture Trashing ebenfalls durch einen simplen Viewer Neustart beheben, da der Grafikspeicher dabei geleert wird.

      Letztendlich kannst du deinen Cache aber so oft löschen, wie du Lust hast. Ich habe hier nur sinngemäß wiedergegeben, was ich auf SLU gelesen hatte.

      Löschen