Freitag, 10. August 2012

Einige Infos von den Lindens zum Pathfinding

Es gibt inzwischen zwei Artikel bei Nalates Urriah, in denen Informationen von Linden Lab Mitarbeitern zur Pathfinding Einführung zu finden sind. Die ersten Infos stammen von Donnerstagmorgen (MESZ) aus einem Kommentar von Lorca Linden und der andere Artikel ist erst ein paar Stunden alt und berichtet von den Pathfinding Office Hours am Donnerstagabend. Den Kommentar von Lorca habe ich übersetzt, den Bericht zu den Office Hour zusammengefasst.

Ich bin zwar der Meinung, dass Linden Lab für solche Informationen besser einen eigenen Blogpost veröffentlichen sollte, aber das ist eben bis jetzt noch nicht passiert. Und deswegen bin ich ganz froh, wenigstens überhaupt ein paar Aussagen von Linden Mitarbeitern zu lesen, denn es liegt sicher nicht an der Einstellung genau dieser Lindens, dass LL bisher den Start von Pathfinding nicht offiziell bekanntgegeben hat.

Quelle: Nalates' Things & Stuff

Second Life Pathfinding Performance

Kommentar von Lorca Linden
Geschrieben am 08.08.2012 um 9:32pm
- Übersetzung -

Obwohl Lindens im Allgemeinen nicht in Resident Blogs posten, mache ich in diesem Fall eine Ausnahme. Erwartet aber nicht von uns, dass dies zur Gewohnheit wird.

Ich möchte zunächst Nalates danken, für die meiner Meinung nach unvoreingenomme Berichterstattung zum gesamten Pathfinding-Thema. Obwohl ich mit mehreren Aussagen aus dem "Tsunami"-Post (*) nicht einverstanden war, wurde uns damit bewußt gemacht, dass es Missverständnisse im Zusammenhang mit Pathfinding gab, die einer Klärung bedurften (insbesondere in Bezug der Auswirkungen auf die Performance) und dies war ein nützlicher Anhaltspunkt, die Bedenken der Bewohner aufzuzeigen, während wir uns noch in der Entwicklungsphase befanden.

Der Performance-Einfluss von 18%, auf den sich der Phoenix Viewer Blog bezogen hat, ist der schlimmste Fall, der eintreten könnte, was aber selten in der Praxis zu sehen sein wird - z.B. könnte man eine so große Auswirkung auf einer schlecht optimierten Region sehen, die hunderte von Pathfinding Charakteren beinhaltet, die alle gleichzeitig ausgeführt werden. Die durchschnittlich gemessenen (viewerseitigen) FPS im gesamten Grid waren gestern Abend 0,03 FPS höher, als am Abend davor. Die durchschnittliche serverseitige Performance war gridweit ebenfalls auf normalem Level vor und nach dem Aufspielen des Pathfinding Server Code. Die Crash-Rate von Regionen - ausgenommen ein paar holpriger Stunden während des Rollout - blieb niedrig. Alles zusammengenommen, soweit es das Lab sagen kann, hat sich Pathfinding in den allermeisten Situationen nicht negativ auf die Leistung oder Stabilität ausgewirkt.

Ich möchte auch klarstellen, dass die Auswirkungen auf einige Fahrzeuge nicht direkt im Zusammenhang mit Pathfinding stehen, sondern mit der zugrundeliegenden Physik und den Geländeoptimierungen, die Pathfinding erst ermöglichen und die auch Vorteile bringen, die über Pathfinding hinausgehen. Soweit wir das beurteilen können, ist nur ein kleiner Prozentsatz des bestehenden Content von diesem Physik-Upgrade betroffen.

