ZX Fall – mein einziges selbstgeschriebenes Spiel

Ich bin kein gro├čer Programmierer. Aber doch hatte ich immer Spa├č, wenn ich Programmierprojekte gemacht habe. Im privaten und beruflichen Rahmen habe ich einiges entwickelt.

Willkommen bei ZX Fall

Andere Programmierprojekte

Dazu geh├Ârte eine Kontrollsoftware, mit der ich die Quartalsabrechnung der KV f├╝r die Praxis meines Vaters ├╝berpr├╝fen konnte. Allerdings war das komplizierteste hier nicht das Datenbankprogramm, sondern das wochenlange Eintippen von Ziffern von Krankenscheinen. Erschwerend kam hinzu, dass meine Mutter und ich die Daten auf der schlechten Tastatur des Sinclair QL eingeben mussten.

Ein wichtiger Teil meiner Diplomarbeit war eine Software mit der ich die theoretischen Ans├Ątze meiner Arbeit verifizieren konnte. Es ging hier um Penalty-Funktionen bei der Optimierung von n-dimensionalen Funktionen. Damals habe ich auf dem Atari ST mit Pascal XSC gearbeitet. XSC stand f├╝r Extension for Scientific Computation. Speziell nutzte ich die eingebaute Intervall-Arithmetik, die f├╝r Branch-and-Bound-Methoden einfach genutzt werden konnte. Einfach faszinierend, wenn man Rechenoperationen auf Zahlenintervalle anstelle von Zahlen anwenden konnte.

Sp├Ąter im beruflichen Umfeld habe ich dann Programmiersprachen der 4. Generation (u.a. GOGOL von der Firma GMI) genutzt, um auf Mainframe-Computern (BS2000 und MVS) Anwendungen f├╝r Sparkassen und Banken zu entwickeln. Auch in der Jahr 2000-Umstellung und bei der Einf├╝hrung des Euros war ich beteiligt und arbeitete kilometerlange alte Sourcen durch.

Und nun zur├╝ck ins Jahr 1984

Mein allererstes Programmierprojekt war ein Computerspiel auf meinem Sinclair ZX81. Davon will ich hier berichten.

Es muss im Jahr 1984 oder 1985 gewesen sein. Ich hatte durch die Eingabe von vielen Listings aus Zeitschriften Erfahrungen gesammelt und mir einige Maschinencode-Routinen notiert, die ich wiederverwenden wollte. Ja, damals gab es noch keine Libraries mit vielen wiederverwendbaren Routinen. Das war noch edle Handarbeit.

Eigentlich wollte ich ja einen Autosimulator schreiben, der es erm├Âglichte die gesamte Autobahn A3 zwischen D├╝sseldorf und Passau abzufahren. Ich bin damals mit meinen Eltern die Strecke so h├Ąufig gefahren, dass ich jede Kurve genau kannte. Nach einigen Planungen habe ich dieses Projekt nach hinten gestellt, da ich der Meinung war, dass der Speicherplatz von 16KB RAM nicht reichen w├╝rde.

Eine weitere Idee sollte eine animierte Monopoly-Variante sein. Was habe ich mir f├╝r M├╝hen gemacht, um die Animationen auf Rechenpapier vorzuzeichnen.

Den Ausschlag hat dann aber ein Spiel auf der Atari VCS 2600 gegeben.

Activisions Pitfall auf der Atari VCS 2600 – was f├╝r ein tolles Spiel

Es war das klassische Activision-Spiel Pitfall (Link). Das hat mich sehr beeindruckt und ich sah die M├Âglichkeit die erlernten Techniken und Programm-Routinen hier sinnvoll anzuwenden.

ZX Fall – die Spieleprogrammierung

Ich habe sechs unterschiedliche Szenen im Spiel ZX Fall vorgesehen:

  • schwingen mit der Liane ├╝ber einen See,
  • springen ├╝ber Krokodile,
  • springen ├╝ber rollende F├Ąsser,
  • springen ├╝ber Schlangen,
  • springen ├╝ber Gruben,
  • der Schatz.

Diese Szenen sollten zufallsgesteuert vom Spieler durchlaufen werden. Man hatte maximal drei Leben. Es mussten 10 Szenen erfolgreich absolviert werden. Das Spiel war wirklich herausfordernd. Besonders bei dem Springen ├╝ber rollende F├Ąsser verlor man leicht ein Leben. Das Schwingen mit der Liane war einfach, die programmiertechnische Herausforderung war dabei aber die gr├Â├čte.

Zum Schluss kam noch ein Sprung ├╝ber zuf├Ąllige Gruben, bei dem man auch leicht ein Leben verlieren konnte. Wenn man auch das schaffte, dann erwartete einen ein Schatz als Belohnung.

Das Spiel wurde von mir in 90% BASIC und dem Rest in Maschinencode f├╝r spezielle Routinen entwickelt.

ZX Fall – das Video

Schwingen mit der Liane ├╝ber einen See

Das war mein Sahnest├╝ck bei der Entwicklung. Mit BASIC konnte man die Liane in unterschiedlichen Positionen zwar plotten, das ganze lief allerdings in Zeitlupe. Ich wollte aber eine fl├╝ssige Lianen-Schwingbewegung entstehen lassen. Idealerweise w├╝rde man 25 Bilder pro Sekunde ├╝berlagern lassen. Ich habe mich entschieden die Schwingbewegung in 5 Bildern zu malen und diese Bilder in einem gewissen Rhythmus zu ├╝berlagern. Dadurch entstand wirklich der Eindruck einer fl├╝ssigen Bewegung.

