Assembler als Spiel: "Human Resource Machine"

Assembler als Spiel: „Human Resource Machine“

Ich erinnere mich noch an den Informatikunterricht in der Schule. Unser Informatiklehrer war eigentlich nur ein Mathelehrer, der noch am Besten von allen im Kollegium mit Computern umgehen konnte. Er war leider nicht besonders gut, weder fachlich noch didaktisch; zudem tippte er im Adlersuchverfahren (ihr wisst schon: drei Runden über der gewünschten Taste kreisen, bevor sich der Finger im Sturzflug auf diese herabstürzt), sodass wir vom zuschauen schnell das Administratorpasswort der gesamten Schul-Infrastruktur herausfanden. Gute Zeiten.

Ich bin mir sicher, dass derlei Lehrpersonal viele eigentlich fähige Kinder davon abhielt, wirklich etwas im Informatikunterricht zu lernen oder gar Spaß an der Disziplin zu finden. Ohne didaktisches Konzept, mit einem hingeworfenen Compiler und dröge vorgetragenen Erklärungen lässt sich beispielsweise Programmieren nicht gut lernen. Am deutlichsten wurde das, als wir einige Wochen lang Assembler lernten – einer Programmiersprache, deren Anweisungen tatsächlich eins zu eins in Maschinensprache überführt werden können, also jeder einzelne angegebene Befehl genau so vom Computer ausgeführt wird. Anstatt des Lehrers halfen ich und die anderen Informatik-Nerds den übrigen Schüler*innen, einfache Programme wie Addierer oder Multiplikatoren zu basteln.

Das Spiel Human Resource Machine ist das neuste Werk der Indie-Spieleentwickler hinter dem hoch gelobten World of Goo sowie Little Inferno. Storytechnisch geht es wieder einmal um die „Tomorrow Corporation“, eine mächtige Gesellschaft, welche die gesamte Welt kontrolliert. Dort ist die Spieler*in angestellt und soll sich hocharbeiten, in dem sie brav das tut, was von ihr verlangt wird – so unsinnig die Aufgaben auch erscheinen mögen. Und das tut ihr als Spieler, indem ihr eben eine Reihe von Assembler-ähnlichen Anweisungen bastelt, die euer alter ego dann brav vollführt, während der Boss zuschaut und sich beschwert, wenn ihr einen Fehler macht.

Einfaches Programm in Human Resource Machine

Die ersten Programme sind relativ kurz und übersichtlich…

Der schwarzhumorige Mix aus kapitalistischer Dystopie und süßen, gegenüber ihrer Situation vollkommen ignoranten Charakteren hat mir schon in den vorherigen Spielen gefallen, auch weil dahinter ein durchaus ernst gemeinter sozialer Kommentar und die Kritik an den herrschenden Verhältnissen steckt. Das eigentliche Spiel besteht aus knapp 40 Programmieraufgaben/Levels, die mit einer einer extrem abgespeckten Version einer Assembler-Sprache gelöst werden wollen. Anstatt aber den Fokus aufs Programm zu legen, ist der Großteil des Spielbildschirms für die Visualisierung des Programmablaufs da: die eigene Spielfigur nimmt sich einfache Inputs von einem Förderband, auf dem Zahlen oder Buchstaben liegen, verarbeitet diese irgendwie (z.B. zwei Eingaben addieren) und muss dann die richtigen Ausgaben aufs Output-Band legen. Dazu stehen auf dem Boden einige Plätze zur Verfügung, die als Speicherzellen fungieren und auf die z.B. aktuell in den Händen befindliche Werte kopiert werden können. Es macht alleine schon Spaß dabei zuzuschauen, wie die Figur nach den eigenen Anweisungen hin und her flitzt – jeder einzelne Schritt der Ausführung ist damit unglaublich gut visualisiert. Zum Glück lässt sich der Ablauf mit einem Schieberegler auch beschleunigen, sonst würde mancherlei Ausführung der späteren, komplexeren Programme wirklich sehr lange dauern.

Komplex Programm in Human Resource Machine

