El artículo detalla el proceso de ingeniería inversa utilizado para identificar y replicar el generador de números pseudoaleatorios (PRNG) del videojuego Factorio. El objetivo principal es permitir a los jugadores predecir eventos aleatorios, como la calidad de los objetos fabricados, mediante el cálculo determinista de la misma secuencia de números que utiliza el juego. El texto explica que, aunque el juego utiliza un algoritmo determinista, la percepción de aleatoriedad se debe a la naturaleza de los generadores pseudoaleatorios, que producen secuencias con distribución estadística definida pero sin patrones discernibles.
Para determinar el algoritmo específico, el autor analizó el código fuente de la biblioteca Boost.Random, identificando el generador 'taus88', que combina tres registros de desplazamiento de retroalimentación lineal (LFSR). La verificación se realizó comparando la implementación en el binario del juego, descompilado con herramientas como Ghidra y Binary Ninja, con la referencia original. Se demostró que el código del juego es equivalente al de Boost, confirmando el uso de 'taus88' con tres semillas independientes que se combinan mediante XOR. El análisis técnico se basa en la matemática de los LFSR, conocidos por su vulnerabilidad, y utiliza la librería Python 'sympy' para verificar la equivalencia bit a bit de las actualizaciones de estado. Este enfoque permite a los desarrolladores y entusiastas replicar la lógica interna del juego para optimizar sus estrategias de producción y calidad.
