Teil 1 des Tutorials: http://www.mapping-tutorials.de/forum/showthread.php?t=2043
Teil 2 des Tutorials: http://www.mapping-tutorials.de/forum/showthread.php?t=2091
So Leute hier ist mein 3. Tutorial und hier dreht es sich um die Optimierung eurer Maps.
Ich werde viel behandeln aber nicht alles sonst würde das Tutorial zu groß werden. Aber ein 2. Teil ist ja immer noch möglich. :D
1. Vorwort:
Irgendwann werden eure Maps wahrscheinlich zu groß werden und eure FPS in den Keller gehen. Und das ist dann der Punkt an dem ihr dieses Tutorial brauchen werdet. Alllerdings sollte man schon bei der Planung einer etwas größeren und konventionellen Map mit einberechnen, WO man die Hintbrushes und Portals setzt.
2. Der Wireframe Modus und andere Consolenbefehle
Um die Map nach FPS Einbrüchen zu durchsuchen braucht ihr erstmal die Console. Mit
–console –dev hinter der „Ziel“ Angabe eurer Spieleverknüpfung könnt ihr diese aufrufen.
Dann ladet ihr eure Map, drückt Esc und gebt erst sv_cheats 1 und dann showbudget in die Console ein. Jetzt seht ihr an welcher Stelle eure FPS in den Keller gehen. An diesen Stellen solltet ihr einige Verbesserungen vornehmen. Mit dem Befehl mat_wireframe könnt ihr prüfen ob eure Portals richig funktionieren und euch die Polygone in der Map anschauen.
Der nächste Consolenbefehl ist r_DrawPortals mit dem eure Portals schön gekennzeichnt werden. Mit r_portalsopenall könnt ihr alle Eure Portals öffnen um zu sehen was sie an Leistung bringen (d.h. alle Models in der Karte werden angezeigt ). r_portalscloseall schließt sie wieder. Doch zuerst müsst ihr erstmal Portals erstellen und das zeige ich jetzt:
3. Leaves:
Beim Komilieren wird eure Map in so genannte „Leaves“ unterteilt. Ich habe hier mal ein Paar Räume aufgezeichnet um das Prinzip zu erklären.

Sagen wir die Engine gibt jedem der 3 Räume und den beiden Durchgängen ein eigenes Leaf. ( Das wäre Optimal aber die Engine macht was sie will :D ) Wenn man nun in Raum 1 stehen würde beächtet die Engine NUR Leaf 2 und Leaf 3. Leaf 4 und 5 werden jetzt nicht mitberechnet und könnten voll gestellt mit High Poly Models sein. Also werden immer nur die vom Leaf in dem man drinsteht aus sichtbaren Leaves gerendert was einen erheblichen Performance Vorteil bringt.
Info: - Beim erstellen der Leaves werden nur die Brushes berücksichtigt. Also keine Detail_Brushes und keine Models und nix….
- Die orangen Linien sind die 1024 Schnitte. Dort wird auf JEDEN FALL ein Schnitt in den Leaves gemacht. Also setzt eure Levels nicht unbedingt in diese Linien rein und wenn´s sein muss dann schaut wie der Schnitt Sinnvoll sein könnte.
4. Hint Brushes:
Ihr könnt den Aufbau dieser Leaves auch selbst Bestimmen in dem ihr Hint Brushes setzt. Ein Hint Brush wird so erstellt: Macht einen Brush der überall an eine feste Wand anstoßen muss und gebt ihm die Textur tools/toolsskip. Dann nehmt ihr nur 1. Seite des Brushes und belegt sie mit tools/toolshint.
Wie ihr diese Hint Brushes einsetzt kann ich euch nicht zeigen aber ich denke ihr habt das Prinzip jetzt verstanden. Ich empfehle die Maps sdk_hints.vmf und sdk_de_cbble.vmf
Bei beiden könnt ihr euch viel Abschauen. :D
5. Area Portals:
Area Portals funktionieren im Grunde genommen genauso wie Hint Brushes doch können sie manchmal und besonders bei Gebäuden sehr hilfreich sein. Ich werde euch jetzt zeigen wie ihr ein Area Portal auf eine Tür und ein Fenster anwendet. Ein Unterschied zum Hint Brush ist das man einen ganzen Bereicht mit Area Portals abgrenzen muss aus dem keine Luft mehr Entweichen kann und der mit ganz normalen Brushes versiegelt ist, damit sie funktionieren.
1. Ihr macht ein Brush der 1 Unit hat und an allen Seiten genau mit Brushes abgrenzt.
2. Ihr gebt diesem Brush die Textur : tools/toolsareaportal
3. Ihr macht den Brush zu einem func_areaportal.
So würde das Areaportal jetzt funktionieren. Wenn ihr das zum Beispiel in einen Lüftungsschacht setzt ( der zu einem Raum führt der NUR durch den Lüftungsschacht zu erreichen ist ) sieht man alle models die in diesem Raum sind erst wenn man das Areaportal sehen kann.
4. Ihr macht eine Tür mit func_door_rotating und gebt ihr den Namen : door1
5. Ihr macht macht ein Areaportal das GENAU mit dem Türdurchgang abschließt und stellt sicher das eure Tür das auch tut.
6. Ihr geht auf die Property´s eures Areaportals und gebt bei „Name of Linked Door“ den Namen eurer Tür an.
Jetzt müsste das so aussehen:


6. Area Portals in Fenstern
Was aber nun wenn ihr in eurem Haus Fenster habt, durch die man ja durchschauen kann. Es wäre ziemlich Blöd, wenn die Models erst auftauchen würden, wenn ihr in das Haus hineingeht. Deshalb gibt es das func_areaportalwindow. Die Entfernung zum Fenster wird hier berücksichtigt.
1. Macht ein Fenster in eure Wand, egal wie es aussieht und ob es ein func_breakable_surf hat.
2. Jetzt macht in der Fensteraushöhlung einen 1 Unit dicken Brush der die Textur tools/toolsareaportal bekommt und macht diesen per tie to entity zu einem func_areaportalwindow.
3. Jetzt setzt ihr noch einen Brush der auch genau in das Fenster passen muss und das func_areaportalwindow umschließen muss. ( Die Seiten ins Haus und nach draußen )
Das könnt ihr euch in meiner Samplemap noch mal anschauen, falls ihr es nicht versteht.
4. Ihr gebt dem Brush die tools/toolsnodraw Textur und macht ihn zu einem func_brush
5. Ihr nennt diesen func_brush z.B. window01
6. Ihr wählt die func_areaportalwindow property´s und gebt bei Rendered Window den Namen eures Fensters an. In meinem Falle: window01


7. Weitere Info´s
Mit Fade Start Distance und Fade End Distance passt ihre die Entfernung bei der das Portal aktiviert werden soll an. Translucency limit bestimmt wie gut man durch das Fenster schauen kann, wenn das Portal offen ist also alles im Hintergrund gezeigt wird.
Spielt mal ein bisschen damit rum, da man die Frames so sehr gut nach oben bringen kann und die map auch auf schwachen Rechnern läuft. Der Hintbrush ist also mehr für Außenareale gedacht, während das Portal bei Häusern und detaillierten Räumen nützlich ist.
HIER GEHT ES ZUM ZWEITEN TEIL