Capítulo 7 de 10 · 100 proyectos para hacer con tu coding agent

Juegos y gráficos (61-70)

Bucles de juego, física, un trazador de rayos y generación procedimental. Diez proyectos en los que el resultado se mueve por la pantalla.

6 min de lecturaActualizado el 8 de septiembre de 2026

Los juegos son probablemente el mejor terreno de práctica que existe. El fallo se ve, el feedback es inmediato y hay una cantidad absurda de matemáticas escondida en algo tan tonto como una pelota que rebota. Además, son los proyectos que más ganas dan de seguir.

61. Buscaminas con generación justa

Fácil de empezar, y con un detalle que lo hace interesante: el primer clic nunca puede ser una mina, y se pueden generar tableros que no obliguen a adivinar. Esa segunda parte tiene bastante más miga.

Implementa un buscaminas jugable en el navegador.

- Tres dificultades y tablero personalizado.
- El primer clic nunca es mina y siempre abre un área.
- Revelado en cascada iterativo (nada de recursión que desborde la pila).
- Opcional y lo más interesante: generador que garantiza tableros resolubles
  sin adivinar, comprobándolo con un solucionador lógico.
- Cronómetro, contador de banderas y mejores tiempos guardados.

62. Motor de física 2D

Círculos y cajas que chocan, rebotan y se apilan sin temblar. La parte difícil siempre es la resolución de contactos, y lo sabrás en cuanto la pirámide de cajas empiece a vibrar.

Escribe un motor de física 2D desde cero, sin librerías.

1. Integración de Verlet o semi-implícita con paso fijo.
2. Detección de colisiones: círculo-círculo, AABB y polígonos convexos con SAT.
3. Resolución de impulsos con restitución y fricción.
4. Fase amplia con quadtree para no comparar todo con todo.
5. Restricciones: articulaciones y cuerdas.

Escena de prueba: una pirámide de cajas que debe quedarse quieta.
Si tiembla, el resolutor está mal: arréglalo y explícame por qué pasaba.

63. Trazador de rayos en un fin de semana

Esferas, reflejos, materiales y una imagen que sale del código sin ninguna librería gráfica. Es el proyecto más satisfactorio de todo el capítulo, y creo que de toda la guía.

Construye un trazador de rayos que genere una imagen PPM/PNG.

- Cámara con posición, dirección y campo de visión configurables.
- Esferas y planos; materiales difuso, metálico y dieléctrico (vidrio).
- Antialiasing por muestreo, profundidad de rebotes limitada.
- Fuentes de luz y sombras suaves.
- Paralelizado por filas con todos los núcleos disponibles.

Mide el tiempo de render antes y después de paralelizar y de añadir
una jerarquía de volúmenes envolventes (BVH).

64. Generador de mazmorras procedimental

Una semilla, habitaciones, pasillos y una mazmorra distinta cada vez que siempre se puede completar. Lo de «siempre» es la parte que hay que garantizar.

Haz un generador de mazmorras procedimentales con visualización.

- Algoritmo a elegir y justificar: BSP, agentes excavadores o autómatas celulares.
- Garantía de conectividad: todas las salas alcanzables desde la entrada
  (verifícalo con un recorrido).
- Colocación de llaves y puertas respetando el orden de progresión.
- Semilla reproducible: la misma semilla da la misma mazmorra.
- Vista que permite regenerar y ver el grafo de conectividad.

65. Emulador de Chip-8

El primer emulador de casi todo el mundo. 35 instrucciones y de repente estás ejecutando juegos de los años setenta. Es la puerta de entrada a emular cosas más serias.

Implementa un emulador de Chip-8 completo.

- Las 35 instrucciones, registros, pila, temporizadores y teclado hexadecimal.
- Pantalla monocroma de 64x32 con la lógica XOR de sprites y el flag de colisión.
- Sonido con el temporizador correspondiente.
- Depurador: paso a paso, desensamblador y vista de registros y memoria.

Prueba con las ROMs de test conocidas y enséñame que pasan todas.

66. Juego de plataformas con buen “game feel”

Coyote time, buffer de salto, aceleración distinta en el aire y en el suelo. Son los detalles que hacen que un salto se sienta bien, y casi nadie sabe que existen hasta que los implementa.

Construye un juego de plataformas 2D centrado en las sensaciones.

Imprescindible:
- Salto con altura variable según cuánto mantengas el botón.
- Coyote time (~100 ms) y buffer de entrada del salto (~120 ms).
- Aceleración y fricción distintas en suelo y en aire.
- Detección de colisiones por barrido para no atravesar plataformas a alta velocidad.
- Cámara con adelanto y suavizado, sin marearse.

Expón todos esos parámetros en un panel para ajustarlos en caliente.

67. Multijugador en tiempo real con predicción

Dos jugadores, un servidor que manda y la latencia como enemigo. Predicción en el cliente y reconciliación cuando llega la verdad del servidor. Es de los problemas más elegantes de la programación de juegos.

Haz un juego multijugador sencillo (arena con movimiento y disparos)
con servidor autoritativo.

- El cliente envía entradas numeradas; el servidor simula y difunde estados.
- Predicción en el cliente y reconciliación al recibir el estado del servidor.
- Interpolación de entidades remotas con buffer de 100 ms.
- Compensación de retardo en los disparos.
- Simulador de latencia y pérdida de paquetes integrado, para probarlo.

Enséñame cómo se ve el movimiento con 200 ms de latencia, con y sin predicción.

68. IA para un juego de tablero

Minimax, poda alfa-beta y una función de evaluación que puedas explicar. Que te gane es parte del proceso y, la verdad, pasa antes de lo que esperas.

Escribe una IA para conecta 4 (o damas) y una interfaz para jugar contra ella.

- Minimax con poda alfa-beta y profundidad iterativa con límite de tiempo.
- Tabla de transposición con hashing Zobrist.
- Función de evaluación explicada término a término.
- Niveles de dificultad por profundidad y por ruido añadido.
- Modo análisis: muestra la evaluación de cada jugada posible.

Compara con una versión sin poda: nodos explorados y tiempo por jugada.

69. Editor de niveles con formato propio

Dibujas el nivel, lo guardas y lo carga el juego. Es el puente entre «tengo un motor» y «tengo un juego», y muchos proyectos se quedan justo antes de cruzarlo.

Crea un editor de niveles para un juego de tiles.

- Lienzo con capas (fondo, colisiones, entidades), pincel, relleno y selección.
- Paleta de tiles cargada desde un atlas de imágenes.
- Colocación de entidades con propiedades editables.
- Guardado en un formato JSON propio y documentado, con versión de esquema.
- Prueba dentro del editor: botón que arranca el juego en ese nivel.

Undo/redo ilimitado con un historial de comandos, no copiando el nivel entero.

70. Rasterizador de software en 3D

Sin GPU y sin OpenGL. Matrices, proyección, z-buffer y triángulos rellenados a mano. Cuando termines, la parte de la GPU que antes era magia pasará a ser simplemente rápida.

Implementa un rasterizador 3D por software, sin librerías gráficas.

- Pipeline completo: modelo -> vista -> proyección -> recorte -> pantalla.
- Relleno de triángulos con coordenadas baricéntricas y z-buffer.
- Iluminación Gouraud y Phong, texturas con corrección de perspectiva.
- Carga de modelos OBJ y una cámara orbital.

Escribe cada etapa de la matriz a mano y explícame qué hace la división
por w. Nada de copiar una librería de matemáticas sin entenderla.