Grafische Übergänge zwischen Spielzuständen

Aus Spieleprogrammierer-Wiki
Wechseln zu: Navigation, Suche

Bitte beachte, dass dieser Artikel noch unvollständig ist! Hilf mit, ihn fertigzustellen.
Näheres dazu findest du ggf. auf der Diskussionsseite. Wenn du der Meinung bist, dass der Artikel vollständig ist, kannst du diesen Hinweis entfernen.

In diesem Artikel werden Umsetzungsmöglichkeiten für grafische Übergänge zwischen Spielzuständen vorgestellt.

Inhaltsverzeichnis

Einleitung

Grafische Übergänge.ogg
Beispiel für grafische Übergänge zwischen den verschiedenen Spielzuständen bei Blocks 5.

Zum "Polishing" von Spielen gehört oft die Integration grafischer Übergänge zwischen den Spielzuständen. Diese Übergänge sind vergleichbar mit Überblendungseffekten beim Film und erlauben weniger abrupte Wechsel, beispielsweise zwischen dem Hauptmenü und dem eigentlichen Spiel. Bei der Umsetzung dieser Effekte sind der Kreativität des Programmierers prinzipiell keine Grenzen gesetzt. Klassische Effekte sind einfaches Ein-, Aus- oder Überblenden. Fortgeschrittene Übergänge können auch 3D-Grafik verwenden (siehe Video).

Verwendung von Texturen als Render-Targets

Während eines Übergangs werden gerenderte Bilder des alten und des neuen Zustands benötigt. Um Hardwarebeschleunigung für das Darstellen der Übergangseffekte zu ermöglichen, sollten diese Bilder in Form von Texturen vorliegen. Für diesen Zweck bieten sich Render-Targets an, also Texturen, in die direkt gerendert werden kann.

Ablauf eines Übergangs

Im Folgenden wird ein möglicher Ansatz zur Umsetzung grafischer Übergänge beschrieben.

In dem Moment, in dem ein Übergang gestartet wird, wird der aktuelle Spielzustand einmalig in ein "Vorher"-Render-Target gerendert. Der alte Spielzustand wird danach nicht mehr weiter aktualisiert oder gezeichnet. Oft ist es nach einem Zustandswechsel nämlich nicht sinnvoll möglich, weiterhin Aktualisierungen vorzunehmen. Sofort wird der neue Spielzustand gesetzt und kontinuierlich aktualisiert und gezeichnet. Solange der Übergangseffekt aktiv ist, wird der neue Spielzustand jedoch nicht in den Back-Buffer gezeichnet, sondern in ein zweites "Nachher"-Render-Target. Während der Übergangszeit werden dem aktiven Übergangseffekt beide Texturen/Render-Targets zur Verfügung gestellt, um sie zu einem Effekt zu kombinieren und auf dem Bildschirm darzustellen.

Implementierung von Übergangseffekten

Ein Übergangseffekt benötigt Zugriff auf das alte und das neue Bild (Texturen/Render-Targets). Weiterhin ist zum Zeichnen des Übergangs eine Zeitangabe notwendig. Die Zeitangabe steuert die Übergangsanimation. Zum Startzeitpunkt (Null) sollte ein Effekt normalerweise das alte Bild ausgeben, und am Ende des Übergangs sollte das Ergebnis das neue Bild sein. Die Einheit der Zeitangabe können Sekunden sein, alternativ ist es auch denkbar, die Zeitangabe auf das Intervall §[0; 1]§ zu skalieren. In diesem Fall ist es leichter, Übergangseffekte unabhängig von ihrer Dauer zu implementieren.

Beispiel für einen Überblendungseffekt

Ein sehr einfach umzusetzender Effekt ist die Überblendung der beiden Bilder. Dabei wird zunächst das alte Bild gezeichnet (zum Beispiel in Form eines bildschirmfüllenden Rechtecks mit der Textur des alten Bilds). Anschließend wird das neue Bild mit aktiviertem Alpha-Blending darüber gezeichnet, zunächst komplett transparent. Die Transparenz wird dann stetig reduziert, bis zum Endzeitpunkt des Effekts das neue Bild das alte Bild vollständig überdeckt.

Einige Variationsmöglichkeiten dieses Effekts:

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge