Construction Set Ingame-Zeitabhängige Beleuchtung

Fellan

Freund des Hauses
Ich arbeite gerade an einem Plugin, bei dem ich gerne Ingame-Zeitabhängige Beleuchtung in einem Interior hätte. Das heißt, dass bestimmte Lichtquellen nur nachts, andere nur tagsüber an sein sollen. Bestimmte (nicht alle!) Lampen, Kerzen etc. sollen nur bei Ingame-Nacht bzw. Ingame-Dunkelheit an sein, andere (auch nicht alle!) wie z.B. das Licht, das vom Fenster her kommt, soll nur bei Ingame-Tag bzw. Ingame-Helligkeit an sein.

edit: Es würde reichen, wenn die Cellbeleuchtung, also die Beleuchtung, die die Cell auch ohne Lichtquellen immer hat (Farbe und Intensität kann man in irgendeinem Menü einstellen), mit der Ingame-Tageszeit bzw. Beleuchtung eines bestimmten Outdoor-Levels schwankt. Ist sowas überhaupt möglich?



Außerdem will ich einen Sound an ein bestimmtes Objekt binden (egal welches, da der Spieler das Objekt später nicht zu sehen bekommen wird. Wird also nur eine Art "Soundmaker-Objekt"), dass dauerhaft (Loop?) abgespielt wird, so wie z.B. das "Bimmeln" von irgendwelchen Glocken am Hafen von Anvil. Außerdem will ich, dass man bei aktiviertem EAX hört, dass diese Sounds von draußen kommen und, das ist das wichtigste, von oben, also von da, wo das Objekt, dass den Ton macht, ist. Oder ist das sowieso immer so?
Welchen Dateityp müssen die Sounddateien haben, die als Loop (?) abgespielt werden?



Danke schonmal im Voraus für die Antworten. :)
 
Hallo Fellan,

die Zellengrundbeleuchtung kann man meines Wissens nicht dynamisch verändern. Stell einfach eine Grundhelligkeit ein und plaziere die Nachtlichtquellen um die Lampen. Diese sollten dann allerdings die "Fake" Ausführung sein, also die nichtleuchtende Variante. Die Taglichtquellen plazierst Du in der Nähe der Fenstern und verpasst ihnen einen leichten Blaustich. Da sich beide Lichtersets im CS multiplizieren und deshalb keine genaue Einstellung der Lichtfarbe mehr möglich ist, solltest Du zum Einstellen immer ein Set verschieben. Dann kannst Du die Lichtwerte eines Sets besser anpassen.

Sind die Tag- bzw. Nachtsets eingestellt, vergibst Du jedem Licht eine Referenz und verlinkst die Nachtlichter jeweils als Parent des nächsten. Mit der Tageslichtkette mache das Selbe. Jetzt solltest Du zwei Ketten haben die alle auf einem Licht enden, der einzige Unterschied, bei dem Tageslichtzweig machst Du ein Häckchen bei "Opposit State".
Der Vorteil des Verlinken besteht darin, daß Du nun per Skript nur diese Hauptlampe enablen bzw. disablen mußt und der Rest geht automatisch an oder aus. Wechselschaltung würde der Elektriker sagen.
Ich hoffe mal Du hast meine Erklärung einigermassen verstanden, der Vorgang ist weit weniger kompliziert als die Beschreibung desselben. :D
Sonst frage einfach nochmal nach.

Wenn Du einen Sound ins Spiel bringen willst, musst Du ohnehin erst eine Sound-ID erstellen. Diese kannst Du dann ins Renderfenster ziehen, es sind die roten Lautsprechersymbole. Der Sound wird dann automatisch abgespielt. Format ist Wav, 16 Bit, 44,1 Khz. Am besten Monodateien benutzen, bei Stereo ist keine Schallortung möglich.

Gruß, Gert
 
Ich erstelle also ein Tages- und ein Nachtlichtset. Das mit den Fake-Lampen ist ja klar. Kann ich die Lampen in diese Kette nicht mit einbeziehen, ohne neue Lichtquellen zu platzieren?

