Este proyecto, liderado por draxinar, representa una hazaña de ingeniería inversa monumental: la completa reconstrucción del servidor de demostración de Ultima Online de 1998 (UoDemo.exe). Tras una década de trabajo intermitente, el resultado es un repositorio de código C99 que replica casi a la perfección el código fuente original, escrito inicialmente en Microsoft Visual C++ 5.0.
¿Qué es Ultima Online y por qué es importante este proyecto? Ultima Online (UO) fue uno de los primeros MMORPGs (juegos de rol multijugador masivos online) comercialmente exitosos. El servidor de demostración, incluido con la expansión “The Second Age”, ofrecía una versión reducida del juego, con un mapa limitado a la isla de Ocllo y una misión simplificada. Aunque muchos emuladores de UO han utilizado fragmentos de este demo, ninguno había realizado una ingeniería inversa completa hasta ahora. Este proyecto es valioso tanto para la comunidad de UO como para la comunidad de desarrolladores, ya que proporciona una visión sin precedentes de la arquitectura interna de uno de los juegos online pioneros.
¿Cómo funciona la ingeniería inversa? El proceso involucró el uso de herramientas como radare2 para desensamblar el código binario. Cada función desensamblada se tradujo manualmente a C99, manteniendo la estructura y el flujo de control original. Para verificar la precisión, el código C99 se vuelve a desensamblar y se compara con el binario original. Se utilizaron funciones auxiliares para patrones repetitivos, asegurando que se expandieran al código original. La jerarquía de clases, crucial para la estructura del juego, se recreó meticulosamente, incluyendo la gestión de tablas virtuales (vtables) que controlan el comportamiento de los objetos del juego. Además, se corrigieron errores de estabilidad y se implementaron mejoras en el gameplay, documentando cada cambio.
¿Para qué sirve y quién lo usaría? El código resultante permite recrear un servidor de Ultima Online muy fiel al original de 1998. Esto es de interés para investigadores de juegos, desarrolladores que quieran entender la arquitectura de los MMORPGs de la época, y la comunidad de Ultima Online que busca revivir la experiencia original. Además, el proyecto ha resucitado características olvidadas como el sistema de ecología, que simula interacciones entre depredadores, presas y carroñeros, y ha añadido soporte para clientes de juego más recientes.
Consideraciones: El proyecto aún está en desarrollo y puede contener errores. La reconstrucción completa del mundo de juego requiere datos adicionales, como archivos de guardado de servidor y definiciones de spawns, que el autor está buscando activamente. La ingeniería inversa es un proceso complejo y legalmente delicado; este proyecto se enfoca en la preservación histórica y la investigación, no en la creación de servidores ilegales.
