Oblivion:Grundlegendes Patrol Tutorial: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K
K
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Einleitung ==
 
== 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.  
+
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 [[ob:NPC|NPCs]], [[ob:Package|Packages]], und [[ob:Pathgrid|Pathgrids]] besitzen.
+
Du solltest grundlegendes Wissen über [[ob:NPC|NPCs]], [[ob:Package|Packages]] und [[ob:Pathgrid|Pathgrids]] besitzen.
  
  
== Einstellen des Packages ==
+
== Einstellen der Packages ==
Das Allererste, was wir machen werden, ist einen [[ob:NPC|NPC]] zu erstellen, der unsere [[ob:Package|Packages]] bekommt. Öffne den NPC "BanditMeleeMale2" und gib ihm die neue ID "MyPatrolTemplate01".(Warum wir das machen, wird später erklärt)
+
Das Allererste, was wir machen werden, ist einen [[ob:NPC|NPC]] zu erstellen, der unsere [[ob:Package|Packages]] bekommt. Öffne den [[ob:NPC|NPC]] "BanditMeleeMale2" und gib ihm die neue ID "MyPatrolTemplate01" (warum wir das machen, wird später erklärt).
Öffne nun das [[ob:Package WindowI|Package Window]] (AI) dieses [[ob:NPC|NPCs]]. Wir können die Banditen-Packages entfernen, jedoch ist es sinnvoll, ein einfaches Wander-Package am Ende jeder Package-Liste zu behalten. Entferne jetzt also ''BanditSleep4x4'' und ''BanditGruntWanderExterior''.
+
Öffne nun das [[ob:Packages Window|Package Window]] (AI) dieses [[ob:NPC|NPCs]]. Wir können die Banditen-Packages entfernen, jedoch ist es sinnvoll, ein einfaches Wander-Package 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.
+
Ö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.
+
Bevor wir allerdings weiter machen, benötigen wir Platz für unsere 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 [[ob:cell|Zellen]]liste und wirf einen Blick in die Hauptkammer.
<blockquote>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.</blockquote>
+
<blockquote>Es gibt ein paar Dinge, die beim Erstellen eines Patrol-Pfades beachtet werden sollten. Vermeide eine Route, die den [[ob:NPC|NPC]] durch Fallen oder andere gefährliche Gebiete führt. Bedenke auch, dass jeder Gegner auf dem Weg an das Level des [[NPC|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.</blockquote>
Die Route, die ich gewählt habe, wird durch zwei ''[[ob:XMarker|XMarker]]''-Objekte markiert. Ich nenne sie ''MyPatrolBegin'' und ''MyPatrolEnd'' um die Übersicht zu behalten und platziere sie wie auf [[constwiki:Image:PatrolTut_img_1.jpg|diesem]] Bild. Ich habe außerdem die Route dort markiert. Diese [[ob:XMarker|XMarker]]sind jedoch ohne ein Package recht sinnlos, also lasst uns das nun erstellen.
+
Die Route, die ich gewählt habe, wird durch zwei ''[[ob:XMarker|XMarker]]''-Objekte markiert. Ich nenne sie ''MyPatrolBegin'' und ''MyPatrolEnd'' um die Übersicht zu behalten und platziere sie wie auf [[constwiki:Image:PatrolTut_img_1.jpg|diesem]] Bild. Ich habe außerdem die Route dort markiert. Diese [[ob:XMarker|XMarker]] sind jedoch ohne ein Package recht sinnlos, also lasst uns das nun erstellen.
  
 
Klicke im Patrol-Fenster auf ''New'' und mache Folgendes:  
 
Klicke im Patrol-Fenster auf ''New'' und mache Folgendes:  
Zeile 18: Zeile 18:
 
* Ändere die Art auf ''Travel''
 
* Ändere die Art auf ''Travel''
 
* Markiere die Box ''Must Reach Location''
 
* 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 im [[ob:Render Window|Render Window]]'' und doppelklicke den [[ob:XMarker|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.
+
Wir müssen diesem Package auch ein Ziel geben. Klicke auf den ''Location''-Reiter und markiere den Button ''Near Reference'', dann klick auf ''Select Reference im [[ob:Render Window|Render Window]]'' und doppelklicke den [[ob:XMarker|XMarker]] "MyPatrolEndMarker". Öffne abschließend den ''Conditions''-Reiter und rechtsklicke in die Liste, um eine neue [[ob:condition|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:
+
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 diese Reihenfolge haben:
 
* MyPatrolPackage
 
* MyPatrolPackage
 
* GuardPatrolBeginPatrol
 
* GuardPatrolBeginPatrol
 
* BanditGruntWanderInterior
 
* BanditGruntWanderInterior
<blockquote>Normalerweise platziere ich ein "Torch02"-Objekt im Inventar des NPCs, soweit möglich - es hilft, sie aus der Umgebung hervorzuheben und die Bewegung zu verdeutlichen.</blockquote>
+
<blockquote>Normalerweise platziere ich ein "Torch02"-Objekt im Inventar des [[NPC|NPCs]], soweit möglich - es hilft, sie aus der Umgebung hervorzuheben und die Bewegung zu verdeutlichen.</blockquote>
<BLOCKQUOTE>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.</BLOCKQUOTE>
+
<BLOCKQUOTE>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 diese Packges ausführen und dann zum Patrol-Package kommen, wenn keine andere Aktivität ausgeführt wird.</BLOCKQUOTE>
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.
+
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 ==
 
== Wie es funktioniert ==
 
Ein kleiner Einblick in die Hintergründe der Packages kann dir die Funktionsweise dieser Methode und unseres AI-Packages näherbringen.   
 
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.
+
Wenn du dir das ''GuardPatrolBeginPatrol''-Package ansiehst, wirst du sehen, dass es nichts weiter als die Anweisung ist, wieder an den Ausgangspunkt des [[NPC|NPCs]] (wo er im CS erstellt wurde) zurückzukehren, mit einem "Must Reach Location". Es gibt keine [[ob:condition|Bedingungen]], 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 [[ob:Einheiten|Einheiten]] von seiner Ausgangsposition entfernt ist, warum kehrt er also nicht zurück, bevor er seinen Zielort erreicht hat?
+
Aber da ''MyPatrolPackage'' in der Liste darüber steht, wird es dementsprechend auch vorher ausgeführt. Die [[ob:condition|Bedingung]] '''GetDistance MyPatrolBeginMarker < 512''' wird also im ersten Frame ausgeführt, wenn der [[NPC]] geladen ist, da MyPatrolBeginMarker gleich mit der Ausgangsposition des [[NPC|NPCs]] ist. Das geht so weiter, bis der [[NPC]] 512 [[ob:Einheiten|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.
+
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.
+
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 ==
 
== 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 [[ob:Leveled Lists|Leveled Lists]] zu erstellen.
+
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 [[NPC|NPCs]] oder [[ob:kreatur|Kreaturen]] in [[ob:Leveled Lists|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.  
+
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:
 
Leveled Lists übernehmen die folgenden Punkte ihrer Templates:
Zeile 56: Zeile 55:
  
 
== Testen und verbessern==
 
== Testen und verbessern==
Das Testen ist ganz einfach, indem ihr einfach den Editor schließt und das Verhalten des [[ob:NPC|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 [[ob:NPC|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 Testen ist ganz einfach: indem ihr den Editor schließt und das Verhalten des [[ob:NPC|NPCs]] in der [[ob:cell|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 [[ob:NPC|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 war es. Mit dieser Methode lassen sich ganz einfach [[ob:NPC|NPCs]] mit Patrol-Package erstellen und somit die Spielwelt lebendiger gestalten.  
 
Das war es. Mit dieser Methode lassen sich ganz einfach [[ob:NPC|NPCs]] mit Patrol-Package erstellen und somit die Spielwelt lebendiger gestalten.  
Zeile 66: Zeile 65:
  
  
[[Kategorie:Tutorials|Grundlegendes Patrol Tutorial]]
+
[[Kategorie:Quests und Actors|Grundlegendes Patrol Tutorial]]
 +
[[Kategorie:Scripterstellung|Grundlegendes Patrol Tutorial]]
 +
[[Kategorie:Mod-Editor|Grundlegendes Patrol Tutorial]]

Aktuelle Version vom 8. März 2009, 17:51 Uhr

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 der 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 Package Window (AI) dieses NPCs. Wir können die Banditen-Packages entfernen, jedoch ist es sinnvoll, ein einfaches Wander-Package 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 unsere 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. Klicke auf den Location-Reiter und markiere den Button Near Reference, dann klick auf Select Reference im 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 diese Reihenfolge haben:

  • MyPatrolPackage
  • GuardPatrolBeginPatrol
  • BanditGruntWanderInterior
Normalerweise platziere ich ein "Torch02"-Objekt im Inventar des NPCs, soweit möglich - es hilft, 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 diese 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 Bedingungen, 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 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 war es. Mit dieser Methode lassen sich ganz einfach NPCs mit Patrol-Package erstellen und somit die Spielwelt lebendiger gestalten.

Viel Glück!

Links