Dwaalhof
Wegen naar Roem — een hofspel van wegen, worpen en negen huizen
- HTML
- CSS
- Vanilla JavaScript
- PWA
- Docker
Een lokaal hotseat-bordspel voor twee spelers: één toestel, om beurten, geen
server, geen account, geen internet. Open het en speel. Er is niets te
installeren — geen npm install, geen bundler, geen build-stap — en het spel
is te installeren als PWA, of te draaien met docker compose up.
De ijzeren wet van het project is nul externe netwerkrequests: geen CDN, geen webfont-stylesheet, geen remote afbeelding, geen analytics. De lettertypen staan in de repository, de iconen zijn SVG in de code, de geluiden zijn base64. Het spel moet in een vliegtuig precies hetzelfde doen als thuis.
Het doel
Verzamel het meeste Aanzien. Twee spelers sturen ieder drie pionnen over een wegennet dat er elke partij anders bij ligt, op zoek naar negen huizen. Een partij duurt zes rondes, dus twaalf beurten in totaal. Na de zesde ronde wint wie het meeste Aanzien draagt, en meer is de eindscore niet.
De vier grondstoffen zijn gereedschap, geen punten. Relaties kopen bereik in de loopfase en een hofambt. Reputatie laat je dobbelpool blijvend groeien. Geld koopt losse dobbelstenen en stichtingen. Gunst buigt een worp die er al ligt. Aan het eind leveren ze alle vier niets meer op — wie een berg grondstoffen overhoudt heeft gereedschap verzameld en er niets mee gebouwd.
Het bord
Een zeshoekig rooster met straal 5: 91 velden, elke partij opnieuw uitgehakt tot een onregelmatige kust, zodat het land als een eiland in zee ligt. Tien velden doen iets: het Stadsplein in het hart, waar alle zes pionnen beginnen, en negen huizen die elke partij verkassen — Gilde, Poorterij, Gasthuys, Bank, Molens, Brouwerij, Taverne, Kerk en Bibliotheek. Twee gebouwen liggen nooit naast elkaar.
Daartussen liggen geschudde padtegels — recht, bocht, T-splitsing, kruispunt — en die kun je tijdens het spel draaien. Wie het pad niet vindt, máákt het: de eerste draai van een tegel kost een stap, daarna is die tegel gratis. Eén of twee meren en twee tot vier bostegels zijn geen muren maar dure doorgangen: omlopen, eroverheen springen voor twee relaties, of een brug zoeken. Hoogstens twee bruggen per bord, en die draaien nooit.
Vier fasen per beurt
- Trekken — vier hofkaarten liggen open in een gedeelde markt; je neemt er één. Wat je laat liggen, ligt er voor je tegenstander.
- Lopen — werp twee dobbelstenen en verdeel de ogen als stappen vrij over je drie pionnen. Verplaatsen is een draft: niets is echt tot je bevestigt.
- Actie kiezen — voor elke pion die bij een huis staat leg je één van de twee handelingen daar vast. Er wordt nog niet geworpen.
- Werpen — één hofworp voor al je acties tegelijk, dan de worp buigen met gunst, dan kaarten activeren, dan afrekenen.
Twee wegen bij elk huis
Elk huis biedt precies twee keuzes, en het verschil zit in de munt.
De lage weg betaalt een grondstof en kent geen drempel. Hij levert altijd op; de worp bepaalt alleen hoeveel, en er komt nooit minder dan 1 uit. Hij vestigt bovendien een handelspost, die elke beurt inkomen geeft en de hoge weg op dat huis ontsluit.
De hoge weg betaalt Aanzien tegen een drempel: 9, 11 of 13, voor respectievelijk 1, 2 of 4 Aanzien. Haal je de drempel niet, dan levert de handeling 1 Gunst op als troost. Aanzien is de eindscore, en de eindscore hoort nooit gratis te zijn.
Omdat alle acties in een beurt dezelfde som lezen, haal je altijd een aaneengesloten stuk van de ladder: wie 13 gooit, haalt 11 en 9 vanzelf ook. Een beurt draait dus om hoe hoog je reikte, niet om welke actie lukte.
De dobbelstenen
Uitsluitend gewone zeszijdige, in twee worpen per beurt. De loopworp is vast twee stenen. De hofworp gebruikt je dobbelpool: twee aan het begin, drie vanaf 3 Reputatie, vier vanaf 7, vijf vanaf 12 en zes vanaf 18 — meer kan niet. Voor één worp kun je er stenen bij kopen met geld, uitsluitend vóór je gooit.
Met Gunst mag je de worp buigen nadat de stenen liggen: de laagste steen herwerpen (1 gunst), hem één hoger zetten (2), of er een steen bij gooien (3). Ten hoogste drie buigingen per worp, en nooit meer dan zes stenen.
Waar het van gemaakt is
Handgeschreven HTML, CSS en vanilla JavaScript. Geen framework, geen build,
geen package.json. De stijl is pen-en-inkt met aquarelwas op perkament:
bruinzwarte inkt, nooit puur zwart, en het lichtste vlak is perkament, nooit
wit. Alles op het bord is vector en code-gegenereerd, op één perkamenttextuur
en een handvol middeleeuwse platen na — die zijn publiek domein, en ze hangen
in deze zaal aan de wand.
In de zaal
- De dobbelstenen
- Alleen gewone zeszijdige, in twee worpen per beurt. De loopworp is altijd twee stenen; de ogen zijn je stappen en die verdeel je vrij over drie pionnen. De hofworp gebruikt je dobbelpool: twee aan het begin, meer naarmate je Reputatie groeit, maximaal zes. Die ene worp rekent al je acties tegelijk af. Met Gunst mag je hem ná de worp nog bijsturen — de laagste steen opnieuw gooien, hem één hoger zetten, of er een steen bij gooien.
- De hofmarkt
- Vier kaarten liggen open, gedeeld door beide spelers, en aan het begin van je beurt neem je er één. Wat je laat liggen, ligt er voor je tegenstander: nemen is ook ontzeggen. Naast de kaarten ligt een tweede rij met opdrachten — de voorste is gratis, elke plek dieper kost een Relatie. Een kaart activeer je pas ná de worp, tegen een vaste kost in ogen die van diezelfde som afgaat.
- Het bord
- Een zeshoekig raster van 91 velden, elke partij opnieuw uitgehakt tot een eigen kust. Tien velden doen iets: het Stadsplein in het hart, waar alle zes pionnen beginnen, en negen huizen die elke partij verkassen. Daartussen liggen geschudde padtegels — recht, bocht, T-splitsing, kruispunt — en die draai je tijdens het spel zelf om. Ligt er geen pad waar je heen wilt, dan draai je er een naartoe. Meren en bostegels zijn geen muren maar dure doorgangen: omlopen, overheen springen, of een brug zoeken.
- De handschriften
- Drie bladen liggen hier in de vitrine; twee andere hangen aan de wand. Ze zijn alle vijf publiek domein, en alle vijf gebruikt het spel ze zelf. Wat hieronder staat gaat over de bladen zelf — waar ze vandaan komen en wat erop te zien is. Wat het spel ermee doet staat er als laatste bij. Roundel Bible moralisée, 13e eeuw. Publiek domein. Een bijbel moralisée is een prentenbijbel, en wel een met een vast recept: elke bladzijde zet medaillons onder elkaar in twee kolommen, steeds een bijbelscène met daaronder de moralisatie — wat dat tafereel voor de lezer betekent. Dit is zo'n uitlegmedaillon, niet de scène zelf. Op een gouden grond omhelzen twee paren elkaar. Achter hen staan twee duivels: een kleine gehoornde die iets omhoog houdt, en een grotere met een ezelskop in een rode mantel die zich over het rechterpaar heen buigt. Die duivels horen niet bij het verhaal en niemand in het beeld ziet ze. Ze zíjn de uitleg: ze staan erbij om te zeggen wát die omhelzing is — begeerte die van buitenaf wordt ingefluisterd. Dat is de standaardgreep van het genre, en het is de reden dat zulke medaillons zo vol duivels staan. Uit welk handschrift dit blad komt, is niet vastgelegd. Er bestaan meerdere dertiende-eeuwse bijbels moralisées, en de bron van dit fragment is niet met het bestand meegekomen. In het spel is dit de prent bij de hofkaarten die je tegenstander raken: het venijn komt van opzij. Marginalia Dertiende- of veertiende-eeuws handschrift, verluchter onbekend. Publiek domein. In de marge naast een blauwe initiaal ligt een wezen met het achterlijf van een dier — bruin, met klauwen en een lange staart — en daaraan vast een menselijke arm in een blauwe mouw, met de wijsvinger uitgestoken. Twee dingen komen hier samen. Het wezen is een drolerie: de half-beest-half-iets-anders figuren die verluchters in de marges tekenden, bezig met dingen waar de tekst niets over zegt. Vaak is dat het enige spoor van de humor van de tekenaar in een verder plechtig boek. De wijzende hand is een manicula, het “hier moet je zijn” van de middeleeuwse lezer — met de hand in de marge bijgetekend, en de voorloper van het pijltje voor een opsomming. Hier zijn ze één figuur geworden: de aanwijzer heeft een lijf gekregen. Ook van dit blad is de bron niet bewaard. In het spel staat het naast het register van het regelboekje, waar een wijzende vinger nog steeds doet wat hij deed. Zeeslang Olaus Magnus, Carta Marina, Venetië 1539. Publiek domein. Een rode slang kronkelt om een schip heen en heft zijn kop boven het dek. Ernaast ligt een tweede monster als een gekamde krokodil; verderop varen twee schepen langs de kust van “Hegalandia, terra nobilium”, en in het water staat een dieptepeiling. De rechte lijnen die het zeevlak doorkruisen zijn kompaslijnen, waarop een stuurman zijn koers uitzette. Olaus Magnus was een verdreven Zweedse aartsbisschop, en de Carta Marina is de eerste gedetailleerde kaart van de Noordse landen. De monsters erop zijn geen versiering en ook geen grap. Hij bedoelde ze als waarschuwing en gaf er een aparte sleutel bij uit waarin elk beest afzonderlijk wordt uitgelegd. Verhalen van zeelui over walvissen, inktvissen en walrussen kwamen langs die weg als monsters op de kaart terecht: dit is hoe je in 1539 op een kaart zet dat een stuk zee gevaarlijk is. In het spel zijn de zeemonsters in de meren van het bord naar deze tekening gemaakt.
- Het regelboekje
- Het volledige hofreglement zit in het spel zelf, als een verlucht perkamenten blad met register, initialen en echte spelfragmenten als illustratie. Dertien hoofdstukken: doel, materiaal, voorbereiding, de vier fasen, de negen huizen, de hofgebeurtenissen, de hofkaarten, het hof, en de eindtelling. Wat hier op de wanden staat is de samenvatting waarmee je aan tafel kunt; de pagina onder deze zaal draagt de rest.
- Vier fasen, zes rondes
- Elke beurt doorloopt vier vaste fasen, altijd in dezelfde volgorde: trekken, lopen, actie kiezen, werpen. Bij elk huis waar een pion staat kies je één van twee wegen. De lage weg betaalt een grondstof en kent geen drempel; de worp bepaalt alleen hoeveel. De hoge weg betaalt Aanzien tegen een drempel van 9, 11 of 13, voor 1, 2 of 4 — mis je die, dan levert het 1 Gunst op. Na zes rondes wint wie het meeste Aanzien heeft. Relaties, Reputatie, Geld en Gunst leveren aan het eind niets meer op: dat is gereedschap, geen score.
- Het harnas
- Geen historisch voorwerp maar zaaldecor, hier ter plaatse opgebouwd uit eenvoudige vormen. Het staat er omdat deze zaal middeleeuws is aangekleed; het spel zelf kent geen ridders. Wat hier wél echt en middeleeuws is, hangt aan de wand en ligt in de vitrine.
- De zeeslang
- Acht en een halve meter, van de zaalbalken gehangen zoals een natuurhistorisch museum een walvis hangt. Hij komt van de Carta Marina van Olaus Magnus, Venetië 1539 — het blad ligt in de vitrine — en van daaruit langs het spel hierheen: de zeemonsters in de meren van het bord zijn naar diezelfde tekening gemaakt. Op de kaart is hij twee centimeter groot en ligt hij gekronkeld om een schip. Hier is hij op de maat gebracht die Olaus er zelf bij schreef. Vermiljoen over een bleke buik en een rij losse stekels over de rug: dat is hoe de kaart hem kleurt, en het is de reden dat de rug geen doorlopende kam heeft. Verder is er niets echts aan — hij is hier ter plaatse gebouwd uit één gebogen buis. Het echte is de prent waar hij vandaan komt.
Aan de wand en in de vitrine

Hoofse scène — Codex Manesse, Zürich, ongeveer 1300–1340. Universiteitsbibliotheek Heidelberg, Cod. Pal. germ. 848. Publiek domein. Een vrouw in een met bont gevoerde mantel houdt een schoothondje vast en reikt haar hand aan een man die voor haar knielt; hij heeft zijn handen geheven om de hare te ontvangen. Dat gebaar is geleend. Knielen met geheven handen tussen de handen van een ander is de handgang, waarmee een leenman trouw zwoer aan zijn heer. De minnelyriek nam het hele gebaar over: de dichter dient zijn vrouwe zoals een man zijn heer dient. Het is dus een eed, geen flirt — en de vrouw staat, terwijl hij knielt. De rest van het beeld zegt hetzelfde. Het hondje is een vast attribuut van een vrouw van stand, en de rozenstruik die tussen hen omhoog groeit is de bloem van de minne. Achter de figuren schemert het Middelhoogduitse vers door het perkament heen. De Codex Manesse is de grootste bewaarde verzameling Middelhoogduitse liedkunst: 137 paginagrote miniaturen, één per dichter, elk met zijn wapen. Welke dichter op dit blad staat is bij dit fragment niet vastgelegd. In het spel opent hiermee het naamscherm: “Wie treedt aan het hof?” 
Vechtscène — Codex Manesse, Zürich, ongeveer 1300–1340. Universiteitsbibliotheek Heidelberg, Cod. Pal. germ. 848. Publiek domein. Vijf mannen met getrokken zwaarden dringen op tegen één man in het midden. Zij dragen gewatteerde kappen, hij niet; zijn haar zit los, zijn handen gaan naar zijn hoofd, en zijn eigen dolk hangt nog aan zijn gordel — hij heeft niet getrokken. Eén zwaard staat al geheven boven hem, twee anderen hebben zijn armen vast. Dat is geen tweegevecht en geen toernooi. Die tekent dit handschrift met harnas, helm en wapenschild, en met twee gelijke partijen. Hier is de hele opzet de ongelijkheid: vijf tegen één, en het ogenblik vlak voor de laatste slag. In het spel sluit hiermee het eindscherm af, boven de eindstanden. Zes rondes strijd om het hof, hier beslecht. 
Roundel — Bible moralisée, 13e eeuw. Publiek domein. Een bijbel moralisée is een prentenbijbel, en wel een met een vast recept: elke bladzijde zet medaillons onder elkaar in twee kolommen, steeds een bijbelscène met daaronder de moralisatie — wat dat tafereel voor de lezer betekent. Dit is zo'n uitlegmedaillon, niet de scène zelf. Op een gouden grond omhelzen twee paren elkaar. Achter hen staan twee duivels: een kleine gehoornde die iets omhoog houdt, en een grotere met een ezelskop in een rode mantel die zich over het rechterpaar heen buigt. Die duivels horen niet bij het verhaal en niemand in het beeld ziet ze. Ze zíjn de uitleg: ze staan erbij om te zeggen wát die omhelzing is — begeerte die van buitenaf wordt ingefluisterd. Dat is de standaardgreep van het genre, en het is de reden dat zulke medaillons zo vol duivels staan. Uit welk handschrift dit blad komt, is niet vastgelegd. Er bestaan meerdere dertiende-eeuwse bijbels moralisées, en de bron van dit fragment is niet met het bestand meegekomen. In het spel is dit de prent bij de hofkaarten die je tegenstander raken: het venijn komt van opzij. 
Marginalia — Dertiende- of veertiende-eeuws handschrift, verluchter onbekend. Publiek domein. In de marge naast een blauwe initiaal ligt een wezen met het achterlijf van een dier — bruin, met klauwen en een lange staart — en daaraan vast een menselijke arm in een blauwe mouw, met de wijsvinger uitgestoken. Twee dingen komen hier samen. Het wezen is een drolerie: de half-beest-half-iets-anders figuren die verluchters in de marges tekenden, bezig met dingen waar de tekst niets over zegt. Vaak is dat het enige spoor van de humor van de tekenaar in een verder plechtig boek. De wijzende hand is een manicula, het “hier moet je zijn” van de middeleeuwse lezer — met de hand in de marge bijgetekend, en de voorloper van het pijltje voor een opsomming. Hier zijn ze één figuur geworden: de aanwijzer heeft een lijf gekregen. Ook van dit blad is de bron niet bewaard. In het spel staat het naast het register van het regelboekje, waar een wijzende vinger nog steeds doet wat hij deed. 
Zeeslang — Olaus Magnus, Carta Marina, Venetië 1539. Publiek domein. Een rode slang kronkelt om een schip heen en heft zijn kop boven het dek. Ernaast ligt een tweede monster als een gekamde krokodil; verderop varen twee schepen langs de kust van “Hegalandia, terra nobilium”, en in het water staat een dieptepeiling. De rechte lijnen die het zeevlak doorkruisen zijn kompaslijnen, waarop een stuurman zijn koers uitzette. Olaus Magnus was een verdreven Zweedse aartsbisschop, en de Carta Marina is de eerste gedetailleerde kaart van de Noordse landen. De monsters erop zijn geen versiering en ook geen grap. Hij bedoelde ze als waarschuwing en gaf er een aparte sleutel bij uit waarin elk beest afzonderlijk wordt uitgelegd. Verhalen van zeelui over walvissen, inktvissen en walrussen kwamen langs die weg als monsters op de kaart terecht: dit is hoe je in 1539 op een kaart zet dat een stuk zee gevaarlijk is. In het spel zijn de zeemonsters in de meren van het bord naar deze tekening gemaakt. 
Het bord — Schermafdruk uit het spel: de loopfase, met de goudgloeiende zetvakken en de draaiknopjes rond het Stadsplein. Het bord wordt elke partij opnieuw gegenereerd, dus geen twee schermafdrukken tonen hetzelfde land. 
Trekken — Fase 1. Vier hofkaarten liggen open; je neemt er één. 
Lopen — Fase 2. De loopworp, vrij verdeeld over drie pionnen — op een telefoon, waar het spel voor gebouwd is. 
Werpen — Fase 4. De geworpen stenen, de sommen en de afhandeling per actie. 
Het hofreglement — De spelregelpagina in het spel zelf: een verlucht blad met register, initialen en echte spelfragmenten.