← Alle Beiträge

Rückblick, datiert auf zwei Tage nach der Abgabe. Die Note steht als Nachtrag am Ende.

TouchdownTactics: sieben Leute, ein Spiel in Smalltalk, und ich hatte die Karten

Im Kurs Softwarearchitektur haben wir als Siebenerteam ein Echtzeit-Strategiespiel in Squeak/Smalltalk gebaut. Mein Teil: Hand, Karten und Elixier.

Rund 7.900 Zeilen hinzugefügt, rund 9.500 entfernt. Das ist meine Bilanz in TouchdownTactics, und sie sagt mehr über die letzten zwei Monate als jede Feature-Liste.

Der Rahmen war Softwarearchitektur am HPI. Aufgabe: im Team ein Spiel in Squeak/Smalltalk bauen und dabei Entwurfsmuster, Smalltalk-Idiome und sauberen modularen Aufbau anwenden. Wir waren sieben. Smalltalk war für mich neu, und Squeak ist dazu noch Image-basiert, man programmiert also in einem laufenden System und versioniert es über Squot mit Git.

Unser Spiel ist ein Tower-Rush im Stil von Clash Royale. Du hast eine Hand mit Karten. Jede Karte ist ein Held oder ein Zauber und kostet Elixier. Das Elixier lädt sich mit der Zeit auf. Spielst du eine Karte, läuft die Einheit über das Feld, sucht sich ihren Weg und greift an. Dazu gibt es einen Bot-Gegner mit vier Schwierigkeitsstufen, einen Wellenmodus, ein Tutorial und lokalen Multiplayer. Am Ende standen im Team-Repo 426 Commits und rund 80 Klassen.

Mein Teil war das, was du in der Hand hältst. Die Hand selbst zeigt vier Karten plus eine Vorschau auf die nächste. Dahinter liegt ein Deck als Warteschlange: Spielst du eine Karte, rückt die Vorschau nach, und die gespielte Karte geht ans Ende. Dazu die Auswahl- und Ausspiel-Logik, die Anbindung an den Spawner, der die Einheit aufs Feld setzt, und die Spiegelung für zwei Spieler. Und der Elixier-Balken: Er lädt sich in jedem Spieltakt auf, eine Karte darf nur gespielt werden, wenn genug da ist, und er zeichnet sich selbst. Die Demo auf dieser Seite ist eine kleine nachgebaute Version, mit eigener Grafik statt unserer Sprites. Die linke und rechte Leiste sind genau dieser Teil.

Live-Demo · Beispieldaten

10 Touchdown Tactics 2:44
Spielfeld (braucht JavaScript).

Erreicht eine Einheit die gegnerische Linie, gibt es einen Touchdown. Wer zuerst 3 Punkte hat, gewinnt. Jetzt selbst spielen: Karte antippen, dann aufs Feld.

Demo mit Beispieldaten
Das Squeak/Smalltalk-Spiel, neu gezeichnet: Elixier, Karten, Platzieren, Kampf, Touchdown. Nach dem Durchlauf kannst du gegen den Bot spielen (Klick oder Tippen, Tasten Q/E, W/A/S/D, Leertaste).

Warum so viel gelöscht? Weil ich das Subsystem mehrmals neu geschrieben habe. Erst eine Version, die läuft, dann eine zweite, dann eine dritte, am Ende alles zusammengeführt und aufgeräumt. Erst als die Hand wirklich mit dem Spawner und dem Elixier zusammenspielte, wusste ich, wie die Schnittstellen aussehen müssen. Und die musste ich mit sechs anderen abstimmen, die gleichzeitig an Bot, Wellen und Screens saßen.

Im Code des Teams stecken am Ende Abstract Factory, Strategy, Template Method, Null Object und Flyweight. Das klingt nach Lehrbuch, war aber der eigentliche Stoff des Kurses: Muster nicht auswendig lernen, sondern dort einsetzen, wo sieben Leute sonst aneinander vorbei bauen.

Was ich mitnehme: Erst lauffähig, dann sauber, aber das Aufräumen nicht vergessen. Ein Subsystem gehört jemandem, und dieser jemand redet viel mit den anderen. Und eine fremde Sprache samt Paradigma lernt man in einem Semester, wenn man darin etwas bauen muss.

Tools und Skills: Squeak/Smalltalk mit Morphic für die Oberfläche, SUnit für Tests, Git über Squot, Entwurfsmuster in echtem Teamcode, Refactoring und Linting im eigenen Subsystem.

Nachtrag: Die Modulnote ist eine 1,0. Und das Team ist für den nächsten Kurs zusammengeblieben.