Dieses Tutorial behandelt, wie man ressourcensparende Gegenstände/Gebäude in die Map einfügt, die von jeder Stelle aus gesehen werden können.
 
Der große Vorteil zwischen den konventionellen Mappen von Gegenständen, die weit entfernt sind und den Mappen per "3D Skybox" liegt in der besseren Performance. Normalerweise muss man die Sicht zu dem darstellenden Gebäude von jedem Punkt, von wo aus das Gebäude gesehen werden soll, freie Sicht lassen, damit VIS (Compiler) das Gebäude nicht bei den Berechnungen ausblendet. Das hat den Nachteil, dass das Spiel viel mehr darstellen muss als das reine Gebäude, da die anderen Mapteile nicht abgegrenzt sind. Will heißen das Spiel "sieht" und berechnet die anderen Bereiche ebenfalls. Dies kann man gut sehen, wenn man mit dem eingebauten Wireframe die Map erkundet. (sv_cheats 1 | maxplayers 1 | gl_wireframe 2) Um das zu verhindern, wendet man einen einfachen Trick oder "Bug" an. Dazu muss man wissen: Wenn man ein Brush Based Entity erstellt, kann man es nicht beliebig zusammenfassen.
 
Ein Beispiel: Man würde in der kompletten Map alle Kisten zu einem Entity, also func_wall machen um die Performance zu steigern, damit die Flächen nicht zerschnitten werden. (Siehe r_speed Tutorial auf thewall). Würde man jetzt eine Kiste anschauen und dann Wireframe aktivieren, würde man nicht nur die Kiste sondern alle Kisten sehen, die zu dem einen Entity zusammengefasst wurden. Im Grunde ist das ein Nachteil, was den Mapper zwingt, jede Kiste zu seperaten"func_wall" zu machen. Dieser Nachteil ist unser Vorteil.
  

CS Skybox Ingame

CS Skybox Ingame

1 Skybox. Es ist von überall das Gebäude zu sehen.

Anderer Blickwinkel

 

 

 CS Skybox Ingame

 Konventionelle Lösung (Anderer Blickwinkel)

 

Da man jetzt weiß, dass alles dargestellt wird, was 1 Entity ist, kann man absichtlich Objekte so zusammenfassen, dass sie durch den Himmel dennoch sichtbar sind, obwohl sie in komplett anderen Teilen der Map verstreut sind. Dazu erstellt man das Objekt, in dem Fall das Gebäude in einer separaten Skybox da, wo man es später in der Map ebenfalls sehen soll. Damit es später auch ingame sichtbar wird, erstellt man jetzt einen mit der "null"-Textur belegten Brush, der so groß ist wie die Map selber. So ist man sicher, dass man immer das Gebäude im Spiel sehen wird.

Beide Brushs macht man nun zu einem func_illusionary (Sonst hätte man Probleme mit dem Brush, der in der Karte platziert sein muss).

 

Die Werte spielen keine Rolle, da der "null" Brush später definitiv nicht mehr sichtbar sein wird. (Diese Textur funktioniert nur mit dem ZHLT Compiler. Sollte man den nicht installiert haben, kann man notfalls die sky Textur verwenden)

Man muss keine Sichtlinie mehr zu dem Gebäude herstellen und kann die ganze Map "verschließen". Dadurch sollte die Performance um ~ 2% - 30% steigen.

 

CS Skybox Ingame

CS Skybox Ingame

2 getrennte Skyboxen. Auf dem Boden befindet

sich der Bereich damit das Gebäude

später sichtbar wird.

2 Getrennte Skyboxen, die sich nicht berühren

 

 

CS Skybox Ingame

1 Entity, abgetrennte Skyboxen

 

3D Skyboy Lösung


CS Skybox Ingame

CS Skybox Ingame

3D Skybox Lösung
 3D Skybox Lösung Wireframe (gl_wirefram 2)

 

 

Konventionelle Lösung


CS Skybox Ingame

CS Skybox Ingame

Konventionelle Lösung Konventionelle Lösung Wireframe (gl_wirefram 2)

 

Um zum Teil durchsichtige Texturen ebenfalls zu verwenden, muss man die Methode doppeln. Wichtig ist, dass der Brush im Spielerbereich dann neu erstellt werden muss. Man hat insgesammt dann 2 Entities. 

 

 

Die Nachteile:

 

  • Es funktiornieren nur brush based Entitys. Möchte man einen env_glow einfügen, so wird das nicht gehen. (Normale Lichter, da sie beim Compilieren umgewandelt werden, gehen.) 
  • Macht man zu viele Gebäude in die Skybox, leidet die Performance