…während ihr in den späteren Programmen mehr und komplexere Instruktionen zur Verfügung habt und es durch haufenweise Sprünge deutlich chaotischer wird.

Derweil schlürft übrigens der Boss in einer Ecke des Raumes seinen Kaffee und beaufsichtigt seine Arbeitskraft. Wenn beispielsweise zu wenige oder falsche Dinge aufs Ausgabeband gelegt werden, oder versucht wird von einer leeren Speicherzelle zu lesen, beschwert er sich und nennt konkret den Fehler. Dann lässt sich der eigene Programmablauf in einzelnen Schritten vor- und zurückdrehen, sodass eins ganz vortrefflich debuggen kann, was schief gelaufen ist und wie der eigene Code verändert werden muss. Meiner Erfahrung nach ist das die Hauptsache am Programmieren lernen: immer wieder ausprobieren was klappt und was nicht, aus den eigenen Fehlern lernen. Moderne Compiler machen es einem immer noch teilweise sehr schwer, die eigenen Fehler wirklich nachvollziehen zu können – ein Hauptgrund, wegen dem eins die Lust daran verlieren kann. In diesem Spiel rennt ihr dagegen niemals dauerhaft gegen eine Wand, sondern kriegt wie es sich für ein Videospiel gehört eben sinnvolles Feedback. Und dann macht es wirklich Spaß!

Wie schon in den Vorgängerspielen sind die Entwickler echte Meister darin, ein sehr einfaches Spielprinzip bis an die Grenzen auszuloten und die Lernkurve dabei angenehm flach zu halten, sodass keine Überforderung eintritt. Einige der Levels sind optionale Seitenpfade, die vielleicht eher für Leute geeignet sind, die schon etwas Programmiererfahrung haben. Es wird aber durchaus zum Ende hin extrem komplex, sodass man gerne einmal 30 oder mehr Instruktionen im Programm hat und sich die durch Pfeile visualisierten Sprünge miteinander zu verknoten scheinen. Wenigstens lassen sich einige kurze Annotation an das Programm schreiben, um die Übersicht auch dann noch herzustellen und verschiedene Teile visuell voneinander abzugrenzen. Neben dem einfachen Lösen der Rätsel gibt es zu jedem Level auch noch zwei abschließbare Herausforderungen, für die man etwas weiter knobeln muss: hier gilt es, das Programm möglichst kurz zu gestalten oder es möglichst effizient zu machen. Das fordert nochmal eine ganz eigene Kreativität. In manchen Levels ist es übrigens nicht möglich, beides gleichzeitig zu erfüllen.

ELevelabschluss in Human Resource Machinein nettes Gimmick ist, dass sich die eigenen Programme sogar in ein Textformat kopieren lassen. Das Programm aus dem ersten Screenshot sieht dann so aus:

— HUMAN RESOURCE MACHINE PROGRAM —
a:
INBOX
COPYTO   0
INBOX
OUTBOX
COPYFROM 0
OUTBOX
JUMP     a

Umgekehrt kann man die eigenen Programme auch statt im Spiel im Texteditor der Wahl schreiben und dann ins Spiel importieren. Mir macht das zwar weniger Spaß, aber es lässt sich damit gut veranschaulichen, wie direkt das eigene Rumgeklicke dann eben doch nichts anderes ist als in einem Assembler-Dialekt zu schreiben. Toll!

Was die Grundlagen von Assembler lernen angeht, kenne ich ehrlich keine bessere oder spaßigere Art und Weise es zu lernen als mit Human Resource Machine. Ich hoffe sehr, dass ein paar Informatiklehrer*innen diese Zeilen lesen und es einfach mal als Lerneinlage ausprobieren – der Lerneffekt wäre jedenfalls deutlich größer als damals bei mir in der Schule. Das Spiel gibt es übrigens aktuell im (auch ansonsten sehr guten) Humble Eye Candy Bundle – wie bei den Humble Bundles üblich für einen Preis eurer Wahl, also ab einem Cent.

Lieber Herr Lehrer, Sie haben ausgedient und wurden durch die Maschine ersetzt!