Wie wir Mau-Mau gebaut haben
Ein Kartenspiel, dessen ganzes Design aus einem Satz fällt: Eine Hand ist ein Geheimnis. Warum der Client nichts entscheidet, das Deck hinter einem Lock wohnt und zwei Kartensätze sich ein Raster teilen.
Gegen die Quellen geprüft am 2026-08-30
Ein Satz entscheidet alles
Mau-Mau ist das zweite Spiel, das als Paket auf dem Host-SDK der Engine gebaut wurde - dieselben fünf importierten Interfaces wie beim Boxen, dieselbe Haltung „kein XP, kein Level, kein Dokument". Aber wo Boxing den Clients Autorität gibt, gibt dieses Spiel ihnen nichts, und der Grund passt in einen Satz: Eine Hand ist ein Geheimnis.
Ein Kampfspiel gibt dem Client Autorität, weil die Alternative gegen Lag verliert. Ein Kartenspiel kann das nicht, weil die Alternative das Spiel verliert: Wer das Deck hält, kann jede Hand lesen, und ein Client, dem man zutraut, nicht zu schauen, ist ein Client, bei dem das Geheimnis nicht gewahrt werden musste. Es gibt keine Version dieses Spiels, in der das Deck auf irgendjemandes Rechner liegt und das Spiel noch spielenswert ist.
Jede Design-Entscheidung im Paket folgt daraus. Boxing hat fünf Nachrichtentypen auf drei Takten; der Draht dieses Spiels ist ein Anstupsen mit einer Zahl. Boxing sagt die eigenen Schläge voraus; dieses Spiel sagt nichts voraus, weil es nicht muss. Boxing nutzt keinen Zufall; dieses Spiel nutzt den der Plattform - nie einen geseedeten Strom, den ein Client nachspielen könnte.
Der Bau, in der Reihenfolge, in der er passiert ist
Karten und Tischregeln, pur
Was eine Karte ist, was ein Paket ist, was ein legaler Zug ist - Werte rein, Werte raus, kein Browser, kein Netzwerk, keine Uhr. `bun test packages/maumau` spielt ganze Hände in Mikrosekunden. Dasselbe Argument wie beim Boxen, derselbe Gewinn: Den Regeln traut man, weil ein Test schneller spielt, als ein Mensch es je könnte.
Entscheide, welches Mau-Mau du baust - als Daten
Alle halten ihr Mau-Mau für das einzige: Stapeln sich Siebenen, was macht der Bube, wie geht die letzte Karte raus. Das sind Hausregeln, und sie sind Settings - genau das, was Boxing ausdrücklich verweigert hat. Der Unterschied ist Symmetrie: Einen Schlag zu retunen hilft dem, der ihn wirft, also einem Spieler; stapelnde Siebenen sind für alle dasselbe Spiel. Es gibt keine Hausregel, von der ein Platz profitiert.
Und sie werden beim Geben festgenagelt und danach verweigert - nicht weil eine Änderung mitten in der Hand unfair wäre, sondern weil sie inkohärent wäre: Stapeln abschalten, während sechs Strafkarten offen sind, ist ein Zustand, auf den die Regeln keine Antwort haben.
Achtung: Asymmetrische Settings sind keine Settings, sondern ein unfaires Match. Sortiere jede Option danach, wem sie hilft.
Das ganze Spiel dort laufen lassen, wo kein Spieler hinkommt
Die komplette Tischlogik läuft einmal, beim Arbiter, und jeder Client bekommt eine Schwärzung zurück: die eigenen Karten vollständig, die aller anderen als Zahl. Der Client kann nicht schummeln, weil der Client nichts weiß, womit sich schummeln ließe.
Dieselben Regeln zwei Autoritäten beibringen
Das Paket bringt einem In-Memory-Arbiter das ganze Mau-Mau bei - vier Memory-Hosts in einem Test sind vier Spieler, die nichts selbst entscheiden können: dieselbe Eigenschaft wie bei der echten Autorität, ausgedrückt in einer Map und beweisbar in Mikrosekunden. Die echte ist eine Datenbankfunktion, weil die Produktionsanforderung ein Lock ist: Zwei Spieler, die im selben Tick eine Karte drücken, lesen beide denselben Zug - und nur einer darf ihn haben.
Achtung: Test-Autorität und echte Autorität müssen dieselben Regeln gegen dieselbe Zustandsform implementieren - sonst beweisen deine Tests ein Spiel, das du nicht auslieferst.
Zwei Kartensätze, ein Raster
Das Spiel liefert zwei Karten-Looks: handgezeichnete Bilder, die einen 552x752-Rahmen mit Glättung füllen, und 64x64-Karten von 1993, die pixelig gezeichnet werden müssen, sonst sind sie ein Schmier. Sie sind sich über fast nichts einig - außer über das Raster, weil der Atlas-Bauer darauf besteht: Zeilen sind die vier Farben, Spalten laufen A, 2…10, B, D, K. Die Zell-Suche ist also einmal geschrieben, und kein Finish taucht in ihr auf.
Und ein Finish ist absichtlich keine Hausregel: Die Autorität nagelt Regeln fest, weil ein Tisch ein Spiel spielen muss - aber zwei Spieler, die auf zwei verschiedene Kartenrücken schauen, spielen immer noch dieselbe Hand. Was nichts ändert, wofür man verweigert werden könnte, gehört nicht in die festgenagelten Settings.
Die Wörter im Code
- Arbiter
- Hier: das ganze Spiel. Das Einzige am Tisch, das eine Hand sehen darf.
- Seen
- Die Schwärzung, die ein Client bekommt - eigene Karten vollständig, alle anderen als Zahlen.
- Hausregeln
- Welches Mau-Mau: symmetrische Settings, beim Geben festgenagelt, danach verweigert.
- Finish
- Welche Kartengrafik den Tisch zeichnet - pro Spieler, und absichtlich keine Regel.
- memoryHost / MemoryArbiter
- Host und Autorität der Testseite, die aus einer Map vier Spieler machen.
Was wir uns am Anfang sagen würden
- Benenn den einen entscheidenden Satz deines Spiels früh. Unserer war „eine Hand ist ein Geheimnis", und er hat jede spätere Diskussion beantwortet.
- Autorität ist pro Spiel, nicht pro Plattform: Dasselbe SDK trägt einen client-autoritativen Kampf und einen voll autoritativen Kartentisch.
- Zufall, den ein Client reproduzieren kann, ist eine Hand, die ein Client lesen kann.
- Gleichzeitige Züge brauchen ein Lock, keine Konvention - zwei Drücke in einem Tick passieren am ersten echten Abend.
- Halt Kosmetik aus dem Regelobjekt raus, sonst wird jeder Skin eine Regelverhandlung.
Lies das Original
- packages/maumau im RepositoryDer Arbiter-Header ist das Argument in voller Länge; die Migration daneben ist das Lock.
- Wie wir das Boxspiel gebaut habenDieselben fünf Interfaces, die Autorität andersherum vergeben.
- Der XP-Editor-GuideDer dokumentförmige Weg, auf der Engine zu bauen.
Das hier ist eine Landkarte, keine Rechts- oder Steuerberatung - und eine ehrliche darüber, wie sie entstanden ist: Der Deutschland-Guide stammt von jemandem, der den Weg gegangen ist; die meisten anderen Länder wurden mit KI aus den offiziellen Quellen erstellt und noch von niemandem abgelaufen, der es getan hat. Gesetze ändern sich. Jeder Guide trägt das Datum seiner letzten Prüfung und die Quellen zum Selbst-Nachlesen - und wer einen dieser Wege hinter sich hat: Genau diese Korrekturen wünscht sich das Handbuch.


