Pong in a Favicon es un proyecto de programación que ejecuta una partida completa del clásico Pong dentro del favicon de la pestaña del navegador. El campo de juego es un cuadrado de 32×32 píxeles, el mismo tamaño de un favicon nítido, y la bola es un cuadrado de 3 píxeles. El jugador controla la paleta izquierda haciendo scroll con la rueda del ratón (arriba y abajo), mientras que la paleta derecha la mueve una inteligencia artificial con un límite de velocidad intencionadamente inferior al del jugador para que sea posible ganarle. La puntuación se muestra en el título de la pestaña.
La arquitectura del proyecto está dividida en módulos con responsabilidades claras. Un archivo de configuración central (settings.js) actúa como única fuente de verdad: todos los parámetros del juego (tamaño del campo, velocidad de la bola, efecto spin, frecuencia de refresco del favicon a 15 fps, velocidad máxima de la IA, etc.) se definen una sola vez y se derivan automáticamente tanto para el motor como para la tabla de documentación visible en la página. El motor (engine.js) implementa la física del juego de forma pura, sin tocar el DOM ni un canvas, lo que permite testearlo de forma aislada. La única capa que conoce la pantalla real es el rasterizador, que reconstruye la imagen del favicon a partir del estado del juego.
El proyecto incluye además 12 pruebas automatizadas que se ejecutan en el navegador y comprueban aspectos como el centrado inicial, el rebote en las paredes, la devolución con la paleta del jugador, el clamping de las paletas y la variación de velocidad de la bola en función de quién anota.
