|
Korrekte Anwendung des func_areaportal Entities |
|
|
Da ich schon des öfteren mitbekommen habe, dass User Probleme mit den Area-Portals haben, habe ich mich einmal rangesetzt und ein Tutorial zu dem func_areaportal Entity geschrieben.
Areaportals dienen dazu, einzelne Abschnitte (Areas) einer Map durch Portals zu trennen und somit Ressourcen zu sparen und die Performance zu erhöhen, indem man einfach momentan nicht benötigte Abschnitte eines Levels ausblendet. Dies ist besonders günstig, wenn man an einem größeren Projekt arbeitet. Das Tutorial gilt für Half-Life² (SP und MP) sowie für Counter-Strike:Source.
Als Allererstes ist es wichtig zu wissen, dass man über die Areaportals sogut wie keine Kontrolle hat. Sie sind nur durch richtiges Platzieren und korrekte Einstellung zu bändigen, da die Engine, bzw. die Compiler sich aussucht/aussuchen, aus welchem Areaportal man wie weit sehen kann, bzw. welche Areaportals für die unterschiedlichen Spielerpositionen die begrenzenden sind. Das höhrt sich vieleicht unvorteilhaft an, wenn man aber alles richtig macht, ist es kein Problem.
---- Normale Areaportals ----
Zuerst sollte man an einer Beispielmap üben. dazu Bauen wir uns einen Raum mit einer "kleinen Gasse".
Dann setzen wir wie auf dem Bild gezeigt zwei Brushes, belegen diese von allen Seiten(!) mit der "tools/toolsareaportal" Textur.
Wichtg ist, dass der Brush nirgends überlappt oder einen Spalt zwischen Wand/Decke/Boden erzeugt. Er muss zu 100% an allen Seiten dicht sein. Anschließend machen wir beide Brushes einzelnd über tie to entity zu einem func_areaportal.
Wie ihr seht, habe ich eine Linie von einem Areaportal zum anderen gezogen die gleichzeitig an der Ecke anliegt. Das kann sehr Praktisch sein, denn wenn nachher der Spieler durch ein Portal durchläuft, zurückblickt und ein Loch sieht, ist das nicht sehr schön. Deshalb sollte man die beiden func_areaportals so Platzieren, dass man das Eine von der Position des Anderen aus nicht sehen kann, dafür eignet sich eine Ecke wie diese geradezu perfekt.
Wenn ihr sicher gegangen seid, das die beiden Portals zu 100% dicht mit den umliegenden Brushes liegen, wählen wir beide func_areaportals aus, gehen in die Properties und klicken auf den Eintrag "Initial State".
Dieser Wert legt fest, wie sich das Area Portal verhalten soll, sobald es gespawnt ist. Hier stellen wir beide auf "Open".
Nun Compilen wir die Map und geben in die Console "mat_wireframe 1" (ohne die Anführungszeichen, bei CS:S vorher sv_cheats 1 eingeben) ein. Dieser Befehl bewirkt, dass man das Gitternetz der Grafik selbst durch Wände sehen kann. Wenn man nun durch die Position der einzelnen Areaportals läuft, sollte man sehen, wie hinter dem anderen sämtliche Brushes und Entitys verschwinden, sobald man aber wieder zurück schreitet, wieder auftauchen, zumindest sollte es so sein, wenn alles richtig gemappt wurde.
Falls dem nicht so ist, müsst ihr nocheinmal sichergehen, dass die Areaportals auch wirklich zu 100% an Decke/Wand/Boden anliegen und nirgends in der World verschwinden.
---- Areaportals die verknüpft mit einer Tür agieren. ----
Auch hier solltet ihr mit einer Beispielmap anfangen.
Wir bauen zwei Räume die 16 Units auseinanderliegen. Zwischen diese beiden Räume bauen wir einen Durchgang.
Hier ein Beispiel, wo ich für jede einzelne Zone eine andere Farbe verwendet habe, um klarer den unterschied zwischen den einzelnen Räumen erkennen zu lassen.
Klicken für Bild!
In den Durchgang setzen wir nun ein "prop_door_rotating", gehen auf den kleinen Roten Kasten unter Properties und dort unter den Eintrag "World Model". Hier angekommen tragen wir Folgendes ein: "models/props_c17/door01_left.mdl" (ohne die Anführungszeichen).
Wie unschwer zu erkennen ist, handelt es sich dabei um ein Türmodel.
Nun richten wir die Tür so aus, dass sie bündig mit dem Boden steht. Die Wände und der Brush über der Tür muss nun so an die Tür angepasst werden, dass man nicht rechts, nicht links und nicht oben sowie untendurch etwas von der anderen Seite erkennen kann.
Das sollte dann in etwa so aussehen:
Klicken für Bild!
Ist dies geschehen gehen wir in die Properties des prop_door_rotating und geben ihm den Namen "portal_door" (oder irgendwas anderes, was man sich gut merken kann, so erspart man sich das ewige nachschauen).
Nun müssen wir Präzisionsarbeit leisten und zwar müssen wir nun einen Brush über die Tür Legen. Der Brush muss genau in den Durchgang passen (wiedereinmal 100% Dichtheit). Diesem Brush geben wir wieder die "tools/toolsareaportal" Textur und machen ihn zu einem func_areaportal.
Nun gilt es diesen Brush auf 2Units genau in die Mitte der Tür zu verkleinern.
So muss das dann aussehen, und zwar von beiden Seiten!
Klicken für Bild!
Nun öffnen wir die Properties des func_areaportals und gehen auf den Eintrag "Name of Linked door" und geben den Namen der Tür an (in diesem Falle portal_door).
Nun alles durch den Compile jagen und testen!
Sollte bei euch jener berüchtigter Hall of Mirror error kommen, habt ihr entweder das Portal nicht dicht angesetzt, es zu dick gemacht oder nicht mittig von in Tür platziert.
Ich möchte nocheinmal betonen, dass es wichtig ist, dass die Portals richtig platziert sind und auch alle funkionieren. Wenn man in einer Map z.b. ein Areaportal System bestehend aus zwei func_areaportals (wie als erstes oben beschrieben) und ein system das mit einer Tür verlinkt ist und das System mit der Tür nicht richtig Funkioniert, werden die anderen beiden func_areaportals auch verrücktspielen! Vorsicht ist geboten!
Wenn ihr wollt könnt ihr euch hier meine Beispielmap laden:
Download!
In diesem Sinne
Happy Mappin´ :)
U-One |
|
|
U-One |
|
|