Flick-Screen
Der englische Fachbegriff Flick-Screen, manchmal auch Flip-Screen, bezeichnet ein Darstellungskonzept, bei dem die Spielwelt eines Computerspiels in gleichgroße, rechteckige Bereiche aufgeteilt wird, von denen jeweils genau einer auf dem Bildschirm angezeigt und von der Spielfigur durchwandert wird.
Allgemeines/Definition[Bearbeiten | Quelltext bearbeiten]
Ist bei einem Computerspiel die Spielwelt so groß, dass sie nicht als Ganzes auf dem Bildschirm angezeigt werden kann, so muss sich die Darstellung auf einen interessierenden Ausschnitt — meist den Bereich, in dem sich die vom Spieler gesteuerte Figur gerade befindet — beschränken. Bewegungen dieser Figur innerhalb der Spielwelt können nun auf zwei verschiedene Arten in die Bildschirmdarstellung eingehen:
- Durch Scrolling, das heißt die Spielwelt wird in kleinen Schritten — typischerweise pixel- oder zeichenweise — bewegt, während die Spielfigur in einer zentralen Bildschirmposition verbleibt. Allenfalls an den Rändern der Spielwelt bewegt sich die Figur in Richtung des Bildschirmrands, der in diesem Fall mit der Grenze der Spielumgebung zusammenfällt.
- Alternativ dazu wird die Spielwelt in gleichgroße, rechteckige Bereiche ("Screens" oder "Räume") aufgeteilt, deren Größe so gewählt ist, dass sie, meist zusammen mit ergänzenden Angaben zum Spielstand, auf dem Bildschirm Platz finden. Von diesen Bereichen wird immer genau einer an einer festen Position dargestellt, während die vom Spieler gesteuerte Figur und weitere Objekte sich darin bewegen können. Verlässt die Figur den momentan dargestellten Bereich, beispielsweise durch Überschreiten seines oberen, unteren, linken oder rechten Randes, so wird auf den dadurch neu betretenen Raum umgeschaltet und stattdessen dieser auf dem Bildschirm angezeigt.
Gegenüber einer Darstellung mittels Scolling hat das zweite, sogenannte "Flick-Screen"-Verfahren den Vorteil, dass es wesentlich weniger Rechenleistung benötigt. Insbesondere bei Computerspielen mit zweidimensionalen Spielwelten ist es daher auf 8 Bit-Systemen weit verbreitet. Teilweise finden sich auch Mischformen, bei denen beispielsweise ein Teil der Spielwelt mittels Scrolling, der Rest im Flick-Screen-Verfahren dargestellt wird.
Beispielhaft zeigt die nachfolgende Galerie links die Spielwelt des zweiten Levels im Spiel "Equinox". Zur besseren Orientierung ist die Illustration mit einem Gitter sowie mit horizontalen und vertikalen Raumkoordinaten versehen. Die Spielwelt besteht aus 16 Screens, die in einem Gitter von 6 Räumen Breite und 4 Räumen Höhe angeordnet sind; nicht alle Plätze in diesem Gitter sind tatsächlich mit Screens belegt. Rechts ist eine Animation aus dem Spiel zu sehen, in der der vom Spieler gesteuerte, kugelförmige Reinigungsroboter zyklisch die zentralen Räume mit den Koordinaten C2, D2, D3 und C3 durchquert; auf dieser Patrouille findet jeweils ein Wechsel des Screens statt, sobald der Roboter den Rand des momentan dargestellten Spielwelt-Ausschnitts überschreitet.
Beispiele für Flick-Screen in C64-Spielen[Bearbeiten | Quelltext bearbeiten]
Die nachfolgende Tabelle dokumentiert eine Reihe von Spielen, die die Flick-Screen-Darstellung nutzen. Die Größe der jeweiligen Spielwelt hängt zum einen von der Anzahl der Screens (zweite Spalte der Tabelle) ab, und zum anderen von den Ausmaßen des Gitters, innerhalb dessen die Screens üblicherweise platziert werden (dritte Spalte). Nicht alle Plätze innerhalb dieses Gitters müssen notwendigerweise belegt sein; beispielsweise sind beim Spiel Elidon nur 300 der insgesamt 340 Felder im Gitter gefüllt. Soll die Spielwelt eine deutlich von der Rechteckform abweichende Struktur besitzen, so ist die Abweichung noch gravierender; Beispiele hierfür sind die Spiele Cauldron II (ein Schloss mit schlanken Türmen belegt 128 von 234 Feldern) und Antiriad (ein Vulkan mit spitzem Gipfel füllt nur 69 von 210 Feldern).
Spiel | Anzahl Screens | Gitter der Karte | Größe eines Screens | Videomodus | Codierung der Raumnummer | Vervielfachte Räume | Besonderheiten |
---|---|---|---|---|---|---|---|
Antiriad | 69 | 15x14 | 320x128 | Text monocolor/ multicolor | Raum=0..68, meist zeilenweise numeriert | — | Einige Zeilen wiederholen sich beim Überschreiten der seitlichen Ränder endlos |
Arac | 100 | — | 304x168 | Bitmap monocolor | Raum=1..100, frei nummeriert | — | Räume nicht als Gitter angeordnet, sondern frei positioniert |
Arc of Yesod | 256 | 16x16 | 256x168/x176 | Text monocolor | x-Koordinate 0..15, y-Koordinate 4..15 und 0..3 | — | Oberste Ebenen des Labyrinths haben die Y-Koordinaten 4..15, die darunterliegenden Ebenen die Y-Koordinaten 0..3 Oberfläche des Planeten Ariat wiederholt sich beim Überschreiten der seitlichen Ränder endlos |
Aztec | 64 | 8x8 | 320x168 | Bitmap monocolor | Raum=0..63, zeilenweise nummeriert x=0..7 (in Bit 0..2), y=0..7 (in Bit 3..5) |
— | Übereinanderliegende Screens überlappen sich in einem Streifen von 8 Pixeln Höhe |
Cauldron I | 63 | — | 320x160 | Text multicolor | Räume ungleichmäßig verteilt auf 4 unterirdische Höhlensysteme | — | Spiel besitzt zusätzlich eine Oberwelt mit horizontalem Scrolling |
Cauldron II | 128 | 9x26 | 320x160 | Text multicolor | Raum=0..127, meist zeilenweise nummeriert | — | Raum 52 ist rechts von Raum 115 |
Elidon | 300 | 17x20 | 264x184 | Bitmap monocolor | x-Koordinate 0..16, y-Koordinate 0..19 | — | — |
Equinox | 8x 16 | 2x8 / 3x6 / 4x4 / 5x4 / 6x4 / 8x3 | 256x144 | Bitmap monocolor | Level=0..7 (in Bit 4..6), Raum=0..15 (in Bit 0..3) | Mülldeponie in Raum (0,4) von jedem Level aus erreichbar | Jedes Level besteht aus 16 zeilenweise nummerierten Räumen, wobei der erste Raum in der ersten Zeile nicht zwingend ganz links liegt |
Finders Keepers | 21 | — | 160x160 | Text monocolor | Räume frei und nicht fortlaufend nummeriert | — | Spiel besitzt zusätzlich zwei Labyrinthe mit Scrolling |
Firelord | 512 | 16x32 | 256x152 | Bitmap monocolor | Raum=0..511, zeilenweise nummeriert x=0..15 (in Bit 0..3), y=0..31 (in Bit 4..8) |
— | Raum 047 erscheint links von Raum 048, nicht ganz rechts in der nächsthöheren Zeile |
Friday the 13th | 24 | 4x6 | 256x128 | Bitmap multicolor | x-Koordinate 0..3, y-Koordinate 0..5 | — | Landschaft wiederholt sich beim Überschreiten der Ränder endlos |
Ghettoblaster | 252 | — | 288x96 | Text multicolor | Raum=1..252, frei nummeriert | Raum 247..252 | "Stoney End" erscheint endlos, weil sich Raum 247/249/251 und Raum 248/250/252 zyklisch wiederholen |
Heartland | 254 | — | 256x144 | Bitmap monocolor | Räume ungleichmäßig verteilt auf 5 Levels | — | Labyrinthe der einzelnen Levels wiederholen sich beim Überschreiten der Ränder endlos |
Knight Tyme | 25 | 7x5 | 256x152 | Bitmap monocolor | Raum=0..24, zeilenweise nummeriert (erste Zeile Raumschiff, weitere vier Zeilen je ein Planet) | — | Raum 24 erscheint erst, wenn die Zeitmaschine gefunden ist, und ersetzt dann Raum 6 |
Nodes of Yesod | 256 | 16x16 | 256x168/x176 | Text multicolor | x-Koordinate 0..15, y-Koordinate 0..15 | — | Mondoberfläche wiederholt sich beim Überschreiten der seitlichen Ränder endlos |
Robin of the Wood | 320 | 16x20 | 320x144 | Bitmap multicolor | x-Koordinate 0..15, y-Koordinate 0..19 | — | Waldgebiet wiederholt sich beim Überschreiten der seitlichen Ränder endlos |
Sabre Wulf | 256 | 16x16 | 256x176 | Bitmap multicolor | Raum=0..255, zeilenweise nummeriert x=0..15 (in Bit 0..3), y=0..15 (in Bit 4..7) |
— | — |
Spellbound | 50 | 8x7 | 256x152 | Bitmap monocolor | Raum=1..49, zeilenweise nummeriert Raum 0=Aufzug |
Aufzug (Raum 0) erscheint links von jedem Stockwerk | — |
Spiky Harold | 56 | 16x4 | 256x160 | Bitmap monocolor | Raum=0..56, zeilenweise nummeriert x=0..15 (in Bit 0..3), y=0..3 (in Bit 4..7) |
— | Raum (0, 0) ist wieder rechts von Raum (3, 8) |
Starquake | 512 | 16x32 | 320x144 | Bitmap monocolor | Raum=0..511, zeilenweise nummeriert x=0..15 (in Bit 0..3), y=0..31 (in Bit 4..8) |
— | Nebeneinanderliegende Screens überlappen sich in einem Streifen von 64 Pixeln Breite |
Stormbringer | 52 | — | 256x152 | Bitmap monocolor | Raum=0..51, meist zeilenweise nummeriert | Raum 2 | Raum 2 erscheint 5 Mal nebeneinander, deshalb können in diesem Raum keine Objekte abgelegt werden |
Willow Pattern | 64 | 8x8 | 256x192 | Bitmap multicolor | Raum=0..63, zeilenweise nummeriert x=0..7 (in Bit 0..2), y=0..7 (in Bit 3..5) |
— | — |
Beispiele für Mischformen, die Scrolling und Flick-Screen-Darstellung kombinieren, sind die folgenden C64-Spiele:
- Cauldron I: Die oberirdische Welt wird pixelweise horizontal gescrollt, während die unterirdische Räume Flick-Screen nutzen
- Finders Keepers: Der Schlossgarten und das Verlies nutzen zeichenweises Scrolling, alle anderen Räume des Schlosses werden per Flick-Screen angezeigt
- Pitfall II: In horizontaler Richtung wird per Flick-Screen zwischen insgesamt 8 Spalten umgeschaltet, in vertikaler Richtung pixelweise gescrollt
Programmierung[Bearbeiten | Quelltext bearbeiten]
Im folgenden werden übliche Programmiertechniken bei der Implementierung von Spielen mit Flick-Screen-Darstellung vorgestellt. Diese Techniken werden an zahlreichen Animationen illustriert, bei denen häufig Zusatzinformationen und Speicherinhalte am rechten Rand oder in einer der rechten Ecken des Bildschirms eingeblendet werden.
- In Spielen mit Flick-Screen-Darstellung besitzt üblicherweise jeder Screen eine eindeutige Nummer. Diese kann die Lage des Screens innerhalb des Spielplans explizit (durch Angabe von x- und y-Koordinate) oder implizit (durch fortlaufende Nummerierung aller Screens in einem rechteckigen Gitter) festlegen. Beispielsweise wird im C64-Spiel "Elidon" jeder Screen explizit durch eine x-Koordinate (im Bereich 0..16) und eine y-Koordinate (im Bereich 0..19) lokalisiert. In den Spielen "Firelord" und "Starquake" sind die Screens dagegen in einem rechtwinkligen Gitter der Größe 16x32 angeordnet und von 0 bis 511 durchnummeriert; die Nummern nebeneinanderliegender Screens unterscheiden sich um 1, diejenigen übereinanderliegender Screens um 16 (also um die Anzahl der Screens pro Zeile).
Alternativ können die Räume aber auch frei nummeriert sein; beim Übergang zwischen Screens muss in diesem Fall die Nummer des neu betretenen Screens aus der Bewegungsrichtung und der Nummer des bisherigen Raums — beispielsweise durch Nachschlagen in einer Liste von Nachbarschaftsbeziehungen — ermittelt werden. Diese Beziehungen müssen nicht notwendigerweise bijektiv sein; stattdessen können etwa mehrere Screens den gleichen linken Nachbarraum haben. Beispiele für eine solche Organisation der Spielwelt ist das C64-Spiel "Ghettoblaster" und die Unterwelt des Spiels "Cauldron I".
- Die Raumnummer verweist in der Regel auf eine komprimierte Repräsentation der Grafikelemente, die zusammen diesen Raum bilden. Dieser Zwischenschritt, der alle Screens typischerweise aus einer begrenzten Anzahl meist gleichgroßer und rechteckiger Elemente aufbaut, reduziert den Speicherplatzbedarf für die Spielwelt erheblich, lässt die Bildschirmdarstellung allerdings eintönig und langweilig wirken, wenn die Zahl der zur Verfügung stehenden Elemente zu klein ist. Einige Spiele begegnen dieser Gefahr, indem sie die Elemente auch in verschiedenen Farben oder gespiegelt darstellen können. Beispielsweise findet sich im Screenshot aus "Robin of the Wood" (mittleres Bild der nachfolgenden Galerie) das vier Mal markierte Grasbüschel noch ein fünftes Mal (rechts von der am weitesten rechts stehenden Hervorhebung), diesmal allerdings seitenverkehrt. Im Spiel "Starquake" sind zahlreiche grafische Objekte in verschiedener Färbung zu finden (siehe vorletzte Galerie dieses Abschnitts).
- Bei manchen Spielen erscheinen einzelne Zeilen von Screens endlos, weil die Spielfigur beim Überschreiten des linken oder rechten Randes den Spielplan am gegenüberliegenden Rand auf gleicher Höhe wieder betritt. Ein solches Verhalten findet sich beispielsweise auf der obersten Ebene der C64-Spiele "Nodes of Yesod" und "The Arc of Yesod", im Waldgebiet von "Robin of the Wood" sowie auf einigen Ebenen des Spiels "Antiriad". Gelegentlich kann der Spielplan in gleicher Weise auch in vertikaler Richtung endlos durchwandert werden, beispielsweise bei den Spielen "Heartland" und "Friday the 13th".
- Bei einigen Spielen wird das Erforschen einer möglichst großen Zahl von Screens honoriert, typischerweise durch Zusatzpunkte beim erstmaligen Betreten eines Raums oder durch Ansammeln eines prozentualen "Adventure Score". Hierfür wird intern eine Statistik geführt, meist eine Bitmap, in der für jeden bereits betretenen Raum je ein Bit gesetzt wird. Beispiele für einen solchen Abrechnungsmechanismus lassen sich in den Spielen "Firelord", "Starquake" und "Elidon" finden. Auch der Spielstand von "Robin of the Wood" wird auf diese Weise mitbestimmt, wobei hier jeweils für eine Gruppe von zwei benachbarten Räumen ein Bit in einer Bitmap gesetzt wird.
- Deutliche Unterschiede zwischen den einzelnen Spielen zeigen sich bei der Gestaltung des Raumwechsels. Die Spanne reicht von einem hässlichen weißen Aufblitzen des gesamten Bildschirms im Spiel "Stormbringer" über ein separates Umschalten von Sprites und Hintergrund bei "Elidon" bis zum unauffälligen, aber langwierigen Ein- und Ausblenden bei "Firelord" — in Zeitlupe dargestellt in der nachfolgenden Galerie.
- Können innerhalb der Spielwelt Gegenstände eingesammelt werden, so sind deren Aufenthaltsorte üblicherweise in einer Tabelle festgehalten. Pro Gegenstand findet sich in dieser Tabelle eine Zeile, die neben der Nummer des Raums, in dem er sich befindet, auch seine genaue Position innerhalb dieses Raums (typischerweise in Form von X- und Y-Koordinate) speichert. Gegenstände, die bereits eingesammelt wurden, werden beispielsweise durch eine ungültige Raumnummer kenntlich gemacht (linke und mittlere Animation der nachfolgenden Galerie). In dem Sonderfall, dass in jedem Raum genau ein Gegenstand aufzunehmen ist und dieser nicht woanders wieder abgelegt werden kann, braucht die Raumnummer nicht mitgespeichert zu werden (rechte Animation). Stattdessen genügt eine Tabellenzeile pro Raum, in der beispielsweise durch ein Flag festgehalten wird, ob der Gegenstand bereits gefunden wurde. Eine zusätzliche Tabellenspalte kann den Objekttyp enthalten.
- Die Spielwelt, die der Spieler beim Start des Spieles vorfindet und mit der Spielfigur betritt, muss zu diesem Zeitpunkt noch nicht notwendigerweise vollständig ausgestaltet sein. Auch die statischen Elemente, beispielsweise die Objekte, die es einzusammeln gilt, werden teilweise erst nach dem Betreten des Screens, in dem sie gefunden werden können, platziert.
Beispielsweise sind im Spiel "Ghettoblaster" in einer weitläufigen Stadt 10 Musikkassetten einzusammeln. Die Screens, in denen sie sich befinden, liegen bei Spielbeginn fest, während die genaue Haustür, hinter der sie bereitliegen, jeweils erst beim erstmaligen Betreten des betreffenden Screens bestimmt wird. So gehen in der nachfolgenden Galerie die ersten beiden Animationen von einem exakt gleichen Spielstand aus, bei der zweiten Animation macht sich die Spielfigur Rocking Rodney aber 20 Millisekunden später als bei der ersten Animation auf den Weg nach links — und da der interne Timer als Zufallszahlengenerator dient, ist die Kassette dadurch plötzlich nicht mehr hinter der rechten, sondern hinter der linken der drei Haustüren zu finden.
Auch im Spiel "Aztec" entscheidet sich erst nach beim Abtragen eines Gerümpelhaufens, ob darunter ein Objekt zu finden ist, das eingesammelt werden kann (rechte Animation). Zwei Partien, die vom gleichen, gespeicherten Spielstand ausgehen, können dadurch einen völlig unterschiedlichen Verlauf nehmen.
- Eine interessante Besonderheit findet sich beim Spiel "Starquake": Hier sind die einzelnen Screens eigentlich jeweils 256 Pixel breit, werden allerdings an beiden Seiten um jeweils 32 Pixelspalten vom linken und rechten Nachbar-Screen ergänzt, so dass jeder Screen schließlich eine Gesamtbreite von 320 Pixeln aufweist. Damit dieser Kunstgriff nicht allzusehr auffällt, erhalten die entsprechenden Spalten häufig eine unterschiedliche Färbung.
Der Grund für dieses Phänomen dürfte darin liegen, dass "Starquake" ursprünglich für den ZX Spectrum (mit einer Bildschirmauflösung von 256x192 Pixeln) entwickelt und erst anschließend auf den Commodore 64 portiert wurde. Beim Nachfolger "Firelord", der ebenfalls zuerst auf dem ZX Spectrum und erst danach auf dem Commodore 64 erschien, sind die Screens dagegen auf beiden Plattformen nur 256 Pixel breit.
- Eine weitere Besonderheit beim Spiel "Starquake", wie auch bei seinem Nachfolger "Firelord", ist es, dass beim Verlassen eines Screens jeweils der Typ und die Position der dortigen Gegner zwischengespeichert wird, so dass der Spieler diese bei einer direkten Rückkehr unverändert antrifft. Erst beim Betreten eines dritten Raums wird dieser Zwischenspeicher überschrieben, so dass bei einer Rückkehr in den ersten Screen die Gegner neu einfliegen müssen (linke Animation der nachfolgenden Galerie). Starquake stellt damit einen Kompromiss dar zwischen Spielen, bei denen in jedem neu betretenen Raum die Gegner an den immer gleichen Orten vorzufinden sind, wie beispielsweise Antiriad, Cauldron I und Cauldron II (mittlere Animation), und Spielen, bei denen für alle Gegner Aufenthaltsort, Bewegungsrichtung und Geschwindigkeit festgehalten werden, so dass diese sich unabhängig vom Aufenthaltsort der Spielfigur innerhalb der Spielwelt bewegen, beispielsweise Ghettoblaster oder Robin of the Wood (rechte Animation).
- Üblicherweise ist die Raumnummer die einzige Information, die die globale Position der Spielfigur innerhalb des Spielplans speichert. Möchte man eine Spielwelt schnell durchwandern (beispielsweise mit dem Ziel, in kurzer Zeit aus Screenshots eine Karte zusammenzusetzen), so können schwer erreichbare Räume betreten werden, indem man per Debugger die aktuelle Raumnummer mit der Nummer des gesuchten Raums überschreibt. Verliert die Spielfigur anschließend ein Leben oder wechselt sie kurzzeitig in den benachbarten Raum, so findet sie sich anschließend am gesuchten Ort wieder. Gelegentlich kann diese Vorgehensweise jedoch dazu führen, dass die Spielfigur anschließend in einem Hindernis festhängt.
Weblinks[Bearbeiten | Quelltext bearbeiten]
Dieser Artikel wurde Artikel des Monats. |