Leaf Portal saw into Leaf

Viele Leute haben Probleme mit dem Fehler leaf portal saw into leaf. Hier versuche ich, das Problem zu beschreiben und zu erklären, wie man es vermeidet. Den Fehler zu vermeiden ist viel einfacher, als ihn zu finden. Seien Sie sich bewußt, daß die Situationen, die hier beschrieben werden, NICHT die einzigen Ursachen dieses Fehlers sind und manchmal überhaupterst als Problem auftreten, wenn die Map zunehmend komplexer wird (oder nach/während einem vollen vis).

Richtiger Aufbau eines Ganges/Raum

Auf diesem Bild (Fig. 1) zeige ich den korrekten Aufbau eines Ganges, der in einen Raum mündet empfohlene Bauweise. Beachten Sie die strikte Trennung der Brushes (Blöcke) zwischen dem Gang und dem Raum (gelbe Pfeile). Der Gang hat seine eigenen Brushes, ebenso der Raum. Diese Art des Aufbaus führt zu optimaleren (niedrigeren) Polygonzahlen im Spiel.

Falscher Aufbau

Diese Bild (Fig. 2) zeigt die FALSCHE Weise, einen solchen Raum mit einemGang zu verbinden. Es mag manche Gründe geben, warum man diese Stelle gerade so bauenwill, aber wie ich später beschreiben werde kann gerade das die Ursache für den Leaf_saw_into_leaf-Error sein. Die Wände des Ganges (grün)erstrecken sich bis in den Raum und werden Teil des Raumes (gelbe Pfeile). Dies fügt nicht nur zusätzliche Polygone zu der linken Innenwand des Raumes hinzu (eventuell werden diese durch qcsg/qbsp miteinanderverschmolzen, vielleicht aber auch nicht), es kann auch dazu führen, daß die HL-Engine unsichtbare Polygone nicht entfernt (solche Polygone, die momentan nicht im Blickfeld sind, sich aber in der eventuell sichtbar -Liste (PVS) befinden.

Erklärung des Problems

Probleme durch den Aufbau In diesem Bild (Fig. 3) haben wir einen röhrenförmigen Gang (in Rot), der in einen Raum (C) ragt. Beachten Sie auch, daß der Gang aus vier Brushes besteht, die in den Raum ragen. Ein Teil der Brushes (A) befindet sich innerhalb der Raumes, der Rest (B) außerhalb. Wenn Vis die Unterteilung der Map inPortale durchführt, wird der Gang manchmal nicht zwischen A und B aufgespalten. Stellen Sie sich nun vor, daß sie an Punkt A stehen:

Sie befinden sich eindeutig an Punkt A des Gang-Portals, aber gleichzeitig im Portal von Raum C. Vis wird trotzdem noch überprüfen, ob von A aus C sichtbar ist bzw. C von A aus – dies deshalb, weil A trotzdem immer noch zu B gehört, und nicht zu C. Obwohl die Portals C und A sich überschneiden, sieht Vis den Bereich A immer nochals zu einem anderen Portal(B) zugehörig an. Infolgedessen denkt Vis, daß das Portal in sich selbst sehen kann (C kann in A sehen und umgekehrt), was den Fehler verursacht. Was hier getan werden muß, ist eine Trennung von A und B, damit, wenn Vis oder die anderen Compiler-Programme die Map zerlegen, A und B eindeutig voneinandergetrennt werden. Wenn dann die Portale festgelegt werden, können A und C verschmolzen werden, OHNE daß A weiterhin auch als Teil von B angesehen wird.

Korrekter Aufbau

Im letzten Bild (Fig. 4) habe ich den Gang von dem Raum abgeschnitten. Damit Sie sehen können, wo genau der Schnittverläuft (grüne Linie), habe ich den Gang etwas von dem Raum abgerückt. Dies hat den Effekt, daß Raum und Gang in zwei unabhängige Teileaufgespalten werden, keiner steckt im anderen. Anmerkung: Wenn Sie die Fehlermeldung:Areaportal touches > 2 areas erhalten, kann dieseArt des Aufbaus ebenfalls helfen.

Den Fehler finden

Dies klingt ja alles ganz einleuchtend, aber was, wenn Ihre Map kompliziert ist und Sie den Fehler finden müssen? Blocken Sie zuerst einen/den (verdächtigen) Teil Ihrer Map heraus (großen massiven Block setzen, der die Stelle komplett umschließt), oder verwenden Siedas Cordon-Tool von WorldCraft. Sobald Sie nun Vis laufen lassen und der Fehler nicht mehr auftritt (oder die Anzahl der Error-Meldungen sich verringert), haben Sie einen möglichen Standort für den Fehler gefunden. Wenn Sie das Ausgabefenster von Vis betrachten, zählen Sie, wieviele Male der Fehler auftritt. Wenn Sie ihn nur einmal sehen, dann existiert nur eine einzige Problemstelle in der Map. Wenn die Meldung zweimal auftritt, können es ein oder zwei Problemstellen sein-im Beispiel von Fig. 3 kann C in A sehen und A in C, was zwei Fehlermeldungenergibt, aber es gibt nur eine Stelle, die den Fehler verursacht.

Als nächstes versuchen Sie, Ihre Gänge undverbundenen Räume zu einer der obigen Kategorien (gut/schlecht) zuzuordnen. Wenn sie zwischen zwei verbundenen Räumen nur eine einzelne gemeinsame Wand gesetzt haben, dann bauen Sie stattdessen zwei Wände mit einem (kleinen, kurzen) Gang dazwischen, durch den man von einem in den anderen Raum gelangt. Es gibt eine Tendenz diesen Fehler nicht zu beheben. Wenn er nur einmal auftritt, würde ich sagen, daß Sie ihn nicht unbedingt beheben müssen und das Gameplay trotzdem problemlos sein dürfte. Seien Sie aber trotzdem vorsichtig. Je öfter der Fehler auftritt, desto länger braucht vis zum Berechnen der Map. Ich habe festgestellt, daß bei drei solcher Fehlermeldungen sowohl vis zwei- bis reimal so langegedauert hat, als auch die Größe des bsp-files um 50-200% zugenommen hat. So schwierig es sein mag, den Fehler zu finden, ist es immer noch am besten, ihn zu beseitigen.

Schlussbemerkung

Wie am Anfang bereits angegeben, sind die obenbeschriebenen Situationen nicht die einzige Ursache für diesen Fehler, und der Fehler wird möglicherweise überhaupt nicht auftreten, solange Ihre Map relativ einfach bleibt oder bis Sie Vis voll laufen lassen. Ich hoffe jedoch, daß dieser kurze Artikel trotzdem etwas zum tieferen Verständnis beiträgt. Auch kann es sein, daß nicht alle technischen Details in diesem Artikel hundertprozentig korrekt sind, aber so verstehe *ich* dieses Problem. Und seitich mich an diese Richtlinien halte, taucht der Fehler nicht mehr auf.

Eventuell findet man weitere Hinweise auch noch im Hint-Brush-Artikel.

Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life/tutorials/leaf_portal_saw_into_leaf.txt · Zuletzt geändert: 2004/12/30 04:14 von leprau