Bronnen

(Inhoud volgt; deze sectie wordt later ingevuld.)

13 juni 2026, 13:30

Subsecties van Bronnen

Gratis assets

Je game ziet er meteen professioneler uit met goede sprites, geluidseffecten en muziek, en het hoeft je niets te kosten. Hieronder vind je de beste plekken om gratis assets te zoeken, netjes gesorteerd per categorie.

Sprites & tilesets

  • Kenney.nl: De absolute aanrader. Kenney maakt honderden sprite-packs, tilesets en UI-elementen, allemaal vrijgegeven als CC0 (publiek domein). Je hebt geen attributie nodig en je mag alles ook in commerciële projecten gebruiken. Begin hier.
  • OpenGameArt.org: Grote community met sprites, tilesets en animaties in allerlei stijlen. Let wel op de licentie per asset: sommige zijn CC0, andere CC-BY of CC-BY-SA. Filter op licentie zodat je geen verrassingen krijgt.
  • itch.io gratis game-assets: Veel indie-artiesten zetten gratis packs op itch.io. De kwaliteit varieert, maar er zitten echte pareltjes tussen. Kijk altijd naar de licentietekst op de pagina van de maker.

Geluidseffecten

  • Freesound.org: Enorme bibliotheek met geluidseffecten van over de hele wereld. Filter in de zoekresultaten op “Creative Commons 0” om alleen CC0-geluiden te zien, dan hoef je niemand te crediten.
  • Kenney audio packs: Ook voor geluid levert Kenney kant-en-klare CC0-packs: retro-geluiden, UI-klikjes, explosies, alles in één download.
  • sfxr.me: Genereer je eigen 8-bit geluidseffecten in de browser. Klik op een categorie (laser, explosion, powerup…), pas de sliders aan naar jouw smaak en download de .wav. Geen licentiezorgen: je genereert het zelf.

Muziek

  • Incompetech: Kevin MacLeod componeerde honderden nummers in alle genres, van chiptune tot orkest. De muziek is gratis te gebruiken onder CC-BY: je vermeldt gewoon “Music by Kevin MacLeod (incompetech.com)” ergens in je credits of README.
  • Pixabay music: Tracks die als CC0 of met een eigen vrije licentie zijn vrijgegeven. Je hoeft niets te crediten en je mag het in elk project gebruiken.

Lettertypen

  • Google Fonts: Duizenden open-source lettertypen die je gratis mag downloaden en gebruiken, ook in games. Wil je een retro-uitstraling? Zoek op “pixel” of “monospace” voor lettertypes die goed werken in Pygame (pygame.font.Font).

Licenties uitgelegd

Niet alle “gratis” assets zijn gelijk. Dit zijn de drie licenties die je het vaakst tegenkomt:

LicentieMag je gebruiken?Attributie nodig?Commercieel gebruik?
CC0JaNeeJa
CC-BYJaJa, vermeld de auteurJa
CC-BY-NCJaJaNee

Praktisch advies: Als je twijfelt, gebruik dan CC0. Je hebt geen toestemming nodig, je hoeft niemand te crediten en je loopt nooit het risico per ongeluk de regels te overtreden. Kenney.nl is je beste vriend.


Bekijk hoe wij assets in dit project documenteren op de pagina Asset-licenties.

13 juni 2026, 13:30

Asset-licenties (dit project)

De meeste assets zijn CC0 (publiek domein). Uitzonderingen staan vermeld in de tabel met licentie en verplichte credit-tekst.

Images

BestandBronLicentieAuteurDatum gedownload
basket.pngKenney Space Shooter ReduxCC0Kenney (kenney.nl)2026-05-11
star.pngKenney Space Shooter ReduxCC0Kenney (kenney.nl)2026-05-11
ship.pngKenney Space Shooter ReduxCC0Kenney (kenney.nl)2026-05-11
challenges/01-snake/fruits/*.png (9 stuks)Kenney Food KitCC0Kenney (kenney.nl)2026-05-24

Bestanden staan in static/_shared/images/ en zijn beschikbaar op het gepubliceerde URL-pad /_shared/images/<bestandsnaam>.

Sounds

BestandBronLicentieAuteurDatum gedownload
shoot.wavCC02026-05-11
hit.wavCC02026-05-11
explosion.wavCC02026-05-11
pickup.wavCC02026-05-11
jump.wavCC02026-05-11
music.oggincompetech.comCC-BY 4.0Kevin MacLeod2026-05-17

Verplichte credit voor music.ogg

“Ethereal Relaxation” Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0
creativecommons.org/licenses/by/4.0

Hoe assets toe te voegen

  1. Download van een CC0-bron (kenney.nl, freesound.org filter Creative Commons 0).
  2. Plaats in static/_shared/images/ of static/_shared/sounds/.
  3. Werk een rij bij in de tabel hierboven met bron, licentie, auteur, datum.
  4. Voor niet-CC0 (bv. CC-BY): zet de credit-tekst onder de tabel.
20 juni 2026, 10:54

Publiceren met pygbag

Je hebt een gaaf spel gemaakt en nu wil je het delen met de rest van de wereld. Met pygbag zet je jouw Pygame-spel om in een webpagina die iedereen in de browser kan spelen. Geen installatie, geen gedoe. Gewoon een link sturen en klaar!

Wat is pygbag?

Pygbag compileert je Python-code naar WebAssembly en verpakt het met een kleine Pygame-runtime die in de browser draait. De speler hoeft niks te installeren: gewoon de pagina openen en spelen. Dat maakt het perfect om je spel te delen met vrienden, familie of op itch.io.

Beperkingen

Pygbag werkt niet met Pgzero (de vereenvoudigde bibliotheek van de eerste sessies). Je hebt echte Pygame nodig, dus dit is beschikbaar vanaf sessie 4 en later.

Verder zijn er een paar dingen die niet werken in de browser:

  • Geen schijftoegang: je kunt geen bestanden lezen of schrijven vanuit het spel.
  • Geen threads: gebruik geen threading of multiprocessing.
  • Geen blocking calls: alles moet asynchroon verlopen (zie hieronder).

Installeren

In een uv-project:

uv add pygbag

Of in Thonny via de pakketbeheerder:

pip install pygbag

Project klaarmaken

Pygbag vereist dat je hoofdlus asynchroon is. Dat betekent: je main-functie wordt async def main(), en in elke frame-iteratie voeg je await asyncio.sleep(0) toe. Die ene regel geeft de browser de kans om te ademen tussen frames.

Hieronder vind je een kant-en-klare basisstructuur: Pygbag-klare structuur voor main.py:

import asyncio
import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()

async def main():
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
        screen.fill((30, 30, 60))
        pygame.display.flip()
        clock.tick(60)
        await asyncio.sleep(0)  # required for pygbag

asyncio.run(main())

Pas je eigen spelcode aan zodat alles binnen async def main() zit, en vergeet await asyncio.sleep(0) onderaan de while-lus niet.

Bouwen

Navigeer in je terminal naar de map met main.py en voer uit:

uv run python -m pygbag --build main.py

De output verschijnt in de map build/web/. Die map bevat alles wat nodig is om je spel te hosten.

Lokaal testen

Wil je eerst zien of het werkt voordat je publiceert? Gebruik hetzelfde commando zonder --build:

uv run python -m pygbag main.py

Pygbag start een lokale webserver op http://localhost:8000. Open die link in je browser en je speelt je eigen spel, precies zoals anderen het zullen zien.

Publiceren

Als alles werkt, zijn er twee manieren om je spel te delen:

  1. Via de coach: zip de map build/web/ en geef het zipbestand aan je coach. Die zorgt voor de hosting.
  2. Via itch.io: maak een gratis account op itch.io, maak een nieuw project aan als HTML-game, en upload de zip van build/web/. Binnen een paar minuten heeft je spel een eigen pagina die iedereen kan bezoeken!

Gefeliciteerd! Je hebt zojuist een echt webspel gepubliceerd. 🎮

13 juni 2026, 13:30

Vertaalgids

Voor een toekomstige Engelse versie.

Dit curriculum is gepubliceerd in het Nederlands. Een Engelse versie is niet gepland voor v1, maar de inhoud is gestructureerd om vertaling eenvoudig te maken.

Wat niet vertalen

  • Code-identifiers (basket, star, ship, score) blijven Engels, want ze staan in het Python-bestand.
  • Bestandsnamen (star.png, boom.wav) blijven taalneutraal.
  • Domein-termen die we als leenwoorden gebruiken:
    • “ninja” (CoderDojo-term)
    • “dojo”
    • “cheatsheet”
    • “cliffhanger”
    • “Dojo Defender” (eigennaam van de huisgame)
    • “pygbag”, “Pgzero”, “Pygame”, “Thonny” (productnamen)

Wat wel vertalen

  • Alle prozatekst in .md files.
  • Cheatsheet-titels en sectie-koppen.
  • Coach-notities.
  • Take-it-home uitbreidingsideeën.

Hoe een Engelse mirror te starten

Niet gepland voor v1. Mogelijke toekomstige aanpakken:

  • Optie A: Hugo’s ingebouwde i18n: een tweede taal toevoegen in hugo.toml en <page>.en.md per pagina.
  • Optie B: sibling content tree content.en/ met dezelfde structuur.
  • Optie C: fork voor een Engelstalige dojo.

Beslis dit als er een Engelstalige dojo om vraagt, niet eerder.