Pokémon GO für Sesselsitzer: Die Desktop-Variante

Screenshot von Geisterlupe mit Desktop-Hintergrund

Beim Herumbasteln für den letzten Blogeintrag bin ich auch auf diese Variante gekommen (für den leisen Ton bitte ich um Entschuldigung):

 

Kurzfassung: Man kann mit einer Art Lupe den Bildschirm absuchen, und wenn man dieser Lupe (dem Geister-Registrierungs-Gerät) zur richtigen Zeit am richtigen Ort ist, sieht man dort – über dem herkömmlichen Desktop beziehungsweise den Programmen darauf – eine eingeblendete kleine Gestalt, mit der man interagieren kann.

Da könnte man eine Art Wack-A-Mole daraus machen, wo es also vor allem darum geht, die Gestalten schnell zu finden und draufzuklicken. Sie könnnten sich dabei auch über den Desktop bewegen. Oder sie sind kleiner und schwer zu finden, eine Art Where’s Wally? Oder man schraubt das Spiel-Element zurück und sieht das eher als eine Gelegenheit, die kleinen Wesen, die sich im Computer verbergen, sichtbar zu machen (vielleicht auch ein paar Bugs dazu?), so in der Art des guten alten Little Computer People Project.

Auf jeden Fall müssten die Gestalten animiert sein, und richtig gut wäre es – aber mit Java nicht zu machen – wenn das Programm wüsste, was gerade auf dem Desktop darunter zu sehen ist. Manche Gestalten treiben sich dann eher an Office-Dokumenten herum, andere kiebitzen gerne bei Spielen.

Screenshot von Geisterlupe mit Desktop-Hintergrund

Das Geister-Registrierungs-Gerät: Ein Pokémon-Go-Simulator

Oberfläche des Pokémon-Simulators GeRGeMon

Wie hoffentlich die Hälfte aller Informatiklehrer mache ich mir gerade Gedanken, wie ich das allgemeine Interesse an Pokémon Go für die Schule nutzbar mache. (Level 14 übrigens, und wenn ich ein neueres Gerät hätte, auf dem das Programm anständig liefe, wäre ich schon weiter.) Ingo Bartling hat sich schon überlegt, was man daran alles zeigen könnte, und dann nochmal hier mehr davon.

Mit Schülern in der 10. Klasse könnte man mit einfachen Fragen zur Kommunikation anfangen: Was will die App denn eigentlich vom Server wissen? Zum Beispiel, wo die nächsten Pokémon sind. Allerdings kann der Server das nur beantworten, wenn er weiß, wo denn der Spieler im Moment ist. Das kann in einem Hin und Her von Fragen und Antworten geschehen:

Sequenzdiagramm App>Server 1

Oder man schickt das, was der Antworter braucht, in der Frage gleich als Information mit:

Sequenzdiagramm App>Server 2

Dann überlegt man, welche Vorteile und Nachteile die Lösungen haben. Und was die App sonst nocht alles wissen können will vom Server.


Ich werde nächstes Jahr mit meiner 10. Klasse nicht versuchen, Pokémon Go direkt nachzubauen. Das hat technische Gründe: Das Programmieren für Smartphones ist aufwendiger; bei uns im Computerraum gibt es keine Entwicklungsumgebung dafür; außerdem ist es dem Systembetreuer noch nie gelungen, dafür zu sorgen, dass die Treiber für einen Smartphone-Emulator richtig installiert werden. Also will ich das ganze auf dem PC programmieren – deswegen wird das also nur ein Pokémon-Go-Simulator. Und der wird grafisch natürlich viel, viel weniger aufwendig, und ohne Kamera. Also eigentlich gar nicht wie Pokémon Go – aber da die Schülerinnen und Schüler das Vorbild kennen, wissen sie, was am Ende herauskommen könnte. Das macht das ganze weniger abstrakt. Herumlaufen geht in der Schule eh nicht so gut, und der Handyempfang im Schulgebäude ist sehr schlecht.

Außerdem will ich nicht die Pokémonwelt nachbauen, urheberrechtlich nicht und auch so. Wo ich vor einer Woche das Ghostbusters-Remake gesehen habe (das mir überraschend gut gefallen hat, trotz der mauen Kritiken; Kate McKinnons Rolle ist ganz wunderbar), fielen mir natürlich die Geister ein. Also:

  • Das Spiel spielt auf dem Schulgelände, mit einer Top-Down-Draufsicht als Grafikhintergrund.
  • Es gibt Geister in dieser Welt. (Später dann: verschiedene Arten von Geistern und Gruselgestalten.)
  • Mit einem Geister-Registrierungsgerät und Monitor im Smartphone-Format kann man diese Geister sichtbar machen. Ansonsten sind sie für das bloße Auge unsichtbar – sind ja auch Geister.
  • Zu bestimmten Zeiten tauchen an bestimmen Orten diese Geister auf, bleiben ein Weilchen, verschwinden dann wieder.
  • Zu jedem Geist gehören Zeichnung, Name, Hintergrundgeschichte.
  • Man selber spielt einen Geisterjäger, der mit dem Geister-Registrierungsgerät und Monitor („Gergemon“) diesen Geistern nachforscht und sie einfängt.
  • Das Gergemon kann sagen wir 20 oder 40 Geister beherbergen, dann muss man wieder Platz schaffen und die gefangenen Geister zur Auswertun schicken. Soll aber nicht zu sehr nach Labor und Tierversuchen an Geistern klingen. Mit dem Fangen und Verschicken von Geistern erhält man Wissenspunkte zu diesem speziellen Geistertyp, und kann so leichter Geister finden? besser verborgene Geister finden? stärkere? sie leichter fangen?
  • Die Positionsangaben sollen in echten Geokoordinaten angegeben werden.
  • Ob man die Geister auch gegeneinander kämpfen lassen kann: weiß noch nicht.
  • Wie man die Geister fängt: weiß noch nicht. Auf Knopfdruck oder mit einem Minispiel wie das Bällewerfen bei Pokémon Go?
  • Später kann man dann noch Karma-Knoten oder andere Dinge auf der Welt platzieren.
  • Die Geister haben einen Basiswert. Bei jedem Levelaufstieg eines Geistes steigt dieser um 1-6 Punkte. Man braucht darüber hinaus eine Methode, um sich gleich einen fertigen Geist des Levels n geben zu lassen.
  • Die Schülerinnen und Schüler sollen möglichst wenig mit dem GUI zu tun haben, das lediglich wenige Methoden zum Platzieren von Geistern bereitstellt; die Hauptarbeit besteht darin, Klassen für die Geister anzulegen, und zu entscheiden, wo welche wann auftauchen.
  • Kollisionskontrolle wird es erst mal keine geben, man kann also – simuliert – überall hin gehen

(Alternativ auch: Die Schulheinzelmännchen aus dem Deutschunterricht reaktivieren und deren Spuren auf dem Schulgelände verfolgen. Die treiben sich ja quasi auch verborgen auf dem Schulgelände herum. Und vielleicht doch mal nicht mit einem einfachen Kartenausschnitt als Hintergrund, sondern mit live vom Server geholten Daten aus dem Open-Street-Map-Projekt; da betreue ich gerade eine Studentenarbeit, die das für die 10. Klasse einsetzbar machen soll.)

Als Spielwelt habe ich diesen Grundriss der Schule genommen: bei einschlägiger urheberrechtlich geschützter Karte die Längen- und Breitengrade der Ecken notiert, und die Karte digital abgepaust, also mit dem Pinsel auf eine Ebene darüber gemalt und dann verfremdet. Ich kann mich noch nicht entscheiden, was besser aussieht, die linke oder die rechte Hälfte:

Grundriss der Schule, verfremdet

Die weißen Flecken sind die Gebäude, wo noch die Innenräume fehlen. Ist ja nur ein Prototyp. Und so sieht der Prototyp bisher aus:

 

Den mäßig aufbereitete Code gibt es für SVN hier: svn.code.sf.net/p/informatik/code/Gergemon

Zu tun am Protoyp ist noch viel. Der Basiscode war etwa 25% der Arbeit, 60% waren Design, und 15% allein die Mathematik dieser dämlichen Längen- und Breitengrade. Das Datum kann geholt (und beliebig gesetzt) werden, wird aber nur bei Bewegung aktualisiert. Sommerzeit geht noch nicht. Im Moment ist der Hintergrund einfach nur eine große Grafik, das ist für den Arbeitsspeicher gar nicht gut, besser wären Kacheln. Dann auch eine Minimap dazu? Und die Tastatursteuerung ändern.

Links:

Oberfläche des Pokémon-Simulators GeRGeMon

Computerspiele und was man mit ihnen macht

Screenshot Astro Smash

Ein Screen

– Früher unterschied man, also ich, die Computerspiele hinsichtlich ihrer – wir sagten wohl screens dazu. Die ersten Spiele hatten nur einen einzigen screen, also ein einziges Spielfeld: Bei Space Invaders, Astrosmash oder Missile Command kamen die Angreifer stets von oben, man selber konnte unten navigieren, nach links und rechts oder Varianten davon; schwieriger wurde das Spiel nur durch höhere Geschwindigkeit und eine größere Zahl an Angreifern.

Asteroids hatte auch nur einen screen, bot schon etwas mehr Freiheit: Man konnte sich frei im zweidimensionalen Spielfeld bewegen und es sogar verlassen – um dann auf der gegenüberliegenden Seite wieder zu erscheinen; der Spielbereich war grenzenlos, aber endlich.

