Een game maken met JumPHP
JumPHP is een framework om 2D-retrogames in PHP te schrijven. Dezelfde code draait op de desktop (PHP + SDL2, in een echt venster) en in de browser (PHP gecompileerd naar WebAssembly): daarmee werken alle games op deze site. Er zijn meerdere manieren om te beginnen, van de snelste tot de meest complete.
| Manier | Account | Wat je nodig hebt | Voor wie |
|---|---|---|---|
| Sandbox | nee | een browser | in 1 minuut uitproberen: een hello world aanpassen en starten |
| Met je eigen Claude | GitHub | Claude Code + Docker | je game beschrijven en hem laten schrijven, testen en publiceren |
| Online editor | GitHub | een browser | een gepubliceerde game bijwerken, of die van iemand anders forken |
| Op je computer | nee (GitHub om te publiceren) | Docker | ontwikkelen als een prof: tests, screenshots, browserbuild. In één regel: curl -fsSL https://jumphp.net/install.sh | sh |
| Een repository importeren | GitHub | een JumPHP-repository | een bestaande game hier publiceren |
| Amstrad CPC-remake | GitHub | de .dsk-diskette van de game |
een CPC-game opnieuw maken met zijn originele graphics en muziek |
| Een bestaande game porteren | GitHub | zijn broncode | een oude game (C, Pascal, BASIC…) naar PHP vertalen |
Daarna bouwen de tutorials stap voor stap een game:
- Hello world: een menu, een tekst, een geluid
- Een personage dat beweegt en animeert
- Een platformgame: level, botsingen, camera
- Geluid en muziek
- Menu's, opties, pauze en talen
- Scores en opties opslaan
- Online multiplayer
- De startpagina van de game en de publicatie
Is de game af: zet hem op Google Play (een Android-app, gemaakt met bin/jumphp twa).
En voor programma's die het overzicht willen lezen: de openbare API.
Hoe werkt een JumPHP-game
Een game is een map games/<id>/ van een JumPHP-project:
games/mon-jeu/
config/game.yaml de titel, de resolutie (320 × 180…), de eerste scène
config/input.yaml de acties (springen, schieten…) en hun toetsen, gamepad, touchscreen
src/Scene/*.php de schermen: de titel, de game, de pauze…
src/Entity/*.php alles wat beweegt: de held, de vijanden…
assets/ afbeeldingen, geluiden, muziek, levels (optioneel: alles kan in PHP worden getekend)
site/ (optioneel) de startpagina van de game
Elk beeld (60 keer per seconde) roept de engine update($dt) aan van de getoonde scène (je verandert de toestand
van de game) en daarna render($r) (je tekent). De coördinaten zijn “virtuele” pixels (de resolutie van de game):
de engine vergroot het beeld naar de grootte van het scherm.
Het volledige contract van het framework, voor mensen en AI's, is het bestand AGENTS.md in de JumPHP-repository.