Wir sind nicht der Ansicht, dass Pathfinding in vollem Umfang eingeführt wurde, solange die Pathfinding-Tools im Viewer nicht die Betaphase verlassen haben. Deshalb haben wir noch keine offizielle Ankündigung gemacht. Ich stimme zu, dass wir eine Überarbeitung unserer Pathfinding bezogenen Wiki-Seiten benötigen, denn ein Teil der Informationen dort wurde nicht aktualisiert, seit wir in der Alphahase waren. Wir planen in Kürze einen Blogpost zu veröffentlichen, in dem wir zu einigen verbreiteten Missverständnissen über Pathfinding aufklären werden, von denen wir gehört haben. Weiterhin planen wir auch die Aktualisierung der Anleitung für "Good Building Practices" ("Gute Baupraktiken"), so dass dies eine nützliche Ressource für Bewohner wird, die optimierte Inhalte erstellen wollen.

Wir verstehen, dass Pathfinding ein verwirrendes Thema sein kann und begrüßen die Bemühungen, die sich interessierte Residents machen, um die technischen Details zu verstehen. Wenn ihr irgendwelche brennenden Fragen zu Pathfinding habt, kommt bitte zu unserem User Group Treffen auf Pathtest1 (auf Aditi) am Donnerstag um 4:00pm SLT und stellt eure Fragen. Vor allem sind wir sehr gespannt, was ihr Bewohner mit den neuen Pathfinding Tools und den LSL Funktionen erstellen wollt!

Quelle: Kommentar von Lorca Linden zu "Second Life Pathfinding Performance"

(*): Mit "Tsunami"-Post ist ein Blogpost gemeint, den Nalates im Mai 2012 geschrieben hatte und in dem sie ihre Bedenken äußerte, dass die Pathfinding Funktionen nach der Einführung im Main Grid zu einem "flutwellenartigen" Zusammenbruch der Performance führen würde.


Quelle: Nalates' Things & Stuff

Pathfinding Meeting Week 32

Nun die Zusammenfassung der Pathfinding Office Hours von gestern Abend SLT bzw. heute Nacht MESZ. Teilgenommen hatten von LL die Herren Lorca Linden, Stinson Linden und Falcon Linden.

Performance
Zur Performance wurde gesagt, dass das Grid bisher mit durchschnittlicher Leistung läuft und keine Änderung gegenüber dem Zeitraum vor der Aufspielung von Pathfinding aufweist. Das bedeute auch, dass obwohl die meisten Regionen bisher nicht optimiert wurden, deren Performance deshalb nicht gesunken ist.

Was macht der Pathfinding Code?
Zu dieser Frage hat Falcon Linden eine längere Abhandlung gehalten. In Kurzform:
Zuerst wird das Navmesh aktualisiert, um die dynamischen Hindernisse zu erfassen. Die Zeit die dafür benötigt wird, wird gemessen. Diese Zeit wird dann verglichen mit der vorgegebenen Maximalzeit von 4ms (Fullprim Region) bzw. 1ms (Homestead Region). Wenn mehr Zeit benötigt wurde, werden soviele Update Schritte in den nachfolgenden Frames übersprungen, bis die durchschnittliche Zeit von 4ms oder 1ms wieder erreicht wird.

Diese Anzahl von übersprungenen Frames kann man sich im AI-Statistikbereich des Regions-Statistik Fensters ansehen. Bei einer optimierten Region sollte die Zeit für ein Update des dynamischen Navmesh nahe Null liegen und bisher haben wir nur in ganz wenigen Regionen gesehen, dass es damit ein Problem gab.

Als nächstes führen eine Suche möglicher Pfade für die Charaktere durch. Es gibt zusätzliche Begrenzungen für diesen Suchvorgang. Wenn wir über diese Zeit kommen, drosseln wir ab und versuchen es mit dem nächsten Frame. Wenn wir unter der Begrenzungszeit bleiben, erhöhen wir das Tempo für den nächsten Frame. Wir erhöhen die Anzahl der Suche nach Pfaden, wenn die Suche in jedem Frame < 1ms ist und wir verringern die Anzahl, wenn die Suche > 2ms pro Frame benötigt.

Danach bearbeiten wir die Physik der Charaktere. Wenn der Charakter dabei zu lange für diesen Vorgang benötigt (mehr als 50µs), überspringen wir danach einige Aktualisierungen.