Screenshot Astro Smash
Astrosmash, Intellivision (Mattel) 1981 – man steuert das Raumschiff unten links/rechts und schießt nach oben.

Mehrere und verschiedene Screens

Geschätzter waren damals Spiele mit mehreren, vielleicht sogar ganz verschiedenen Screens. Bei Pacman blieb das Spielprinzip gleich, aber die Karte änderte sich in jedem neuen Level, ähnlich bei Wizard of Wor. Congo Bongo hatte mindestens zwei Screens, Ghostbusters bestand aus drei völlig verschiedenen Spielen, wenn ich mich richtig erinnere, und Summer Games natürlich sowieso.

Scrolling

Noch mehr zu sehen boten Spiele, bei denen die Spielfigur mehr oder weniger zentral in der Mitte des Monitors blieb, wobei sich der Rest der Welt bewegte: vertikale Scroller wie erste Autorennspiele (Le Mans), horizontale Scroller wie Skramble oder diagonale wie Zaxxon. Zuerst waren diese Spiele nicht so interessant wie die mit mehreren Screens, aber das würde sich im Lauf der Entwicklung ändern.

Der Freiheitsgrad unterscheidet sich hier nach der Art des Scrollens. Bei manchen Spielen scrollt das Spielfeld immer in eine Richtung (nach rechts, nach oben, nach rechts oben), und der Spieler muss schauen, dass er hinterherkommt. Bei anderen Spielen scrollt das Spielfeld in einer Dimension (meist horizontal), und der Spieler kann selbst entscheiden, ob er gerade nach rechts oder links geht oder fliegt – so ist das bei Dracula, Defender, Choplifter.

Ein Scroller war Blue Max. Das Spiel scrollt zwar unerbittlich in eine Richtung, auch wenn der Spieler sich dabei innerhalb des Bildschirms relativ frei bewegen kann (links/rechts, hoch/herunter). Aber Zuckerl gibt es doch: Ab und zu tauchen Brücken in der zufällig generierten Landschaft auf, und ab und zu sind diese Brücken so weit in der Spielfeldmitte, dass man unter ihnen durchfliegen kann. Das bringt keine Punkte und misslingt oft, ist aber ein besonderes Vergnügen, weil es die Illusion erhöht, sich in einer Welt frei bewegen und auch zumindest scheinbar unvorhergesehene Spielzüge machen zu können.


(Blue Max 1983; Ton leider nicht synchron, aber ich wollte das dann nicht noch einmal aufnehmen)

Selten waren Scroller, bei denen der Spieler nicht nur die Geschwindigkeit bestimmen konnte, sondern auch die Scrollrichtung, und zwar in mehr als einer Dimension: Das ist dann die bisher größte Freiheit. Für heutige Spiele ist das normal, das man sich frei in einer zumindest zweidimensionalen Welt bewegt beziehungsweise die Welt sich um einen herum. Damals war das so beim Vektorgrafik-Panzerspiel Battlezone (1980) aus der Ego-Perspektive, und aus der Draufsicht etwa bei Miami Vice (1986), einem eher schwachen Auto-Verfolgungsjagdspiel, das aber immerhin schon so ein bisschen wie ein Vorläufer von Grand Theft Auto aussieht: Man bewegt sich frei in den Straßen einer Stadt und geht in (manche) Gebäude hinein. Insofern sehe ich Scroller als Vorläufer der heutigen Open-World-Spiele.

Spielszene Miami Vice
(Bild: Colt Seavers, Lizenz GFDL, weshalb auch der ganze Artikel hier unter GFDL steht)

Aber eigentlich sind diese Spiele, bei denen man sich frei in einer Welt bewegen kann, auch nichts anderes als One-Screen-Spiele, bei denen man halt immer nur einen Ausschnitt der Welt sieht. Das merkt man, wenn man sich die Gesamtkarte von Miami Vice ansieht:

Gesamtkarte Miami Vice
(Bild: Colt Seavers, Lizenz GFDL, weshalb auch der ganze Artikel hier unter GFDL steht)

Und doch, die Illusion von Freiheit ist groß. Dabei ist das nicht mal unbedingt beabsichtigt. Auto Racing für Intellivision (1979) ist ein Autorennspiel für 1-2 Spieler, bei dem man am Anfang eine von mehreren zur Verfügung stehenden Rennstrecken auswählt. Das Spiel scrollt in alle Richtungen, man kann sich also theoretisch völlig frei bewegen. Die nicht sehr manövrierfähigen Fahrzeuge müssen allerdings auf der Straße bleiben, oder dürfen jedenfalls nicht gegen die Bäume und Gebäude am Straßenrand fahren; Rasenfläche verlangsamt die Autos nur. Wenn ein Spieler zu langsam wird und der andere so viel Vorsprung hat, dass er allein den Bildschirmrand erreicht, gewinnt dieser die Runde. Es ist also entschieden nicht vorgesehen, sich von der Straße zu entfernen.

Aber wie viele andere Spieler fanden mein Bruder und ich damals heraus, dass man das durchaus machen kann. Und dass man auf diese Weise sogar die gewählte Strecke verlassen und auf die anderen Strecken gelangen kann! Denn die Strecken existieren nicht einzeln für sich, sondern in einer gemeinsamen, verbundenen Spielwelt. Man kann Strecke A verlassen, an den Bäumen und Geböuden vorbei, um auf Strecke B zu kommen, und alle anderen Strecken auch. Das war damals sensationell! Und es zeigt wieder einmal: Computerspiele sind nicht nur Spiele, sondern vor allem auch Spielzeug, mit dem man experimentieren und das man zweckentfremden kann.


(Ton schon wieder nicht synchron, Entschuldigung)

David hat in The Exploring Auto Racing Project die gesamte Welt von Auto Racing abgefahren und als Karte zusammengestellt.


Neues Thema

Nichts gegen Papert, er war ein Pionier. Aber: Das Zitat scheint mir arg veraltet. „Video games“? So hieß das sehr früher mal. Und natürlich werden Computerspiele nicht damit beworben, wie leicht sie sind. Aber in den letzten zehn Jahren hat sich mit der Verbreitung von Handy und Tablet das casual gaming entwickelt, und da ist gerade der Punkt, dass diese Spiele sehr leicht sind. Dazu kommt, dass man für jeden Kram eine Medaille („Badge“) kriegt. Und selbst für echte Computerspiele gilt, dass sie fast alle sehr viel leichter geworden sind in den letzten dreißig Jahren. Tutorials, Richtungspfeile, Speichermöglichkeit, Hinweise auf empfohlene Aktionen – das gab es früher alles nicht, als die Dinger von „video games“ hießen. Dazu kommt, dass einem unzufriedene Schüler möglicherweise zwar vielleicht erzählen, dass der Grund für ihre Unzufriedenheit die Langeweile ist – dass das aber nicht unbedingt stimmen muss. Wer gesteht sich schon gerne eine, dass die Schule zu schwer ist? Da weicht man lieber auf die Langeweile aus.

Kritik an der Schule: Unbedingt, aber auch die Details müssen stimmen. Und natürlich muss die Schule neidvoll auf Computerspiele schauen. Wieviel sie sich wirklich davon abgucken kann, das ist eine andere Frage.


Noch ein neues Thema

@ciffi twitterte neulich so, und eine sehr kurze Diskussion entstand:

Tweet zu Computerspielen

Es ging wohl darum: Spielen jugendliche Gewalttäter Killerspiele nach? Eigentlich, so meinen einige, müssten sie es dann auf gegenseitiges Beschießen anlegen und nicht auf das wahllose Töten unbewaffneter Unbeteiligter.

Ich kenne die heutigen Egoshooter nicht. Doom und Quake habe ich gerne gespielt; da waren die Gegner tatsächlich nicht sehr intelligent und für mich eher passive Gestalten. Heute ist das wohl anders, aber ich habe nie Counterstrike, Call of Duty oder Metal Gear Solid gespielt. Außeriridische und Monster: kein Problem, aber Schießspiele mit Menschen als Gegner widerstrebten mir schon immer und tun es noch. Für schädlich halte ich sie allerdings nicht.
Wie übertragbar ist die Situation dieser Schießspiele auf die reale Welt? Schon einigermaßen, denke ich, aber die Geschichte ist doch eine ganz andere.

Modulares Geschichtenerzählen in Java, Fortsetzung

(Fortsetzung von hier, wo ich Sunless Sea beschrieben habe. In der ersten Hälfte geht’s ums Prinzip, in der zweiten wird es dann immer technischer.)

Das modulare Prinzip, nach dem in eine bestehende Spielwelt kleine Missionen oder Geschichten eingebaut werden, würde ich gerne für ein Programmierprojekt in der Schule nutzen. Dazu erschafft man gemeinsam eine Fantasy-Welt oder nimmt eine von mir vorgegebene. Die Welt besteht aus vielen Orten, zwischen denen man reisen kann, modelliert als Graph. Jeder Ort hat einen Namen und eine schön geschriebene Beschreibung, jede Verbindung eine Distanz, später können dann gerne noch andere Attribute dazu kommen.

Außerdem sollen Schülerinnen und Schüler so einfach wie nötig Geschichten schreiben können, die in dieser Welt spielen. Wenn man dann eine Klasse von 30 Schülern hat, kriegt man sicher ein Dutzend Geschichten, die man in die Welt setzen kann, und nach und nach können es auch mehr und kompliziertere werden. Aber für den Anfang reichen einfache.

