Crear un juego con JumPHP
JumPHP es un framework para escribir juegos retro en 2D con PHP. El mismo código funciona en el escritorio (PHP + SDL2, en una ventana de verdad) y en el navegador (PHP compilado a WebAssembly): es lo que hace funcionar todos los juegos de este sitio. Hay varias formas de empezar, de la más rápida a la más completa.
| Forma | Cuenta | Qué necesitas | Para quién |
|---|---|---|---|
| Sandbox | no | un navegador | probar en 1 minuto: cambiar un hello world y ejecutarlo |
| Con tu Claude | GitHub | Claude Code + Docker | describir tu juego y dejar que Claude lo escriba, lo pruebe y lo publique |
| Editor online | GitHub | un navegador | retocar un juego publicado, o hacer un fork del de otra persona |
| En tu ordenador | no (GitHub para publicar) | Docker | desarrollar como un profesional: pruebas, capturas, build para navegador. En una línea: curl -fsSL https://jumphp.net/install.sh | sh |
| Importar un repositorio | GitHub | un repositorio JumPHP | publicar aquí un juego que ya existe |
| Remake de Amstrad CPC | GitHub | el disquete .dsk del juego |
rehacer un juego de CPC con sus gráficos y su música originales |
| Port de un juego existente | GitHub | su código fuente | traducir un juego antiguo (C, Pascal, BASIC…) a PHP |
Después, los tutoriales construyen un juego paso a paso:
- Hello world: un menú, un texto, un sonido
- Un personaje que se mueve y se anima
- Un juego de plataformas: nivel, colisiones, cámara
- Sonidos y música
- Menús, opciones, pausa e idiomas
- Guardar las puntuaciones y las opciones
- El multijugador online
- La página de inicio del juego y su publicación
Cuando el juego esté terminado: publicarlo en Google Play (una app de Android, creada con bin/jumphp twa).
Y para los programas que quieran leer el directorio: la API pública.
Cómo funciona un juego JumPHP
Un juego es una carpeta games/<id>/ de un proyecto JumPHP:
games/mon-jeu/
config/game.yaml el título, la resolución (320 × 180…), la primera escena
config/input.yaml las acciones (saltar, disparar…) y sus teclas, mando, pantalla táctil
src/Scene/*.php las pantallas: el título, el juego, la pausa…
src/Entity/*.php lo que se mueve: el héroe, los enemigos…
assets/ imágenes, sonidos, música, niveles (opcionales: todo se puede dibujar en PHP)
site/ (opcional) la página de inicio del juego
En cada fotograma (60 veces por segundo), el motor llama a update($dt) de la escena mostrada (se cambia el estado
del juego) y luego a render($r) (se dibuja). Las coordenadas son píxeles «virtuales» (la resolución del juego):
el motor amplía la imagen al tamaño de la pantalla.
El contrato completo del framework, tanto para humanos como para IA, es el archivo AGENTS.md del repositorio de JumPHP.