Grafische Übergänge zwischen Spielzuständen

Aus Spieleprogrammierer-Wiki
Wechseln zu: Navigation, Suche

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 Textur-Render-Targets an, also Texturen, in die direkt gerendert werden kann. Alternativ kann unter OpenGL auch der Inhalt des Back-Buffers durch Aufruf von glCopyTexImage2D oder glCopyTexSubImage2D in eine Textur kopiert werden, dann sind keine Render-Targets notwendig.

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:

Beispiel für einen komplexeren Übergangseffekt

Der Effekt, der im Video oben gezeigt wird, verwendet einen 3D-Würfel. Auf zwei benachbarten Seiten des Würfels werden das alte und das neue Bild als Textur gelegt. Zu Beginn des Effekt wird die Kamera so eingestellt, dass die Würfelseite mit dem alten Bild exakt das Sichtfeld ausfüllt. Damit dies möglich ist, verzerrt die Kamera die Würfelseite zu einem Rechteck mit dem Seitenverhältnis des Bildschirms. Im Verlauf des Effekts wird die Kamera nun zurück und wieder vorwärts bewegt, während der Würfel sich um 90° weiter dreht und die Seite mit dem neuen Bild sichtbar wird.

Fazit

Grafische Übergangseffekte sind ein einfaches Mittel, um einem Spiel einen gewissen "professionellen Touch" zu verleihen. Alles, was dazu notwendig ist, ist das Rendern von Spielzuständen in Texturen und etwas Kreativität bei der Umsetzung verschiedener Effekte.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge