Was genau sind Clipnodes, wie entstehen sie und wie lässt sich der lästige MAX_MAP_CLIPNODES Fehler vermeiden, resp. wie reduziert man Clipnodes?
Clipnodes werden vom BSP-Compiler erstellt und werden dazu benötigt, damit die Engine weiss, wo sich der Spieler bewegen kann, und wo nicht. So erzeugen beispielsweise normale Wände und Böden Clipnodes, so dass der Spieler nicht durch diese hindurch gehen kann.
Komplexe Objekte, wie z.B. ausgebrushte Geländer, oder Gitter, welche der Spieler sowieso nicht durchqueren kann, erzeugen in ihren Lücken ebenfalls einen Haufen Clipnodes. Diese nützen aber niemandem und treiben nur die Anzahl Clipnodes in die Höhe bis unsere Map nicht mehr kompilierbar wird.
Wie vermeidet man nun solche überflüssigen Clipnodes? Die Lösung ist so einfach wie genial. Man erstellt einfach einen CLIP-Brush, in welchem man seine Detailbrushes „versteckt“, also darin einpackt. Der BSP-Compiler berechnet so nur die Clipnodes des äusseren CLIP-Brushes, da die hypothetischen Clipnodes des inneren Detailbrushes vom CLIP-Brush überdeckt werden.
Hier mal eine kleines Beispiel zur Erläuterung:
Das im Bild grün dargestellte Objekt sind unsere Detailbrushes. Der rote Kasten ist der CLIP-Brush. Wir kompilieren nun in verschiedenen Konfigurationen der Brushes und schauen, was unsere Clipnodes so machen.
Und hier nun das Resultat unserer Versuchsreihe:
| Detailbrush und CLIP-Brush | Anzahl erzeugter Clipnodes |
|---|---|
| Detailbrush als Worldbrush ohne CLIP-Brush | 153 |
| Detailbrush als Worldbrush mit CLIP-Brush | 31 |
| Detailbrush als func_illusionary ohne CLIP-Brush 1) | 18 |
| Detailbrush als func_wall ohne CLIP-Brush | 210 |
| Detailbrush als func_wall mit CLIP-Brush | 223 |
| Detailbrush als func_wall und CLIP-Brush als ein Entity | 36 |
Erschreckenderweise hat unser Versuch, die Clipnodes eines func_walls mit einem World CLIP-Brush zu kaschieren, die Clipnodes nur noch weiter in die Höhe katapultiert. Erst als wir den CLIP-Brush zum gleichen Entity wie die Detailbrushes hinzugefügt haben, haben sich unsere Clipnodes wieder auf ein erträgliches Mass gesenkt.
-chart hinzufügt.
Richman 2007/07/05 21:45