Neu in meiner Bibliothek: Code the Classics Volume II
Fast fünf Jahre mußte ich warten, bevor ich nach dem von mir mit einer ultimativen Lobhudelei bedachten, wunderbaren Buch »Code the Classics Volume 1« endlich auch den Nachfolgeband »Code the Classics Volume II« in meinen begehbaren Zettelkasten (sprich: in meine Bibliothek) einsortieren konnte.
Auch dieser Band nimmt sich wieder Computerspiel- und Arcade-Klassiker der 1980er Jahre vor, erzählt reich bebildert ihre Geschichte und als Hommage werden diese Klassiker in Pygame Zero nicht einfach nur nach-, sondern neu programmiert und interpretiert. Dieses Mal geht es um den Arcade-Klassiker Arkanoid, der unter dem Namen Kinetix eine moderne, gutaussehende Version bekam, den horizontalen Side Scroller Defender, der als Avenger wieder auferstand, und um das Jump ‘n’ Run Adventure Dizzy mit seinem eiförmigen, an Humpty Dumpty erinnernden Helden, der neu interpretiert als Eggzy, phantastische, gut aussehende Welten erkunden muß. Außerdem hat das Beat-’em-up Double Dragon unter dem Namen Beat Streets eine moderne Neuauflage erfahren und der Arcade Racer Pole Position rast als Leading Edge über eine moderne, leicht surreal anmutende Rennstrecke. Wie schon im ersten Band zeichnet Dan Malone für die wunderbaren Graphiken, Tiles und Sprites der »neuen« Spiele verantwortlich und den Code hat wieder Eben Upton (dieses mal zusammen mit Andrew Gillet) »verbrochen«. Die kurzweiligen, aber dennoch lehrreichen Beiträge zur Computer- und Spielegeschichte stammen aus den Federn von David Braben, Simon Brew, David Crookes, Andrew Gillet und Liz Upton. Last but not least hat Allister Brimble den Sound für die Spiele produziert.
Den Quellcode mit sämtlichen Assets für die Spiele könnt Ihr auch dieses Mal wieder von der GitHub-Seite des Projekts herunterladen.
Wie oben schon erwähnt, sind die Neuinterpretationen der Spiele in Pygame Zero geschrieben. Nachdem ich Anfang 2019 diese auf Pygame aufbauende Zero Boilerplate Engine entdeckt hatte, hatte ich kurz darauf kritisiert, daß sie zu einem (schlechten) Programmierstil mit vielen globalen Deklarationen verführe. Obwohl ich dagegen eine Lösung fand, nämlich einen objektorientierten Programmierstil, hatte ich diese leider bald wieder vergessen: Während dieses Tutorial eher versehentlich noch ohne global deklarierte Variablen auskommt, sind die beiden Nachfolger wieder voll davon. Und danach hatte ich Pygame Zero aus heute mir nicht mehr nachvollziehbaren Gründen (eventuell hing das mit meinem Schlaganfall zusammen?) komplett aus den Augen verloren.
Motiviert durch den Neuzugang in meinen Bücherregalen habe ich mir vorgenommen, Pygame Zero eine neue Chance zu geben. Es gibt ein »offizielles« deutschsprachiges Tutorial und eine interessante Helferbibliothek, die einige nützliche Methoden nachliefert. Als IDE eignet sich in meinen Augen Thonny hervorragend, weil es in einer eigenen Python-Umgebung läuft und daher die Spieleprogrammierung ein wenig von den anderen Projekten isoliert, ohne daß ich dafür gleich wieder eine virtuelle Umgebung anlegen muß.
Wie fast immer, wenn ich eine neue oder frisch wiederentdeckte Idee verfolge, habe ich mir auch ein paar Tutorials zum Einstieg rausgesucht:
- Trinket: Game Development with Pygame Zero
- Trinket: Intermediate Game Development with Pygame Zero
- Tim Golden: Wall Ball 1.0 documentation, ReadTheDocs 2016
- Soumya Somasunadaran: Build a Catching Game using Pygame Zero, Medium.com vom 8. Juli 2022
- Amit Yadav: Pygame Zero, Medium.com vom 30. Juni 2024
Und wer weiß, vielleicht ist Pygame Zero doch das Framework für mein leider etwas vernachlässigtes Projekt »Retrogaming und Künstliche Intelligenz«? Still digging!
Bild: Humpty Dumpty Jump ‘n’ Run, erstellt mit Scenario. Prompt: »Egg shaped Humpty Dumpty, wearing blue jacket, rust-red vest and red bow tie, falls from the top of a huge wall in a little village with strange looking buildings. He looks surprised and frightened«. Modell: Flux LoRA, Style: Expressive Comic Characters.