Programmieren spielen

(zuerst erschienen in RETURN, )

Programmieren war bis Mitte der 1960er Jahre vor allem Naturwissenschaftlern und Ingenieuren vorbehalten, die mit Computern die vor allem mathematische Probleme ihrer Arbeit lösen wollten. Mit BASIC entstand eine Sprache, die sich zunächst an Menschen in den „Liberal Arts“-Fächern richtete, also Kultur- und Geisteswissenschaftler, Künstler und Kreative. Die dialogische Programmierung (über ein Multitaskingsystem) und später seine Implementierung als Interpretersprache machten BASIC quasi von Beginn an zu einem Experimentierfeld, bei dem über Trial and Error im Learning-by-Doing-Verfahren die Möglichkeiten des Computers quasi spielerisch erkundet werden konnten. Und dies wiederum führte fast zwangsläufig zu Spiel-Anwendungen und später zu Systemen, die ideal als Spielplattformen nutzbar waren. Wie sich BASIC als Spielsprache implementiert hat, soll der folgende Beitrag nachvollziehen und an einem Beispiel zeigen.

Programmieren spielen

von Stefan Höltgen

Die Spielgeschichte von BASIC fing mit einem Programm in einer ganz anderen (Lehr)Programmiersprache an: Im Sommer des Jahres 1969, genauer gesagt am 21. Juli gelang es der NASA eine Weltraummission zum Mond durchzuführen, bei der erstmals Menschen die Oberfläche des Erdtrabanten betraten. Schon Monate vorher war das erwartete Ereignis Thema in allen Medien und beflügelte vor allem die Fantasie der Kinder und Jugendlichen, die, getriggert durch Science Fiction, immer schon ein besonderes Interesse für Weltraumabenteuer hatten. Zu ihnen gehörte offenbar auch der damals 17-jährige High-School-Schüler Jim Stoner. Nachdem die Mondfähre „Eagle“, trotz einiger waghalsiger Manöver, auf dem Erdtrabanten gelandet und diesen wieder verlassen hatte, nutzte Stoner den PDP-8-Computer, der in seiner Schule stand, um darauf ein Lunar-Lander-Spiel in FOCAL zu programmieren. Dies gelang ihm und über Umwege erreichte der Spielcode David H. Ahl, der damals die Educational-Abteilung der Digital Equipment Corporation (DEC) leitete – jener Firma, die die PDP-8 entwickelt hatte. Ahl und sein Team hatten vor, die Computer von DEC für Ausbildungszwecke bekannter zu machen. Die Implementierung der damals noch neuen Programmiersprache BASIC als Lehrsprache sollte dafür die Bedingungen schaffen.

Das FOCAL-Spiellisting zu Lunar Lander brachte Ahl jedoch auf eine weitere Idee: Warum nicht ein Ausschreiben veranstalten, in dem die Leser des DECUS-Educational-Magazins aufgefordert werden, ihre BASIC-Spielelistings einzureichen, um die „spielerische Didaktik“ der Sprache noch stärker zu betonen? Die Resonanz auf diese Ausschreibung war derartig groß, dass Ahl seinen Arbeitgeber überreden konnte, die zahlreichen eingesandten Listings als Buch zu publizieren. 1973 erschien dann mit 101 BASIC Computer Games das erste einer Reihe von Büchern mit Spiel-Listings zuerst für PDP-Computer, dann für TRS-80 und andere Plattformen. Mit den 101 BASIC Computer Games war eine neue Textsorte entstanden, die wie selbstverständlich in später erscheinenden Büchern und Zeitschriften übernommen wurde: Das Abtipp-Listing. Und die Motivation dafür, die oft seitenlangen Codes in den eigenen Computer einzutippen, kam quasi „postwendend“ dazu: kostenlose Computerspiele spielen.

Spielplattformen

Gerade für die erste Generation von Homecomputern hatte sich noch keine Spielsoftware-Industrie etabliert, so dass sich deren Besitzer einfach im Ladengeschäft nach Unterhaltungssoftware hätten umschauen können. Im Gegenteil: Die Nutzer dieser Systeme mussten ihre Spiele selbst programmieren, indem sie sich entweder ein Spiel ausdachten oder ein bekanntes Spiel aus der Spielhalle für ihr System portierten. Aus den zahllosen Spielprogrammen, die ab Mitte der 1970er Jahre von Amateuren programmiert wurden, stachen einige qualitativ so weit hervor, dass sie die Grundlage für eigene Spielsoftware-Unternehmen bildeten. Die Geschichte der Computerspiele ist reich an Persönlichkeiten und Anekdoten, die den Karriereweg der ersten Spielefirmen nacherzählen. Solche Spiele waren allerdings zumeist in Assembler programmiert, um die geringen Ressourcen der Plattformen adäquat ausnutzen zu können.

BASIC blieb weiterhin den Programmierhobbyisten vorbehalten. Und diese lieferten in den Dialekten ihrer Homecomputer nicht selten unglaubliche Leistungen ab – und sandten sie an Zeitschriften oder publizierten sie in Newslettern und User-Mags. In der Zeit zwischen 1975 und 1995 gab es eine regelrechte Flut von Zeitschriften, in denen BASIC-Listings zum Abtippen enthalten waren – und das weltweit in zahlreichen Sprachen. Computerspiele bildeten unter diesen Listings den Hauptteil (vor Anwenderprogrammen, Tools und Demos/Hacks). Um an hochwertige Spiel-Listings zu kommen, schrieben die Zeitschriften teilweise hohe Preisgelder aus, die denjenigen winkten, die ein gelungenes Programm einreichten. Unter Rubriken wie „Listing des Monats“ wurden solche Programme dann in den Zeitschriften zentral platziert und bescherten den Autoren neben dem Honorar noch Anerkennung und manchmal Kontakte zu Spielefirmen.

Sprachgemeinschaften

Die Textsorte Abtipp-Listing verschwand mit dem Homecomputer von der publizistischen Bildfläche. Zum einen wurden Datenträger wie Disketten ab Mitte der 1980er Jahre so günstig, dass die eingereichten Programme gleich auf diesen (als Heftbeileger) gespeichert wurden und nicht mehr abgetippt werden mussten. Zum anderen verfügten die Computer der 16-Bit-Ära nur über BASIC-Dialekte, die erst nachgeladen werden mussten, was die direkte Motivation nach dem Einschalten des Computers etwas zu programmieren offenbar hinreichend schmälerte. Und die Qualität von BASIC-Spielen im Vergleich mit den für solche Plattformen kommerziell erhältlichen Titeln war zu groß, um die Mühe, ein Spiel in BASIC zu entwickeln, noch zu rechtfertigen. So bilden Abtipp-Listings ein zeitlich begrenztes, aber dafür quantitativ beachtliches Archiv an historischer Computerliteratur, die nicht für Menschen, sondern für Maschinen geschrieben wurde.

Oder vielleicht doch auch für Menschen? In meinem Forschungsprojekt zur Kulturgeschichte der BASIC-Programmierung habe ich mich gefragt, ob sich aus den BASIC-Listings, die sich in Zeitschriften und Büchern dieser Zeit finden, vielleicht auch Informationen über die Entstehungskontexte, Quellen und Originalideen finden lassen. Immerhin hatte damals jeder Programmierer eine spezifische Plattform, die er oder sie in einem vergleichsweise engen Umfeld mit einer begrenzten Menge von Informationsressourcen genutzt hat. Schlagen sich diese Faktoren vielleicht im Programmierstil und in den in den Programmen enthaltenen Ideen und Algorithmen nieder und gibt es vielleicht sogar so etwas wie ein Muster in der Implementierungsgeschichte eines Programms? Um diese Frage zu beantworten, habe ich aus einer Anzahl von digitalisierten Zeitschriften und Büchern Programmlistings zu einem Spiel herausgesucht. Dieses eine Spiel sollte für möglichst viele Plattformen, in möglichst vielen Ländern und über einen langen Zeitraum programmiert worden sein.

Break-Out

Meine Wahl fiel auf das Spiel Break-Out, weil es einen besonderen BASIC-Ursprung hat, der sich vielleicht über die Geschichte aller Implementierungen nachverfolgen lässt. 1976, als Steve Wozniak den Apple-II-Computer designte, hatte er dabei die Idee im Hinterkopf ein System zu entwickeln, dass für das Spielen von Break-Out (ein Spiel, dass er kurz davor für die Firma Atari als Arcade-Game designt hatte) ideal geeignet wäre. Der Computer müsste daher Farbgrafik und Sound ausgeben, ein Paddle-Controller müsste anschließbar sein und es müsste einen BASIC-Dialekt geben, in dem sich Break-Out programmieren ließe. Wozniak betont an vielen Stellen, dass ihn diese Idee zur Entwicklung des Computers und der Programmiersprache Integer-BASIC gebracht hatte und wie zum Beleg dafür ist in einem der ersten Handbücher zum Apple II auch ein BASIC-Break-Out-Listing zum Abtippen zu finden.

Um einen groben Überblick über die Break-Out-Listings zu bekommen, habe ich circa 70.000 digitalisierte und mit OCR erfasste internationale Computerzeitschriften und ungefähr 73.000 digitalisierte Bücher nach dem Wort „Breakout“ (und Varianten wie „Break-Out“ und „Brickout“ sowie „Brick-Out“) durchsucht. Hierbei bin ich auf insgesamt 114 BASIC-Implementierungen des Spiels in 75 Zeitschriften und 39 Büchern gestoßen. (Allerdings dürfte das nur die sprichwörtliche Spitze des Eisbergs sein, denn sehr häufig ist dasselbe Spiel unter anderem Titel publiziert worden.) Aus dieser Menge habe ich zehn Spielelistings ausgewählt, die eine besonders große historische (1976-1991), lokale (Deutschland, England, Frankreich, Spanien, USA, Argentinien, Japan) und publizistischen Bandbreite aufwiesen und für unterschiedlichste Plattformen entwickelt wurden (Apple II, TRS-80, PET 2001, C64, ZX Spectrum, TI-99/4a, MSX, Atari 800, Amstrad CPC und Acorn BBC Micro).

Code Break Down

Aus solch einer Auswahl lassen sich natürlich noch keine validen statistischen Aussagen, wie sie die oben genannten Fragen fordern, gewinnen. Hier ging es mir deshalb zunächst einmal darum einen Blick dafür zu bekommen, auf was man ein automatisiertes Code-Analyse-Tool trainieren müsste, um zu den Erkenntnissen zu gelangen, die ich suche. Aber selbst beim Lesen dieser Codes haben sich einige erstaunliche Dinge gezeigt, von denen ich hier nur drei ansprechen möchte. (Wer sich eingehender dafür interessiert, kann mich an meinem BASIC-Stand auf dem kommenden Vintage Computer Festival in München besuchen.) Das Spiel ist auf sechs verschiedene Arten programmiert worden: als reines BASIC-Spiel ohne Maschinenzugriffe, als BASIC-Programm mit PEEK- und POKE-Funktionen/Befehlen (zumeist für Grafik und Sound), als Hybrid aus BASIC mit Maschinenspracheteilen in DATA-Zeilen (oft zur Beschleunigung von Animationen), als BASIC-Loader für ein Maschinenspracheprogramm, als reines HEX-Listing zur Eingabe in eine entsprechenden Editor und schließlich als „Hack“ (One-Liner, Ten-Liner, …). Betrachtet habe ich nur Listings der ersten beiden und der letzten Kategorie, weil nur diese den damaligen (menschlichen) Lesern einen intuitiven Einblick in die Machart der Codes ermöglichten.

