Dynamisches Licht in Half-Life faken

Um dynamisches Licht in Half-Life zu faken, braucht man ein wenig Gedult sowie Arbeits- und Zeitaufwand. Allerdings lohnt es sich, wie man sehen kann. Ich setze hierfür tiefgehende Mappingkenntnisse mit dem VHE für Half-Life voraus.

Das öffnende Tor

So wird es aussehen

Entities

Für den ersten Effekt des sich öffnenden Tores verwendete ich folgende Entitys:

Aufbau

Der Tunnel in dieser Map wird nun 19 mal gemappt (Die Schlauen unter euch wissen jetzt schon wie der Trick funktioniert) und in je einen separaten Kasten mit der NULL-Textur (wichtig zur r_speeds-Reduzierung) gesteckt. Da diese Tunnel zu func_trains werden, sollten alle nicht sichtbaren Faces ebenfalls mit der NULL-Textur belegt werden um weitere Speeds zu sparen. Bei allen func_trains aktiviert nun den Flag „not solid“ um so einen Bug zu umgehen der manchmal auftritt, dass obwohl bei den path_cornern der Flag „teleport“ (Da komme ich später noch zu) aktiv ist, der Train seinen Weg „fährt“ und am Spieler hängen bleibt. Damit der Spieler nun trotzdem im Tunnel umherlaufen kann bauen wir einen 20ten Tunnel, welcher komplett mit der CLIP-Textur belegt ist und in einem weiteren Raum steht (KEIN func_train!).
Nun bauen wir vor jeden Tunnelausgang eine Wand mit der Skytextur und eine zweite Wand vor dem Sky welche mit jedem Tunnel um 2 Units steigt. Dadurch haben wir insgesamt 19 Tunnel welche je einen Schritt des eindringenden Lichts beinhalten.
Vor dem „Clip-Tunnel“ bauen wir nun ebenfalls eine Skywand und ein Tor, welches wir zu einem func_train machen. Dieser fährt nun nicht wie üblich mit Hilfe zweier path_corner hoch und runter sondern bekommt insgesamt 19 path_corner, die im Abstand von 2 Units übereinanderliegen. Jedes dieser path_corner (bis auf das erste an dem das Tor startet) triggert nun mit Hilfe des Werts „fire on pass“ einen multi_manager. Wir erhalten nun die oben erwähnten 18 multis. Der erste dieser multi_manager triggert den ersten train (der die Lichtverhältnisse des geschlossenen Tors beinhaltet) und den zweiten (der die Lichtverhältnisse des 2 Units geöffneten Tors beinhaltet). Nun geht es immer so weiter. Jeder multi_manager triggert zwei trains. Den grade aktiven und den nachkommenden.

Damit das auch klappt müssen die Tunnel-Trains noch folgende Einstellungen haben:
Zu erst einmal die path_corner. Diese sind recht simpel: Jeder Train erhält zwei path_corner. Der erste ist in dem Raum in dem der Train startet und der zweite befindet sich exakt an der Stelle des CLIP-Tunnels. Bei den Flags aktiviert man „teleport“ und „wait for retrigger“. Nun sollten alle func_trains bis auf den ersten (also der Tunnel in dem es dunkel ist) in ihren Räumen starten, denn der erste Tunnel ist ja der den wir sehen wollen bevor sich das Tor öffnet.
Nun fehlt nur noch der Button der alles auslöst und ein light_environment damit überhaupt Licht da ist. Diese bauen wir wie wir lustig sind, da schreibe ich jetzt nichts großartig zu ;)

In der Beispielmap geht das Tor nur halb auf und es geht nicht mehr zu. Dies liegt an meiner Faulheit, es ist natürlich möglich diesen Effekt noch auszubauen, aber hier geht es ja auch nur ums Prinzip.

Tipp: Um den Effekt schön flüssig aussehen zu lassen sollte man das Tor nicht zu langsam fahren lassen. Sicher, man könnte sagen, „Ha, mach' ich halt mehr func_trains“, aber denkt immer daran: Half-Life ist und bleibt Half-Life. Dieser eine Tunnel mit der halb geöffneten Tür frisst bereits ~36000 Patches (Maximum bei ~65000), wenn man hlrad mit “-chop 32 -texchop 16“ kompiliert. Übrigens würde ich dies auch generell bei solchen Tricks empfehlen, die chops zu verkleinern, da sonst die Effekt nicht richtig rüberkommen, da in diesem Fall z.B. nur alle 4 Units ein anderes Lichtergebnis errechnet würde und das ziemlich kantig aussehen würde. Man muss also je nach Situation Geschwindigkeit, Detaillgrad und HL-Maxima anpassen um ein zufriedenstellendes Ergebnis zu erzielen.

Die rotierende Lampe

So wird es aussehen



Download: .rmf, .map und .bsp

Der zweite Effekt funktioniert ähnlich dem ersten Effekt, nur löst hier kein func_train mit seinen path_cornern die Raum-Trains aus, sondern eine Reihe von multi_managern in Abständen von 0,1 Sekunden. Dieser Wert ist der Drehgeschwindigkeit des func_door_rotating angepasst. Da ich oben das Prinzip des dynamischen Lichts erleutert habe, und ich keine Lust mehr habe zu tippen, lasse ich ein detailliertes Tutorial aus. Vorallem kann ja jeder die Map herunterladen und sich anschauen wie es im Detail funktioniert.

Anwendungsbeispiel

Abschließend möchte ich noch eine Ideen zur Nützlichkeit loswerden, die mir gekommen ist. Man könnte nämlich gut für Atmosphäre sorgen, wenn man z.B. durch ein dunkles Gebäude laufen muss, in dem Wachkameras mit Scheinwerfern die Gänge ausleuchten und ein Berühren des Lichts den Alarm auslöst (Möglich durch An- und Ausschalten von trigger_once's, je nachdem wo sich der Lichtschein befindet).

Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life/tutorials/dynamisches_licht_faken.txt · Zuletzt geändert: 2005/11/30 20:41 von Flow