Descent3fischlein.de Ship
MenTop
News D3Edit Levels Mods Tools Links Lan-Pic's Gästebuch Kontakt Fischlein
151215 seit 24.09.2000

BNodes setzen
Geschrieben von (LL)Dark
Wenn Ihr Euch diese Anleitung ausdrucken wollt, dann HIER Klicken.

Der Editor versucht an jedem Raumportal und in der virtuellen Mitte des Rooms ein Bnode zu setzten und diese dann miteinander zu verbinden. In einem runden oder rechteckigen Raum ist das kein großes Problem. Sobald der Raum aber eine etwas ungewöhnlichere Form aufweist, oder Einbauten hat, scheitert der Editor regelmäßig. Außerdem ist es vielleicht auch nicht gewünscht an jedem Portal ein Bnode zu haben weil das Portal zB. Ein Fenster ist oder in einen Raum führt den das GuideBot gar nicht finden soll, oder, oder, oder.... In all diesen Fällen muss man per Hand eingreifen. Wie das am besten geschieht soll hier erklärt werden.

Räume
Das Wichtigste zuerst:
Es ist von größter Wichtigkeit die Räume so zu bauen das sie keine Verwinkelungen, tiefere Ausbuchtungen oder größere Krümmungen aufweisen.
Hat man solche Raumstrukturen, dann muss man diese in Einzelräume zerlegen die man dann wieder durch Portale miteinander verbindet.

Warum ?
Eigentlich sollte das GuideBot sich von Node zu Node durch den Raum hangeln. Das tut es im Idealfall auch. Es fliegt vom Node des Eingangsportals zum Node in der Mitte des Raumes und von da aus zum Node des Ausgangsportals. Von da geht es ab in den nächsten Raum. Dies ist, wie gesagt, der Idealfall - gibt es leider eher selten so. In der Regel hat man mehrere Nodes im Raum verteilt und vielleicht auch mehr als nur zwei Portale. Dann tritt eine eher unangenehme Eigenschaft des GuideBot zu tage. Man bemerkt dass das GB ein faules Stück ist. Es versucht den kürzesten Weg zum nächstgelegenen Node zu finden und schert sich einen Dreck darum ob diese Nodes direkt miteinander durch Edges verbunden sind. (Edges sind die Verbindungen zwischen den Nodes) Es spielt für das GB auch keine Rolle ob sich eventuell eine Wand zwischen diesen Nodes befindet.Das Ergebnis ist dann, dass das GB stur vor einer Wand hängt und nicht weiter kommt. Zur Veranschaulichung mal ein Bild:

Bild 1

Wie man sieht, wird ein BNode in der virtuellen Raummitte erzeugt. Den Editor interessiert es dabei nicht ob die Raummitte nun innerhalb oder außerhalb des eigentlichen Raumes liegt. Solche, außerhalb der Levelstruktur liegenden, BNodes müssen gelöscht werden. Als nächstes fügt man per Hand neue BNodes ein. Dies geschieht immer so, das es eine direkte Sichtverbindung zu einem anderen Bnode gibt. Im Bild sind diese BNodes grün dargestellt. An sich hätte man nun einen durchgehenden AI-Node-Path durch den ganzen Raum hergestellt und könnte zufrieden sein. Leider würde das GuideBot aber den rot eingezeichneten Path nehmen und somit an der rot gekennzeichneten Wand hängen bleiben. Abhilfe schafft hier nur, den Raum ca. an den gelb gestrichelten Linien in 4 Einzelräume zu teilen und danach durch Portale wieder miteinander zu verbinden. Führt man dann die automatische AI-Node-Erstellung aus, wird kaum nachträgliche Handarbeit erforderlich sein und auch das GuideBot wird problemlos seinen Weg finden.

Merke:
Die Krümmung eines Ganges sollte nie größer als 45° sein. Bei sehr breiten Gängen kann sie maximal 90° sein. (aber nicht empfehlenswert)

Tiefe Raumausbuchtungen vermeiden. Solche Ausbuchtungen besser als separaten Raum anfügen.

Portale
Standardmäßig versucht der Editor an jedem Portal ein BNode zu setzen. Das setzen der BNodes ist dabei jedoch von der Textur des Portals abhängig! Auch wenn man bei einem Portal die Textur nicht sieht, so ist sie ja dennoch da. (wähle ein Portal an und schaue in die Textur Bar) Damit der Editor am Portal ein BNode setzt, muss dieses Portal die Textur Palmleaf1 haben.
(In Atans letzter Editorversion wird die Portaltextur automatisch dahingehend geändert)
Hat ein Portal eine andere Textur, dann wird KEIN BNode gesetzt. Somit kann man ganz einfach darauf Einfluss nehmen ob an einem Portal ein BNode gesetzt wird oder nicht. Dies funktioniert auch nachträglich. Wird ein BNode gesetzt, dann immer in der Mitte des Portals.

Ausführung Schritt für Schritt
Level erstellen und sämtliche Objekte einfügen. Alle Räume überprüfen ob sie die oben genannten Anforderungen erfüllen. Müsste nach Erstellung des AI-Node-Systems ein Raum gesplittet werden und/oder ein neuer Raum hinzukommen, würden alle BNodes des Levels wieder gelöscht werden und man müsste von vorne anfangen! ALLE Portale überprüfen ob sie die oben beschriebenen Anforderungen erfüllen. Bei älteren Editorversionen muss man darauf achten das alle Portale die Textur Palmleaf1 haben (außer die, die keine BNodes bekommen sollen). Bei der neuesten Editorversion ist es umgekehrt, hier muss man darauf achten das alle Portale die kein BNode bekommen sollen, diese Textur NICHT haben. (da die Portaltexturen beim erzeugen des Portals automatisch auf Palmleaf1 gesetzt wurden)