Die meisten Programmierer haben das Spiel in 70 bis 80 BASIC-Zeilen implementiert, sechs haben dafür mehr als 500 Zeilen aufgewendet und zwei haben es in einer bzw. zehn Zeilen geschafft, ein funktionierendes Break-Out zu programmieren. Anders als das BASIC-Break-Out von Steve Wozniak zeigen alle zehn von mir untersuchten Spiele eine vertikale Darstellung des Spielfelds, die sich offenbar eher an der Arcade-Version ausrichtet. Und in fünf der zehn Listings fanden sich noch Programmierfehler bzw. Rudimente alten Codes, der vom Programm nicht verwendet wurde, aber im Listing enthalten geblieben war. Gerade diese letzte Entdeckung hat interessante Folgefragen aufgeworfen: Wie entsteht ein BASIC-Programm, wenn es nur von einer Person und nicht „in einem Rutsch“ programmiert wird. Manchmal gibt es Indizien, die darauf hinweisen, wie ein Programm bearbeitet wurde (etwa, wenn in regelmäßigen BASIC-Zeilenabständen unregelmäßige Zeilennummern auftauchen). Markant war auch die Bandbreite an Programmiertechniken, die benutzt wurden. Sie reichten von der Verwendung von Standard-Algorithmen (etwa zur Sortierung von High-Score-Listen) über sehr umständliche GOTO-Spaghetti-Konstrukte bis hin zu klugen Hacks (zumeist unter Nutzung Boole’scher Funktionen). Drei Indizien, die Hinweise auf den „Bildungsstand“ der Programmier geben könnten.

Eine andere Spiele-Geschichte

Dieselbe Untersuchung könnte man zu jedem Spiel, das mehr als einmal implementiert wurde, anstellen. Auch für das Lunar-Lander-Programm, das in Ahls Buch nicht in Focal, sondern in einer von ihm selbst adaptierten BASIC-Variante findet. Als „Mondlandung“ hat es das Programmlisting sogar ins Handbuch des TRS-80 geschafft. Ich erinnere mich, dass ich es von dort noch Mitte der 1980er Jahre in meinen Computer eingetippt habe und um weitere Himmelskörper, für die ich die Gravitationskonstanten aus einem astronomischen Atlas herausgesucht habe, erweiterte. Später habe ich mich dann immer gefreut, wenn ich das Spiel mal in einer Computerzeitschrift als Listing gefunden habe und habe es dann mit dem, was ich über die Implementierung wusste, ergänzt. Bevor ich meinen EACA Video Genie II verkauft habe, habe ich – inspiriert durch eine Version für Atari-Computer (aus welcher Zeitschrift, weiß ich nicht mehr) – es dann sogar um eine Grafik-Ausgabe erweitert. Die kontinuierliche Erweiterung meines Spielelistings um zusätzliche Routinen für Grafik, physikalischen Realismus, Textausgaben und die Anpassung des Timings wurden irgendwann selbst zu einem Spiel, bei dem sich der Gegner als der nur 16 Kilobyte große RAM-Speicher und der langsame Microsoft-BASIC-Interpreter des Systems erwiesen. Leider besitze ich die Listings von damals nicht mehr, um dieses „kompetitive Spiel“ heute noch nachverfolgen zu können.

An meiner privaten Lunar-Lander-Geschichte zeigt sich vielleicht exemplarisch, was sich sicherlich hinter jeder einzelnen der gefundenen BASIC-Break-Out-Spielelistings an biografischen Hintergründen verbirgt. Die Existenz dieses Papierarchiv ermöglicht es uns, solche Spuren aufzunehmen und zu verfolgen, um mehr über diese noch weitgehend unerforschte Geschichte der Computerspiele herauszufinden. Hierzu haben sich bereits einige Spieleforscherinnen und -forscher zusammengetan und begonnen die Spiele zu katalogisieren. Ich versuche so viele Zeitschriften und Bücher wie möglich als Digitalisate zu bekommen, um die Datenbank-Einträge mit Material zu ergänzen. Papier ist zwar geduldig – aber gerade die auf oft sehr günstigem Papier gedruckten Zeitschriften zerfallen langsam, wenn sie nicht sowieso schon als Altpapier entsorgt wurden. Wer sich für die Geschichte von BASIC und die Bewahrung von BASIC-Programmen interessiert, wird um das Thema Paperware-Preservation nicht herum kommen. Die Entdeckungen, die man beim Durchblättern einer alten Computerzeitschrift macht (und die sich wesentlich vom Durchscrollen eines Scans unterscheiden), sind aber all die Mühe wert.

Über Stefan Höltgen

siehe: http://about.me/hoeltgen
Dieser Beitrag wurde unter zuletzt gesehen abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.