1 pontos por GN⁺ 2024-08-24 | 1 comentários | Compartilhar no WhatsApp

Surreal Engine

O objetivo deste projeto é reimplementar o código original do UnrealEngine para permitir jogar mapas de Unreal Tournament (UT99).

Estado atual

  • O engine consegue carregar e renderizar mapas
  • A VM de Unrealscript está quase concluída, mas arrays e execução condicional em rede ainda não foram implementados
  • Tenta carregar todos os atores de nível e inicializar o mapa
  • Os menus e o HUD aparecem, mas muitas funções nativas ainda não foram implementadas
  • Alguns eventos podem não funcionar corretamente, e exceções podem ocorrer durante interações

Atualmente, o SurrealEngine consegue detectar os seguintes jogos 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 and v3.5.0 - executado em engines UT436 e UT469)
  • Wheel of Time (v333)

Da lista acima, apenas Unreal Tournament v436 e Unreal Gold v226 estão em um estado relativamente jogável. Executar outros jogos pode causar travamentos.

Unreal Tournament v436

  • O jogo inicia, as opções de menu funcionam e é possível jogar partidas contra bots
  • A IA dos bots é praticamente inexistente, e faltam recursos em alguns mapas (por exemplo, a tela "X está liderando a partida" em DM-Morpheus não funciona)

Unreal Gold v226

  • O jogo inicia e a maioria das opções de menu funciona
  • É possível jogar mapas single-player e partidas contra bots
  • A IA se comporta de forma semelhante à do UT
  • Os modelos de objetos de Return to Na Pali aparecem corrompidos

Deus Ex v1112fm

  • Apenas o flyby de introdução funciona
  • Entradas de teclado e mouse não são detectadas (Deus Ex trata entrada de forma diferente de Unreal/UT)

Parâmetros de linha de comando

SurrealEngine [--url=<mapname>] [--engineversion=X] [caminho da pasta do jogo]

  • É possível copiar o executável do SurrealEngine para a pasta System de um jogo UE1 e executá-lo
  • Se a pasta do jogo não for especificada, o engine procura no registro (somente Windows) pelas chaves de registro definidas pela Epic
  • Se a URL não for especificada, a URL padrão do arquivo ini será usada (o padrão é o mapa de introdução)
  • O argumento --engineversion sobrescreve a versão interna detectada pelo engine e deve ser usado apenas para fins de depuração

Instruções de build no Windows

  • Compile o projeto usando CMake
  • É necessário ter a versão mais recente do Visual Studio e um compilador MSVC com suporte a C++17
  • SDL2 é uma dependência opcional e deve ser fornecida localmente (baixe a versão Visual C++ do SDL2 e indique essa pasta na configuração do CMake)
  • Não há outras dependências externas de terceiros

Instruções de build no Linux

  • Compile o projeto usando CMake
  • Digite os comandos a seguir em ordem para compilar:
git clone https://github.com/dpjudas/SurrealEngine.git
cd SurrealEngine
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 16
  • Quando a compilação for concluída com sucesso, os executáveis SurrealEngine, SurrealEditor e SurrealDebugger serão gerados na pasta build

  • Os seguintes pacotes de desenvolvimento são necessários:

    • cmake
    • g++
    • pthreads
    • dl
    • alsa (libasound2)
    • SDL2
    • waylandpp (opcional, bindings C++ do Wayland, usado no backend Wayland do ZWidget)
  • No Linux, o SDL2 é obrigatório, e o SurrealEngine o utiliza para recursos de janela e suporte nativo ao Wayland (SDL_VIDEODRIVER=wayland)

Resumo do GN⁺

  • Surreal Engine é um projeto que reimplementa o código original do UnrealEngine para permitir jogar mapas de Unreal Tournament (UT99)
  • Atualmente, apenas Unreal Tournament v436 e Unreal Gold v226 estão em um estado relativamente jogável; outros jogos podem travar
  • É possível compilar no Windows e no Linux usando CMake, com algumas dependências como SDL2
  • O projeto permite voltar a jogar games antigos em sistemas modernos e pode ser interessante para desenvolvedores e engenheiros de jogos
  • Um projeto open source com funcionalidade semelhante é o OpenRA

1 comentários

 
GN⁺ 2024-08-24
Comentários do Hacker News
  • Fez o port de Quake III para a web e adicionou suporte a multiplayer e mobile

    • Queria portar Unreal Tournament também, mas ainda está em um estado difícil de jogar
    • Seria bom se a Epic liberasse os lançamentos antigos sob GPL, como a id Software fez
    • Está considerando Serious Sam em vez de UT como próximo projeto
    • A Serious Engine é open source e já existe um port para a web (sem multiplayer)
  • Achou que este projeto era parecido com o projeto de hospedar jogos de UE1 no UE5

    • Na verdade é o mesmo projeto, rebatizado para Surreal na DXU24
    • Um frontend open source também foi adicionado
    • O desenvolvedor publicou vários vídeos WIP no YouTube
  • Este projeto o deixou muito feliz e trouxe muitas lembranças

    • Obrigado pelo trabalho de arquivamento de videogames
  • Unreal Tournament 99 e Deus Ex estão entre as lembranças mais felizes com jogos

    • Este projeto é muito ambicioso, e é bom ver jogos antigos sendo amados
    • Ainda há esperança por um remake de Deus Ex
  • A Epic poderia tornar o motor original open source, como a id Software fez

  • Outro desenvolvedor está trabalhando no Surreal 98, que permite jogar títulos de UE1 no UE5 com VR, mods e recursos modernos

  • Recomenda "Epic Unreal Megaspecial", do Civvie 11

  • Dockerizou Unreal Tournament 2004, e funciona bem em 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
    
  • Fica a curiosidade de quanto tempo de desenvolvimento seria necessário para reescrever Quake/Unreal do zero

    • É uma reescrita completa com engine personalizada, não um port
  • Sente muita falta de UT99 e não gosta tanto dos jogos FPS modernos