Oblivion:Grundlegendes Patrol Tutorial

Aus Skript-Wiki
Version vom 16. September 2008, 15:33 Uhr von Lars (Diskussion | Beiträge) (Übersetzter Text eingefügt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Einleitung

Patrols(dt. Rundgang/Patrouille) können ein unglaublich nützliches Mittel sein, um Bereiche lebendiger zu gestalten. Dieses Tutorial soll eine einfache Methode darstellen, wie sich ein simpler Zwei-Punkte-Patrol("Ping-Pong") gestalten und ins Spiel einbringen lässt.

Du solltest grundlegendes Wissen über NPCs, Packages, und Pathgrids besitzen.


Einstellen des Packages

Das allererste was wir machen werden ist, einen NPC zu erstellen, der unsere Packages bekommt. Öffne den NPC "BanditMeleeMale2" und gib ihm die neue ID "MyPatrolTemplate01".(Warum wir das machen wird später erklärt) Öffne nun das AI-Menü dieses NPCs. Wir können die Banditen-Packages entfernen, jedoch ist es sinnvoll ein einfaches Wander-Template am Ende jeder Package-Liste zu behalten. Entferne jetzt also BanditSleep4x4 und BanditGruntWanderExterior.

Öffne nun aus der Toolbar das Package-Menü. (Character>>Packages) Suche das Package GuardPatrolBeginPatrol. Dies dient als Standard-Package für alle Patrols die mit unserer Methode erstellt werden. Bevor wir allerdings weiter machen, benötigen wir Platz für unser Patrol. Im Nachhinein hätte nach Vilverin zum Beispiel sehr gut ein Patrol gepasst, lasst uns diesen Fehler also nun beheben. Lade es aus der Zellenliste und wirf einen Blick in die Hauptkammer.

Es gibt ein paar Dinge, die beim Erstellen eines Patrol-Pfades beachtet werden sollten. Vermeide eine Route, die den NPC durch Fallen oder andere gefährliche Gebiete führt. Bedenke auch, dass jeder Gegner auf dem Weg an das Level des NPCs angepasst sein sollte. Du solltest außerdem eine Route wählen, die lang genug ist um den Spieler das Ping-Pong-Verhalten nicht bemerken zu lassen, was ein Patrol nämlich künstlich wirken ließe.

Die Route, die ich gewählt habe, wird durch zwei xmarker-Objekte markiert. Ich nenne sie MyPatrolBegin und MyPatrolEnd um die Übersicht zu behalten und platziere sie wie auf diesem Bild. Ich habe außerdem die Route dort markiert. Diese Xmarker sind jedoch ohne ein Package recht sinnlos, also lasst uns das nun erstellen.

Klicke im Patrol-Fenster auf New und mache Folgendes:

  • Gib ihm die ID MyPatrolPackage
  • Ändere die Art auf Travel
  • Markiere die Box Must Reach Location

Wir müssen diesem Package auch ein Ziel geben. Klick auf den Location-Reiter und markiere den Button Near Reference, dann klick auf Select Reference in Render Window und doppelklicke den xmarker "MyPatrolEndMarker". Öffne abschließend den Conditions-Reiter und rechtsklicke in die Liste um eine neue Bedingung zu erstellen. Wähle GetDistance aus der DropDown-Liste unten und unter den Parametern wählen wir "MyPatrolBeginMarker". Lasse den Standard "<" und erhöhe den Wert auf 512.

Erinnerst du dich an unseren "MyPatrolTemplate01" NPC? Lass uns das GuardPatrolBeginPatrol-Package und unser neues MyPatrolPackage-Package seiner Liste hinzufügen. Stelle sicher, dass die Packages dieses Reihenfolge haben:

  • MyPatrolPackage
  • GuardPatrolBeginPatrol
  • BanditGruntWanderInterior
Normalerweise platziere ich ein "Torch02"-Objekt im Inventar des NPCs, soweit möglich - es hilt, sie aus der Umgebung hervorzuheben und die Bewegung zu verdeutlichen.
Anderes Verhalten hinzuzufügen ist einfach. Platziere einfach andere Packages über dem Patrol-Package(schlafen, lesen, etc.) und benutze die Tageszeit-Einstellungen. Dein NPC wird erst dieser Packges ausführen, und dann zum Patrol-Package kommen, wenn keine andere Aktivität ausgeführt wird.

Du kannst den NPC nun platzieren und testen, aber es ist wichtig, dass er an der Position von MyPatrolBeginMarker gesetzt wird. Lass uns sehen wie das funktioniert.


Wie es funktioniert

Ein kleiner Einblick in die Hintergründe der Packages kann dir die Funktionsweise dieser Methode und unseres AI-Packages näherbringen.

Wenn du dir das GuardPatrolBeginPatrol-Package ansiehst, wirst du sehen, dass es nichts weiter als die Anweisung ist, wieder an den Ausgangspunkt des NPCs(wo er im CS erstellt wurde) zurückzukehren, mit einem "Must Reach Location". Es gibt keine Bedinungen, also wird dieses Package immer ausgeführt, wenn es einem NPC zugewiesen ist.

Aber da MyPatrolPackage in der Liste darüber steht, wird es dementsprechend auch vorher ausgeführt. Die Bedingung GetDistance MyPatrolBeginMarker < 512 wird also im ersten Frame ausgeführt, wenn der NPC geladen ist, da MyPatrolBeginMarker gleich mit der Ausgangsposition des NPCs ist. Das geht so weiter bis der NPC 512 Einheiten von seiner Ausgangsposition entfernt ist, warum kehrt er also nicht zurück, bevor er seinen Zielort erreicht hat?

Wegen dem "Must Reach Location"(dt. "Muss Ort erreichen"). Obwohl der NPC zurückkehren "möchte", sobald er mehr als 512 Einheiten von seinem Ausgangsort entfernt ist, wird er das nicht machen, bis er den MyPatrolEndMarker erreicht hat und seine AI-Liste neu analysiert.

Diese Methode kann auch benutzt werden um komplexere, Mehr-Punkte-Patrols zu erstellen, indem weitere Packages zwischen dem ersten Patrol-Package und dem GuardPatrolBeginPatrol-Package erstellt werden.


Templates benutzen

Häufig möchte man mehr Abwechslung als nur einen NPC, der in einem Dungeon herumläuft, und Templates(dt. Vorlage) sind die Möglichkeit diese Abwechslung zu erreichen, auch ohne neue NPCs oder Kreaturen in Leveled Lists zu erstellen. Wir können nämlich einfach eine neue Version einer Standard-Leveled List machen und unseren NPC als Template(Vorlage) dafür nutzen.

Leveled Lists übernehmen die folgenden Punkte ihrer Templates:

Lasst uns also die LL1BanditMelee100-List als Grundlage verwenden. Öffne es und ändere die ID auf "MyPatrolList", und stelle das Template auf "MyPatrolTemplate01" ein. Klicke OK und erstelle das neue Objekt an der Position von MyPatrolBeginMarker und entferne den alten NPC, falls du ihn zu Testzwecken dort hingestellt hast.


Testen und verbessern

Das Testen ist ganz einfach, indem ihr einfach den Editor schließt und das Verhalten des NPCs in der Zelle beobachtet. Der häufigste Fehler ist, die falschen Marker und Condition/Location zu wählen. Denkt auch daran, wenn ihr Marker verschiebt, dass der NPC mit verschoben wird. Wenn es Probleme gibt, den NPC auf den richtigen Weg zu bringen, können vorhandene Path-Knotenpunkte per Rechtsklick in blaue, vorgezogene Knotenpunkte verwandelt werden.

Das wars. Mit dieser Methode lassen sich ganz einfach NPCs mit Patrol-Package erstellen und somit die Spielwelt lebendiger gestalten.

Viel Glück!