Technisch habe ich die vorgezeichneten Bilder im Speicher abgelegt und mit einer speziellen Maschinencode-Routine in den Bildschirmspeicher eingeblendet. Und diese ├ťberlagerung war tats├Ąchlich schnell genug und erzeugte einen fl├╝ssigen Schwung der Liane. Schaut euch das mal genau im Video an.

Die Bewegung des Helden (ein toller Buchstabe A) wurde ├╝ber eine Basic-Routine abgefragt. Der richtige Augenblick f├╝r den Sprung war nur in einem engen Zeitfenster m├Âglich. Wenn der Tastendruck zum Sprung im richtigen Augenblick passierte, dann wurde der Held an der Liane h├Ąngend r├╝bergeschwungen. Was war das f├╝r ein Spa├č als die gew├╝nschte Bewegung das erste Mal erfolgreich ablief.

Springen ├╝ber Krokodile

Dies war eines der von Activision wirklich sch├Ân gestalteten Bildern. Krokodile, die ihr Maul aufklappten und schlossen. Idealerweise springt man auf das Krokodil (>==), wenn das Maul geschlossen ist. Das habe ich ein wenig angepasst. Ich habe ein Band von Pfeilen (<-) auf den Helden zukommen lassen, welches in zuf├Ąlliger Folge Pfeile einblendete und von rechts nach links laufen lie├č. Dieses Laufband war auch eine Maschinencode-Routine und erlaubte einen fl├╝ssigen Ablauf.

Ziel war es, dass der Held auf den R├╝cken des Krokodils springen sollte, aber nur dann springen durfte, wenn kein Pfeil auf ihn zuflog. Diese Kollisionsabfrage Held<>Pfeil wurde auch ├╝ber eine kleine Maschinencoderoutine realisiert. Und es funktionierte gro├čartig und ich hatte auch mit dieser Szene viel Spa├č.

Springen ├╝ber rollende F├Ąsser

Auch hier kommt eine Laufbandtechnik wie mit den Pfeilen bei den Krokodilen zum Einsatz. Aber diesmal ist dieses Laufband auf H├Âhe des Helden und er mu├č ├╝ber die auf ihn zurollenden, in zuf├Ąlliger Frequenz erscheinenden F├Ąsser (O) springen. Um das Ganze zu erschweren habe ich eine Obergrenze bei der Anzahl von Spr├╝ngen definiert. Ein Z├Ąhler oben links z├Ąhlte nach jedem Sprung runter. Die Szene war geschafft, wenn man rechts ankam und der Z├Ąhler gr├Â├čer als Null war.

Auch hier kam eine Kollisionsabfrage zum Einsatz. Diese Szene war bei weitem am schwierigsten zu spielen. Manchmal waren die zuf├Ąllig erscheinenden F├Ąsser zu dicht gesetzt, so dass der Z├Ąhler schnell auf Null ging.

Springen ├╝ber Schlangen

Die einfachste Szene war der Sprung ├╝ber zuf├Ąllig gesetzte Schlangen (einfach wunderbar gestaltet – schaut es euch auf dem Screenshot oben an). Um diese Szene zu erschweren habe ich einen herausfordernden Timer rechts runterz├Ąhlen lassen. Der Held musste also sofort loslaufen, um rechtzeitig auf der anderen Seite anzukommen. Eine einfache Kollisionsabfrage kam dabei zum Einsatz.

Springen ├╝ber Gruben

Die letzten Spr├╝nge ├╝ber Gruben

Nach 10 erfolgreich absolvierten, zuf├Ąllig ausgew├Ąhlten Szenen wird man mit einer letzten Herausforderung belohnt. Zuf├Ąllig erzeugte tiefe Gruben tauchen vor dem Helden auf und m├╝ssen ├╝bersprungen werden. Peinlich ist es, wenn man daran scheitert, denn dann darf man nochmal erfolgreich drei andere Szenen in zuf├Ąlliger Reihenfolge durchspielen, bevor man wieder zu dieser Szene kommt.

Das wirkliche Spielende – der Schatz

Der gro├čartige Schatz am Ende des Regenbogens

Am Ende des Spieles erwartet den Helden ein gro├čartiger Schatz. Mann, mann, mann – was habe ich damals geschwitzt, als ich bei der Aufnahme des Videos im Jahr 2010 das Spiel bis zum Ende durchspielen wollte. Ich habe ├╝ber eine halbe Stunde gebraucht, aber dann war es geschafft.

Fazit

F├╝r mich war dieses Programmierprojekt eine leidenschaftliche Finger├╝bung mit wiederverwendbaren Maschinencode-Routinen. Diese in mein Basic-Programm zu integrieren war eine gro├čartige Erfahrung. Das Ergebnis mag ein wenig ungelenk aussehen, aber das war damals mein erster Computer und dieser Computer konnte auch wirklich nicht viel. Wer noch ein wenig ├╝ber meine pers├Ânliche Geschichte zum Sinclair ZX81 nachlesen m├Âchte, den kann ich auf diesen Link verweisen.

Ich bin froh, da├č ich euch dieses Spiel noch heute zeigen kann. Ich habe es in den 80er-Jahren in ein 81-File auf den Atari ST exportiert. Dieses konnte dann mit dem ZX81 Emulator von Ch. Zwerschke gestartet werden. Durch diese Emulation konnte ich damals das Spiel vom Bildschirm des Atari Mega ST abfilmen, w├Ąhrend ich es durchspielte.

Es hat Spa├č gemacht, diese Erinnerung nochmal f├╝r meinen Blog aufzubereiten. Vielleicht habt ihr ja auch sch├Âne Erinnerungen an euer „erstes Mal“ und wollt dies mit mir diskutieren. Bitte nutzt daf├╝r die Kommentarfunktion in diesem Beitrag.

6 Kommentare

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  ├ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  ├ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  ├ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  ├ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.