1 puntos por GN⁺ 2024-08-24 | 1 comentarios | Compartir por WhatsApp

Surreal Engine

El objetivo de este proyecto es reimplementar el código original de UnrealEngine para poder jugar mapas de Unreal Tournament (UT99).

Estado actual

  • El motor puede cargar y renderizar mapas
  • La VM de Unrealscript está casi terminada, pero los arreglos y la ejecución condicional en red aún no están implementados
  • Intenta cargar todos los actores del nivel e inicializar el mapa
  • Los menús y el HUD aparecen, pero muchas funciones nativas aún no están implementadas
  • Algunos eventos podrían no funcionar correctamente y pueden producirse excepciones al interactuar

Actualmente, SurrealEngine puede detectar los siguientes juegos de UE1:

  • Unreal Tournament (v436, v451b, v469(a, b, c, d))
  • Unreal (v200, v209, v220, v224v, v225f, v226f)
  • Unreal Gold (v226b, v227(i, j, k_11))
  • Deus Ex (v1002f, v1112fm)
  • Klingon Honor Guard (219)
  • NERF Arena Blast (v300)
  • TNN Outdoors Pro Hunter (v200)
  • Rune Classic (v1.10)
  • Clive Barker's Undying (v420)
  • Tactical-Ops: Assault on Terror (v3.4.0 y v3.5.0 - se ejecuta en motores UT436 y UT469)
  • Wheel of Time (v333)

De la lista anterior, solo Unreal Tournament v436 y Unreal Gold v226 están en un estado relativamente jugable. Ejecutar otros juegos puede provocar cierres inesperados.

Unreal Tournament v436

  • El juego inicia, las opciones del menú funcionan y se pueden jugar partidas con bots
  • La IA de los bots es casi inexistente y faltan funciones en algunos mapas (por ejemplo, la pantalla de "X va liderando la partida" en DM-Morpheus no funciona)

Unreal Gold v226

  • El juego inicia y la mayoría de las opciones del menú funcionan
  • Se pueden jugar mapas para un jugador y partidas con bots
  • La IA se comporta de forma similar a la de UT
  • Los modelos de objetos de Return to Na Pali se ven corruptos

Deus Ex v1112fm

  • Solo funciona el flyby de introducción
  • No se detecta la entrada de teclado ni mouse (Deus Ex maneja la entrada de forma distinta a Unreal/UT)

Parámetros de línea de comandos

SurrealEngine [--url=<mapname>] [--engineversion=X] [ruta de la carpeta del juego]

  • Es posible copiar el ejecutable de SurrealEngine a la carpeta System de un juego UE1 y ejecutarlo
  • Si no se especifica la carpeta del juego, el motor busca en el registro (solo Windows) las claves establecidas por Epic
  • Si no se especifica una URL, usa la URL predeterminada del archivo ini (por defecto, el mapa de introducción)
  • El argumento --engineversion sobrescribe la versión interna detectada por el motor y solo debe usarse con fines de depuración

Instrucciones de compilación en Windows

  • Compilar el proyecto con CMake
  • Se requiere la versión más reciente de Visual Studio y un compilador MSVC compatible con C++17
  • SDL2 es una dependencia opcional que debe proporcionarse localmente (descarga la versión Visual C++ de SDL2 y apunta a esa carpeta en la configuración de CMake)
  • No hay otras dependencias externas de terceros

Instrucciones de compilación en Linux

  • Compilar el proyecto con CMake
  • Introducir los siguientes comandos en orden para compilar:
git clone https://github.com/dpjudas/SurrealEngine.git
cd SurrealEngine
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 16
  • Si la compilación termina correctamente, se crearán los ejecutables SurrealEngine, SurrealEditor y SurrealDebugger en la carpeta build

  • Se requieren los siguientes paquetes de desarrollo:

    • cmake
    • g++
    • pthreads
    • dl
    • alsa (libasound2)
    • SDL2
    • waylandpp (opcional, binding de C++ para Wayland, usado en el backend Wayland de ZWidget)
  • En Linux, SDL2 es obligatorio y SurrealEngine lo utiliza para funciones de ventana y soporte nativo de Wayland (SDL_VIDEODRIVER=wayland)

Resumen de GN⁺

  • Surreal Engine es un proyecto que reimplementa el código original de UnrealEngine para poder jugar mapas de Unreal Tournament (UT99)
  • Actualmente, solo Unreal Tournament v436 y Unreal Gold v226 están en un estado relativamente jugable; otros juegos pueden provocar cierres inesperados
  • Puede compilarse en Windows y Linux con CMake, y requiere algunas dependencias como SDL2
  • Este proyecto permite volver a jugar títulos antiguos en sistemas modernos y puede resultar interesante para desarrolladores e ingenieros de videojuegos
  • Un proyecto con funciones similares es OpenRA, un motor de juego de código abierto

1 comentarios

 
GN⁺ 2024-08-24
Comentarios en Hacker News
  • Portaron Quake III a la web y le agregaron multijugador y soporte móvil

    • También querían portar Unreal Tournament, pero todavía está en un estado difícil de jugar
    • Ojalá Epic hubiera liberado los lanzamientos antiguos bajo GPL, como hizo id Software
    • Están considerando Serious Sam en lugar de UT como próximo proyecto
    • Serious Engine es de código abierto y ya existe un port web para él, aunque sin multijugador
  • Pensé que este proyecto era similar al que hospeda juegos de UE1 en UE5

    • En realidad es el mismo proyecto, y en DXU24 fue renombrado como Surreal
    • También se añadió un frontend de código abierto
    • El desarrollador subió varios videos WIP a YouTube
  • Este proyecto me pone muy feliz y me trae muchos recuerdos

    • Gracias por el trabajo de archivado de videojuegos
  • Unreal Tournament 99 y Deus Ex son de mis recuerdos de videojuegos más felices

    • Este proyecto es muy ambicioso y da gusto ver que los juegos viejos sigan siendo queridos
    • Sigo esperando un remake de Deus Ex
  • Epic podría abrir el código del motor original, como hizo id Software

  • Otro desarrollador está trabajando en Surreal 98 para poder jugar títulos de UE1 en UE5 con VR, mods y funciones modernas

  • Recomiendo el "Epic Unreal Megaspecial" de Civvie 11

  • Dockericé Unreal Tournament 2004 y funciona bien en Linux x86_64

    mkdir -p ~/.ut2004/; sudo docker run -it --rm -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR -e HOME=/ --network=host -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 -v /run/user/$UID:/run/user/$UID -v ~/.ut2004/:/.ut2004/ --user $UID:$UID --privileged --name ut2004 ikuinen.earth:5000/ut2004
    
  • Me pregunto cuánto tiempo de desarrollo tomaría reescribir Quake/Unreal desde cero

    • Es una reescritura completa con un motor personalizado, no un port
  • Extraño muchísimo UT99 y no me gustan tanto los FPS modernos