✨ NIEUW

Workshop: Activerende werkvormen en AI

Meer informatie →
✨ NIEUW

Workshop: Ervaar de kracht van AI in een escaperoom

Meer informatie →
✨ NIEUW

Workshop: Iedereen kan computergames maken

Meer informatie →

Workshop Handout

Game Development met AI & Vibecoding

Van Idee naar Interactie: Programmeer zonder code te schrijven

Welkom! Vandaag ben je geen programmeur, maar een "Product Owner". Jij verzint het spelconcept, de AI bouwt de techniek ("Vibecoding"). We gaan dit doen in 5 niveaus, van simpel delen tot een werkende online database.

Opdracht 1:      Maak een spel                             (beginner)

Opdracht 1a:    Lokaal html-5 bestand              (beginner)

Opdracht 2:      Geheugen (local storage)         (semi-gevorderd)

Opdracht 3:      Publiceren op Github pages    (semi-gevorderd)

Opdracht 4:      Publiceer de ranglijst                 (gevorderd) 


Opdracht 1: Maak een spel

We beginnen simpel. Laat de AI een spel maken en deel de link direct via de tool zelf.

De Opdracht:

  • Ga naar je AI-tool (bijv. aistudio.google.com).
  • Typ een prompt zoals in de workshop besproken
    Denk aan:
    RTF ( Rol, Taak en Format >
        ervaren docent en programmeur, lesontwerp met criteria, één enkele          HTML5-file)
    Criteria: Bijvoorbeeld:
    •Onderwerp
    •Klas
    •Methode
    •Bloom niveau
    •Uitleg + toets?
Hier een voorbeeld prompt waar je zelf een paar variabelen kunt aanpassen:

DOEL: Genereer één compleet speelbaar educatief HTML5-spel (1 file) voor een les.

VARIABELEN (VUL IN):
- ONDERWERP:

- KLAS/LEEFTIJD/NIVEAU:
- METHODE:
- BLOOM (primair):
- DUUR: minuten
- CESUUR:
% (voldoende)

ROL
Je bent een ervaren docent/lesontwerper én een senior front-end developer.

TAAK
Bouw een motiverend microgame over ONDERWERP voor KLAS, passend bij METHODE en BLOOM.
Het spel moet didactisch kloppen en leuk zijn (5–10 minuten speelbaar).

DIDACTISCHE CRITERIA (moet zichtbaar in het spel zitten)
1) Leerdoelen: 3–5 concrete doelen in leerlingtaal.
2) Uitlegscherm: korte instructie + 1 worked example.
3) Oefenen: 3 levels (makkelijk/midden/moeilijk), samen minimaal 12 items.
4) Feedback: per item direct feedback + “waarom goed/fout”.
5) Hints/adaptief: bij 2x fout → extra hint + vereenvoudigde vraag.
6) Eindtoets: 5 items + score + of het >= CESUUR is + persoonlijk oefenadvies.
7) Docentinfo-knop: toont Onderwerp/Klas/Methode/Bloom + 3 veelvoorkomende misconcepten die je opvangt.

SPELCONCEPT
Kies een passend concept (quest/escape room/sorting/matching/battle) en werk uit met schermen:
Start → Uitleg → Level 1 → Level 2 → Level 3 → Eindtoets → Resultaat

TECHNISCHE EISEN
- EXACT één losse HTML5-file: alle HTML/CSS/JS in hetzelfde bestand.
- Geen externe libraries, geen externe assets; werkt volledig offline.
- Responsive (mobiel + laptop).
- Toetsenbordbediening (Tab/Enter + pijltjes waar logisch).
- Toegankelijk: duidelijke knoppen, goed contrast, optie “reduced motion”.
- Voeg bovenin de HTML een korte comment toe met: “hoe te openen”, en welke variabelen zijn gebruikt.

FORMAT (HEEL BELANGRIJK)
- Output ALLEEN de complete HTML-code.
- Start direct met:
- Geen uitleg buiten de code.
- Controleer voordat je output geeft: geen externe links/scripts, geen ontbrekende functies, geen syntax errors.

  • Bekijk het resultaat in het voorbeeldvenster. En test het.
    Je kunt nu eventueel stap voor stap om uitbreidingen vragen.
  • Geef aan wat je anders wilt, totdat je tevreden bent.
  • Klik op de Share/Delen knop van de AI-tool en stuur de link naar je buurman/buurvrouw.
Voordeel: Supersnel (binnen 30 sec) en direct speelbaar. Nadeel: De link is vaak tijdelijk en je hebt geen controle over de bestanden.

Opdracht 1a: Lokaal HTML5 bestand

Je kunt  je spel gana downloaden om het lokaal beschikbaar te maken als je wilt.Je kunt deze stap ook overslaan als jet het voor nu wel best vindt dat het spel via de share link gedeeld wordt.

Het spel "van ons" maken.
We halen de code uit de AI en zetten het op onze eigen computer.

De Opdracht:

  1. Vraag de AI: "Geef me de volledige code van dit spel in één enkel HTML-bestand."
  2. Klik op de knop Copy Code.
  3. Open Kladblok (Windows) of een teksteditor.
  4. Plak de code en sla het op als mijnspel.html (kies "Alle bestanden" bij opslaan).
  5. Zoek het bestand op in je map en dubbelklik erop om te spelen.
