Nicht eingeloggt
Registrieren

Semisolid Brushes

Semisolid Brushes


Fehlervermeidung, Verwendung und Besonderheiten



Voraussetzungen:

Dieses Tutorial setzt einiges an Wissen um die Funktionen des UnrealEd voraus, schon allein, weil es für Neulinge ohnehin nicht wirklich von Bedeutung ist (siehe Vorwort). Deshalb gehe ich auch nicht näher auf einzelne Fachbegriffe ein, zumindest nicht auf solche, die ich für allgemein bekannt oder selbsterklärend halte.

Wer trotzdem etwas nicht versteht, HIER stehen jede Menge Tutorials rund um den UnrealEd 2.0 bereit, die diesem hier als Grundlage dienen können.




Vorwort:

Semisolid Brushes (oder auch einfach "Semis") sind fast schon eine Wissenschaft für sich. Wer noch nicht viel Erfahrung im Umgang mit dem UnrealEd hat, wundert sich wohl, warum in Profi-Maps so viel mit Semis gearbeitet wird, während man in der eigenen Map doch wunderbar ohne sie auskommt. Das hat meiner Meinung nach zwei Gründe:
  1. Semis sind wirklich nur dann zwingend notwendig, wenn eine Map sehr viele Details aufweist, die als Solids zu HOMs führen würden. Cube-Maps und einfache "Weiterentwicklungen" können deshalb getrost auf Semis verzichten.
  2. Das Setzen eines Semis ist einfach umständlicher als das normale Adden eines Solids, weil es im Ed standartmäßig keinen "Add Semisolid Brush" Button gibt (dazu unten mehr). Schon alleine die Tatsache, dass man also ein Semi nur auf Umwegen adden kann, dürfte Einsteigern diese Möglichkeit etwas suspekt machen, weil sie meistens gar nicht wissen, was so ein Semi bringen sollte.

Fehler, Probleme, und wie man sie umgeht:

Als erstes sollte man einmal wissen, wann man Semis setzen sollte, bzw. wann und wie man sie auf keinen Fall setzen DARF!
Dazu beschreibe ich gleich mal die grundlegendste Eigenschaft eines Semis: Wie der Namen "Semisolid" schon besagt, ist eine solcher Brush "halbfest". Das heißt, er wird auf der einen Seite wie feste Materie berechnet, also er blockt Spieler und Bots wie ein normaler Solid-Brush, wirft Schatten und ist undurchlässig für Schüsse. Auf der anderen Seite wird ein Semi aber bei der Berechnung der Map NICHT als fest gewertet, das heißt, mit Semis kann man keine Zonen abtrennen, und vor allem, aus einem Semi kann man nichts herausschneiden! Nach dem Rebuilden wird die Priorität des Semis immer über die des Subtract-Brushes gesetzt, das heißt, der Semisolid-Brush erscheint so, als wäre er erst nach dem Substract gesetzt worden.

semi1.jpg
Abb.1: Die Priorität des Semisolid Brushes ist höher als die des Subtracts.


Das seltsame ist nun aber, dass ein Semi, von dem nur eine Fläche sichtbar ist, weil die anderen innerhalb fester Materie liegen (also z.B. 0 WE au einer Wand hervorstehen, wie bei Trims üblich), eben NICHT als letztes berechnet wird, sondern als erstes! Das heißt, er ist schlicht und einfach nicht sichtbar, also in dieser Situation NUR Solids verwenden!

semi2.jpg
Abb.2: Die eine Trim (Solid) ist sichtbar, die andere (Semisolid) nicht.


Ein weiteres mir bekanntes Problem bei Semis, das übrigens in folgender Situation IMMER auftritt, ist dieses:
Man nehme zwei Brushes von beliebiger Form, und lege sie Fläche auf Fläche aufeinander, aber so, dass man von den beiden sich berührenden Flächen noch etwas sieht. Solange beide Brushes Solid sind, gibt es keine Probleme, sind beide Semisolid ebenso wenig. Sobald man aber nur EINEN der beiden semisolid macht und den anderen solid lässt, verschwindet die Fläche des Semis, die die Fläche des Solids berührt.