Was heißt, ich gebe jedem Licht eine Referenz?
Wie genau mache ich das mit dem verlinken als Parent des nächsten? Ich nehme ein Nachtlicht und klicke "Enable Parent" an? Muss ich mir dann das nächste Licht als Parent aussuchen?

Und wo stelle ich denn dann ein, wann welche dieser Lichter bzw. Lichtersets an sind?


edit: Habe folgenden Script bei einer der Straßenlampen gefunden:

Code:
scriptname streetlightscript

begin gamemode

if gamehour >= 18 || gamehour < 7
    enable
    else
        disable
endif

end

Scriptnamen und Uhrzeit ersetzen, neue Lichter erstellen, Scripts auf die Lichter legen, fertig. Oder nicht?
 
Zuletzt bearbeitet:
Ich erstelle also ein Tages- und ein Nachtlichtset. Das mit den Fake-Lampen ist ja klar. Kann ich die Lampen in diese Kette nicht mit einbeziehen, ohne neue Lichtquellen zu platzieren?

Der Vorteil der Fake-Lampen besteht m.E. darin, dass man die eigentlichen Lichtquellen dann unabhängig von der Position der Lampen platzieren kann, was schönere Lichteffekte ermöglicht. Du könntest noch die jeweilige "Off"-Version der Lampen an genau den gleichen Stellen der Fake-Lampen aufstellen und diese ebenfalls in die Lichtsteuerung einbeziehen.

Was heißt, ich gebe jedem Licht eine Referenz?
Wie genau mache ich das mit dem verlinken als Parent des nächsten? Ich nehme ein Nachtlicht und klicke "Enable Parent" an? Muss ich mir dann das nächste Licht als Parent aussuchen?

Du musst nicht unbedingt jeder Lampe und Lichtquelle eine eigene Referenz geben. Es reicht, eine einzige Lampe als Persistent Referenz zu definieren. Alle anderen Lichter bekommen dann diese eine Referenz als Parent zugewiesen. Bei allem was Nachts leuchten soll, setzt Du das Häckchen bei "Initialy Disabled". Alles, was Tagsüber leuchten/ zu sehen sein soll, bekommt das Häcken bei "Opposite State".

Am Tage sind nun also die Tagbeleuchtung und die gelöschten Lampen sichtbar. Mit einem Skript auf der einen Nachtlicht-Referenz schaltest Du diese während der Nachtstunden ein (Enable), wodurch sämtliche anderen Nachtlichter ebenfalls eingeschaltet und gleichzeitig die Tagbeleuchtung und -lampen disabled werden.

Scriptnamen und Uhrzeit ersetzen, neue Lichter erstellen, Scripts auf die Lichter legen, fertig. Oder nicht?

Wenn Du es wie vorgeschlagen machst, benötigst Du nur ein Skript und nicht für jedes Licht ein eigenes.

Wobei ich das Skript vielleicht noch um eine Bedingung erweitern würde, die prüft, ob das Nachlicht bereits eingeschaltet ist. Ich weiß nicht genau, ob es Auswirkungen hat, die Lichter in jedem Frame auf's neue zu enablen/disablen.

Code:
scn Lichtsteuerung

begin GameMode

	if ((GameHour <= 8) || (GameHour >= 18)) && (GetDisabled == 1)
		Enable
	elseif (GameHour > 8) && (GetDisabled == 0)
		Disable
   endif

end

Grüße, Achim
 
Jetzt versteh ich das ganze. Das mit der Referenz bewirkt also nur, dass ich nicht auf jedes Licht einen Script setzen muss, sondern nur auf die Referenz.

Der Script ist aus dem Oblivion-Original von einer Lampe am Hafen von Anvil, müsste also funktionieren. Habe jetzt aber auf jedes Licht einen eigenen Script gelegt, weil die verschiedenen Lichter zu verschiedenen Zeiten an und aus gehen sollen, in einem Bereich also schon um 16 Uhr, in einem anderen erst um 20 Uhr. Danke für die Hilfe! :)