RESUMEN
Práctica con la librería Raylib y modernización del ecosistema en C++.
Pong nació como un proyecto de práctica y aprendizaje enfocado en explorar la biblioteca gráfica moderna Raylib y actualizar mi flujo de desarrollo en C++ hacia herramientas y dependencias contemporáneas.
Para lograrlo de forma integral, reconstruí el clásico juego de tenis de mesa arcade prescindiendo de motores comerciales (como Unity o Unreal). Esto me permitió dominar la arquitectura básica de un videojuego a 60 FPS: bucle de eventos estructurado, física con transferencia de inercia, un oponente con inteligencia artificial heurística y un diseño reactivo adaptable a cualquier pantalla.
- Lenguaje CoreC++
- Librería GráficaRaylib
- PropósitoPráctica & Modernización
- CompatibilidadMultiplataforma (Linux & Windows)
Motores Externos
Física y Colisión Propia
Windows & Linux

ARQUITECTURA Y PATRONES
Bucle de juego determinista, modularidad y diseño orientado a objetos.
El ciclo de vida del juego sigue la arquitectura canónica de un Game Loop, dividido en cuatro fases ordenadas que se ejecutan 60 veces por segundo:
1. Entrada de Usuario: captura de controles del teclado y eventos de cambio de tamaño de ventana.
2. Actualización de Estado: cálculo de trayectorias de la pelota y decisiones de movimiento del rival.
3. Verificación de Colisiones: resolución de rebotes en paredes y palas con intercambio de inercia.
4. Canal de Renderizado: dibujado secuencial del campo, marcador digital y entidades en pantalla.
El diseño aprovecha los principios de la Programación Orientada a Objetos (POO): la paleta controlada por la computadora reutiliza la geometría física y límites de movimiento de la paleta del jugador mediante herencia limpia, sustituyendo únicamente los controles manuales por un algoritmo de seguimiento inteligente.
Cada elemento de la escena (campo de juego, marcador de puntos y entidades móviles) se encuentra completamente aislado, lo que facilita realizar modificaciones visuales o de reglas sin afectar el resto de subsistemas.
FUNCIONALIDADES CORE
Física con transferencia de inercia, rival con IA adaptativa y soporte dinámico de pantalla.
Transferencia de Inercia en Paletas: A diferencia de las versiones tradicionales donde los rebotes tienen ángulos fijos y predecibles, el motor evalúa el movimiento de la paleta al momento del impacto. Si el jugador golpea la bola mientras se mueve hacia arriba o hacia abajo, transfiere ese impulso a la pelota, permitiendo ejecutar tiros con efecto y mayor velocidad angular que premian la habilidad del jugador.
Inteligencia Artificial con Ritmo Humano: El oponente controlado por la computadora evita ser una máquina perfecta e invencible. Su seguimiento solo se activa cuando la pelota se dirige hacia su campo, e incorpora una pequeña ventana de vacilación que simula el tiempo de reacción humano, creando partidas desafiantes pero equilibradas.
Diseño Adaptativo a Cualquier Resolución: La ventana del juego permite cambiar de tamaño libremente en tiempo real. Todas las posiciones relativas, dimensiones y velocidades físicas se recalculan proporcionalmente de forma instantánea, garantizando que el juego se vea nítido y mantenga su velocidad en cualquier monitor sin deformarse.
DESAFÍOS TÉCNICOS
Prevención del efecto túnel a alta velocidad y portabilidad multiplataforma.
Reto: Evitar que la bola atraviese las paletas a alta velocidad (Efecto Túnel). En simulaciones físicas donde los objetos se desplazan múltiples píxeles por fotograma, una bola rápida puede saltar por completo la frontera de la paleta entre un cuadro y el siguiente, quedando atrapada o traspasando el colisionador sin registrar el rebote.
Solución: Se diseñó un algoritmo de proyección de borde de ataque que anticipa el punto de contacto frontal según el sentido del vector de velocidad antes de evaluar la colisión geométrica. Esto asegura que la colisión se resuelva siempre en la superficie exacta de la paleta, garantizando rebotes perfectos a cualquier velocidad.
Reto: Compatibilidad y compilación limpia entre sistemas operativos. Configurar proyectos en C++ para compilar sin fricciones de dependencias tanto en Windows como en entornos Linux suele requerir herramientas complejas.
Solución: Se automatizó la construcción del proyecto mediante Makefiles universales y perfiles de compilación que detectan el sistema operativo anfitrión y enlazan automáticamente las librerías necesarias. El proyecto se construye y ejecuta con un único comando en cualquier entorno de desarrollo.
OBJETIVOS Y APRENDIZAJES
Transición a herramientas modernas y consolidación de fundamentos.
El propósito central de este desarrollo fue familiarizarme a fondo con Raylib y modernizar mi stack de dependencias, superando librerías gráficas heredadas utilizadas en proyectos anteriores. El proyecto cumplió plenamente este objetivo como banco de pruebas técnico.
A través de este ejercicio consolidé buenas prácticas en C++ contemporáneo: programación orientada a objetos limpia, desacoplamiento estricto entre lógica y renderizado, y gestión de proyectos multiplataforma con Makefiles. Con estos objetivos alcanzados y el juego funcionando a 60 FPS estables, el proyecto se encuentra completamente finalizado como un hito clave en mi aprendizaje técnico.
- PropósitoPráctica & Modernización
- EcosistemaRaylib 5.0
- EstadoProyecto Concluido