semi3.jpg
Abb.3: Die Bodenfläche des Semis verschwindet, weil sie eine Fläche des Solids berührt.


Und als letztes möchte ich an dieser Stelle noch vom Einsatz großer Semis abraten, also etwa als Terrain oder Häuserblock. Zum einen können große Semis ohnehin von sich aus zu etwas merkwürdigen Fehlern führen (dazu müssten sie allerdings schon SEHR groß sein), vor allem aber ist die fehlende Möglichkeit, etwas aus einem Semi zu substracten (siehe oben), ein Problem. Wenn man sagen wir ein Haus als Semi gebaut hat, und dann im nach hinein merkt, dass man noch einen Innenraum bauen möchte, dann ist das nicht ohne weiteres möglich. Man muss dazu das Haus erst einmal in ein Solid umwandeln, was aber wieder zu Problemen mit angrenzenden Semis führen kann, und so weiter… Also: Auf zu große Semis verzichten!
Diese Punkte sollte man sich von vorne herein gut merken, dann ist der Umgang mit Semis eigentlich recht ungefährlich. So, jetzt aber genug der Theorie, kommen wir zum praktischen Teil.


Einsatzmöglichkeiten von Semisolids:

Wie man schon an professionellen Maps sehen kann, werden Semis fast ausschließlich für kleine Dekorationen wie Lampen, Rohre, Verstrebungen etc. verwendet. So ist es z.B. sinnvoll, eine Konstruktion aus mehreren Brushes nach klassischer Methode mittels "Intersect" zu einem zu machen und diesen dann als Semi zu adden.

semi4.jpg
Abb.4: Eines der Haupt-Einsatzgebiete von Semis: Der Deco-Brush, hier eine Lampe


Aber auch wenn eine Konstruktion nicht aus mehreren Brushes besteht, kann der Einsatz eines Semis durchaus sinnvoll sein, gerade 2D-Shaper-Brushes sind fast schon dazu prädestiniert, als Semi geaddet zu werden. Darüber hinaus machen Semis auch bei fast allen anderen Arten von Dekorationen, wie etwa Stützpfeilern, Möbeln etc. Sinn.

semi5.jpg
Abb.5: Eine weitere semisolid Deco, diesmal ein 2D-Shaper-Brush


Erstellen von Semisolids:

Um Semisolids zu adden gibt es generell drei Möglichkeiten:
  1. Man addet den Brush als ganz normales Solid, rechts-klickt ihn, und wählt im Dropdown-Menü unter "Solidty" die Option "Semisolid". Der Nachteil an dieser Möglichkeit ist allerdings, dass der Brush die Eigenschaften des Semis erst nach dem nächsten Rebuilden annimmt, allerdings ist diese Taktik unumgänglich, wenn man schon bestehende Brushes nachträglich zu Semis konvertieren will.

    semi6.jpg
    Abb.6: Umwandeln eines Solid-Brushes in einen Semisolid

  2. Man addet den Brush gleich als Special Brush. Im "Add Special Brush" Fenster () wählt man dazu aus den Prefabs die "Semisolid Pillar" aus und klickt danach auf OK.

    semi7.jpg
    Abb.7: Erstellen eines Semisolid mittles "Add Special Brush"

  3. Die dritte und meiner Meinung nach beste Methode besteht darin, das Tool zu benutzen, das diesem Tutorial beiliegt, um den Semi direkt zu adden, dazu unten mehr.

Besondere Arten der Semis:

Eine weitere Eigenschaft, die nur ein Semisolid-Brush bietet, ist der problemlose Umgang mit Masked- und Transcluent-Surfaces. Wie jeder aus Erfahrung wissen dürfte, treten klassische Grafikfehler auf, wenn z.B. eine transparente Fensterscheibe (aus einem Solid) auf feste Materie auftrifft, weil man quasi an der Schnittstelle in den leeren Raum des Editors sehen kann. Dieser Fehler wird wegen der anderen Berechnungsart komplett behoben, wenn man das Fenster semisolid macht.

