Samstag, 30. März 2013

Serverseitiger AO auf BlueSteel und LeTigre

Mein Test auf der BlueSteel Sandbox
Am letzten Mittwoch wurde auf die RC-Regionen von BlueSteel und LeTigre unter anderem eine Reihe von neuen Skriptfunktionen aufgespielt, die einen serverseitigen Animation Overrider (AO) ermöglichen. Ich hatte bereits vor einer Woche etwas dazu geschrieben.

Bei den bisher üblichen AOs werden die internen Animationen, die jeder Avatar serveseitig in SL zugewiesen bekommt, vom Skript mit neuen Animationen überschrieben. Bei jeder Änderung der Avatarbewegung muss dann zwischen Viewer und Server ein Datenaustausch durchgeführt werden, damit die entsprechende interne Animation wieder vom Skript im AO überschrieben werden kann. Laut Linden Lab befinden sich die heutigen AOs im ständigen "Kampf" mit den Standard-Animationen, um sie quasi zu unterdrücken.

Das soll nun durch die neuen, serverseitigen Animationen verbessert werden. Für jede Viewer-Sitzung muss dem Server nur ein einziges Mal gesagt werden, welche individuelle Animation eine bestimmte Standard-Animation ersetzen soll und anschließend wird diese individuelle Animation vom Server wie eine Standard-Animation behandelt. Es ist also nicht mehr nötig, dass ein AO permanent mit dem Server kommuniziert. Damit fällt weniger Netzwerklast an und die Server haben weniger Arbeit zu verrichten.

Zur Einführung des serverseitigen AO können erstmal 22 Standardbewegungen des Avatars geändert werden. Ich könnte mir aber vorstellen, dass diese Liste noch erweitert wird. Die vollständige Liste aller Standardbewegungen für Avatare gibt es hier:

Bisher können davon die folgenden Animationen genutzt werden:
"Standing", "Sitting", "Sitting on Ground", "Jumping", "Hovering", "Taking Off", "CrouchWalking", "Walking", "Running", "Hovering Up", "PreJumping", "Hovering Down", "FlyingSlow", "Flying", "Falling Down", "Striding", "Landing", "Soft Landing", "Crouching", "Standing Up", "Turning Left", "Turning Right".

Inzwischen wurden auch die Wiki-Seiten für die neuen LSL-Funktionen und -Berechtigungen online gestellt. Hier die vier neuen Einträge:
  • llSetAnimationOverride - Bestimmt, welche Animation anstelle einer Standardbewegung abgespielt werden soll.
  • llGetAnimationOverride - Damit lässt sich abfragen, wie die Animation heißt, die für eine bestimmte Standardbewegung gesetzt wurde.
  • llResetAnimationOverride - Damit lassen sich einzelne oder alle Animationen auf den System-Standard zurücksetzen.
  • PERMISSION_OVERRIDE_ANIMATIONS - Konstante zur Berechtigungsanfrage, die Standard-Animationen überschreiben zu dürfen (mit llGetPermissions).

Mit diesen Funktionen lassen sich jetzt nicht nur mit relativ wenig Code neue AOs erstellen, sondern es lassen sich auch alle bestehenden AOs damit aktualisieren, wie z.B. das bekannte Freebie ZHAO II oder die professionellen HUDs von Vista Animations.

Da ich diese Neuerung interessant finde, habe ich das gestern auf einer BlueSteel Sandbox schon getestet. Im gesamten SL-Grid werden diese Funktionen voraussichtlich am 9./10. April aufgespielt. Als Grundlage habe ich das Beispielskript zu llSetAnimationOverride genommen. Ich habe das dann erweitert auf alle Animationen, die aktuell möglich sind. Außerdem habe ich noch ein Touch Event dazugebracht, so dass man das Objekt mit dem Skript gar nicht am Avatar tragen muss, sondern einfach irgendwo auf dem Land rezzen kann.

Skriptspeicher bei serverseitigem AO
Ganz ohne Probleme läuft das Ganze allerdings noch nicht. Beim Rezzen bzw Anziehen des neuen AO erschien bei mir sporadisch ein Runtime Error im Debug Fenster. Funktioniert hat der AO aber trotzdem. Außerdem gibt es vier Animationen, bei denen man während der Bewegung stecken bleiben kann ("PreJumping", "Landing", "Soft Landing" und "Standing Up"). Das sind sogenannte Übergangsanimationen, die nicht als Loop abgespielt werden dürfen. Bei meinen verwendeten Anis ist das aber scheinbar der Fall. Also habe ich diese vier Bewegungen erstmal ausgeklammert.

Skriptspeicher beim ZHAO II
Insgesamt aber eine feine Sache. Man kann seine eigenen Animationen nutzen, ohne ein Skript oder Attachment am Avatar zu tragen. Im direkten Vergleich verbraucht der serverseitige AO nur 16kB Skriptspeicher, während der gute alte ZHAO II 256kB benötigt (siehe Bilder auf der rechten Seite). Im Augenblick kann man zwar einen serverseitigen AO nur auf BlueSteel- oder LeTigre-Regionen ausführen, aber die Animationen bleiben dann im gesamten Grid aktiv, egal wo man hinteleportiert.

Ich habe mein Skript mal auf Google Docs hochgeladen. Wer möchte, kann es ausprobieren. Dazu muss man aber seine eigenen Animationen verwenden und die Namen im Skript entsprechend ändern. Das Skript und alle verwendeteten Animationen dann in ein Prim kopieren. Dieses kann man entweder tragen, oder rezzen und anklicken. Trägt man es am Avatar, bleiben die Animationen solange aktiv, bis man das Prim wieder ablegt. Klickt man dagegen das gerezzte Prim an, bleiben die Animationen bis zum Viewer-Logout aktiv. Und wer für die vier auskommentierten Bewegungen jeweils Animationen hat, die nicht als Loop laufen, kann diese auch mal probieren durch Entfernen der "//" vor den Zeilen.

Link zu meinem Skript (lässt sich über > Datei > Herunterladen als .txt-Datei speichern):

Links:

2 Kommentare:

  1. Was denkst Du, wie z.B. Vista Animation ihre AO`s dann update?

    AntwortenLöschen
    Antworten
    1. Keine Ahnung.
      Auf ihrer Homepage hat Vista sich noch nicht zu diesem Thema geäußert. Wenn sie kundenorientiert sind, dann werden sie aber Updates anbieten. Das Skript in den meisten AOs in SL ist mehr oder weniger vom ZHAO II abgeleitet und im Grunde ein Freebie. Sollte jetzt jemand den ZHAO II auf das neue serverseitige System umschreiben, dann haben die meisten AO-Anbieter nur wenig Aufwand, ihre Produkte umzustellen. Das eigentlich aufwändige in den AOs sind ja die Animationen und die ändern sich durch die neue Methode ja nicht.

      Es wird aber sicher auch Anbieter geben, die mit der neuen Möglichkeit des serverseitigen AO ein Geschäft wittern und statt Updates einfach neue AOs anbieten werden. Deshalb erst mal abwarten, was passiert. Vor Ende April wird sich sicher noch nichts auf dem AO-Markt bewegen.

      Löschen