De:VisRegions

VisRegions sind eine besondere Art von Soft Volumes, zu denen es leider noch keinen übersetzten Artikel gibt. Damit kann die Sichtbarkeit von Objekten in der Welt von der Position der Kamera abhängig gemacht werden.

Verwendung von VisRegions

Ganz besonders eignen sich Visregions, um Objekte mit transparenten Texturen oder vielen Vertices vorläufig aus dem Spielgeschehen zu entfernen, da sie sonst nur unnötig die Performance der Welt beeinflussen, wenn sie gerade nicht gebraucht werden und trotzdem berechnet werden müssen. Ein gutes Beispiel hierfür sind auch Sprites, die sich stets nach der Position der Kamera ausrichten und somit viel Leistung verzehren.

Also: Wenn sich der Spieler gerade an einem Ort in eurer Welt befindet, wo er die erwähnten Objekte nicht sehen kann, vielleicht weil diese sich in einem anderen Raum befinden, oder am anderen Ende der Welt... Warum sollten wir sie dann unnötig den Prozessor belasten lassen?? Nein! Weg damit! Wir schalten sie einfach ab und lassen sie verschwinden, bis sie wieder gebraucht werden, weil sich der Spieler wieder in ihre Nähe begibt.

Umsetzung

Und wie machen wir das? Ganz einfach: Nehmen wir mal an, ihr habt einen Raum und wollt alle Objekte in dem Raum nur dann anzeigen lassen, wenn der Spieler in ihm ist oder sich auf ihn hinzubewegt, dann macht ihr Folgendes:

Ihr erstellt eine Region, die mindestens genauso groß wie der Raum ist, und platziert sie um den Raum herum. Aber besser, ihr macht sie ein Stück größer. Dieser Region gebt ihr die Property "string_type svconvex" und eventuell auch die gleiche "page_num" wie die auszublendenden Objekte, wenn sich diese auf einer eurer Pages befinden.

Nun zum Code:

Ich habe bisher nur erfolgreiche Erfahrungen mit einfachen Visregions. Über Unions und Intersections können vielleicht andere Weltenbauer etwas beitragen.

Der Code im AlcScript für die Visregion sieht wie folgt aus:

Name of your Visregion:
    type: softvolume
    softvolume:
      - type: convex 
        softdist: 0

Der Wert 0 bedeutet, dass die Objekte beim Betreten der Region sofort eingeblendet werden, ohne weiches Faden. Andere Werte habe ich nicht getestet.

Danach müsst ihr für jedes Objekt in dieser Region, dass ihr ein- und ausblenden wollt, immer folgenden Code darunter eintragen:

Name of your object:
    visual:
        visregions:
          - Name of your Visregion

Für ein weiteres Objekt wiederholt ihr einfach den Code zuvor und ändert lediglich den Namen des Objektes. Das könnt ihr beliebig oft wiederholen.

Für Objekte in einer anderen Visregion wiederholt ihr beide Codes erneut.

Das war es auch schon! Viel Erfolg beim Testen!

Ein paar Erfahrungen von mir noch:

Blendet besser keine Objekte mit diesem Code ein und aus, mit denen ihr direkt agieren wollt! Wie z.B. Buttons oder Bänke. Ich habe festgestellt, dass man sich nicht mehr auf Bänke setzen kann, die einmal aus- und wieder eingeblendet wurden. Also lasst sie besser dauerhaft dargestellt, damit sie funktionieren. Dasselbe gilt offenbar auch für Wavesets.