semi8.jpg
Abb.8: Ein transparenter Semisolid-Brush lässt sich ohne Probleme mit der Umgebung verbinden.


Das Adden funktioniert genau wie beim vorherigen Beispiel, nur dass man noch ein Häkchen bei "Masked" bzw. "Transparent" setzen muss.
Die letztze, nicht zu verachtende Einsatzmöglichkeit des Semis ist die ICH ("Invisible Collision Hull"). Es handelt sich dabei, wie der Name vermuten lässt, um einen unsichtbaren Brush, der den Spieler daran hindert, bestimmte Bereiche der Map (etwa Dächer etc.) zu betreten. Der Vorteil ist, ebenso wie im vorherigen Beispiel, dass man mit dieser Möglichkeit die Fehler umgeht, die am Schnitt des unsichtbaren Brushes mit fester Materie entstehen würden, wenn die ICH solid wäre.

semi9.jpg
Abb.9: Eine spezielle Art de Semis: Die "Invisible Collision Hull"


Um eine ICH zu setzen, wählt man im "Add Special Brush" Fenster die Kategorie "Invisible Collision Hull" und klickt OK.

semi10.jpg
Abb.10: Adden einer ICH im "Add Special Brush" Fenster


Das Tool für Faule - Add Semisolid Brush

Wie schon gesagt, der UEd bietet keinen Button, um Semisolids direkt zu adden... Es sei denn, man baut ihn sich selber!
Das geht folgendermaßen:
Als erstes ladet ihr DIESE ZIP-DATEI runter und speichert das enthaltene BMP unter "...\UnrealTournament\System\editorres"
Dann öffnet ihr die Datei "...\UnrealTournament\System\UnrealEd.ini" mit dem Text-Editor, geht zum Ende der Datei und fügt dort folgende Zeilen ein:

Code:
[UserDefinedGroup]
NumButtons=1
Button0=Add Semisolid Brush,AddSemiSolid,brush add flags=32
Für den Fall, dass ihr schon andere eigene Buttons benutzt, erweitert einfach die Zahl bei "NumButtons" um 1 und fügt der Liste die "Add Semisolid Brush" Zeile hinzu. Das kann dann etwa so aussehen:

Code:
[UserDefinedGroup]
NumButtons=3
Button0=.....
Button1=.....
Button2=Add Semisolid Brush,AddSemiSolid,brush add flags=32
Speichern, fertig. Wenn alles geklappt hat, solltet ihr jetzt im Editor diesen Button () zu Verfügung haben, der aus dem Builder-Brush direkt ein Semisolid erstellt.


Schlusswort:

Wie oben schon beschrieben gibt es zwar einige Probleme mit Semis, aber freundlicherweise sind diese IMMER gleich, und wenn man weiß, wie man sie vermeidet, sind und bleiben die Semis absolut fehlerfrei, davon abgesehen sprechen die Einsatzmöglichkeiten in manchen Situationen sowieso eindeutig für Semisolids.
Was vielleicht noch zu erwähnen wäre: Selbst wenn Semis einen Fehler haben (vor unsauberem Mapping schützten auch diese nicht!!), dann ist es technisch unmöglich, dass sich dieser Fehler auf umliegende Brushes ausbreitet, wie man es von Solids kennt!
Die einzige Frage, worauf ich allerdings keine vernünftige Antwort habe, ist die, WARUM das so ist. Ich weiß nur, dass es irgendwie mit der Hierarchie der Brushes im BSP-Tree zusammenhängt, aber genaueres kann ich dazu leider nicht sagen, in der Engine kenne ich mich nicht besonders aus… Aber mal ehrlich: Wer fragt schon nach einem Fehler, der NICHT da ist?!:p
In diesem Sinne: Viel Spaß beim Mappen, ich hoffe, mein Tutorial war hilfreich!

Greetings,

Revelation