Detectando Espacios Cerrados Eficientemente en un Juego de Navegador
En un juego de navegador, los jugadores colocan obstáculos para dificultar a los enemigos. Para evitar que los jugadores hagan trampa encerrándose a sí mismos o a los enemigos, el autor diseñó un algoritmo eficiente para detectar espacios cerrados. El enfoque inicial de fuerza bruta —llenado de inundación de cada celda— resultó demasiado lento. El autor ideó un algoritmo mejorado que aprovecha una caché de celdas "de cara abierta" (celdas no rodeadas por obstáculos) para podar el espacio de búsqueda del llenado de inundación. Cuando se agregan o eliminan obstáculos, el algoritmo actualiza el conjunto de celdas de cara abierta y recalcula las ubicaciones de colocación legales. Si bien la complejidad temporal del peor caso sigue siendo la misma que el llenado de inundación de fuerza bruta, en la práctica, este algoritmo reduce significativamente el retraso. El autor también analiza otras técnicas de optimización, como actualizaciones iterativas y la verificación solo de celdas adyacentes a múltiples obstáculos. Finalmente, el autor menciona otra posible solución: un algoritmo basado en la detección de ciclos.
Leer más