All projects Vollmond · Write-up
Every screen sees its own gameJeder Bildschirm sieht sein eigenes Spiel
Vollmond is the party game Werewolf for our afternoon meeting, with the app as the narrator. A small Node server runs the nights and days and sends each player only their own view, so a card never reaches the wrong screen; the cards are woodcuts the game draws itself.Vollmond ist das Partyspiel Werwolf für unser Nachmittags-Meeting, mit der App als Erzählerin. Ein kleiner Node-Server lässt Nächte und Tage ablaufen und schickt jedem nur seine eigene Sicht, damit keine Karte auf dem falschen Bildschirm landet; die Karten sind Holzschnitte, die das Spiel selbst zeichnet.
vollmond.ewolution.cloud Source
- Type
- Web appWeb-App
- Stack
- Svelte 5 · Node · Server-Sent Events
- Year
- 2026
- Code
- Public on GitHubÖffentlich auf GitHub
A village for the meeting
Vollmond is the party game Werewolf for our afternoon meeting. Everyone gets a secret card: a few are werewolves and know each other, the rest are the village. Each night the wolves pick a victim while the village’s special roles act in secret; each day the village debates and votes someone out. Classically one person narrates and doesn’t play. Here the app narrates, so everyone plays.
Whoever starts a game founds a village with a four-letter code (no vowels, so no code spells a word), a link to share and a QR code; the village takes its name from the code. There are no accounts: a name and a coat of arms are enough, eight divisions and sixteen charges in the cards’ two inks, and a reload puts you back in your seat with your card.
A deck that shows its balance
The host picks Classic or Quick (shorter clocks, the core roles, no Captain) and says where the group plays: on a video call, where every screen shows the whole village, or at one table, where phones keep their cards face down until held and stay silent while a big screen tells the story. The deck is suggested for the number of players: one wolf up to six players, two up to eleven, three up to sixteen, four beyond, with a special role joining at each size from the Seer at five to the Elder at twelve. The host can build their own instead, and a needle shows which side it favours, from each role’s weight. A secret deck keeps even the list of roles hidden.
There are ten roles: the Werewolf, the Villager, the Seer, the Witch, the Hunter, Cupid, the Guard, the Little Girl, the Village Idiot and the Elder, plus the Captain, a title the village elects on its first day. Further settings cover the clocks, whether a card is shown on death, open or secret votes, what a tie does, when the wolves win, a calm first night, and the Seer’s and Witch’s variants.
A night in which everyone taps
Calling the roles one by one would leave everyone waiting with their eyes closed. Instead a night has up to three steps, and inside each step everyone acts at once: dusk on the first night for Cupid, then the night for the wolves, the Seer, the Guard and the Little Girl, then the witching hour for the Witch, who needs to know the victim. The server resolves them in the classic order.
A phone that lights up at night would give a role away at a table, so everyone gets a question: villagers name a suspect, trust someone or guess who was attacked, laid out exactly like the Seer’s look. A step ends once everyone has answered and the pack agrees on one name, or when its time runs out; then the most-named victim falls, a tie broken at random. A dead role’s step still runs, so its absence shows nothing. The wolves see each other’s picks live and can whisper; the Little Girl may peek and glimpse a wolf, but one time in three the wolves see her.
Deaths that set off others
Dawn applies the night in order: the wolves’ attack fails if the Guard stood in front of it, the Witch healed it, or the Elder had a life to spare, and the Witch’s poison kills regardless. A death can set off more: a Lover dies of grief, a Hunter takes a last shot, a dying Captain names a successor, and an Elder voted out by the village takes every village power with him. The Hunter’s shot and the new Captain each get a short phase of their own before the day goes on.
By day the village debates until the clock runs out or more than half are ready, then votes. The Captain’s vote counts twice and breaks a tie; otherwise a tie spares everyone or goes to a runoff. The Village Idiot survives being voted out but loses his vote. The village wins when no wolf is left, the wolves when they are as many as everyone else, and a wolf and a villager in love win when they are the last two.
Every screen sees its own game
The server holds every village in memory and pushes the game over Server-Sent Events, like Schätzle’s rooms. Here each stream carries a view built for its player: their card, what they have learned, the pack’s picks and whispers for a wolf. A village’s big screen gets a view with no player at all, so it never holds a card before the end; the build checks exactly that before every deploy. The dead see everything when the host allows it, and must keep quiet.
At the end every card turns over, followed by a chronicle of the whole game, night by night, and four awards: the first to fall, the sharpest hunch (night suspicions that named a wolf), the most votes against wolves, and the wolf the village suspected least.
Woodcuts drawn in code
The cards look printed: carved lines in deep indigo on cream paper, with a fluorescent pink printed over them a few units off register, the way a risograph prints two inks. Each one is a script, not a picture: a seeded random carves the sky’s lines, the halftone dots and the stars the same way on every build, a turbulence filter grains the paper, and the pink plate is printed with multiply, so it only shows where the indigo left paper. The names sit on the card as text, so they switch between German and English.
The page prints in the same inks: Folio’s tokens point at the paper and the indigo, and every night of a game turns the page to night whatever its theme, with stars and fog drawn on one canvas. Nightfall, dawn and the verdict play as moments over everything, and sounds come from Web Audio, made on the spot. On a call each device plays them; at a table only the big screen does.
Played by bots
The rules are a pure state machine, with no clock of its own, tested with a seeded random: every role, every chain of deaths and every way to win. Bots make random but legal moves, with a little sense: a wolf follows the pack’s first pick, and nobody hurries a debate before a person has. They fill a table for trying the game alone, and the tests play whole games with them to a winner. The interface is in German and English, follows the system’s theme until you pick one, and installs to a home screen.
Ein Dorf für das Meeting
Vollmond ist das Partyspiel Werwolf für unser Nachmittags-Meeting. Alle bekommen eine geheime Karte: Ein paar sind Werwölfe und kennen sich, der Rest ist das Dorf. Jede Nacht wählen die Wölfe ein Opfer, während die Sonderrollen des Dorfs heimlich handeln; jeden Tag berät das Dorf und verbannt jemanden. Klassisch erzählt eine Person und spielt nicht mit. Hier erzählt die App, also spielen alle.
Wer ein Spiel startet, gründet ein Dorf mit einem Code aus vier Buchstaben (ohne Vokale, damit kein Code ein Wort ergibt), einem Link zum Teilen und einem QR-Code; das Dorf bekommt seinen Namen aus dem Code. Konten gibt es nicht: Ein Name und ein Wappen genügen, acht Teilungen und sechzehn Figuren in den zwei Farben der Karten, und nach einem Neuladen sitzt man wieder auf seinem Platz, mit seiner Karte.
Ein Deck, das sein Gleichgewicht zeigt
Der Gastgeber wählt Klassisch oder Schnell (kürzere Uhren, die Grundrollen, kein Hauptmann) und sagt, wo die Runde spielt: im Videocall, wo jeder Bildschirm das ganze Dorf zeigt, oder am selben Tisch, wo Handys ihre Karte verdeckt halten, bis man sie drückt, und still bleiben, während ein großer Bildschirm erzählt. Das Deck wird für die Zahl der Leute vorgeschlagen: ein Wolf bis sechs Leute, zwei bis elf, drei bis sechzehn, darüber vier, und mit jeder Größe kommt eine Sonderrolle dazu, von der Seherin ab fünf bis zum Alten ab zwölf. Der Gastgeber kann es auch selbst zusammenstellen, und eine Nadel zeigt aus dem Gewicht jeder Rolle, welche Seite es bevorzugt. Ein geheimes Deck verbirgt sogar die Liste der Rollen.
Es gibt zehn Rollen: Werwolf, Dorfbewohner, Seherin, Hexe, Jäger, Amor, Beschützer, Kleines Mädchen, Dorftrottel und den Alten, dazu den Hauptmann, einen Titel, den das Dorf an seinem ersten Tag wählt. Weitere Einstellungen regeln die Uhren, ob eine Karte beim Tod gezeigt wird, offene oder geheime Abstimmungen, was ein Gleichstand bewirkt, wann die Wölfe gewinnen, eine ruhige erste Nacht und die Varianten von Seherin und Hexe.
Eine Nacht, in der alle tippen
Die Rollen einzeln aufzurufen hieße, dass alle mit geschlossenen Augen warten. Stattdessen hat eine Nacht bis zu drei Schritte, und in jedem handeln alle gleichzeitig: die Dämmerung in der ersten Nacht für Amor, dann die Nacht für die Wölfe, die Seherin, den Beschützer und das Kleine Mädchen, dann die Hexenstunde für die Hexe, die das Opfer kennen muss. Der Server löst sie in der klassischen Reihenfolge auf.
Ein Handy, das nachts aufleuchtet, würde am Tisch eine Rolle verraten, also bekommen alle eine Frage: Dorfbewohner nennen einen Verdächtigen, vertrauen jemandem oder raten, wer angegriffen wurde, genauso aufgebaut wie der Blick der Seherin. Ein Schritt endet, sobald alle geantwortet haben und sich das Rudel auf einen Namen einigt, oder wenn seine Zeit abläuft; dann fällt das meistgenannte Opfer, bei Gleichstand entscheidet der Zufall. Der Schritt einer toten Rolle läuft trotzdem, damit ihr Fehlen nichts verrät. Die Wölfe sehen ihre Wahl gegenseitig und können flüstern; das Kleine Mädchen darf spähen und einen Wolf erkennen, aber jedes dritte Mal sehen die Wölfe sie.
Tode, die weitere auslösen
Der Morgen wendet die Nacht der Reihe nach an: Der Angriff der Wölfe scheitert, wenn der Beschützer davorstand, die Hexe geheilt hat oder der Alte ein Leben übrig hatte, und das Gift der Hexe tötet in jedem Fall. Ein Tod kann weitere auslösen: Ein Verliebter stirbt aus Kummer, ein Jäger gibt einen letzten Schuss ab, ein sterbender Hauptmann bestimmt seinen Nachfolger, und ein Alter, den das Dorf verbannt, nimmt alle Kräfte des Dorfs mit. Der Schuss des Jägers und der neue Hauptmann bekommen je eine eigene kurze Phase, bevor der Tag weitergeht.
Tagsüber berät das Dorf, bis die Uhr abläuft oder mehr als die Hälfte bereit ist, dann stimmt es ab. Die Stimme des Hauptmanns zählt doppelt und entscheidet bei Gleichstand; sonst verschont ein Gleichstand alle oder führt zur Stichwahl. Der Dorftrottel überlebt seine Verbannung, verliert aber seine Stimme. Das Dorf gewinnt, wenn kein Wolf mehr übrig ist, die Wölfe, wenn sie so viele sind wie alle anderen, und ein verliebter Wolf mit einem verliebten Dorfbewohner, wenn die beiden als Letzte übrig sind.
Jeder Bildschirm sieht sein eigenes Spiel
Der Server hält jedes Dorf im Speicher und schickt das Spiel per Server-Sent Events, wie die Räume von Schätzle. Hier trägt jeder Stream eine Sicht, die für seinen Spieler gebaut ist: die eigene Karte, was man erfahren hat, für einen Wolf die Wahl und das Flüstern des Rudels. Der große Bildschirm eines Dorfs bekommt eine Sicht ganz ohne Spieler und hält deshalb vor dem Ende nie eine Karte; genau das prüft der Build vor jedem Deploy. Die Toten sehen alles, wenn der Gastgeber es erlaubt, und müssen schweigen.
Am Ende drehen sich alle Karten um, gefolgt von einer Chronik des ganzen Spiels, Nacht für Nacht, und vier Auszeichnungen: wer zuerst fiel, der beste Riecher (nächtliche Verdächtigungen, die einen Wolf trafen), die meisten Stimmen gegen Wölfe und der Wolf, den das Dorf am wenigsten verdächtigte.
Holzschnitte aus Code
Die Karten sehen gedruckt aus: geschnitzte Linien in tiefem Indigo auf cremefarbenem Papier, darüber ein fluoreszierendes Pink, ein paar Einheiten versetzt, so wie ein Risograph zwei Farben druckt. Jede ist ein Skript, kein Bild: Ein festgelegter Zufall schnitzt die Linien des Himmels, die Rasterpunkte und die Sterne bei jedem Build gleich, ein Turbulenzfilter gibt dem Papier sein Korn, und die pinke Platte wird multipliziert gedruckt, sodass sie nur dort erscheint, wo das Indigo Papier gelassen hat. Die Namen stehen als Text auf der Karte, damit sie zwischen Deutsch und Englisch wechseln.
Die Seite druckt in denselben Farben: Folios Tokens zeigen auf das Papier und das Indigo, und jede Nacht eines Spiels macht die Seite zur Nacht, egal welches Thema eingestellt ist, mit Sternen und Nebel auf einem Canvas. Einbruch der Nacht, Morgengrauen und Urteil spielen als Momente über allem, und die Klänge entstehen mit Web Audio im Moment. Im Videocall spielt sie jedes Gerät, am Tisch nur der große Bildschirm.
Von Bots gespielt
Die Regeln sind eine reine Zustandsmaschine ohne eigene Uhr, getestet mit festgelegtem Zufall: jede Rolle, jede Kette von Toden und jeder Weg zum Sieg. Bots machen zufällige, aber gültige Züge, mit etwas Verstand: Ein Wolf folgt der ersten Wahl des Rudels, und keiner drängt zur Abstimmung, bevor es ein Mensch getan hat. Sie füllen einen Tisch, um das Spiel allein auszuprobieren, und die Tests spielen mit ihnen ganze Partien bis zum Sieg. Die Oberfläche gibt es auf Deutsch und Englisch, sie folgt dem Thema des Systems, bis man eines wählt, und lässt sich auf den Home-Bildschirm legen.