Doom, Usando Expresiones Regulares
Una audaz hazaña de programación intenta renderizar y jugar Doom puramente a través de la lógica de las expresiones regulares, destacando los límites absurdos de la computación.
Este artículo de Hackaday explora un intento increíblemente poco convencional y casi con certeza impracticable de ejecutar el clásico videojuego Doom utilizando nada más que expresiones regulares. Si bien la idea en sí suena ridícula, sirve como un fascinante experimento mental y un testimonio de la naturaleza creativa, a veces caótica, del desarrollo de software. El proyecto, si tiene éxito incluso en una capacidad limitada, no apuntaría a la jugabilidad, sino a superar los límites de lo que es conceptualmente posible con regex. Típicamente, las expresiones regulares se utilizan para la coincidencia de patrones y la manipulación de cadenas, herramientas poderosas para el procesamiento de texto. Aplicarlas a una tarea tan visual y computacionalmente compleja como renderizar un entorno 3D y gestionar la lógica del juego en tiempo real estira su definición hasta el punto de ruptura. El desafío principal radica en cómo las expresiones regulares manejan el estado y los gráficos. Doom, incluso en su gloria retro, se basa en estados de píxeles cambiantes, entrada del jugador y un motor de juego complejo para actualizar su mundo. Las expresiones regulares, por diseño, son sin estado; evalúan una cadena de entrada contra un patrón. Para "jugar" a Doom, se necesitaría codificar todo el estado del juego (mapa, posición del jugador, salud, ubicaciones de los enemigos, interacciones de objetos) en una cadena, y luego aplicar una serie de transformaciones regex para simular la lógica del juego. Cada "fotograma" o "tick del juego" implicaría reescribir esta enorme cadena de estado basándose en reglas regex predefinidas que representan el movimiento, el combate y la renderización. Por ejemplo, un movimiento del jugador podría representarse mediante un patrón regex que coincida con las coordenadas actuales del jugador y las reemplace por unas nuevas. De manera similar, renderizar una pared simple podría implicar convertir una representación numérica de un segmento de pared en arte ASCII dentro de la cadena. Esto sería una empresa inmensa, que probablemente resultaría en una versión extremadamente lenta, basada en texto y altamente abstracta de Doom, muy alejada de su gloria gráfica original, pero innegablemente un ejercicio intelectual monumental en el absurdo de la informática. Subrayaría la completitud de Turing de varios sistemas y las formas inesperadas en que pueden ser forzados a realizar tareas mucho más allá de su diseño inicial. El artículo ahondaría en los patrones regex hipotéticos, los esquemas de codificación de cadenas y la sobrecarga computacional teórica, quizás incluso mostrando una pequeña animación de prueba de concepto.