Letztlich ist das auch nichts anderes als das, was man vielleicht mit einem Leveleditor macht, um neue Levels für ein bestehendes Spiel zu erstellen. Aber hier finde ich das einfacher (und als Sprachlehrer reizvoller) dadurch, dass die geschichten vor allem aus Text bestehen und nicht aus der Platzierung von Mauern, Schatzkisten, Waffen, Monstern. Das macht das Programmieren leichter, glaube ich, und erfordert aber mehr kreatives Schreiben.

Schauen wir uns dazu die im letzten Blogeintrag erwähnte Geschichte von Mr Sacks an, dem dunklen Weihnachtsmann. „The Crimson Beast of Winter stirs in your hold…“ In seinem Blog stellt der Autor der Geschichte, Richard Cobbett, sie kurz vor. (Hier schreibt er zur von ihm geschriebenen Affeninsel. Und, auch interessant, hier die Writer Guidelines, nach denen die verschiedenen Autoren Geschichten für die Welt von Sunless Sea schreiben.)

(Es folgen Spoiler, sollte klar sein.)

  1. Sobald man am Nordpol-Äquivalent gewesen ist, wird bei der nächsten Ankunft in London die Geschichte ausgelöst
  2. In London macht Mr Sacks einem ein Angebot: Man muss ihn der Reihe nach an drei Orte seiner Wahl bringen. Danach werde man belohnt, es sei aber nicht ungefährlich. Dazu schöne, kurze Prosa über ihn als übernatürliche Schreckensgestalt, der Geschenke einfordert und Übel hinterlässt. Ein einzelner Reiter der Apokalypse sozusagen.
  3. Das Angebot kann man annehmen oder nicht oder die Entscheidung vertagen.
  4. Nimmt man es an, erfährt man das erste Ziel. Genauer gesagt: Man hat die Wahl zwischen zwei Zielen.
  5. Bringt man Mr Sacks zu einem der beiden Orte, kann man ihn seine Geschenke dort abladen lassen oder nicht oder die Entscheidung vertagen.
  6. Führt er seine böse Tat aus, gibt es wieder etwas Prosa, und man erfährt das nächste Ziel beziehungsweise die nächsten zwei Zielmöglichkeiten.
  7. Bringt man Mr Sacks zu einem der beiden Orte, kann man ihn seine Geschenke dort abladen lassen oder nicht oder die Entscheidung vertagen.
  8. Führt er seine böse Tat aus, gibt es wieder etwas Prosa, und man erfährt das letzte Ziel: den Nordpol, wo man ihm bei einem Ritual helfen soll.
  9. Auf dem Weg dorthin, auf See, erhält man eine Nachricht vom Ministerium und eine Flüssigkeit, mit der man das Ritual sabotieren kann.
  10. Bringt man Mr Sacks zum Nordpol, hat man die Option, ihn sein Ritual ausführen zu lassen oder es zu sabotieren. In einem der beiden Fälle wird eine neue Geschichte ausgelöst.
  11. Beim nächsten Besuch in London wartet ein Geschenk von Mr Sacks auf einen. (Eventuell abhängig vom Verhalten zuvor? Das weiß ich nicht, ich habe ja nicht alle Varianten durchgespielt.)
  12. Außerdem: Während dieser Mission erhält man, mehr oder weniger zufällig oder zeitabhängig, jedenfalls nicht bewusst vom Spieler ausgelöst, drei Besuche vom ungeduldiger werdenden Mr Sacks. Die ersten beiden Mal kann man ihn hinhalten, das dritte Mal nicht.

Diese Geschichte riecht nach der Modellierung mit einem Zustandsdiagramm. Warum? Weil es mir sinnvoll erscheint, weil Zustandsdiagramme und deren Umsetzung im Lehrplan für 10 und 12 stehen, und weil ich gar so viele andere Modellierungsmöglichkeiten überhaupt nicht kenne.

Der nackte Zustandsautomat

Ein erstes Diagramm zur Modellierung der Situation oben könnnte so aussehen:

sunless_sea_zustaende

Die Bedeutung der Zustände:

  • Z0: Die Geschichte beginnt, der Auftrag steht im Raum. Man hat die Wahl, ob man ihn annimmt, ablehnt oder erst mal abwartet. Wenn man abwartet, passiert nichts; wenn man ablehnt, landet man im Zustand Z5, wenn man annimmt, in Zustand Z1.
  • Z1: Man hat den Auftrag angenommen, aber noch nichts erfüllt. Man hat die Wahl, Mr Sacks und seine Geschenke in Ziel 1 abzuliefern oder nicht. Man hat, weil das so sein soll ist, nicht mehr die Möglichkeit, aus dem Geschäft auszusteigen und in Zustand Z5 zu kommen.
  • Z2: Man hat das erste Ziel bereits erreicht, das zweite noch nicht, und hat die Wahl, Mr Sacks in Ziel 2 abzuliefern oder (erst mal) noch nicht.
  • Z3: Man hat das zweite Ziel bereits erreicht, den Nordpol noch nicht, und hat die Wahl, Mr Sacks am Nordpol einfach abzuliefern (dann ist man in Zustand Z4) oder sein Vorhaben dort zu sabotieren (dann ist man in Zustand Z5).
  • Z4: Man hat Mr Sacks wunschgemäß abgeliefert, aber seine Belohnung – von der man noch nichts weiß – noch nicht in London abgeholt. Sobald man das tut, landet man in Zustand Z5.
  • Z5: Die Geschichte ist beendet und wird nicht mehr angezeigt. Es gibt drei Möglichkeiten, wie man in diesen Zustand gelangt.

Die Bedeutung der Zustandsübergänge:

  • Von den meisten Zuständen aus kann man in andere Zustände übergehen, abhängig von auslösenden Aktionen. Ich habe die Aktionen hier „annehmen, abwarten, ablehnen“ und so weiter genannt.

Die schwarzen Angaben sind ausgelöste Aktionen, die bei dem Zustandsübergang zusätzlich oder nebenbei ausgeführt werden:

  • So soll die Furcht des Spielers um 5 steigen, wenn man den Auftrag annimmt, und wenn man den ersten Schritt ausführt.
  • Die Furcht des Spielers um 10 steigen, wenn man den Auftrag ablehnt, und wenn man den zweiten Schritt ausführt.
  • Die Furcht soll um 10 sinken, wenn man Mr Sacks sabotiert hat, und um 20 sinken, wenn man ihn nicht sabotiert hat.
  • Wenn man seine Belohnung in London abholt, erhält man 20 Geld.

Anmerkungen:

  • Die ausgelösten Aktionen können wesentlich komplexer sein, die Werteänderung ist nur ein Beispiel.
  • Mein erster Versuch hatte übrigens zwei Zustände mehr, bis ich merkte, dass es ja nur einen enzigen Endzustand braucht, egal wie man dorthin kommt.
  • Außerdem kann man in so ein Diagramm auch noch Bedingungen einfügen, die bei einem versuchten Zustandsübergang erfüllt sein müssen. Dass man irgend etwas Bestimmtes mit sich führt, vielleicht. Die habe ich der Einfachheit halber weggelassen.
  • Und was ist mit den drei Erscheinungen von Mr Sacks, mit der letzten, tödlichen? Die habe ich vorerst auch weggelassen. Weglassen ist oft eine gute Idee. Aber ich würde sie ohnehin nicht mit einem Zustandsautomaten umsetzen. Man bräuchte dann nämlich Z1 in zwei Varianten, also Zuständen, für erste und zweite Warnung, und Z2 und Z3 ebenso, und vielleicht einen letzten Zustand für die dritte Warnung. Das wäre mir zu umständlich, stattdessen würde ich ein Attribut „Mr Sacks Ungeduld“ einführen und das nach und nach erhöhen (ausgelöst von einem Timer?) und unabhängig von den anderen Zuständen etwas bewirken lassen. Aber erst mal weglassen.
  • Auch der Sabotageauftrag des Ministeriums fehlt. Den könnte man sicher als Zustand modellieren. Aber letztlich ändert sich nicht wirklich etwas am Zustand, es gibt auch keine Wahlmöglichkeit für den Spieler, und deshalb lasse ich das sein. Das Erscheinen des Boten ist eher eine zusätzlich ausgelöste Aktion, die beim Übergang von Z2 nach Z3 automatisch ausgelöst wird, wenn auch mit zeitlicher Verzögerung.

In Java würde man diesen Automaten so implementieren (Stoff der 10. und 12. Jahrgangsstufe am Gymnasium in Bayern, fällt Schülerinnen und Schülern nicht schwer):

public class MrSacks  {
    int state = 0;
    /* states:
     * 0 on offer
     * 1 accepted
     * 2 first package delivered 
     * 3 second package delivered
     * 4 successful north pole
     * 5 story finished
     */
 
    void receiveMessage(String message) {
        if (state==0) {
            if (message.equals("annehmen")) {
                state = 1;
                furchtErhoehen(5); 
            }
            else if (message.equals("ablehnen")) {
                state = 5;
                furchtErhoehen(10);                
            }
        }
        else if (state==1) {
            if (message.equals("abliefern")) {
                state = 2;
                furchtErhoehen(5);
            }
        }
        else if (state==2) {
            if (message.equals("abliefern")) {
                state = 3;
                furchtErhoehen(10);
            }
        }
        else if (state==3) {
            if (message.equals("abliefern")) {
                state = 4;
                furchtErhoehen(-20);
            }
            else if (message.equals("sabotieren")) {
                state = 5;
                furchtErhoehen(-10);
            }
        }
        else if (state==4) {
            if (message.equals("abholen")) {
                state = 5;
                geldErhoehen(20); 
            }
        }
    }
}