Nun erst das AI-Node-System erzeugen!
Diese geschieht folgendermaßen:

Die Path Bar öffnen und dort AI Paths (BNodes) auswählen. Klicke nun auf Create AI Path Nodes.
Es werden nun im gesamten Level in allen Räumen automatisch BNodes erzeugt und versucht diese miteinander durch Edges zu verbinden. Danach wird dir eine Liste angezeigt in der steht in welchen Räumen das nicht geklappt hat und welche BNodes dort nicht miteinander verbunden sind.
In diesen Räumen musst du nun auf jeden Fall selbst tätig werden.

Es empfiehlt sich aber DRINGEND auch ALLE anderen Räume zu kontrollieren.

Wähle den Raum aus an dem du arbeiten willst und gehe in die Room View. Solltest du keine AI Paths oder BNodes sehen, dann klicke mit der rechten Maustaste ins Fenster und setze bei Display AI-Nodes ein Häkchen.

Wechsel mit Ctrl+H in den Path mode oder betätige dazu diesen Path mode - Button Button. Nun kannst du mit N die Nodes einzeln durchschalten (mit Shift+N geht's rückwärts). Du kannst sie natürlich auch in der Path Bar mit den Pfeil-Buttons unter BNode durchschalten. Hier wird dir auch angezeigt welches Node gerade aktiv ist. In der Room View wird das aktive Node vergrößert und in den Koordinatenfenstern gelb angezeigt. Schaue nun als erstes ob sich ein, oder mehrere Nodes, außerhalb des Raumes befinden. Da sie manchmal schwer zu finden sind, schalte zu diesem Zweck einfach mal alle Nodes durch. Hast du ein solches Node gefunden, dann lösche es, indem du in der Path Bar auf Delete klickst. Lösche auch die Nodes, die zu dicht an einer Wand platziert wurden. (oder verschiebe sie) Solche Nodes können meist nicht mit den anderen Nodes durch Edges verbunden werden. Nachdem du alle derartigen Nodes entfernt hast, klicke in der Path Bar auf Edge cRoom Nodes. Nun wird versucht alle restlichen Nodes des Raumes miteinander zu verbinden. Wenn das klappt, dann ist dieser Raum fertig und du kannst dich dem nächsten zuwenden. Wenn es nicht klappt, oder du mit der Anordnung der Nodes noch nicht zufrieden bist, dann ist es wahrscheinlich notwendig weitere Nodes einzufügen.

Setze dazu im XY oder ZY Koordinatenfenster die gestrichelte grüne Nulllinie mit Ctrl+linke Maus auf die Raumhöhe auf der das Node später stehen soll. Dann setze im XZ Koordinatenfenster (Draufsicht) per Mausklick das rote X an die Stelle wo das Node eingefügt werden soll und drücke dann auf der Tastatur Insert oder klicke in der Path Bar auf Insert. Nun erscheint möglicherweise eine Abfrage ob das neue Node in die aktuelle Edge (die ist gelb) integriert werden soll oder nicht. Wenn du nicht gerade eine Edge trickreich umleiten willst, dann kannst du diese Abfrage immer mit Nein beantworten. Füge deine neuen Nodes nun so ein das sie immer in Sichtverbindung mit einem anderen Node stehen.

Achte auch darauf das sie nicht zu dicht an einem Face platziert sind (5 Units Abstand reichen normalerweise). Die Nodes müssen so angeordnet sein das sich von Node zu Node eine durchgehende Verbindung von einem Portal zum anderen herstellen lässt. Darüber hinaus können natürlich noch weitere Nodes im Raum angeordnet werden um Einbauten zu umgehen oder um kleinere Einbuchtungen zu erreichen. Die Nodes lassen sich auch verschieben indem man sie in einem Koordinatenfenster anwählt und dann mit Numblock 8/6/4/2 bewegt. Sie lassen sich nicht durch Faces hindurch schieben. Wenn alle Nodes deiner Meinung nach richtig platziert sind, dann betätige wieder Edge cRoom Nodes.

Wiederholde dass obenstehende so lange, bis du mit dem Ergebnis zufrieden bist und der Raum nicht mehr als fehlerhaft aufgelistet wird.

Hinweis:
Falls dein Level ein Terrain besitzt und sich dort auch external Rooms befinden, werden in der Verifyliste wahrscheinlich BNode Errors für Räume angezeigt die es bei dir gar nicht gibt. (zumindest wirst du sie nicht finden) In Atans neueren Editorversionen steht dann dort No path from x to y in terrain regions .... Diese Errormeldung kannst du getrost ignorieren.

Manchmal lassen sich Nodes an Portalen einfach nicht verbinden. Verschiebe diese Nodes einfach um 2-3 Units vom Portal weg. (zur Not auch weiter) Danach sollte es klappen.

Hast du Levelteile die durch Terrain von einender getrennt sind, dann achte darauf das eine direkte Sichtverbindung besteht. Ansonsten wird der GB den Weg nicht finden. AI Paths im Terrain lassen sich mit der letzten mir bekannten Editorversion (V1.1 Beta9 Atan 0.3_3_N - no Public) leider noch nicht erzeugen. Diese Funktion ist aber bereits in Vorbereitung und wird vielleicht irgendwann einmal zu Verfügung stehen.

Viel Spaß beim Levelbauen
(LL) Dark


Wenn Ihr nicht mit dieser Anleitung klar kommt, dann schickt mir eine E-Mail

Zurück