Voordeel: Het bestand is echt van jou en werkt ook zonder internet. Nadeel: Lastig te delen. Als je het mailt, blokkeren virusscanners het vaak.

Stap 2: Het Geheugen (Local Storage)

Spelers balen als hun highscore verdwijnt na een refresh. We bouwen een "lokaal geheugen" in.

De Opdracht:
Vraag de AI om je vorige spel aan te passen met deze prompt:

"Pas het spel aan. Ik wil dat de highscore wordt onthouden, ook als ik de pagina ververs of de browser afsluit. Gebruik hiervoor LocalStorage. Zorg ook dat de huidige score en de highscore allebei duidelijk in beeld staan."

Sla de nieuwe code weer op (overschrijf mijnspel.html) en test het door de pagina te verversen (F5).

Voordeel: Supersnel, gratis en geen ingewikkelde server nodig. Nadeel: De score staat alleen op jouw apparaat. Je kunt het niet delen met je vrienden of een docent.

Stap 3: De Showroom (GitHub Pages) 

We gaan ons lokale bestand nu professioneel "hosten" zodat de hele wereld erbij kan via een echte link.We zijn dan niet meer afhankleijk van de share-options van aistudio of chatgpt, etc. 
Ook als AI niet een enkel html file heeft gemaakt maar een hele rits van bestanden heeft gegenereerd, waaronder index.html, kun je die vaak allemaal op GitHub kwijt. 

De Opdracht:

  1. Voorbereiden: Maak een bestand mijnspel.html
    Als je het index.html noemt kun je er later makkelijker naartoe verwijzen.
  2. Uploaden: Maak een account/log in op GitHub.com en maak een nieuwe Repository (groene knop 'New'). Geef het een naam (bijv. 'mijn-games').
  3. Slepen: Klik op 'Uploading an existing file' en sleep je index.html erin. Klik op 'Commit changes'.
  4. Activeren:
    • Ga in je repository naar Settings (bovenin).
    • Klik in het linkermenu op Pages.
    • Zet onder 'Branch' de selectie op main en klik op Save.
  5. Wacht 1 minuut en ververs de pagina. Je ziet nu je eigen wereldwijde link!
    Als je het spel index.html hebt genoemd kun je met deze link je spel openen, anders moet je achter de link nog mijnspel.htmll typen ( als dat de naam van je spel is natuurlijk ;))
Voordeel: Een professionele link die altijd en overal werkt (ook op mobiel van leerlingen). Nadeel: Je project is "Open Source". Iedereen op internet kan jouw bestanden vinden, downloaden en hergebruiken..

Stap 4: Publiceer de ranglijst (gevorderd

Voor de pro's! Nu je spel online staat, willen we ook dat de scores online gedeeld worden. Je kunt als docent zien of lje leerlingen het spel gespeeld hebben. We koppelen Google Sheets.

Stap A: De Database voorbereiden

  1. Maak een nieuwe Google Sheet (typ sheet.new in je browser).
  2. Noem het tabblad onderin Scores.
  3. Zet in cel A1: Naam en in cel B1: Score.
  4. Ga in het menu naar Extensies > Apps Script.

Stap B: De "Brug" bouwen
Verwijder alle tekst in het code-venster en plak onderstaande code erin:

function doGet(e) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Scores');
  const params = e.parameter;
  
  // Actie 1: Data opslaan (set)
  if (params.action === 'set') {
    sheet.appendRow([params.naam, params.score, new Date()]);
    return ContentService.createTextOutput(JSON.stringify({result: 'success'})).setMimeType(ContentService.MimeType.JSON);
  }
  
  // Actie 2: Data ophalen (get)
  if (params.action === 'get') {
    const data = sheet.getDataRange().getValues();
    data.shift(); // Header rij verwijderen
    // Sorteer van hoog naar laag op kolom B (score)
    data.sort((a, b) => b[1] - a[1]); 
    // Pak de top 10
    const top10 = data.slice(0, 10).map(row => ({naam: row[0], score: row[1]}));
    return ContentService.createTextOutput(JSON.stringify(top10)).setMimeType(ContentService.MimeType.JSON);
  }
}
  1. Klik op het Save icoon (Opslaan).
  2. Klik op de blauwe knop Implementeren (Deploy) > Nieuwe implementatie.
  3. Klik op het tandwiel ⚙️ > Web-app.
  4. ZEER BELANGRIJK: Zet 'Wie heeft toegang' op: Iedereen (Anyone).
  5. Klik op Implementeren en kopieer de Web App URL.

Stap C: De "Vibecoding" Prompt
Ga terug naar je AI en geef deze specifieke prompt. Vervang de URL met die van jou!

"Bouw het spel om zodat de scores online worden opgeslagen in mijn Google Sheet. Ik heb al een API script opgezet.

Hier is mijn Web App URL: [PLAK HIER JE GEKOPIEERDE URL]

Gebruik deze logica:
1. Om scores op te halen: GET request naar URL + ?action=get
2. Om scores op te slaan: GET request naar URL + ?action=set&naam=SPELERNAAM&score=PUNTEN

Zorg dat ik bij 'Game Over' mijn naam kan invullen en toon daarna de Top 10 lijst die je ophaalt."

Meer info over Vibecoding >>