Wenn man die Methode receiveMessage jeweils mit den richtigen Argumenten aufruft, durchlebt man quasi die Stationen der Geschichte. Allerdings ist das ja nur das nackte Gerüst der Geschichte. Lebendig und verständlich wird sie erst durch Text, und der fehlt noch.

Der Text der Geschichte

Wir haben: eine Methode, die abhängig von einer Nachricht und dem aktuellen Zustand die Zustände ändert und eventuell noch anderes auslöst.

Wir brauchen: eine Methode, die abhängig vom aktuellen Zustand und dem aktuellen Ort dem Spieler einen bestimmten Text anzeigt und (mehrere) Entscheidungsmöglichkeiten anbietet – und wenn sich der Spieler für eine Möglichkeit entscheidet, muss das unserer ersten Methode kommuniziert werden, damit die Entscheidung dann auch ausgeführt werden kann. Das wird etwas komplizierter.

Zentral ist für mich die Klasse Report. Ein Report ist der Bericht einer Geschichte zu einem bestimmten Ort im Spiel, zu einem bestimmten Zeitpunkt, also abhängig vom Zustand der Geschichte. Ein Report enthält eine kurze Beschreibung einer Situation und beliebig viele Optionen. Aus diesen Optionen werden dann später zum Beispiel die Knöpfe, mit denen der Spieler Entscheidungen treffen kann. Eine Option (ein Knopf) erhält einen Text (eine Beschriftung, die der Spieler sieht) und eine Message (eine Nachricht, die der Spieler nicht sieht, die aber losgeschickt wird, sobald der Spieler sich für diese Option entscheidet).

sunless_report
So könnte der View einen Report darstellen. Oder ganz anders: Hauptsache, er hat alle nötigen Informationen dazu.

Wenn der Spieler an einem Ort ankommt, werden alle mit dem Ort verbundenen Stories gebeten, einen Report abzugeben. Der kann auch mal null sein, wenn es zu diesem Zeitpunkt nichts zu sagen gibt. Alle Reports zu diesem Ort werden vom Model gebündelt und an den View geschickt, damit der die Reports darstellen kann. Dazu hat der View eine Methode showReports. Mehr braucht es erst mal nicht. Der View legt zum Beispiel für jeden Report einen eigenen Absatz an, und am Ende jedes Reports wird für jede Option des Reports ein Knopf mit einer Nachricht dahinter angelegt, den der Spieler drücken kann.

Im vereinfachten Klassendiagramm, noch ohne Darstellung der Bewegungsmöglichkeiten, sieht das so aus:

sunless_classes

Und in Java wäre die Methode für die Geschichten-Klasse dann so:

    Report createReport(String location) {
        Report r = null;
        if (location.equals("London")) {
            if (state==0) {
                String message = "Hohoho! Willst du mich an drei Orte meiner Wahl bringen?";
                Option o1 = new Option("Ja","annehmen");
                Option o2 = new Option("Nein","ablehnen");                
                Option o3 = new Option("Später","abwarten");                
                r = new Report("Weihnachtsmonster", message, o1, o2, o3);
            }
            else if (state==4) {
                String message = "Der Weihnachtsmann hat dir ein Geschenk dagelassen. Willst du es öffnen?";
                Option o1 = new Option ("Ja", "abholen");
                r = new Report("Weihnachtsmonster", message, o1);
            }
        }
        else if (location.equals("Anaheim")|| location.equals("Argentinien") ) {
            if (state==1) {
                String message = "Hohoho! Ist es in Ordnung, wenn ich mein dunkles Geschenk hier abgebe?";
                Option o1 = new Option("Ja","annehmen");
                Option o2 = new Option("Nein","abwarten");
                r = new Report("Weihnachtsmonster", message, o1, o2);
            }
        }
        else if (location.equals("Beorns Halle") || (location.equals("Britannien"))) {
            if (state==2) {
                String message = "Hohoho! Ist es in Ordnung, wenn ich mein dunkles Geschenk hier abgebe?";
                Option o1 = new Option("Ja","annehmen");
                Option o2 = new Option("Nein","abwarten");
                r = new Report("Weihnachtsmonster", message, o1, o2);
            }
        }
        else if (location.equals("Nordpol")) {
            if (state==3) {
                String message = "Du hast die Gelegenheit, dem Weihnachtsmonster zu helfen oder seine Pläne zu sabotieren.";
                Option o1 = new Option("Helfen","abliefern");
                Option o2 = new Option("Sabotieren","sabotieren");
                r = new Report("Weihnachtsmonster", message, o1, o2);
            }
        }
        return r;
    }

Natürlich wird die Geschichte besser, wenn man mehr Reports einbaut. Und was noch fehlt, sind Antworten des Weihnachtsmann, durch die man überhaupt erst erfährt, dass man zuerst nach Anaheim oder Argentinien, danach zu Beorns Halle oder nach Britannien, und danach zum Nordpol muss. Gemach, gemach.

Soweit, wie ich das jetzt geschildert habe, existiert auch ein Prototyp. Funktioniert, einschließlich der automatischen Anzeige von Bewegungsmöglichkeiten: für jeden Nachbarort einen Knopf, der einen nach dem Klick dorthin befördert. Die Reports werden in einer TabbedPane angezeigt, also mit kleinen Reitern oben. (Scrollbarer Text wäre eine Alternative.) Jeder Report hat unten die Buttons mit den Optionen.

Mein Hauptproblem ist noch Folgendes. Ich finde es sehr unelegant, zwei verschiedene, aber doch ähnliche Methoden zu haben. Methode 1 (createReport), um dem Spieler anzubieten, was er für Aktionen auslösen kann. Methode 2 (receiveMessage), um die Entscheidung des Spielers dann umzusetzen. Das Bindeglied ist ist message, die letztlich mittelbar von Methode 1 gesendet und von Methode 2 empfangen wird:

sunless_mein_problem

Am liebsten hätte ich nur eine Methode, Methode 1 (createReport), in der schon unmittelbar drinsteht, was ausgeführt werden soll, wenn der Spieler sich für eine Option entscheidet. Dazu müsste ich entweder Funktionen als Argumente übergeben, was mit Java inzwischen wohl geht, ich aber nicht weiß, ob ich das mit Schülern machen soll. Oder ich müsste ein Objekt einer anonymen inneren Klasse anlegen (zu einer Unterklasse von, sagen wir, Result, mit einer zu überschreibenden execute-Methode). Dann bräuchte ich allein Methode 1 (createReport), und die Optionen, die dem Report als Möglichkeit übergeben würden, sähen dann so aus:

Report createReport(String location) {
    Report r = null;
    if (location.equals("London")) {
        if (state==0) {
            String message = "Hohoho! Willst du mich an drei Orte meiner Wahl bringen?";
            Option o1 = new Option("Ja", new Result() {
                      @Override public void execute() {
                          state = 1;
                          furchtErhoehen(5);                                                
                      }
                  } );
            Option o2 = new Option("Nein", new Result() {
                      @Override public void execute() {
                          state = 5;
                          furchtErhoehen(10);                                                
                      }
                  } );
            Option o3 = new Option("Später", new Result());                
            r = new Report("Weihnachtsmonster", message, o1, o2, o3);

Ist das für Schüler leichter verständlich als das mit den zwei separaten Methoden? Der Report landet dann letztlich beim View, zusammen mit den verschiedenen Optionen, zu deren jeder ein Objekt der anonymen Result-Unterklasse gehört, und wenn der entsprechende Knopf gedrückt wird, wird die execute-Methode dieses Objekts ausgeführt. Der Controller wird dabei gar nicht mehr gefragt.

sunless_report_alternative

Mit den anonymen Unterklassen geht das ganze übersichtlicher und für die Zukunft auch flexibler, deswegen gefällt mir das besser.
Aber ich sehe die Gefahr, dass die Schüler dann einfach unverstandenen Code abtippen, und das ist ja auch wieder nicht das Ziel.


Vielleicht kann ich das Ende des Schuljahres mit meiner 10. durchspielen. Man könnte die typische Heldenreise damit modellieren oder die Odyssee. Weltraumfahrten oder neblichtes London, die zwölf Heldentaten des Herakles. Eine kleine Gruppe implementiert die Welt, mit schönen Beschreibungen für jeden Ort, Bildern und Musik dazu. Die anderen schreiben Geschichten. EIne Geschichte gebe ich als Beispiel vor. Und dann vielleicht doch noch ein Handelssystem? Gegenstände, die der Spieler mit sich führen kann, auch als Token dafür, dass er schon bestimmte Dinge erledigt hat?

Nachtrag: Ja, das geht auch ohne anonyme Klassen in einer einzigen Methode! Aber die wird dadurch sehr unübersichtlich. Auch keine Lösung.

Nachtrag: Hier geht es zum fertigen Projekt (2017).

Was ich gerade spiele und warum: Sunless Sea

Kurzfassung: Ich spiele gerade viel Sunless Sea, und wenn ich überhaupt spiele, was nicht mehr so oft vorkommt, dann meist mit dem Hintergedanken, wie ich das Spiel für die Schule ausschlachten kann. Und bei diesem Spiel hatte ich eine schöne Idee.

Der Inhalt ist nicht verfügbar.
Bitte erlaube Cookies, indem du auf Übernehmen im Banner klickst.

Vorab: Auf dieses Spiel bin ich gekommen, weil ich zwei sehr empfehlenswerte Feeds abonniert habe. Das ist einmal http://planet-if.com/, ein Aggregator verschiedener Blogs, die sich mit Interactive Fiction beschäftigen. Da geht es um textbasierte Spiele jeglicher Art: Textadventures, historische und neue, browserbasierte Anklickspiele, aber auch reine Erzählspiele ohne Computer – alles, was mit Text zu tun hat. Da sind regelmäßig wieder lesenswerte Sachen dabei. So kriege ich wenigstens mit, über was gerade geredet wird. Sunless Sea war im letzten Jahr so eine Sache.
Außerdem lese ich http://www.gamasutra.com/features. Da gibt es immer wieder Analysen von alten und neuen Spielen, grundsätzliche Überlegungen bei der Entwicklung von Computerspielen, kurze Essays zu bestimmten Aspekten. Ein Aufsatz dort mit Gedanken zu modular storystelling hat mich dann dazu bewogen, mir Sunless Sea zu kaufen.

Der Hintergrund von Sunless Sea klingt einigermaßen bizarr: Wir schreiben das späte 19. Jahrhundert, und vor dreißig Jahren holte ein Haufen Fledermäuse die gesamte Stadt London einige Kilometer in die Unterwelt. (Königin Victoria hatte London dorthin verkauft, um ihrem Ehemann das Leben zu retten.) Dort sitzt Fallen London jetzt, am Ufer eines unterirdischen Ozeans. Es gibt Teufel aus der noch tieferen Unterwelt, man treibt Handel mit Seelen und anderen Dingen, Kohle ist billig, Fortschritte in Technologie und Dämonologie haben die Anpassung an das Leben unter der Erde erleichtert. Es gibt verschiedene Gruppierungen, die nach Einfluss streben; der Ozean ist voller Inseln mit mehr oder weniger schräger Bevölkerung, und man selbst spielt einen Seemann oder eine Seefrau, die diese Unterzee navigieren.

Tatsächlich stammt dieses Setting aus dem Vorgängerspiel, Fallen London. Das war ein erfolgreiches reines textbasiertes Browserspiel. Sunless Sea ist auf den ersten Blick klassischer, ein 2D-Spiel aus der Vogelperspektive. Man fährt mit dem Schiff von Hafen zu Hafen, entdeckt neue Inseln, kann Handel treiben und mit dem Geld, das man dabei verdient, seine Bewaffnung oder seinen Schiffsmotor verbessern oder gleich ein neues Schiff kaufen.
Das ist bereits reizvoll. Computerklassiker wie Elite sind ja auch vor allem Erkundungs- und Handelsspiele. Und meine erste Rollenspielkampagne zu Traveller, einem Science-Fiction-Rollenspiel und Vorbild für Elite, scheiterte letztlich daran, dass das Rollenspielelement immer weniger wichtig wurde. Es machte einfach so viel Spaß, zu neuen Planeten zu fliegen, den dortigen Handelskurs zu erwürfeln und günstig ein- und anderswo zu verkaufen. Wer brauchte da noch Rollenspiel?

Natürlich funktioniert das vor allem dann, wenn die Atmosphäre stimmt. Und die ist sehr stimmungsvoll. Weite Passagen fährt man einfach durch die Dunkelheit, achtet darauf, dass Treibstoff und Lebensmittel nicht ausgehen. Nebenbei muss man Piraten ausweichen und See-, Verzeihung, Zeeungeheuern, und muss aufpassen, dass man nicht zu viel Zeit in der Dunkelheit verbringt. Denn dann steigt an Bord die Furcht vor dem monströsen Welt bis in den Wahnsinn – Seeleute springen über Bord, es kommt zu Meuterei. Ohne Treibstoff kann man vielleicht noch etwas Ladung verheizen; ohne Lebensmittel beginnt man mit den Mannschaftsmitgliedern zu liebäugeln, vielleicht erlegt man ja auch noch rechtzeitig ein Zeeungeheuer. Hat man es bis zur nächsten Anlegestelle geschafft, kann man dort vielleicht das Nötigste einkaufen oder Handel treiben.

Wie gesagt, das ist bereits leidlich unterhaltsam, da amüsant schräg, und Handeln & Entdecken geht immer. Aber das würde wahrscheinlich nicht reichen, um mich länger bei einem Spiel zu halten. Ich spiele ohnehin kaum mehr ein Spiel zu Ende. Jedes Spiel der letzten Jahre war bei mir ein Wettlauf zwischen der Neugier auf die Fortsetzung der Geschichte (erleichtert durch die Tatsache, dass sich Geschichten in Computerspielen in kleinen, leicht zu erreichenden Schritten entwickeln) und der Erkenntnis, dass selbst ein atmosphärisches Spiel wie L.A. Noire nichts weiter ist als das Herumschubsen von Zahlen. Da verbringt man Stunde um Stunde vor dem Rechner, damit ein paar 0er und 1er von der einen Speicherzelle in die andere kommen, und gerade bei Handelsspielen sieht man sich buchstäblich die Zahlen mühsam manuell transportieren.

— Andererseits, kleiner Exkurs: Gilt das nicht für alles im Leben? A tale told by an idiot, full of sound and fury, signifying nothing? Macht nicht die eine Zahl mehr oder weniger in der Speicherzelle dann doch einen großen Unterschied? Hier ein Cartoon, der mein Weltbild dazu recht gut wiedergibt.

sunless_sea

Jetzt die Hauptsache:

Was Sunless Sea wirklich interessant und überhaupt erst zu einem dann doch textbasierten Spiel macht, sind die vielen Geschichten. DasFahren zwischen den Häfen ist ja ganz nett, aber der Kern spielt sich in den Häfen ab. Dort warten kleine Dialoge mit Fortsetzungsgeschichten auf den Spieler.

  • Da ist diese eine Insel, die von von intelligenten Ratten bevölkert wird, die sich zwischen jedem Besuch weiterentwickeln und Rat suchen. (Kolonialismus, anyone? Andere Geschichte.) Wenn man die Insel besucht, erhält man einen kurzen Bericht über den aktuellen Status dort und die Option, lenkend in die Handlung einzugreifen. Beim nächsten Mal liest man dann, wie es den Ratten inzwischen ergangen ist, und erhält weitere Optionen.
  • Oder die Affeninsel, deren Bewohner einen Zeppelin bauen wollen und dafür Material vom Spieler geliefert bekommen.
  • Oder der Bordoffizier, der eine tragische Vergangenheit hat und den man an verschiedene Orte transportieren und mit einer Auswahl an Handelswaren ausstatten muss, um nach und nach seine Geschichte zu erfahren und fortzuschreiben.
  • Oder die Bordoffizierin, die nach ihrer Mutter sucht, die irgendwo auf einer der Inseln sitzt.
  • Oder die Gruft-Touristen, die in ihren Särgen noch einmal eine kleine Rundreise machen wollen. (Alternativ: Kann man sie nicht etwa doch auf der Spinneninsel aussetzen?)

Man will jeweils lesen, wie die kleinen Geschichten weitergehen, von denen es viele, viele Dutzend gibt. Dazu muss man man – eventuell mit den notwendigen Materialien – zur richtigen Zeit am richtigen Ort sein, und das mehrfach hintereinander. Und das alles will man vor allem dann, wenn die Geschichten gut geschrieben sind.

Modulare Geschichten

Was jetzt kommt, ist nicht neu und gilt wohl für Spiele wie Grand Theft Auto genauso. Aber ich hatte mir noch nie Gedanken dazu gemacht. Was bei GTA Missionen sind, heißt bei Sunless Sea „Storylet“. Und solche Geschichten kann man nachträglich und so unabhängig von anderen Geschichten, wie man will, in das Spiel einbauen.

Da ist zum Beispiel die Geschichte von Mr Sacks, die Weihnachten 2015 in die bestehende Welt hinzugeladen wurde. Plötzlich gab es, wenn man in London anlegte, eine neue Option: Mr Sacks machte einem ein Angebot. Mr Sacks, eine dunkle Parodie auf den Weihnachtsmann, der London in Schrecken versetzt. Technisch war es nur ein einfacher Auftrag, den man annehmen und vermutlich auch ablehnen konnte; Mr Sacks versprach reiche Belohnung dafür, dass er der Reihe nach an drei Orte gebracht würde, um dort… Geschenke abzugeben, dunkle, düstere Geschenke… An den ersten beiden Orten erfährt man von den Gaben von Mr Sack, danach will er an den Nordpol gebracht werden, um ein dunkles Ritual abzuhalten. Zu diesem Zeitpunkt hat man die Wahl, das Ritual auf eine bestimmte Art zu sabotieren oder nicht, und wenn man das nicht macht, entsteht eine neue kleine Geschichte, die von dem Menschenwesen aus Eis geboren, das an bestimmte Orte gebracht und mit bestimmten Dingen versehen werden muss, um das Schmelzen aufzuhalten – aber hier geht es erst einmal nur um Mr Sacks selber. Wenn man sich mit dessen Reise übrigens zu viel Zeit lässt, gibt es Probleme; dreimal wird, mehr oder weniger zufallsgesteuert, Mr Sacks ungeduldig; zweimal kann man ihn hinhalten, aber wenn man beim dritten Mal noch nicht am Nordpol war, dann macht einem der Weihnachtsmann den Garaus.

Zusammengefasst:

  • Man hat eine mehr oder wenige spannende Welt.
  • Am Anfang wird die Welt mit einer bestimmten Anzahl von kleinen Geschichten ausgeliefert. „Missionen“ in anderen Spielen, textbasierte „Storylets“ in diesem Spiel. Dazu gehören auch wiederkehrende Routinegeschichten wie die Auftragsarbeiten für den Admiral in London: Dokumente in einem zufälligen Hafen abholen und zu ihm bringen.
  • Aber es gibt eben auch die Möglichkeit, nach und nach weitere Geschichten in die Welt zu intergrieren. Mr Sacks zur Weihnachtszeit. Davor die Affeninseln. Ein neuer Offizier mit einer Hintergrundgeschichte.
  • Dieses Prinzip heißt: Modulares Geschichtenerzählen.

Das müsste doch auch irgendwie für die Schule nutzbar sein, dachte ich mir. Man hat eine gemeinsame Welt, und jede Schülerin oder jedes Schülerteam entwirft eine Geschichte in dieser Welt. Einfache Kurierdienste, letztlich, aber durch gutes Schreiben spannend gemacht, so wie bei Mr Sacks.

Durchgeführt habe ich das noch nicht, aber Gedanken dazu. (Fortsetzung folgt.)

Rollenspielen 2015

Rollenspiel_2015_Rom

Die letzten dreieinhalb Tage war ich wieder Rollenspielen, so wie seit etlichen Jahren immer um dieser Zeit. Pen & Paper, Call of Cthulhu: Inzwischen schreiben wir das Jahr 1939. Wir trafen uns in St. Paul, Minnesota, um von dort aus nach Rom aufzubrechen. Ein Brief eines Kardinals, mit dem uns ein gemeinsamer Bekannter aus vorhergehenden Spielen verband, brauchte unsere Hilfe.
Leider war der Kardinal genauso falsch wie seine Absichten. Ein alter Feind von der SS agierte im Hintergrund, und um herauszufinden, was er eigentlich im Schilde hatte, verfolgten wir die Spuren seiner Aktivitäten sozusagen rückwärts. Zuerst nach St. Gallen, dann wieder Rom, schließlich Marienburg in der Nähe von Danzig. Die Marienburg, der größte Backsteinbau Europas, ist die ehemalige Ordensburg des Deutschen Ordens, und in dessen Geschichte hatten wir herumgewühlt. Marienburg lag 1939 in der Provinz Ostpreußen, vom übrigen deutschen Reich durch einen polnischen Korridor getrennt. Und natürlich schickte uns der Spielleiter nicht zufällig im September 1939 dorthin: Da überfiel Deutschland Polen.

Als die Kampagne vor 6 Jahren begann, ahnte ich nicht, dass das ein Geographie- und Geschichtskurs werden würde. Mit Kopien historischer Bahntickets, in Originalgröße ausgedruckten historischen Landkarten, Grundrissen, Fotos, Biografien, Hintergrundmaterial. Damit wir auch wissen, wie die Straßenbahnen 1939 in Rom fuhren und wie groß St. Gallen war und wie es im Vatikan aussah. Der ebenfalls griffbereite zweibändige Baedeker für Rom war allerdings noch eine Ausgabe von vor dem ersten Weltkrieg.

Nachtrag: Mein liebstes Rätsel betraf vier lateinische Inschriften, deren Inhalt wir herausfinden mussten. Meine Spielfigur konnte als einzige Latein, aber etliche Würfe misslangen, so dass Teile unübersetzt blieben, darunter der wichtigste. Auch die außerspielweltlichen Lateinkenntnisse der Spielerrunde reichten nicht aus für diese Stelle. Kunststück, nach einigem Herumknoben – es war auch schon spät nachts – erkannten wir, dass das der lateinische Name einer polnischen Stadt war, die wir unter deren deutschen Namen kannten.

Rückblick:
2007 – nur eine Zeile nebenbei.
2008 – etwas ausführlicher, mit Bild.
2009 – nur eine Zeile nebenbei.
2010 – einigermaßen ausführlich.
2011 – etwas Text, zumindest mit Bild.
2012 – nur ein Absatz.
2013 – ausführlicher.
2014 – in Afrika, mit Telegramm.

Games for Thinkers

„Games for Thinkers“ ist eine kleine amerikanische Firma, die es – ich müsste recherchieren – vielleicht seit den mittleren 1960er Jahren gibt, und die eine kleine – sehr kleine – Auswahl an Spielen vertreibt. Der Kopf dahinter und Entwickler oder Co-Entwickler aller oder zumindest der meisten Spiele ist Layman E. Allen, inzwischen emeritierter Jura-Professor an der Universität von Michigan.
Die Spiele sind sich alle ein bisschen ähnlich: Sie sind komplex und kompliziert und haben eine Basis in den exakten Wissenschaften, die Anleitungen lesen sich wie trockenste Gesetzestexte und sind ebenso nüchtern gesetzt, und es lassen sich kaum Mitspieler dafür finden. Und doch…

wff_games_for_thinkers

Das Flagschiff von Games for Thinkers ist WFF’N PROOF. Das habe ich – ebenso wie das spielbarere Eleusis – kennengelernt als Teenager in der Stadtteilbibliothek von Haunstetten (Augsburg) in Willy Hochkeppels ausgezeichnetem Denken als Spiel (1970, tolles Buch). Mit neunzehn oder zwanzig Jahren hatte ich danach eine kurze Phase, in der ich Leute kannte, die das Spiel mit mir spielen würden. Und mit 48 Jahren, vor ein paar Monaten, habe ich das tatsächlich mit neuen Leuten gespielt, und wir haben sogar gut gespielt.

Dazwischen hatte ich mir mal die meisten Spiele von Games for Thinkers besorgt, so als Kuriosiät. Zumindest drei davon will ich hier einmal vorstellen.

WFF’N PROOF

(Längerer Blogeintrag dazu.) Bei diesem Spiel geht es um logische Schlüsse. Ein PROOF besteht aus einem zu beweisenden logischen Ausdruck, einer Reihe von Prämissen, einer Reihe von verwendeten Regeln und Prinzipien (Regeln für Konjunktion und Disjunktion und Negation, de Morgan, etc.) und letztlich der Ableitung des Ergebnisses aus den Prämissen anhand der Regeln.

Die Spieler werfen eine größere Anzahl an Würfeln mit Symbolen. Ein Spieler legt einen zu beweisenden Ausdruck, und reihum legen danach alle Spieler einzelne Zeichen (in Form der Würfel) auf Bereiche der Spielfläche, die die Zeichen als optional oder verpflichtend markieren. Aus diesem Vorrat müssen die Spieler dann Prämissen bilden und (die Namen von gegebenen) Regeln bilden, die später in einem Beweise des Zielausdrucks verwendet werden. Verloren hat, wer übersieht, dass mit dem vorhanden Vorrat bald ein fertiger Beweis gebildet werden kann (so dass man stattdessen besser den später zu erbringenden Beweis verkompliziert); verloren hat ebenfalls, wer seinen Würfel so legt, dass mit dem vorhandenen Material kein gültiger Beweis mehr gelegt werden kann.

Die Spielregeln sehen typographisch alle so aus:

wffnproof_small

Die Spiele von Games for Thinkers werden als „autotelisch“ verkauft, also als selbstmotivierend, so dass die Schüler anhand der Spiele quasi automatisch und freiwillig lernen. Denn ja, die Spiele waren zumindest ursprünglich für den Einsatz im Klassenzimmer gedacht, so dass man dafür etwa das Autotelic Learning Center kaufen konnt, mit jeweils 4 Exemplaren von 7 der bekanntesten Games-for-Thinkers-Spiele. Ich bin da ja eher skeptisch, was diese wunderbare Anziehungskraft auf Schüler betrifft. Mich hätte man damit gekriegt, zugegeben, aber das möchte ich nicht verallgemeiner.

Queries’n Theories

Dieses Spiel ist eine Art fortgeschrittenes Mastermind/Superhirn. Ein Spieler definiert eine Sprache, und die anderen Spieler versuchen die Regeln für diese Sprache herauszufinden. Konkret sieht das so aus: Es gibt grundsätzlich nur das Alphabet B, G, P, R, Y (jeder Buchstabe repräsentiert durch einen farbigen Chip: Blue, Green, Purple, Red und Yellow). Eine Sprache könnte zum Beispiel sein: Alle Wörter, die mit B anfangen. Oder: Alle Wörter, in denen kein Y vorkommt. Oder: Alle Wörter, die mit RR anfangen und mit G aufhören.

Mit Hilfe dieser Spielfläche definiert ein Spieler – in der Regel verdeckt, jedenfalls nach ein Einstiegsübungen – eine Sprache. Dafür gibt es links eine Fläche mit Basic Sentences, also Zeichenketten, die auf jeden Fall zur Sprache gehören:

queries_n_theories_1

Im Beispiel oben gehören die – sehr kurzen – Wörter GY und R zur definierten Sprache.

Außerdem gibt es die Ersetzungsregeln, die man auf der rechten Seite der Spielfläche festlegt. Davon kann es bis zu 4 geben, mit bis zu 5 verschiedenen Farben (wie viele es jeweils genau sind, das hängt vom vorher vereinbarten Schwierigkeitsgrad ab):

queries_n_theories_2

Zusammen mit den Basic Sentences gehören also folgende Beispiele ebenfalls zu der durch die Spielfläche festgelegten Sprache:

  1. GY, R (Basic Sentences)
  2. GRY (Basic Sentence 1 + Regel 1)
  3. GRRY (Zeile 2 + Regel 1)
  4. GRRRY (Zeile 3 + Regel 1)
  5. GRRRRY (Zeile 4 + Regel 1)
  6. GYRRRY (Zeile 5 + Regel 2)
  7. GRYRRRY (Zeile 6 + Regel 1)

Die Spieler legen probeweise Zeichenkette und sagen je nach Variante voraus, ob der Regelgeber sie als Teil der Sprache akzeptieren wird oder nicht. Man kann das auch als Experiment ansehen, mit dessen Hilfe man den Regeln auf die Spur kommt. Wie das mit der Punktezählung genau aussieht, weiß ich nicht, dazu müsste ich wohl eine regelmäßige Spielerrunde auftreiben.

Mathematisch steckt hinter den bunten Chips ein Semi-Thue-System. Das kann einem bei der theoretischen Informatik begegnen. Anders als bei formalen Sprachen gibt es hier keine Unterscheidung von Terminalen und Nichtterminalen. Das Wortproblem ist bei Semi-Thue-Systemen grundsätzlich unentscheidbar; bei Queries ’n Theories geht das aber sehr wohl: Zum einen sind die Anzahl und der Umfang der Regeln beschränkt, zum anderen gilt eine Zusatzregel, die aus dem Design der Spielfläche nicht hervorgeht – dass nämlich rechts vom Pfeil einer Ersetzungsregel nie weniger Chips liegen dürfen als links davon. Das macht das ganze Wortproblem schon viel einfacher. (So ähnlich wie hier in einem Blogeintrag zu kontextsensitiven Sprachen.)

PROPAGANDA

Dieses Spiel fällt etwas aus dem Games-for-Thinkers-Rahmen. Es gibt keine Würfel und keine Spielfläche. Dafür gibt es eine Liste von argumentativen Tricks und Manipulationstechniken, ganz im Sinn von Schopenhauers eristischer Dialektik. Knapp 60 davon sind in sechs Bereiche eingeteilt: Techniken der Selbsttäuschung, der Sprache, der Irrelevanz, der Form, und das Ausnutzen menschlicher Schwächen sowie Ausweichmanöver. Das sind Klassiker dabei wie ad hominem, ad consequentiam, Wunschdenken, aber auch Zahlenspielerei, Metaphorik, Slogans, unnötige Fachsprache, Mehrdeutigkeit.

Das eigentliche Spiel besteht aus 40 Karten mit jeweils sechs Beispielen aus den sechs Kategorien. Ein Spieler wählt ein Beispiel und verständigt sich mit den Mitspielern darüber, zu welcher Technik es gehört. Wie das Spiel mit Punkten und so weiter geht, das weiß ich nicht mehr – man muss voraussagen, was die anderen entscheiden, oder die anderen überzeugen, irgend so etwas, aber das ist auch nicht wichtig. Wichtig ist vielmehr die schöne Sammlung an Beispielen. Irgendwann möchte ich so etwas mal fürs Erörtern im Deutschunterricht nutzen, aber mir ist noch nichts eingefallen.

Weitere Spiele

LinguiSHTIK: Ein sehr viel einfacheres Spiel als die anderen Games-for-Thinkers-Spiele, wenn auch das typische Spielprinzip erkennbar ist: Aus einem Satz von gewürfelten Buchstaben müssen die Spieler ein – im Endeffekt möglichst kompliziertes – Wort legen. Wieder werden reihum manche Buchstaben als optional, verboten oder verpflichtend zu legen markiert.

ON-WORDS: Sieht mir zu kompliziert aus. Es gibt wieder Würfel, wieder eine Spielfläche, um Elemente als erlaubt/erforderlich/verboten zu markieren. Die Symbole sind Buchstaben, wenige Ziffern, und vor allem Lautschrift-Symbole – leider nicht die bekannteren internationalen IPA-Symbole, sondern diejenigen, die das American Heritage Dictionary verwendet, also /o͞o/ statt /u:/ oder /ē/ statt /i:/. Mehr weiß ich nicht.

ON-SETS: Kommt in einer deutlich kleineren Plastikschachtel als die anderen Spiele, vielleicht ist das so eine Reiseausgabe. Es gibt wieder eine Reihe von Würfel mit verschiedenen Symbolen (Farben, Ziffern, Symbole aus der Mengenlehre), dazu die übliche Spielfläche mit Ziel und verbotenen/erforderlichen Elementen und ein Stapel Kärtchen mit farbigen Symbolen – mit den Würfeln formt man Bedingungen („alle Karten mit rot darin und ohne blau“). Mehr weiß ich nicht, sieht aber nicht allzu kompliziert aus.

Codefunde, und Programmieranregungen

Zwei Funde aus der letzten Zeit, und beide kurz, quelloffen und verständlich.

1. A Dark Room

Ein minimalistisches Spiel, das mit Maus und später ein wenig Tastatur im Browser bedient wird. Nach den ersten Klicks befindet man sich in vertrauter Atmosphäre, ein textbasiertes City-Building-Spiel also, und doch… man beginnt in einem dark room, und muss erst einmal das Feuer anheizen. Eine Fremde kommt in die Hütte, wärmt sich, und stellt sich als builder heraus, die mit dem gesammelten Holz einfache Dinge bauen kann. Nach und nach kommen weitere Wanderer, eine zweite Hütte wird gebaut.

a_dark_room

Bereits bei den ersten, der interactive fiction nahen Formulierungen ahnt man, dass das irgendwie ein besonderes Spiel ist, und als das stellt es sich auch nach und nach heraus. „The light from the fire spills from the windows, out into the dark.“

Hier kann man das spielen: http://adarkroom.doublespeakgames.com/ Oder man folgt einfach dem Link dort zu GitHub, wo der Code des ganzen Projekts gespeichert ist und zum Beispiel als zip-Paket heruntergeladen werden kann. Das Programm ist in Javascript geschrieben, und es ist interessant, mal in den Quellcode zu schauen.
Außerdem sieht man daran gut, dass auch ein minimalistisches Spiel spannend sein kann. Zugegeben, es wird später noch ein wenig elaborierter. Sehr stimmungsvoll.

2. Tippfelher

Über diesen Tweet bin ich auf das Projekt gestoßen:

Auch hier ist das Projekt bei GitHub gespeichert, und man kann es sich dort anschauen oder herunterladen. Es ist in Python geschrieben, mit dem ich sehr viel vertrauter bin als mit Javascript. Der Hintergrund wird in diesem Blogeintrag erklärt. Die Kurzfassung: Das Programm liest einen Text ein und spuckt ihn mit Tippfehlern versehen wieder aus. Dazu gehören etwa eine fehlende Hochstelltaste bei Großbuchstaben und vertauschte Buchstaben, die auf der Tastatur nebeneinanderliegem. Bei Titel der Textdatei wird nur ein Buchstabe getauscht, wie man an der mitgelieferten Beispieldatei „Kakfa – Die Verwandlung.txt“ sieht.

Rollenspielen 2013

Mit unserer Kampagne, die vor vor vier Jahren im Jahr 1932 begann, befinden wir uns inzwischen im Jahr 1937. Unser Kontaktmann ruft uns nach Paris; dort bestaunen wir am Flughafen Orly die sensationellen Beton-Luftschiffhangars (1944 zerstört), nehmen Cocktails in Harry’s New York Bar, übernachten im Ritz, wo wir einen Blick auf Coco Chanel erhaschen. Wir erfahren Deails über die Geschichte des Ritz. Abends trifft Thea in der Hotelbar (Gückswurf gelungen) auf Cole Porter, wir anderen haben die Wahl zwischen Paradis Latin, Moulin Rouge, Lido, den Folies Bergère.

2013_11_Rollenspiel_1

Am nächsten Tag wird es geheimnisvoll: Abgefangene Funksprüche einer deutschen Expedition in Venezuela lockten unseren alten Gegner Schuhberger von der Reichsforschungsstelle nach Südamerika, wir ihm nach – mit der Hindenburg, historische Baupläne inbegriffen. Die Abendunterhaltung besteht etwa aus Musik am Aluminium-Flügel – mit gelbem Leder überzogen – im Salon. Das ist ein kleiner historischer Fehler; anscheinend war der Flügel bei dieser Fahrt nicht mit an Bord. Diese Fahrt: denn ja, es wird sich als die letzte der Hindenburg herausstellen. Aus Gründen stehlen wir das unterhalb des Rumpfs angedockte Flugzeug der Reichsstelle für Walforschung (gab’s wirklich) und landen heimlich in den USA, werden aber vom örtlichen Sheriff ins Gefängnis gebracht und hören da – die historische Audioaufnahme wird eingespielt – den Live-Radiobericht über den Brand der Hindenburg bei der Landung. (Auch hier entnehme ich der Wikipedia, dass der Bericht wohl erst am folgenden Tag ausgestrahlt wurde. Künstlerische Freiheit beim Rollenspiel, ebenso wie unser Wissen um die tatsächlichen Ursachen der Katastrophe. Übrigens überlebten historisch – wie auch im Spiel – ein Großteil der Crew und Passagiere den Absturz.)

2013_11_Rollenspiel_2

Von Boston und New York aus ging es – über einen Abstecher nach Arkham – mit dem Schiff nach Südamerika, zu Jimmy Angel nach Caracas. (Dazwischen ein Exkurs über die Geschichte New Yorks und die von Venezuela.) Angel war ein amerikanischer Flieger und Entdecker, nach dem die Angel-Fälle in Venezuela („Salto Ángel“) benannt sind, mit 807 Metern ununterbrochenem Fall der höchste Wasserfall der Erde. (40% des Wassers kommen unten an, der Rest verdunstet oder wird weggeweht.) Und genau dort müssen wir auch hin. Wir stören eine deutsche Expedition bei illegalen Ausgrabungen auf dem Auyan-Tepui („Haus des Teufels“, der Tafelberg, von dem der Salto Ángel stürzt).

Insgesamt: Ein Toter (ich); ein ziemlich Wahnsinniger. Die Pläne der Schurken sind aber fürs Erste durchkreuzt. Insgesamt wenig Lovecraft-Gefühl, dafür eher Pulp-Abenteuer in den 1930ern – auch nicht schlecht. Hervorragend wieder die vielen Papiere und anderes Material (Karten, Audioaufnahme); ich hatte wieder eine neue Ecke der Welt vor Augen.

Nutzbarkeit für die Schule: Gering, fürchte ich. Obwohl man viel dabei lernen kann.

Rückblick:
2007 – nur eine Zeile nebenbei.
2008 – etwas ausführlicher, mit Bild.
2009 – nur eine Zeile nebenbei.
2010 – einigermaßen ausführlich.
2011 – etwas Text, zumindest mit Bild.
2012 – nur ein Absatz.

Serious Text Games

„The Republia Times“ ist ein schönes Spiel, das sich vielleicht auch für das rasche Leseverstehen (skimming) im Englischunterricht eignet. Flashbasiert, im Browser zu spielen; man kann die Flashdatei aber auch einfach lokal speichern. (Via Aaron A. Reed.)

Das Spiel ist einfach, aber reizvoll: Man spielt den eben ernannten Redakteur der Republia Times, einer Zeitung im diktatorisch regierten Republia. Die Presse dort ist alles andere als frei; die Familie des Redakteurs befindet sich in Geiselhaft der Regierung. Man muss zehn Tage als Redakteur überstehen: In den ersten Tagen muss man die Loyalität der Leserschaft auf einen gegebenen Wert erhöhen, indem man regimefreundliche Propagandaartikel platziert. Danach muss man die Anzahl der Leser erhöhen, indem man Artikel veröffentlicht, die den Lesern gefallen. (Der Loyalitätswert darf dabei aber nicht unter eine bestimmte Grenze sinken.) Und danach wiederum hat man etwas freiere Hand… bis sich der Untergrund meldet und sowohl eine hohe Auflage als auch eine niederige Loyalität der Leserschaft zu einem bestimmten Termin fordert.

So sieht der Bildschirm aus:

republia

Von links unten kommen auf einem Ticker nach und nach die Nachrichten des Tages herein, mal früher mal später. Aus diesen Nachrichten kann man seine Zeitung füllen: Man macht aus dieser Nachricht eine kleine Notiz, einen gewöhnlichen Artikel oder einen großen Dreispalter. Man kann auch nichts auswählen, dann bleibt die Zeitung halt leer, und das kostet natürlich Leser. Um die Zeitung zu füllen hat man nur einen Arbeitstag Zeit; am Rand läuft eine Uhr unerbittlich mit, die einen in den späteren Phasen des Spiels unter Druck setzt. Ganz wird die Zeitung ohnehin nie voll, die Größen der Artikel und der Seite sind so gewählt, das immer mindestens ein kleines frustrierendes Kästchen frei bleibt.

Der Knackpunkt beim Spiel ist die Auswahl der Nachrichten und die Entscheidung, wie groß man sie in die Zeitung setzt:

  • Es gibt Artikel, die für höhere Leserzahlen sorgen: Sport, Militär, Unterhaltung, Wetter. Bei diesen Themen kommt es nicht auf die Größe der Artikel an, sondern nur darauf, dass es sie gibt. Die bringen Leser. Zu viel politische Propaganda und zu wenig Unterhaltung lässt die Leserzahl sinken.
  • Es gibt Artikel, die die Loyalität der Leserschaft beeinflussen, positiv oder negativ: Negative Informationen über die Regierung, Erfolge des feindlichen Nachbarstaats. Hier haben größere Artikel mehr Einfluss auf die Loyalität der Leserschaft als kleinere. Das Wetter ist immer neutral, andere Nachrichten können positiv oder negativ sein.
  • Gibt es zu viel freien Platz, dann sinken Leserzahlen. Drei große Geschichten reichen, um die Zeitung zu füllen

Nach dem zehnten Tag ist das Schicksal von Republia entschieden und es kommt zu einem Ende, sozusagen.

Für den Englischunterricht nutzbar ist das Spiel, weil man die – allerdings sehr kurzen – Nachrichten schnell überfliegen und beurteilen muss: Sind sie interessant ist oder nicht und, unabhängig davon, politisch neutral, positiv oder negativ?

Außerdem lernt man:

  • Eine Zeitung füllt sich nicht von selbst, es gibt immer jemanden, der auswählt, was hineinkommt.
  • Selbst wenn eine Nachricht gebracht werden muss, kann man sie groß herausbringen oder klein halten.
  • An manchen Tagen kommen einfach keine brauchbaren Nachrichten. Aber auch dann muss die Zeitung voll werden.
  • Es gibt mehr Nachrichten, als in einer Zeitung Platz haben. Manches erfährt der Leser also nicht.

Ein anderes flashbasiertes Spiel, das ich schon mal mit Sechtsklässlern gespielt habe, ist „The Big Scan“. Ich habe das vor Jahren schon mal erwähnt, deshalb nur kurz: Das Spiel ist – anders als Republia Times – für Lerner gedacht. Man spielt einen Privatdetektiv, der einen (nicht ganz unblutigen) Fall lösen muss. Dabei übt man, Texte gezielt nach bestimmten Informationen durchzugehen.


Kaum für die Schule geeignet sind die folgenden Spiele, aber ich will sie erwähnen, weil sie für mich reizvoll waren (alles reine Textspiele):

Whom the Telling Changed von Aaron A. Reed. (Auf der verlinkten Seite ist auch eine Möglichkeit, das Spiel im Brwoser zu spielen.) Die Mitglieder einer Stammesgruppe sitzen in vor- oder frühgeschichtlicher Zeit um ein Lagerfeuer und hören sich die rituell erzählte, altbekannte Geschichte an, die der Erzähler vorträgt. Sehr aktiv in herkömmlicher Weise ist man als Spieler nicht: in jeder Erzählpause kann man dan Erzähler bitten, bestimmte Aspekte der Geschichte zu erklären oder zu betonen. Allerdings macht das der Gegenspieler genauso, ein anderer Angehöriger der Gruppe mit anderen politischen Zielen. Beide lenken die Stimmung der Gruppe durch ihre Zwischenfragen, denn die Situation ist hoch politisch: Soll man gegen einen Nachbargruppe in den Krieg ziehen oder nicht? Stellt sie eine Gefahr dar oder nicht?
Die Geschichte, die erzählt wird, ist außerdem eine Episode aus dem Gilgamesch-Epos. Wer sich die mal am virtuellen Lagerfeuer erzählen lassen möchte, kann sich „Whom The Telling Changed“ anschauen.

Auf einem Originaltext eines anderen Autors basiert auch The Tempest von Graham Nelson und, uh, William Shakespeare. (Online spielbar via der verlinkten Seite.) Man spielt den Luftgeist Ariel; die Handlung ist die von Shakespeares Sturm. Die Texte sind weitgehend Originalsprache, und zwar – laut eigenen Angaben – der fast vollständige Text der Folioausgabe von 1623. Also Blankvers. Das macht das Lesen macnhmal etwas schwer, und ganz leicht ist das Spiel auch nicht, das macht es weniger reizvoll für Leute, die weder mit frühem Neuenglisch noch mit Interactive Fiction vertraut sind. Aber reizvoll schon, das könnte ich mir auch gut mit einem allerdings gekürzten Sommernachtstraum vorstellen.

Unter der Seite Literary Worlds der Western Michigan University gibt es einen Link zu virtuellen literarischen Welten, die im Rahmen eines Projekts der Uni dort angelegt wurden. Das sind letztlich MUDs, multi-user dungeons, Textadventures für mehrere Spieler. Leider funktionieren einige der Links nicht mehr, auch wenn dann doch alle Welten – und es sind viele – von innerhalb eines jeden Spiels aus betreten werden können. Design und Interface sind nicht sehr ansprechend oder benutzerfreundlich. Ich habe mal The Tempest ausprobiert: Links textbasiert, rechts mit Bildern; navigieren kann man nur rechts, weil der Text bei Richtungsvariablen keinen sauberen Angaben ausgibt; agieren kann man nur links mit Texteingabe. Und alles recht umständlich. Eine schöne Idee, aber nicht mehr zeitgemäß. Auch die Kombination Text-Bild halte ich eher für irritierend als für nützlich – entweder ein reines Textspiel, oder Point-and-Click.

Fußnote: Ich habe schon mal ein eigenes Inform-7-Textadventure auf einen Server hochgeladen, der das Spiel multi-user-fähig macht. Funktioniert auch. Nächster Schritt: Mit Schülern eine Welt anlegen und sich dann dort treffen, textbasiert.