|
Vis Leafgroups |
Jeder, der schon einmal sehr große Maps erstellt hat, ist sicherlich an einen Punkt gekommen, wo die FPS in den Keller gehen und das bekannte Ruckeln anfängt. Besonders intensiv macht sich dies beim vielen setzen von Bäumen und Büschen bemerkbar oder auch bei einer sehr Detailreichen Map. Hier behandeln wir das setzen von Vis - Leafgroups und dehren Auswirkung in unserer Map. |
Was sind Vis - Leafgroups ? Die Vis - Leafgroups sind Brushes, die mit der Textur Vis versehen werden und dann zu einem Vis - Leafgroup umgewandelt werden. Mit diesen Vis - Leafgroup kann man bestimmte Teile einer Map ausblenden. Alles was sich in den Vis - Leafgroups befindet, wird von der Engine nicht mitberechnet und erhöt somit unsere FPS. Hiebei müssen wir aber einen Vis - Leafgroup als "Startbrush" und einen Vis - Leafgroup als "Zielbrush" setzen. Also zwei Vis - Leafgroups. Was bewirken Vis - Leafgroups ? Um dies einfacher zu erklären, nennen wir einfach die benötigten Vis - Leafgroups , Startbrush ( solange der Player in diesen Brush steht, wird alles im Endbrush nicht mitberechnet ) und Zielbrush ( alles was in diesen Brush mit eingeschlossen ist, wird nicht mitberechnet ) Solange sich der Player im Startbrush befindet wird alles im Zielbrush nicht mitberechnet. Verlässt der Player den Startbrush, wird alles im Zielbrush berechnet und auch dargestellt. Was muss ich beim setzen von Vis Leafgroups beachten ? - Die Vis - Leafgroups, also Start - und Endbrush müssen so weit auseinander sein, das der Player beim verlassen des Startbrushes nicht das plötzliche Einblenden ( aufpoppen ) aller Mapteile sieht, die sich im Zielbrush befinden. - Die Vis - Leafgroups, also Start - und Endbrush müssen, z.B. bei kleineren Maps, so angeordnet sein das der Player nicht unmittelbar in den Endbrush reinläuft oder ihn sogar sehen kann. Hier sollte z.B. eine Trennwand vorhanden sein. Oder es wird ein verwinkelter Gang gebaut, so das der Player beim verlassen des Startbrushes die Einblendung des Zielbrushes nicht sieht. |
Beispielmap für Vis - Leafgroups |
Um dies besser zu erklären, wählen wir einen Innenbereich. Dieser besteht aus zwei Räumen. Alles was sich im Raum B befindet, soll nicht mitberechnet werden. Dort müssen wir also unseren Zielbrush setzen. Im Raum A befindet sich unser Player. Dort platzieren wir den Startbrush. Erstellt zum Test zwei Räume, wie auf Bild 1 zu sehen ist. Diese beiden Räume werden durch einen Gang verbunden. |
Bild 1 |
Hier haben wir die zwei Räume bewust mit einem verwinkelten Gang verbunden, damit der Player beim verlassen des ersten Raumes (A) nicht in den zweiten Raum (B) schauen kann. |
Die Sicht des Players wird durch die Wände versperrt. Wäre hier nur ein Türdurchgang, würde der Player den Zielbrush sehen, während er sich noch im Startbrush befindet. So würde er in einem Luftleeren Raum ( Void ) schauen. Also nichts sehen. Um das zu verhindern, haben wir eine kleine Schleuse ( Gang ) gebaut. |
Ihr könnt auch etwas anderes bauen, nur solltet ihr auf die wichtigen Punkte achten, die schon weiter oben erklärt wurden. Der Test vor dem setzen der Vis - Leafgroups Um die Wirkung der FPS später in der Map besser testen zu können, setzt bitte im Raum B mehrere Bäume oder Büsche. Diese brauchen nämlich viel an Berechnung und man merkt schnell den Unterschied. Compilt eure Map einmal und startet diese. Wenn ihr die FPS Anzeige noch nicht eingeschaltet habt, führt folgende Schritte aus: - starte deine Map - Öffne deine Console mit der Taste ( ^ ) und gibt folgendes ein: fps1 - bei nochmaliger eingabe von fps1 wird es wieder deaktiviert. Schau von eurem Playerstartpunkt in Richtung des Raumes B und merkt euch die Zahl der FPS. Jetzt haben wir einen Vergleichswert, wenn wir unsere Vis - Leafgroups gesetzt haben. |
Setzen von Vis - Leafgroups |
Zuerst zieht ihr einen Brush im Raum A, der den kompletten Raum ausfüllt und dessen Inhalt mit einschließt. Lade die Common Texturen über Texture -----> Common und belege diesen Brush mit der Texture Vis. Lass diesen Brush selectiert und wandel ihn in einem Vis - Leafgroup um. Rechtsklick ---------> Vis ---------> leafgroup Jetzt habt ihr den ersten Leafgroup erstellt. Kopiert diesen und setzt ihn in den Raum B. Jetzt haben wir in jeden Raum einen Vis - Leafgroup Brush. Nun müssen wir ihnen nur die Funktionen zuteilen, welcher der Start - und Endbrush ist. Selectiert zuerst den Brush in Raum A und dannach den Brush in Raum B. Wenn beide selectiert sind, drückt die Tasten Strg + K Jetzt sehen wir eine Line. Die beiden Vis - Leafgroups wurden nun die Funktionen zugewiesen und miteinander verbunden. Der Pfeil der Linie sollte jetzt vom Startbrush ( Raum A ) zum Zielbrush ( Raum B ) zeigen. Außerdem sollte der Zielbrush blau eingefärbt sein. Siehe Bild 2 Ihr könnt dies auch später wieder erkennen. Denn der Zielbrush, in dem nichts berechnet werden soll, ist immer blau eingefärbt. Wichtig ist nur die Reihenfolge. Zuerst immer den Vis - Brush selectieren, von dem aus die FPS reduziert werden soll. Dann erst den Zielbrush. |
Bild 2 |
Der Zielbrush ist blau. Die Linie zeigt immer vom Startbrush zum Zielbrush. |
Jetzt wird alles im Zielbrush ( Raum A ) nicht mitberechnet, solange sich der Player im Startbrush ( Raum B ) befindet. |
Wenn ihr das Entitymenü von dem Vis - Leafgroups öffnet, werden hier targetname und target mit der entsprechenden Nummer ( Value ) automatisch vergeben. Zielbrush: targetname mv1 Startbrush: target mv1 |
An diesen Beispiel könnt ihr noch einmal sehen, wie wichtig die richtige Platzierung der Vis - Brushes ist. Der Player verlässt in diesen Beispiel den Raum A durch den Gang und es wird alles im Raum B wieder mitberechnet. So sieht der Player nichts vom Ein - und Ausblenden der Mapteile. Außer natürlich an das eventuelle absacken der FPS. |
Setzen und verbinden mehrerer Vis - Leafgroups |
Natürlich ist es auch möglich vom Playerstandort ( Startbrush ) gleich mehrere Mapteile auszublenden. Hiezu erstellen wir zwei weitere Vis - Leafgroups wie oben schon beschrieben und setzen sie an den Ort unserer Wahl. Wir bleiben bei unserem obigen Beispiel und setzen einfach links und rechts zwei neue Visbrushes. Jetzt wieder zuerst den Startbrush ( Raum A ) selectieren und nacheinander zwei neuen Visbrushes. Das Ergebnis sehen wir im Bild 3 |
Bild 3 |
Nun zeigen alle Linien vom Startbrush weg und kennzeichnen so die Zielbrushes, die nicht mitberechnet werden. |
Im Entitymenü vom Zielbrush wurden nun unter target die neuen Value - Werte hinzugefügt. In diesen Falle sieht das dann so aus............ Key target Value mv1 t1 t2 Die Value Parameter wurden um den Visbrush t1 und t2 erweitert. So erkennt ihr auch immer, mit welchem Vis - Leafgroups euer Startbrush verbunden ist. |
Tipp: - Die Vis - Leafgroups machen sich erst im Game bemerkbar, wenn ihr eure Map auf Final Compilet. - Wenn ihr den MBuilder unter Vis Option zusätzlich auf -verbose stellt, bekommt ihr eine zusätzliche Textausgabe im Compilefenster angezeigt. Dies sieht ungefähr wie folgt aus: cannsee xxxxxx nightsee xxxxx die xxxxx sind in diesen Falle Koordinaten von Brushes in der Map, die der MBuilder beim Compilen gegeneinander aufrechnet. Also welcher Bereich sichbar ist und welcher nicht. Aber Vorsicht !! Bei größeren Maps kann dies unter Umständen zu etwas längeren Compilezeiten führen. Siehe hierzu auch unter BSP nach. Eine andere Variante, einige FPS in unserer Map zu sparren, findet ihr unter Hint - Portale. |