© Liashko/Shutterstock.com
Entwickler Magazin
Atmosphärendarstellung, Streueffekte und scheinbare Sonnenbahnen

From Dusk till Dawn

Gameplay-relevante Tag-Nacht-Wechsel gehören zu den neuesten Features in aktuellen Computerspielen. Von nun an müssen wir uns als Programmierer damit befassen, wie man die Bewegung der Sonne in Abhängigkeit von der Jahreszeit und dem gewählten Spiele-Setting simulieren kann, welchen Einfluss der Sonnenstand auf die Lichtverhältnisse in der Spielewelt hat und wie sich damit verbunden die Farbverläufe am Himmel berechnen lassen.

Alexander Rudolph


Seit dem Release des mittlerweile schon legendären Computerspiels Crysis im Jahr 2007 sind die Anforderungen an einen Spieleprogrammierer in vielerlei Hinsicht rasant gestiegen. Nachdem wir uns in den letzten Artikeln bereits mit dem HDR Rendering, dem Post Processing sowie mit realistischen Beleuchtungs- und Schattenberechnungen befasst haben, widmen wir uns heute der Atmosphärendarstellung und den damit verbundenen dynamischen Tag-Nacht-Wechseln, da beide Features in immer zahlreicheren Spieletiteln einen hohen Stellenwert einnehmen.

Sieht man einmal von Flugsimulationen ab, so wurden Hintergrundlandschaften samt Firmament über einen langen Zeitraum lediglich statisch in Form eines 360°-Panoramabilds in einen Spielelevel eingebunden. Hierfür wird beim Design der Spielewelt zunächst der Szenenhintergrund mittels kubischer Projektion auf sechs Texturen aufgeteilt, die dann im laufenden Spiel auf die Innenfläche einer so genannten Sky Box gemappt werden.

Entschuldigung, wie spät ist es?

Im richtigen Leben genügt ein kurzer Blick auf die Uhr, um die eingangs gestellte Frage zu beantworten. In einem Spiel hingegen ist das Problem der wechselseitigen Umrechnung von Simulationszeit – die Zeit, die seit dem Spielstart vergangen ist und die unter anderem für das Mission Scripting benötigt wird – und Uhrzeit jedoch ein klein wenig verzwickter. Da die Simulationszeit normalerweise in Sekundenintervallen angegeben wird, besteht unsere erste Aufgabe zunächst darin, aus der Anzahl der verstrichenen Minuten, Stunden und Tage die Anzahl der vergangenen Sekunden zu ermitteln:

Eine Minute hat 60 Sekunden.Eine Stunde hat 60 Minuten bzw. 3 600 Sekunden.Ein Tag hat 24 Stunden bzw. 1 440 Minuten bzw. 86 400 Sekunden.

ActualTime = (float)Seconds + (float)Minutes*60.0f + (float)Hours*3600.0f + (float)Days*86400f; Time_GameStart = (float)Seconds_GameStart + (float)Minutes_GameStart*60.0f + (float)Hours_GameStart*3600.0f + (float)Days_GameStart*86400f; SimulationTime = ActualTime - Time_GameStart

Um die aktuelle Simulationszeit in die zugehörige Uhrzeit umrechnen zu können, müssen wir zunächst die Anzahl der bereits vergangenen Tage aus der Zeitangabe herausrechnen, wobei es zu beachten gilt, dass nach jeweils 86 400 Sekunden ein neuer Tag anbricht:

ActualTime = SimulationTime + Time_GameStart – (float)Days*86400f

Teilt man nun die verbleibende Zeit (ActualTime: Sekundenzeit) durch den Wert 3 600 (3 600 Sekunden entspre...

Entwickler Magazin
Atmosphärendarstellung, Streueffekte und scheinbare Sonnenbahnen

From Dusk till Dawn

Gameplay-relevante Tag-Nacht-Wechsel gehören zu den neuesten Features in aktuellen Computerspielen. Von nun an müssen wir uns als Programmierer damit befassen, wie man die Bewegung der Sonne in Abhängigkeit von der Jahreszeit und dem gewählten Spiele-Setting simulieren kann, welchen Einfluss der Sonnenstand auf die Lichtverhältnisse in der Spielewelt hat und wie sich damit verbunden die Farbverläufe am Himmel berechnen lassen.

Alexander Rudolph


Seit dem Release des mittlerweile schon legendären Computerspiels Crysis im Jahr 2007 sind die Anforderungen an einen Spieleprogrammierer in vielerlei Hinsicht rasant gestiegen. Nachdem wir uns in den letzten Artikeln bereits mit dem HDR Rendering, dem Post Processing sowie mit realistischen Beleuchtungs- und Schattenberechnungen befasst haben, widmen wir uns heute der Atmosphärendarstellung und den damit verbundenen dynamischen Tag-Nacht-Wechseln, da beide Features in immer zahlreicheren Spieletiteln einen hohen Stellenwert einnehmen.

Sieht man einmal von Flugsimulationen ab, so wurden Hintergrundlandschaften samt Firmament über einen langen Zeitraum lediglich statisch in Form eines 360°-Panoramabilds in einen Spielelevel eingebunden. Hierfür wird beim Design der Spielewelt zunächst der Szenenhintergrund mittels kubischer Projektion auf sechs Texturen aufgeteilt, die dann im laufenden Spiel auf die Innenfläche einer so genannten Sky Box gemappt werden.

Entschuldigung, wie spät ist es?

Im richtigen Leben genügt ein kurzer Blick auf die Uhr, um die eingangs gestellte Frage zu beantworten. In einem Spiel hingegen ist das Problem der wechselseitigen Umrechnung von Simulationszeit – die Zeit, die seit dem Spielstart vergangen ist und die unter anderem für das Mission Scripting benötigt wird – und Uhrzeit jedoch ein klein wenig verzwickter. Da die Simulationszeit normalerweise in Sekundenintervallen angegeben wird, besteht unsere erste Aufgabe zunächst darin, aus der Anzahl der verstrichenen Minuten, Stunden und Tage die Anzahl der vergangenen Sekunden zu ermitteln:

Eine Minute hat 60 Sekunden.Eine Stunde hat 60 Minuten bzw. 3 600 Sekunden.Ein Tag hat 24 Stunden bzw. 1 440 Minuten bzw. 86 400 Sekunden.

ActualTime = (float)Seconds + (float)Minutes*60.0f + (float)Hours*3600.0f + (float)Days*86400f; Time_GameStart = (float)Seconds_GameStart + (float)Minutes_GameStart*60.0f + (float)Hours_GameStart*3600.0f + (float)Days_GameStart*86400f; SimulationTime = ActualTime - Time_GameStart

Um die aktuelle Simulationszeit in die zugehörige Uhrzeit umrechnen zu können, müssen wir zunächst die Anzahl der bereits vergangenen Tage aus der Zeitangabe herausrechnen, wobei es zu beachten gilt, dass nach jeweils 86 400 Sekunden ein neuer Tag anbricht:

ActualTime = SimulationTime + Time_GameStart – (float)Days*86400f

Teilt man nun die verbleibende Zeit (ActualTime: Sekundenzeit) durch den Wert 3 600 (3 600 Sekunden entspre...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang