ChipChain

ChipChain · Editie 2027

Handleiding voor begeleiders

Voor begeleiders en workshopleiders: een sessie voorbereiden en instellen, het spel leiden, nabespreken en de onderzoeksdata gebruiken.

Ontwikkeld doorVierTwee – Strategie & Onderzoek

ChipChain is een online supply-chain-spel over de chipketen van een elektrische auto. De spelers spelen elk één schakel (OEM, Tier-1, distributeur, OSAT, foundry) en zien alleen hun eigen cijfers. Het belangrijkste leerdoel: de schakels hangen van elkaar af. Door vertragingen, beperkte capaciteit en ontbrekende informatie ontstaat het bullwhip-effect: kleine schommelingen in de vraag worden verderop in de keten steeds groter.

Deze handleiding volgt de volgorde van een workshop: voorbereiden, de sessie instellen, spelen, nabespreken en de onderzoeksdata. Achter elke instelling staat tussen haakjes de naam waaronder die in session.json van de export staat.

Spel- en leerdoelen

Het spelsdoel

Elk team (een keten) probeert de totale kosten van de keten zo laag mogelijk te houden: voorraadkosten, achterstandskosten, de boete voor stilstand bij de OEM en de capex van de foundry. De ranglijst in het dashboard sorteert op die ketenkosten. Daarnaast toont hij de leverbetrouwbaarheid, het aantal weken stilstand en de bullwhip.

Spelers weten niet hoeveel weken het spel duurt. Zo voorkom je dat ze aan het eind hun voorraad laten leeglopen.

Leerdoelen

Na de workshop kunnen spelers:

  1. uitleggen hoe de schakels van een keten van elkaar afhangen. Een beslissing in één schakel heeft met vertraging effect op de andere schakels.
  2. het bullwhip-effect herkennen en verklaren. Ze kunnen het effect in de data aanwijzen (variantie van bestellingen neemt toe stroomopwaarts) en de oorzaken benoemen:
    • vertragingen in informatie en goederen;
    • lokale informatie: alleen de eigen cijfers;
    • de pijplijn onderschatten: vergeten wat onderweg is (Sterman, 1989);
    • overreageren op tekorten en vraagsignalen, en bij een gedeelde foundry shortage gaming: meer bestellen om een groter deel van de toewijzing te krijgen (Lee e.a., 1997).
  3. de bijzonderheden van de halfgeleiderketen benoemen en hun effect beschrijven: lange productiedoorlooptijd, beperkte capaciteit met trage en dure uitbreiding, onzekere yield, toewijzing bij tekort, en verstoringen (brand, exportrestricties, transport).
  4. reflecteren op hun eigen beslisgedrag en maatregelen voorstellen die de keten stabieler maken: informatie delen, kortere doorlooptijden, de pijplijn meetellen, afspraken over bestellingen en capaciteit.

Hoe het spel de leerdoelen ondersteunt

LeerdoelIn het spelIn de nabespreking
1. Afhankelijkheidweekverhaal met één verband in de keten; vertragingen uit sim.orderDelay en sim.transportDelaytijdlijn van één keten (Debrief, terugspelen)
2. Bullwhipstandaard classic-vraag; infoRegime op localbestellingen per rol tegenover de vraag; bullwhip in het dashboard
3. Chipketensim.foundryLeadTime, sim.capacity, yield, gebeurtenissen, gedeelde foundryrol van de foundry; wat gebeurde er na een gebeurtenis?
4. Reflectiereflectievragen aan het eind; tips (scaffolding)gespreksvragen in het Debrief-tabblad

Tip

Wil je één oorzaak laten zien, verander dan één instelling tussen twee teams of twee sessies. Speel bijvoorbeeld met infoRegime op local tegenover shared-demand: helpt het delen van de klantvraag? Of zet sim.mode op shared-foundry om toewijzing en shortage gaming te laten zien.

Voor de workshop

  • Inloggen: ga naar /admin. De begeleider die de server beheert geeft je een account via Begeleiders; alleen accounts met Mag begeleiders toevoegen kunnen nieuwe aanmaken. Wijzig daar ook je eigen wachtwoord.
  • Apparaten: spelers hebben een telefoon of laptop met internet nodig. Eén speler per rol; lege rollen speelt een bot.
  • Tijd: reken op 10 minuten uitleg en oefenrondes, 30–45 minuten voor 30–40 weken met een timer van 60–90 seconden, en 20–30 minuten nabespreking.
  • Presets: bovenaan het formulier kun je beginnen met een ingebouwd scenario (Klassiek, Chiptekort 2021, Geopolitiek, Seizoensvraag) of met een eigen opgeslagen preset. Een preset die je deelt, kunnen andere begeleiders ook gebruiken.

Tip

Maak vooraf een sessie zonder spelers. De bots spelen hem in een paar seconden uit, zodat je het dashboard, de debrief en de export alvast kunt bekijken.

Een sessie instellen

Kies Nieuwe sessie. Geef de sessie een naam en eventueel een seed (seed): met dezelfde seed en dezelfde beslissingen speel je precies hetzelfde spel opnieuw. Leeg laten geeft een willekeurige seed.

Spel

  • Modus (sim.mode): single geeft elk team een eigen keten met een eigen foundry. shared-foundry laat alle teams bij één foundry bestellen, zodat ze om capaciteit concurreren.
  • Aantal teams (teams): 1 tot 30 ketens die tegelijk spelen.
  • Lengte van de keten (sim.chainLength): 3 (OEM, OSAT, foundry), 4 (plus distributeur) of 5 (plus Tier-1).
  • Aantal rondes (sim.totalRounds): standaard 40. Spelers zien dit niet, zodat ze aan het eind niet anders gaan spelen.
  • Rondetimer (timerSeconds): seconden per week; 0 = geen timer (de ronde sluit als iedereen beslist heeft of als jij hem sluit). Standaard 90.
  • Informatie voor spelers (infoRegime):
    • local: alleen de eigen cijfers (de standaard, en de klassieke opzet van het spel);
    • shared-demand: ook de vraag van eindklanten;
    • full: ook voorraad, achterstand en bestellingen van de hele eigen keten.

Vertragingen

Alle vertragingen zijn in weken.

  • Vertraging orderinformatie (sim.orderDelay): hoe lang een bestelling onderweg is naar de leverancier. Standaard 1.
  • Transportvertraging (sim.transportDelay): hoe lang een levering onderweg is. Standaard 2.
  • Verwerkingstijd OSAT (sim.osatProcessingTime): assemblage en test. Standaard 2.
  • Productiedoorlooptijd foundry (sim.foundryLeadTime): van wafer start tot klare chips. Standaard 8.

Foundry

  • Allocatie (sim.allocation, alleen bij een gedeelde foundry): wie krijgt wat als er te weinig is. Achterstand wordt altijd eerst geleverd.
    • pro-rata: in verhouding tot de bestellingen;
    • fifo: oudste bestellingen eerst;
    • manual: de foundry-speler verdeelt zelf met schuifjes per team.
  • Capaciteit (sim.capacity): maximum aantal wafer starts per week. Standaard 12. Bij een gedeelde foundry geldt dit voor alle teams samen.
  • Vertraging nieuwe capaciteit (sim.capacityExpansionDelay): weken tot bijgekochte capaciteit bruikbaar is. Standaard 10.
  • Capex per capaciteitseenheid (sim.capexPerUnit): kosten per eenheid nieuwe capaciteit. Standaard 50.
  • Max. uitbreiding per week (sim.maxExpansionPerRound): standaard 20.
  • Yield minimum en maximum (sim.yieldMin, sim.yieldMax): de yield van elke batch ligt willekeurig (maar vast per seed) tussen deze grenzen. Standaard 85–95%.

Voorraad en kosten

  • Startvoorraad per rol (sim.initialInventory): standaard 12.
  • Pijplijnvulling per slot (sim.initialPipeline): bij de start zit er in elke week van de pijplijn al zoveel onderweg, zodat de keten in evenwicht begint. Standaard 4.
  • Maximale bestelling per week (sim.maxOrder): standaard 60.
  • Voorraadkosten (sim.costs.holding): per eenheid per week. Standaard 0,5.
  • Achterstandskosten (sim.costs.backlog): per eenheid per week. Standaard 1.
  • Boete lijnstilstand OEM (sim.costs.lineStop): per week dat de OEM niet alles kan leveren. Standaard 5.

Vraag van eindklanten

Het vraagscenario (sim.demand) bepaalt hoeveel auto's klanten per week kopen. Een grafiek laat het verloop zien.

  • classic: de klassieke opzet. Een vast niveau dat in één week omhoog springt (standaard van 4 naar 8 in week 5).
  • covid: een dip (de vraag zakt in), daarna een sterke opleving en een nieuw normaal.
  • seasonal: een golf rond een basisniveau, met een amplitude en een periode.
  • custom: je eigen reeks, ingetypt of als CSV geüpload. Is de reeks korter dan het spel, dan wordt de laatste waarde herhaald.

Willekeurige ruis (sim.demandNoise) voegt ± een aantal toe aan elke week. De ruis hangt aan de seed en is dus voor alle teams gelijk.

Geplande gebeurtenissen

Met Gebeurtenis toevoegen (sim.events) plan je verstoringen vooraf: soort, beginweek, duur en eventueel een team. Tijdens het spel kun je ze ook live toevoegen (zie Tijdens het spel).

  • fab-fire: brand in de fab. De capaciteit van de foundry is een tijd nul.
  • export-restriction: zendingen tussen twee rollen (standaard foundry → OSAT) worden tegengehouden; ze blijven in de achterstand staan.
  • yield-crash: wafers die in deze periode starten, krijgen een vaste lage yield (standaard 50%).
  • transport-delay: zendingen die in deze periode vertrekken, doen er extra weken over.

Spelers zien een actieve gebeurtenis als waarschuwing, en het weekverhaal vertelt erover. In oefenrondes gebeuren nooit gebeurtenissen.

Spelers en bots

  • Als een speler niet op tijd beslist (fallback): repeat herhaalt de vorige bestelling; bot laat een bot beslissen.
  • Botstrategie voor lege rollen (defaultBot):
    • naive: bestelt wat er binnenkwam;
    • anchor-adjust: het bekende gedragsmodel van Sterman (1989), dat de voorraad en de pijplijn maar half meeneemt, zoals mensen vaak doen;
    • base-stock: een nette voorraadregel die de pijplijn volledig meetelt.
  • Spelers zonder verbinding vervangen (autoBotAfterSeconds): na zoveel seconden offline neemt een bot de rol over; de speler krijgt de rol terug zodra hij weer verbonden is. 0 = nooit.
  • Chat tussen spelers (chat): none (geen), team (binnen het eigen team) of open (iedereen). Jij kunt altijd mededelingen sturen.

Instructie en verhaal

  • Oefenrondes (practice.rounds): 0 tot 5, standaard 2. Ze spelen in een aparte oefenwereld met dezelfde instellingen maar zonder gebeurtenissen, en tellen nergens mee. Een sessie met alleen bots slaat ze over.

  • Na de oefenrondes wachten op mijn startsignaal (practice.waitForFacilitator): standaard aan. Je kunt dan kort nabespreken voordat je het echte spel start. Staat het uit, dan begint het echte spel meteen.

  • Hulp voor spelers (scaffolding):

    • full: een korte tip de eerste keer dat iets gebeurt (welkom met de doorlooptijd, de pijplijn, een eerste achterstand, een verstoring, een eerste heel grote bestelling, een grote voorraad), plus uitleg bij de begrippen;
    • basic: alleen uitleg bij de begrippen, geen tips over wat je zou kunnen doen;
    • off: geen hulp.

    Het niveau bepaalt ook de rolkaarten die spelers voor het spel lezen. Elk niveau laat zien wie ze zijn, wat ze beslissen en waar ze op spelen: de score is wat de hele keten kost, wat een chipset op voorraad en een chipset tekort kosten, en wat ze kunnen zien. basic voegt een kaart toe die elk cijfer op hun scherm uitlegt; full ook "Zo stuur je": vier vragen voor elke week (wat wordt er besteld, hoe sta ik ervoor, wat komt er nog, hoeveel bestel ik) en de bekende valkuil van een achterstand wegbestellen.

    Welke tips een speler zag, staat bij elke beslissing in de data. Zo kun je in onderzoek niveaus vergelijken.

  • Weekverhaal (narrative.mode):

    • ai: een AI-verteller (Claude) schrijft elke week een kort verhaal per speler;
    • template: verhalen uit vaste zinnen;
    • off: geen verhalen.

Onderzoek

  • Informed consent vragen (consent.enabled): spelers zien eerst jouw tekst (consent.text) en moeten akkoord geven voordat ze kunnen spelen. Het tijdstip en de versie (consent.version) worden vastgelegd.

De keten in het spel

bestellingen →OEMTier-1DistributeurOSATFoundry← chips
Zo loopt de keten: bestellingen gaan naar boven (naar de fab), chips komen naar beneden (naar de auto). Elke stap kost tijd.
RolBedrijf (verzonnen)Beslist elke week
oemElvaro, Helmondhoeveel chipsets bestellen; ziet de vraag van klanten
tier1Moduvant, Eindhovenhoeveel chipsets bestellen
distributorDistrivolt, Tilburghoeveel chipsets bestellen
osatPakketron, Nijmegenhoeveel chipsets bestellen; verwerking kost extra weken
foundryEemsfab, Enschedehoeveel wafers starten (tot de capaciteit) en eventueel capaciteit bijkopen

Tijdens het spel

  1. Lobby. Laat de deelcode en het adres zien (rechtsboven in de regiekamer). Spelers melden zich aan met een naam. Wijs rollen toe per speler of met Willekeurig toewijzen. Spelers zien nu hun rolkaarten.
  2. Starten. Met Spel starten begint de eerste (oefen)week. Lege rollen speelt een bot.
  3. Oefenrondes. In de regiekamer staat "oefenen" bij elk team. Na de oefenrondes zien spelers een wachtscherm. Druk op Echte spel starten als je klaar bent. Met Oefenrondes nu beëindigen stop je eerder.
  4. Weken. Je ziet per team wie al beslist heeft, de voorraad, de achterstand, de laatste bestelling en de kosten per rol. Je kunt:
    • pauzeren en hervatten (de timer stopt);
    • de ronde nu sluiten (ontbrekende beslissingen worden aangevuld volgens fallback);
    • de timer aanpassen;
    • per rol wisselen tussen speler en bot.
  5. Gebeurtenissen live toevoegen. Kies een soort, beginweek en duur, voor alle teams of één team. Dat kan niet tijdens de oefenrondes.
  6. Chat. Stuur een mededeling aan iedereen of aan één team.
  7. Verteller. Het blok Verteller toont hoeveel verhalen door AI of uit sjablonen kwamen.

Let op

Staat Na de oefenrondes wachten op mijn startsignaal aan, dan blijven spelers na de oefenrondes op een wachtscherm staan tot jij op Echte spel starten drukt.

De server bewaart alles direct. Valt de server even weg, dan gaat het spel daarna verder in dezelfde week, met de beslissingen die al waren ingestuurd.

Nabespreken

  • Dashboard: ranglijst (kosten van de keten, leverbetrouwbaarheid, weken stilstand, bullwhip), en grafieken per rol. Je kunt de eerste weken (inloop) buiten de berekening laten.
  • Debrief: speel een keten week voor week opnieuw af, vergelijk teams, en zet de projectiemodus aan voor de beamer. Onderaan staan gespreksvragen om het gesprek mee te openen.
  • Spelers zien aan het eind een terugblik, hun eigen bestellingen naast de vraag, de hele keten en de kosten per rol. Daarna zijn er drie reflectievragen.

Een bruikbare volgorde voor het gesprek:

  1. Laat spelers raden hoe de klantvraag verliep.
  2. Toon de echte vraag.
  3. Toon de bestellingen per rol.
  4. Vraag waar het misging.

De AI-verteller

Na elke week schrijft de verteller per speler een korte scène van 3 tot 5 zinnen: een moment bij het eigen bedrijf, met de collega, en hooguit twee getallen (de rest staat op het dashboard). De scène maakt één verband in de keten tastbaar, bijvoorbeeld "de dozen van vandaag vertrokken in week 3 bij Distrivolt in Tilburg". Het verhaal geeft nooit advies en verraadt niets wat de speler niet mag zien. De vaste verhalen (modus template, en de terugvaloptie) volgen hetzelfde patroon met vaste zinnen.

Privacy

Het bericht aan het AI-model bevat alleen spelgegevens: de rol, de cijfers van die speler en zijn eerdere verhalen. Het bevat geen namen en geen chat.

  • Limiet: de server staat per sessie een maximum aantal AI-verhalen toe. Bereikt een sessie dat, dan schakelt ze automatisch over op sjablonen, en het blok Verteller meldt dat.
  • Zonder API-sleutel op de server komen alle verhalen uit sjablonen. Het blok Verteller meldt dat dan.
  • Verhalen die niet kloppen (bijvoorbeeld een getal dat niet in de feiten staat), een time-out of een fout vallen terug op het sjabloon. Het spel wacht nooit op de verteller.

Onderzoeksdata

Het tabblad Export geeft een ZIP met CSV-bestanden in long format, session.json (alle instellingen en de seed) en een codeboek. Spelers staan erin onder een pseudoniem. Namen staan er alleen in als je daar uitdrukkelijk voor kiest.

  • node_rounds_long.csv, decisions.csv, orders.csv, shipments.csv, events.csv, end_demand.csv, metrics.csv, chat.csv, players.csv;
  • narratives.csv: elk weekverhaal zoals getoond, met de feiten en de bron;
  • reflections.csv: de antwoorden op de reflectievragen.

Belangrijk voor de analyse:

  • Rijen uit de oefenrondes hebben practice = 1. metrics.csv gaat alleen over het echte spel.
  • visible_info in decisions.csv legt vast wat de speler zag toen hij besliste: de cijfers, het weekverhaal (id en bron), de oefenstatus en de tips.
  • Getypte tekst (chat, reflecties, namen) die begint met =, +, - of @ krijgt in de CSV-bestanden een ' ervoor, zodat Excel het niet als formule uitvoert. De JSON-export bevat de tekst precies zoals getypt.

Problemen oplossen

Een speler is zijn verbinding kwijt. Laat de pagina opnieuw openen; de speler komt terug in hetzelfde spel. Met autoBotAfterSeconds neemt een bot het tijdelijk over.

Een speler is er niet meer. Zet de rol op Bot in de teamtabel.

Spelers blijven op "De oefenrondes zijn klaar" staan. Druk op Echte spel starten in de regiekamer.

Een ronde blijft open. Iemand heeft nog niet beslist. Wacht, pas de timer aan of kies Ronde nu sluiten.

Er komen geen AI-verhalen. Kijk in het blok Verteller: geen API-sleutel, de AI-verhalen voor de sessie zijn op, of de modus staat op sjablonen.

ChipChain · Editie 2027 · Ontwikkeld door VierTwee · viertwee.comVierTwee – Strategie & Onderzoek