Flick-Screen

Aus C64-Wiki
Zur Navigation springenZur Suche springen

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.


Spielwelt des zweiten Levels im Spiel "Equinox"
Patrouille durch die Räume C2, D2, D3 und C3




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
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".


Beim Spiel "Elidon" wird der aktuelle Screen durch eine X- und eine Y-Koordinate adressiert, deren Werte in zwei aufeinanderfolgenden Speicherstellen abgelegt sind (an Adresse $040A/$040B).
Beim Spiel "Firelord" sind die insgesamt 512 Räume des Spielplans zeilenweise durchnummeriert. Die Nummern nebeneinanderliegender Screens unterscheiden sich um 1, diejenigen von übereinanderliegenden Screens um 16 (Raumnummer an Adresse $0062..$0063).
Beim Spiel "Ghettoblaster" sind die Screens frei nummeriert. Sowohl von Raum 038 als auch von Raum 252 aus tritt man von links in Raum 248. Eine direkte Rückkehr von Raum 248 in Raum 252 ist dagegen nicht möglich (Raumnummer an Adresse $00FE).


  • 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).


Drei Mal das gleiche Pflanzenteil im Spiel "Starquake"
Vier Mal das gleiche Grasbüschel im Spiel "Robin of the Wood"
Drei Mal der gleiche blühende Baum im Spiel "Willow Pattern"


  • 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".


Im Spiel "Antiriad" ist die siebtoberste Ebene nach beiden Seiten offen und kann dadurch endlos durchquert werden. Die Notwendigkeit, dabei gelegentlich auf Nachbarebenen auszuweichen, macht diesen Weg etwas abwechslungsreicher (Nummer des aktuellen Raums an Adresse $005B).
Im Spiel "Nodes of Yesod" scheint sich die Mondoberfläche endlos auszudehnen, wiederholt sich aber alle 16 Screens (Koordinaten des aktuellen Raums an Adresse $000B/$000C).
Im Spiel "Friday the 13th" dehnt sich die Spielwelt endlos in alle Richtungen, wiederholt sich aber in horizontaler Richtung alle 4 und in vertikaler Richtung alle 6 Screens (Koordinaten des aktuellen Raums an Adresse $086A/$086B).


  • 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.


Bitmap mit einer Statistik der besuchten Screens im Spiel "Firelord" (an Adresse $0C60..$0C9F, Nummer des aktuellen Raums an $0062..$0063)
Statistik der besuchten Screens im Spiel "Starquake" (an Adresse $0400..$043F, Nummer des aktuellen Raums an $00B9..$00BA)
Statistik der besuchten "Raum-Paare" im Spiel "Robin of the Wood" (an Adresse $1C70..$1C83, Koordinaten des aktuellen Raums an $0087/$0088)


  • 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.


Im Spiel "Stormbringer" blitzt beim Wechsel des Screens der ganze Bildschirm weiß auf
Bei "Elidon" hängt die Fee während eines Screen-Wechsels kurzzeitig in einer Schlingpflanze
Bei "Firelord" wird der Bildschirminhalt beim Wechsel des Screens strukturiert ab- und wieder aufgebaut, bleibt aber dazwischen lange dunkel


  • 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.


Im Spiel "Finders Keepers" wird die eiserne Keule von Raum $05 (Bildschirmposition $0D:0A) nach Raum $02 (Bildschirmposition $07:10) verlegt. Zwischenzeitlich befindet sie sich im Besitz des Ritters, erkennbar an der ungültigen Raumnummer $7F (Adresse $6BCF..$6BD1, Nummer des aktuellen Raums an $CF69).
Im Spiel "Elidon" wird die Fackel von Raum $06:05 (Bildschirmposition $0D:14) nach Raum $05:05 (Bildschirmposition $12:05) verlegt. Zwischenzeitlich befindet sie sich im Besitz der Fee, erkennbar an der ungültigen x-Koordinate $FF (Adresse $052C..$052F, Koordinaten des aktuellen Raums an $040A/$040B).
Im Spiel "Spiky Harold" frisst der Igel einen Apfel (Objekttyp $01) an Bildschirmposition $08:0D, woraufhin das zugehörige Flag von $01 (vorhanden) auf $00 (gefressen) wechselt (Adresse $A000-$A003).


  • 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.


Screen aus dem Spiel "Starquake", zur Veranschaulichung einer Überlappung im rechten Teil
Screen aus dem Spiel "Starquake", der sich in seinem linken und rechten Teil mit seinen Nachbar-Screens überlappt
Screen aus dem Spiel "Starquake", zur Veranschaulichung einer Überlappung im linken Teil


  • 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).


Im Spiel "Starquake" sind die Gegner im vorherigen Raum noch unverändert anzutreffen, falls man direkt in diesen zurückkehrt.
Im Spiel "Cauldron II" starten die Gegner beim Eintritt in einen Raum an der immer gleichen Position.
Im Spiel "Ghettoblaster" bewegen sich die Gegner autonom innerhalb der Spielwelt und lassen sich durch Rekonstruktion ihres zwischenzeitlich zurückgelegten Wegs auffinden.


  • Ü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]


Artikel des Monats.gif Dieser Artikel wurde Artikel des Monats.