Optimieren oder nicht?
Auch hier gab wieder Falcon Linden die Antwort. Er sagte, es kann nie schaden, Objekte auf Walkable oder Obstacle einzustellen. Dies kann eine Verbesserung bringen, oder auch nicht, abhängig von den Gegebenheiten. Als Optimierungsschritte empfiehlt Falkon dieses Vorgehen.
  1. Schaut euch die Performance der Region an. Ist sie schlechter als vor Pathfinding? Wenn nicht, dann könnt ihr einfach für die Zukunft schon mal etwas optimieren.
  2. Wenn die Performance schlechter ist, als vor Pathfinding, schaut euch das Fenster zur Sim Statistik an (Strg+Umschalt+1). Ist die AI Step Time hoch? Wenn ja, gibt es Skipped Silhouette Steps? Wenn auch dies der Fall ist, dann eine der beiden folgenden Möglichkeiten durchführen:
  1. Optimiert euren Content, indem ihr so viele Objekte wie möglich auf statische Eigenschaften umstellt (Static Obstacle, Walkable, usw.).
  2. Schaltet das dynamische Pathfinding aus.

Hier noch ein Ausschnitt des Bereiches aus dem Statistikfenster, von dem Falcon oben spricht:

Dazu sagte Lorca Linden, dass der zweite Punkt nicht generell notwendig ist. Denn die durchschnittliche Statistik des Grid seit der Umstellung zeige eigentlich, dass alles so schnell läuft, wie bisher.

Navmesh
Zum Thema Navmesh sagte Falcon Linden, dass die Ansicht der 3D Welt im View/Test Fenster bei aktivierten Checkboxen eine extrem genaue Darstellung der Physik ist, so wie sie auch die Physik Engine sieht, mit Ausnahme eines 10 cm Abstands bei Boxen. Dazu will er sich demnächst mal etwas genauer auslassen.

Probleme
Motor Loon, ein Anbieter von SL-Vehikeln, hat seine Region bereits komplett optimiert. Dabei ist ihm aufgefallen, dass Phantomprims in Linksets auf Solid gestellt werden. Ein weiteres Problem sind LSL Skripte in Objekten, die diese auf irgendeine Weise bewegen. Stellt man diese Objekte auf Static Obstacle, gibt es Skriptfehlermeldungen und die Funktion wird nicht mehr sauber ausgeführt. Also, keine Objekte auf Static stellen, die irgendwas irgendwie bewegen. (Das gilt auch für einige Posebälle, die beim Ändern der Avatar Position ihre eigene Lage verändern).

Problembehebung
Linden Lab will die Pathfinding Tools weiter verbessern und das Problem mit den Phantomprims in Linksets als nächstes angehen. Gibt es eine Skriptfehlermeldung und man weiß nicht, welches Objekt dieses erzeugt, kann man im Linksetfenster erstmal alles wieder auf Movable stellen und dann mit der "Halbierungsmethode" das Objekt suchen. Man stellt zunächst eine Hälfte auf Static Obstacle und schaut ob der Fehler auftritt. wenn nicht, steckt das entsprechende Objekt in der anderen Hälfte der Liste. Dann macht man in der Hälfte, in der das Objekt steckt, den nächsten Halbierungsversuch, usw. Mit dieser Methode hat man nach spätestens zwanzig Schritten das einzelne Objekt gefunden.

Der Rest von Nalates Artikel dreht sich um Erklärungen, warum dieser oder jener Fehler erst jetzt gefunden wurde. LL sagt, jeder hätte wochenlang Zeit gehabt, mögliche Fehler zu melden. Die Bewohner bei der Office Hour sagen, man teste nur die Dinge, die man selbst später richtig laufen haben möchte. Und da nicht so viele Leute an den Tests teilgenommen haben, wurden eben viele Fehler im Vorfeld nicht gefunden.

Quelle: Pathfinding Meeting Week 32

Weitere Infos zum neuen Pathfinding findet man in meinem Blogpost vom 8. August:
>> Pathfinding ab heute im kompletten Main Grid von SL

Keine Kommentare:

Kommentar veröffentlichen